1 1.1 skrll ; Renesas M32C CPU description. -*- Scheme -*- 2 1.1 skrll ; 3 1.1.1.2 christos ; Copyright 2005, 2006, 2007, 2009 Free Software Foundation, Inc. 4 1.1 skrll ; 5 1.1 skrll ; Contributed by Red Hat Inc; developed under contract from Renesas. 6 1.1 skrll ; 7 1.1 skrll ; This file is part of the GNU Binutils. 8 1.1 skrll ; 9 1.1 skrll ; This program is free software; you can redistribute it and/or modify 10 1.1 skrll ; it under the terms of the GNU General Public License as published by 11 1.1 skrll ; the Free Software Foundation; either version 3 of the License, or 12 1.1 skrll ; (at your option) any later version. 13 1.1 skrll ; 14 1.1 skrll ; This program is distributed in the hope that it will be useful, 15 1.1 skrll ; but WITHOUT ANY WARRANTY; without even the implied warranty of 16 1.1 skrll ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 1.1 skrll ; GNU General Public License for more details. 18 1.1 skrll ; 19 1.1 skrll ; You should have received a copy of the GNU General Public License 20 1.1 skrll ; along with this program; if not, write to the Free Software 21 1.1 skrll ; Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 22 1.1 skrll ; MA 02110-1301, USA. 23 1.1 skrll 24 1.1 skrll (include "simplify.inc") 25 1.1 skrll 26 1.1 skrll (define-arch 27 1.1 skrll (name m32c) 28 1.1 skrll (comment "Renesas M32C") 29 1.1 skrll (default-alignment forced) 30 1.1 skrll (insn-lsb0? #f) 31 1.1 skrll (machs m16c m32c) 32 1.1 skrll (isas m16c m32c) 33 1.1 skrll ) 34 1.1 skrll 35 1.1 skrll (define-isa 36 1.1 skrll (name m16c) 37 1.1 skrll 38 1.1 skrll (default-insn-bitsize 32) 39 1.1 skrll 40 1.1 skrll ; Number of bytes of insn we can initially fetch. 41 1.1 skrll (base-insn-bitsize 32) 42 1.1 skrll 43 1.1 skrll ; Used in computing bit numbers. 44 1.1 skrll (default-insn-word-bitsize 32) 45 1.1 skrll 46 1.1 skrll (decode-assist (0 1 2 3 4 5 6 7)) ; Initial bitnumbers to decode insns by. 47 1.1 skrll 48 1.1 skrll ; fetches 1 insn at a time. 49 1.1 skrll (liw-insns 1) 50 1.1 skrll 51 1.1 skrll ; executes 1 insn at a time. 52 1.1 skrll (parallel-insns 1) 53 1.1 skrll ) 54 1.1 skrll 55 1.1 skrll (define-isa 56 1.1 skrll (name m32c) 57 1.1 skrll 58 1.1 skrll (default-insn-bitsize 32) 59 1.1 skrll 60 1.1 skrll ; Number of bytes of insn we can initially fetch. 61 1.1 skrll (base-insn-bitsize 32) 62 1.1 skrll 63 1.1 skrll ; Used in computing bit numbers. 64 1.1 skrll (default-insn-word-bitsize 32) 65 1.1 skrll 66 1.1 skrll (decode-assist (0 1 2 3 4 5 6 7)) ; Initial bitnumbers to decode insns by. 67 1.1 skrll 68 1.1 skrll ; fetches 1 insn at a time. 69 1.1 skrll (liw-insns 1) 70 1.1 skrll 71 1.1 skrll ; executes 1 insn at a time. 72 1.1 skrll (parallel-insns 1) 73 1.1 skrll ) 74 1.1 skrll 75 1.1 skrll (define-cpu 76 1.1 skrll ; cpu names must be distinct from the architecture name and machine names. 77 1.1 skrll ; The "b" suffix stands for "base" and is the convention. 78 1.1 skrll ; The "f" suffix stands for "family" and is the convention. 79 1.1 skrll (name m16cbf) 80 1.1 skrll (comment "Renesas M16C base family") 81 1.1 skrll (insn-endian big) 82 1.1 skrll (data-endian little) 83 1.1 skrll (word-bitsize 16) 84 1.1 skrll ) 85 1.1 skrll 86 1.1 skrll (define-cpu 87 1.1 skrll ; cpu names must be distinct from the architecture name and machine names. 88 1.1 skrll ; The "b" suffix stands for "base" and is the convention. 89 1.1 skrll ; The "f" suffix stands for "family" and is the convention. 90 1.1 skrll (name m32cbf) 91 1.1 skrll (comment "Renesas M32C base family") 92 1.1 skrll (insn-endian big) 93 1.1 skrll (data-endian little) 94 1.1 skrll (word-bitsize 16) 95 1.1 skrll ) 96 1.1 skrll 97 1.1 skrll (define-mach 98 1.1 skrll (name m16c) 99 1.1 skrll (comment "Generic M16C cpu") 100 1.1 skrll (cpu m32cbf) 101 1.1 skrll ) 102 1.1 skrll 103 1.1 skrll (define-mach 104 1.1 skrll (name m32c) 105 1.1 skrll (comment "Generic M32C cpu") 106 1.1 skrll (cpu m32cbf) 107 1.1 skrll ) 108 1.1 skrll 109 1.1 skrll ; Model descriptions. 110 1.1 skrll 111 1.1 skrll (define-model 112 1.1 skrll (name m16c) 113 1.1 skrll (comment "m16c") (attrs) 114 1.1 skrll (mach m16c) 115 1.1 skrll 116 1.1 skrll ; `state' is a list of variables for recording model state 117 1.1 skrll ; (state) 118 1.1 skrll (unit u-exec "Execution Unit" () 119 1.1 skrll 1 1 ; issue done 120 1.1 skrll () ; state 121 1.1 skrll () ; inputs 122 1.1 skrll () ; outputs 123 1.1 skrll () ; profile action (default) 124 1.1 skrll ) 125 1.1 skrll ) 126 1.1 skrll 127 1.1 skrll (define-model 128 1.1 skrll (name m32c) 129 1.1 skrll (comment "m32c") (attrs) 130 1.1 skrll (mach m32c) 131 1.1 skrll 132 1.1 skrll ; `state' is a list of variables for recording model state 133 1.1 skrll ; (state) 134 1.1 skrll (unit u-exec "Execution Unit" () 135 1.1 skrll 1 1 ; issue done 136 1.1 skrll () ; state 137 1.1 skrll () ; inputs 138 1.1 skrll () ; outputs 139 1.1 skrll () ; profile action (default) 140 1.1 skrll ) 141 1.1 skrll ) 142 1.1 skrll 143 1.1 skrll (define-attr 144 1.1 skrll (type enum) 145 1.1 skrll (name RL_TYPE) 146 1.1 skrll (values NONE JUMP 1ADDR 2ADDR) 147 1.1 skrll (default NONE) 148 1.1 skrll ) 149 1.1 skrll 150 1.1 skrll ; Macros to simplify MACH attribute specification. 151 1.1 skrll 152 1.1 skrll (define-pmacro all-isas () (ISA m16c,m32c)) 153 1.1 skrll (define-pmacro m16c-isa () (ISA m16c)) 154 1.1 skrll (define-pmacro m32c-isa () (ISA m32c)) 155 1.1 skrll 156 1.1 skrll (define-pmacro MACH16 (MACH m16c)) 157 1.1 skrll (define-pmacro MACH32 (MACH m32c)) 158 1.1 skrll 159 1.1 skrll (define-pmacro (machine size) 160 1.1 skrll (MACH (.sym m size c)) (ISA (.sym m size c))) 161 1.1 skrll 162 1.1 skrll (define-pmacro RL_JUMP (RL_TYPE JUMP)) 163 1.1 skrll (define-pmacro RL_1ADDR (RL_TYPE 1ADDR)) 164 1.1 skrll (define-pmacro RL_2ADDR (RL_TYPE 2ADDR)) 165 1.1 skrll 166 1.1 skrll 168 1.1 skrll ;============================================================= 169 1.1 skrll ; Fields 170 1.1 skrll ;------------------------------------------------------------- 171 1.1 skrll ; Main opcodes 172 1.1 skrll ; 173 1.1 skrll (dnf f-0-1 "opcode" (all-isas) 0 1) 174 1.1 skrll (dnf f-0-2 "opcode" (all-isas) 0 2) 175 1.1 skrll (dnf f-0-3 "opcode" (all-isas) 0 3) 176 1.1 skrll (dnf f-0-4 "opcode" (all-isas) 0 4) 177 1.1 skrll (dnf f-1-3 "opcode" (all-isas) 1 3) 178 1.1 skrll (dnf f-2-2 "opcode" (all-isas) 2 2) 179 1.1 skrll (dnf f-3-4 "opcode" (all-isas) 3 4) 180 1.1 skrll (dnf f-3-1 "opcode" (all-isas) 3 1) 181 1.1 skrll (dnf f-4-1 "opcode" (all-isas) 4 1) 182 1.1 skrll (dnf f-4-3 "opcode" (all-isas) 4 3) 183 1.1 skrll (dnf f-4-4 "opcode" (all-isas) 4 4) 184 1.1 skrll (dnf f-4-6 "opcode" (all-isas) 4 6) 185 1.1 skrll (dnf f-5-1 "opcode" (all-isas) 5 1) 186 1.1 skrll (dnf f-5-3 "opcode" (all-isas) 5 3) 187 1.1 skrll (dnf f-6-2 "opcode" (all-isas) 6 2) 188 1.1 skrll (dnf f-7-1 "opcode" (all-isas) 7 1) 189 1.1 skrll (dnf f-8-1 "opcode" (all-isas) 8 1) 190 1.1 skrll (dnf f-8-2 "opcode" (all-isas) 8 2) 191 1.1 skrll (dnf f-8-3 "opcode" (all-isas) 8 3) 192 1.1 skrll (dnf f-8-4 "opcode" (all-isas) 8 4) 193 1.1 skrll (dnf f-8-8 "opcode" (all-isas) 8 8) 194 1.1 skrll (dnf f-9-3 "opcode" (all-isas) 9 3) 195 1.1 skrll (dnf f-9-1 "opcode" (all-isas) 9 1) 196 1.1 skrll (dnf f-10-1 "opcode" (all-isas) 10 1) 197 1.1 skrll (dnf f-10-2 "opcode" (all-isas) 10 2) 198 1.1 skrll (dnf f-10-3 "opcode" (all-isas) 10 3) 199 1.1 skrll (dnf f-11-1 "opcode" (all-isas) 11 1) 200 1.1 skrll (dnf f-12-1 "opcode" (all-isas) 12 1) 201 1.1 skrll (dnf f-12-2 "opcode" (all-isas) 12 2) 202 1.1 skrll (dnf f-12-3 "opcode" (all-isas) 12 3) 203 1.1 skrll (dnf f-12-4 "opcode" (all-isas) 12 4) 204 1.1 skrll (dnf f-12-6 "opcode" (all-isas) 12 6) 205 1.1 skrll (dnf f-13-3 "opcode" (all-isas) 13 3) 206 1.1 skrll (dnf f-14-1 "opcode" (all-isas) 14 1) 207 1.1 skrll (dnf f-14-2 "opcode" (all-isas) 14 2) 208 1.1 skrll (dnf f-15-1 "opcode" (all-isas) 15 1) 209 1.1 skrll (dnf f-16-1 "opcode" (all-isas) 16 1) 210 1.1 skrll (dnf f-16-2 "opcode" (all-isas) 16 2) 211 1.1 skrll (dnf f-16-4 "opcode" (all-isas) 16 4) 212 1.1 skrll (dnf f-16-8 "opcode" (all-isas) 16 8) 213 1.1 skrll (dnf f-18-1 "opcode" (all-isas) 18 1) 214 1.1 skrll (dnf f-18-2 "opcode" (all-isas) 18 2) 215 1.1 skrll (dnf f-18-3 "opcode" (all-isas) 18 3) 216 1.1 skrll (dnf f-20-1 "opcode" (all-isas) 20 1) 217 1.1 skrll (dnf f-20-3 "opcode" (all-isas) 20 3) 218 1.1 skrll (dnf f-20-2 "opcode" (all-isas) 20 2) 219 1.1 skrll (dnf f-20-4 "opcode" (all-isas) 20 4) 220 1.1 skrll (dnf f-21-3 "opcode" (all-isas) 21 3) 221 1.1 skrll (dnf f-24-2 "opcode" (all-isas) 24 2) 222 1.1 skrll (dnf f-24-8 "opcode" (all-isas) 24 8) 223 1.1 skrll (dnf f-32-16 "opcode" (all-isas) 32 16) 224 1.1 skrll 225 1.1 skrll ;------------------------------------------------------------- 226 1.1 skrll ; Registers 227 1.1 skrll ;------------------------------------------------------------- 228 1.1 skrll 229 1.1 skrll (dnf f-src16-rn "source Rn for m16c" (MACH16 m16c-isa) 10 2) 230 1.1 skrll (dnf f-src16-an "source An for m16c" (MACH16 m16c-isa) 11 1) 231 1.1 skrll 232 1.1 skrll (dnf f-src32-an-unprefixed "destination An for m32c" (MACH32 m32c-isa) 11 1) 233 1.1 skrll (dnf f-src32-an-prefixed "destination An for m32c" (MACH32 m32c-isa) 19 1) 234 1.1 skrll 235 1.1 skrll ; QI mode gr encoding for m32c is different than for m16c. The hardware 236 1.1 skrll ; is indexed using the m16c encoding, so perform the transformation here. 237 1.1 skrll ; register m16c m32c 238 1.1 skrll ; ---------------------- 239 1.1 skrll ; r0l 00'b 10'b 240 1.1 skrll ; r0h 01'b 00'b 241 1.1 skrll ; r1l 10'b 11'b 242 1.1 skrll ; r1h 11'b 01'b 243 1.1.1.4 christos (df f-src32-rn-unprefixed-QI "source Rn QI for m32c" (MACH32 m32c-isa) 10 2 UINT 244 1.1 skrll ((value pc) (or USI (and (inv (sll value 1)) 2) (and (srl value 1) 1))) ; insert 245 1.1 skrll ((value pc) (or USI (and (inv (srl value 1)) 1) (and (sll value 1) 2))) ; extract 246 1.1 skrll ) 247 1.1 skrll ; QI mode gr encoding for m32c is different than for m16c. The hardware 248 1.1 skrll ; is indexed using the m16c encoding, so perform the transformation here. 249 1.1 skrll ; register m16c m32c 250 1.1 skrll ; ---------------------- 251 1.1 skrll ; r0l 00'b 10'b 252 1.1 skrll ; r0h 01'b 00'b 253 1.1 skrll ; r1l 10'b 11'b 254 1.1 skrll ; r1h 11'b 01'b 255 1.1.1.4 christos (df f-src32-rn-prefixed-QI "source Rn QI for m32c" (MACH32 m32c-isa) 18 2 UINT 256 1.1 skrll ((value pc) (or USI (and (inv (sll value 1)) 2) (and (srl value 1) 1))) ; insert 257 1.1 skrll ((value pc) (or USI (and (inv (srl value 1)) 1) (and (sll value 1) 2))) ; extract 258 1.1 skrll ) 259 1.1 skrll ; HI mode gr encoding for m32c is different than for m16c. The hardware 260 1.1 skrll ; is indexed using the m16c encoding, so perform the transformation here. 261 1.1 skrll ; register m16c m32c 262 1.1 skrll ; ---------------------- 263 1.1 skrll ; r0 00'b 10'b 264 1.1 skrll ; r1 01'b 11'b 265 1.1 skrll ; r2 10'b 00'b 266 1.1 skrll ; r3 11'b 01'b 267 1.1 skrll (df f-src32-rn-unprefixed-HI "source Rn HI for m32c" (MACH32 m32c-isa) 10 2 UINT 268 1.1 skrll ((value pc) (mod USI (add value 2) 4)) ; insert 269 1.1 skrll ((value pc) (mod USI (add value 2) 4)) ; extract 270 1.1 skrll ) 271 1.1 skrll 272 1.1 skrll ; HI mode gr encoding for m32c is different than for m16c. The hardware 273 1.1 skrll ; is indexed using the m16c encoding, so perform the transformation here. 274 1.1 skrll ; register m16c m32c 275 1.1 skrll ; ---------------------- 276 1.1 skrll ; r0 00'b 10'b 277 1.1 skrll ; r1 01'b 11'b 278 1.1 skrll ; r2 10'b 00'b 279 1.1 skrll ; r3 11'b 01'b 280 1.1 skrll (df f-src32-rn-prefixed-HI "source Rn HI for m32c" (MACH32 m32c-isa) 18 2 UINT 281 1.1 skrll ((value pc) (mod USI (add value 2) 4)) ; insert 282 1.1 skrll ((value pc) (mod USI (add value 2) 4)) ; extract 283 1.1 skrll ) 284 1.1 skrll 285 1.1 skrll ; SI mode gr encoding for m32c is as follows: 286 1.1 skrll ; register encoding index 287 1.1 skrll ; ------------------------- 288 1.1 skrll ; r2r0 10'b 0 289 1.1 skrll ; r3r1 11'b 1 290 1.1 skrll (df f-src32-rn-unprefixed-SI "source Rn SI for m32c" (MACH32 m32c-isa) 10 2 UINT 291 1.1 skrll ((value pc) (add USI value 2)) ; insert 292 1.1 skrll ((value pc) (sub USI value 2)) ; extract 293 1.1 skrll ) 294 1.1 skrll (df f-src32-rn-prefixed-SI "source Rn SI for m32c" (MACH32 m32c-isa) 18 2 UINT 295 1.1 skrll ((value pc) (add USI value 2)) ; insert 296 1.1 skrll ((value pc) (sub USI value 2)) ; extract 297 1.1 skrll ) 298 1.1 skrll 299 1.1 skrll (dnf f-dst32-rn-ext-unprefixed "destination Rn for m32c" (MACH32 m32c-isa) 9 1) 300 1.1 skrll 301 1.1 skrll (dnf f-dst16-rn "destination Rn for m16c" (MACH16 m16c-isa) 14 2) 302 1.1 skrll (dnf f-dst16-rn-ext "destination Rn for m16c" (MACH16 m16c-isa) 14 1) 303 1.1 skrll (dnf f-dst16-rn-QI-s "destination Rn for m16c" (MACH16 m16c-isa) 5 1) 304 1.1 skrll 305 1.1 skrll (dnf f-dst16-an "destination An for m16c" (MACH16 m16c-isa) 15 1) 306 1.1 skrll (dnf f-dst16-an-s "destination An for m16c" (MACH16 m16c-isa) 4 1) 307 1.1 skrll 308 1.1 skrll (dnf f-dst32-an-unprefixed "destination An for m32c" (MACH32 m32c-isa) 9 1) 309 1.1 skrll (dnf f-dst32-an-prefixed "destination An for m32c" (MACH32 m32c-isa) 17 1) 310 1.1 skrll 311 1.1 skrll ; QI mode gr encoding for m32c is different than for m16c. The hardware 312 1.1 skrll ; is indexed using the m16c encoding, so perform the transformation here. 313 1.1 skrll ; register m16c m32c 314 1.1 skrll ; ---------------------- 315 1.1 skrll ; r0l 00'b 10'b 316 1.1 skrll ; r0h 01'b 00'b 317 1.1 skrll ; r1l 10'b 11'b 318 1.1 skrll ; r1h 11'b 01'b 319 1.1.1.4 christos (df f-dst32-rn-unprefixed-QI "destination Rn QI for m32c" (MACH32 m32c-isa) 8 2 UINT 320 1.1 skrll ((value pc) (or USI (and (inv (sll value 1)) 2) (and (srl value 1) 1))) ; insert 321 1.1 skrll ((value pc) (or USI (and (inv (srl value 1)) 1) (and (sll value 1) 2))) ; extract 322 1.1 skrll ) 323 1.1.1.4 christos (df f-dst32-rn-prefixed-QI "destination Rn QI for m32c" (MACH32 m32c-isa) 16 2 UINT 324 1.1 skrll ((value pc) (or USI (and (inv (sll value 1)) 2) (and (srl value 1) 1))) ; insert 325 1.1 skrll ((value pc) (or USI (and (inv (srl value 1)) 1) (and (sll value 1) 2))) ; extract 326 1.1 skrll ) 327 1.1 skrll ; HI mode gr encoding for m32c is different than for m16c. The hardware 328 1.1 skrll ; is indexed using the m16c encoding, so perform the transformation here. 329 1.1 skrll ; register m16c m32c 330 1.1 skrll ; ---------------------- 331 1.1 skrll ; r0 00'b 10'b 332 1.1 skrll ; r1 01'b 11'b 333 1.1 skrll ; r2 10'b 00'b 334 1.1 skrll ; r3 11'b 01'b 335 1.1 skrll (df f-dst32-rn-unprefixed-HI "destination Rn HI for m32c" (MACH32 m32c-isa) 8 2 UINT 336 1.1 skrll ((value pc) (mod USI (add value 2) 4)) ; insert 337 1.1 skrll ((value pc) (mod USI (add value 2) 4)) ; extract 338 1.1 skrll ) 339 1.1 skrll (df f-dst32-rn-prefixed-HI "destination Rn HI for m32c" (MACH32 m32c-isa) 16 2 UINT 340 1.1 skrll ((value pc) (mod USI (add value 2) 4)) ; insert 341 1.1 skrll ((value pc) (mod USI (add value 2) 4)) ; extract 342 1.1 skrll ) 343 1.1 skrll ; SI mode gr encoding for m32c is as follows: 344 1.1 skrll ; register encoding index 345 1.1 skrll ; ------------------------- 346 1.1 skrll ; r2r0 10'b 0 347 1.1 skrll ; r3r1 11'b 1 348 1.1 skrll (df f-dst32-rn-unprefixed-SI "destination Rn SI for m32c" (MACH32 m32c-isa) 8 2 UINT 349 1.1 skrll ((value pc) (add USI value 2)) ; insert 350 1.1 skrll ((value pc) (sub USI value 2)) ; extract 351 1.1 skrll ) 352 1.1 skrll (df f-dst32-rn-prefixed-SI "destination Rn SI for m32c" (MACH32 m32c-isa) 16 2 UINT 353 1.1 skrll ((value pc) (add USI value 2)) ; insert 354 1.1 skrll ((value pc) (sub USI value 2)) ; extract 355 1.1 skrll ) 356 1.1 skrll 357 1.1 skrll (dnf f-dst16-1-S "destination R0[hl] for m16c" (MACH16 m16c-isa) 5 1) 358 1.1 skrll 359 1.1 skrll ;------------------------------------------------------------- 360 1.1 skrll ; Immediates embedded in the base insn 361 1.1 skrll ;------------------------------------------------------------- 362 1.1 skrll 363 1.1 skrll (df f-imm-8-s4 "4 bit signed" (all-isas) 8 4 INT #f #f) 364 1.1 skrll (df f-imm-12-s4 "4 bit signed" (all-isas) 12 4 INT #f #f) 365 1.1 skrll (df f-imm-13-u3 "3 bit unsigned" (all-isas) 13 3 UINT #f #f) 366 1.1 skrll (df f-imm-20-s4 "4 bit signed" (all-isas) 20 4 INT #f #f) 367 1.1 skrll 368 1.1 skrll (df f-imm1-S "1 bit immediate for short format binary insns" (MACH32 m32c-isa) 2 1 UINT 369 1.1 skrll ((value pc) (sub USI value 1)) ; insert 370 1.1 skrll ((value pc) (add USI value 1)) ; extract 371 1.1 skrll ) 372 1.1 skrll 373 1.1 skrll (dnmf f-imm3-S "3 bit unsigned for short format insns" (all-isas) UINT 374 1.1 skrll (f-2-2 f-7-1) 375 1.1 skrll (sequence () ; insert 376 1.1 skrll (set (ifield f-7-1) (and (sub (ifield f-imm3-S) 1) 1)) 377 1.1 skrll (set (ifield f-2-2) (and (srl (sub (ifield f-imm3-S) 1) 1) #x3)) 378 1.1 skrll ) 379 1.1 skrll (sequence () ; extract 380 1.1 skrll (set (ifield f-imm3-S) (add (or (sll (ifield f-2-2) 1) 381 1.1 skrll (ifield f-7-1)) 382 1.1 skrll 1)) 383 1.1 skrll ) 384 1.1 skrll ) 385 1.1 skrll 386 1.1 skrll ;------------------------------------------------------------- 387 1.1 skrll ; Immediates and displacements beyond the base insn 388 1.1 skrll ;------------------------------------------------------------- 389 1.1 skrll 390 1.1 skrll (df f-dsp-8-u6 "6 bit unsigned" (all-isas) 8 6 UINT #f #f) 391 1.1 skrll (df f-dsp-8-u8 "8 bit unsigned" (all-isas) 8 8 UINT #f #f) 392 1.1 skrll (df f-dsp-8-s8 "8 bit signed" (all-isas) 8 8 INT #f #f) 393 1.1 skrll (df f-dsp-10-u6 "6 bit unsigned" (all-isas) 10 6 UINT #f #f) 394 1.1 skrll (df f-dsp-16-u8 "8 bit unsigned" (all-isas) 16 8 UINT #f #f) 395 1.1 skrll (df f-dsp-16-s8 "8 bit signed" (all-isas) 16 8 INT #f #f) 396 1.1 skrll (df f-dsp-24-u8 "8 bit unsigned" (all-isas) 24 8 UINT #f #f) 397 1.1 skrll (df f-dsp-24-s8 "8 bit signed" (all-isas) 24 8 INT #f #f) 398 1.1 skrll (df f-dsp-32-u8 "8 bit unsigned" (all-isas) 32 8 UINT #f #f) 399 1.1 skrll (df f-dsp-32-s8 "8 bit signed" (all-isas) 32 8 INT #f #f) 400 1.1 skrll (df f-dsp-40-u8 "8 bit unsigned" (all-isas) 40 8 UINT #f #f) 401 1.1 skrll (df f-dsp-40-s8 "8 bit signed" (all-isas) 40 8 INT #f #f) 402 1.1 skrll (df f-dsp-48-u8 "8 bit unsigned" (all-isas) 48 8 UINT #f #f) 403 1.1 skrll (df f-dsp-48-s8 "8 bit signed" (all-isas) 48 8 INT #f #f) 404 1.1 skrll (df f-dsp-56-u8 "8 bit unsigned" (all-isas) 56 8 UINT #f #f) 405 1.1 skrll (df f-dsp-56-s8 "8 bit signed" (all-isas) 56 8 INT #f #f) 406 1.1 skrll (df f-dsp-64-u8 "8 bit unsigned" (all-isas) 64 8 UINT #f #f) 407 1.1 skrll (df f-dsp-64-s8 "8 bit signed" (all-isas) 64 8 INT #f #f) 408 1.1 skrll 409 1.1 skrll ; Insn opcode endianness is big, but the immediate fields are stored 410 1.1 skrll ; in little endian. Handle this here at the field level for all immediate 411 1.1 skrll ; fields longer that 1 byte. 412 1.1 skrll ; 413 1.1 skrll ; CGEN can't handle a field which spans a 32 bit word boundary, so 414 1.1 skrll ; handle those as multi ifields. 415 1.1 skrll ; 416 1.1 skrll ; Take care in expressions using 'srl' or 'sll' as part of some larger 417 1.1 skrll ; expression meant to yield sign-extended values. CGEN translates 418 1.1 skrll ; uses of those operators into C expressions whose type is 'unsigned 419 1.1 skrll ; int', which tends to make the whole expression 'unsigned int'. 420 1.1 skrll ; Expressions like (set (ifield foo) X), however, just take X and 421 1.1 skrll ; store it in some member of 'struct cgen_fields', all of whose 422 1.1 skrll ; members are 'long'. On machines where 'long' is larger than 423 1.1 skrll ; 'unsigned int', assigning a "sign-extended" unsigned int to a long 424 1.1 skrll ; just produces a very large positive value. insert_normal will 425 1.1 skrll ; range-check the field's value and produce odd error messages like 426 1.1 skrll ; this: 427 1.1 skrll ; 428 1.1 skrll ; Error: operand out of range (4160684031 not between -2147483648 and 2147483647) `add.l #-265,-270[fb]' 429 1.1 skrll ; 430 1.1 skrll ; Annoyingly, the code will work fine on machines where 'long' and 431 1.1 skrll ; 'unsigned int' are the same size: the assignment will produce a 432 1.1 skrll ; negative number. 433 1.1 skrll ; 434 1.1 skrll ; Just tell yourself over and over: overflow detection is expensive, 435 1.1 skrll ; and you're glad C doesn't do it, because it never happens in real 436 1.1 skrll ; life. 437 1.1 skrll 438 1.1 skrll (df f-dsp-8-u16 "16 bit unsigned" (all-isas) 8 16 UINT 439 1.1.1.3 christos ((value pc) (or UHI 440 1.1.1.3 christos (and (srl value 8) #xff) 441 1.1 skrll (sll (and value #xff) 8))) ; insert 442 1.1.1.3 christos ((value pc) (or UHI 443 1.1.1.3 christos (and UHI (srl UHI value 8) #xff) 444 1.1 skrll (sll UHI (and UHI value #xff) 8))) ; extract 445 1.1 skrll ) 446 1.1 skrll 447 1.1 skrll (df f-dsp-8-s16 "8 bit signed" (all-isas) 8 16 INT 448 1.1 skrll ((value pc) (ext INT 449 1.1.1.3 christos (trunc HI 450 1.1.1.3 christos (or (and (srl value 8) #xff) 451 1.1 skrll (sll (and value #xff) 8))))) ; insert 452 1.1 skrll ((value pc) (ext INT 453 1.1.1.3 christos (trunc HI 454 1.1.1.3 christos (or (and (srl value 8) #xff) 455 1.1 skrll (sll (and value #xff) 8))))) ; extract 456 1.1 skrll ) 457 1.1 skrll 458 1.1 skrll (df f-dsp-16-u16 "16 bit unsigned" (all-isas) 16 16 UINT 459 1.1.1.3 christos ((value pc) (or UHI 460 1.1.1.3 christos (and (srl value 8) #xff) 461 1.1 skrll (sll (and value #xff) 8))) ; insert 462 1.1.1.3 christos ((value pc) (or UHI 463 1.1.1.3 christos (and UHI (srl UHI value 8) #xff) 464 1.1 skrll (sll UHI (and UHI value #xff) 8))) ; extract 465 1.1 skrll ) 466 1.1 skrll 467 1.1 skrll (df f-dsp-16-s16 "16 bit signed" (all-isas) 16 16 INT 468 1.1 skrll ((value pc) (ext INT 469 1.1.1.3 christos (trunc HI 470 1.1.1.3 christos (or (and (srl value 8) #xff) 471 1.1 skrll (sll (and value #xff) 8))))) ; insert 472 1.1 skrll ((value pc) (ext INT 473 1.1.1.3 christos (trunc HI 474 1.1.1.3 christos (or (and (srl value 8) #xff) 475 1.1 skrll (sll (and value #xff) 8))))) ; extract 476 1.1 skrll ) 477 1.1 skrll 478 1.1 skrll (dnmf f-dsp-24-u16 "16 bit unsigned" (all-isas) UINT 479 1.1 skrll (f-dsp-24-u8 f-dsp-32-u8) 480 1.1 skrll (sequence () ; insert 481 1.1 skrll (set (ifield f-dsp-24-u8) (and (ifield f-dsp-24-u16) #xff)) 482 1.1 skrll (set (ifield f-dsp-32-u8) (and (srl (ifield f-dsp-24-u16) 8) #xff)) 483 1.1 skrll ) 484 1.1 skrll (sequence () ; extract 485 1.1 skrll (set (ifield f-dsp-24-u16) (or (sll (ifield f-dsp-32-u8) 8) 486 1.1 skrll (ifield f-dsp-24-u8))) 487 1.1 skrll ) 488 1.1 skrll ) 489 1.1 skrll 490 1.1 skrll (dnmf f-dsp-24-s16 "16 bit signed" (all-isas) INT 491 1.1 skrll (f-dsp-24-u8 f-dsp-32-u8) 492 1.1 skrll (sequence () ; insert 493 1.1 skrll (set (ifield f-dsp-24-u8) 494 1.1 skrll (and (ifield f-dsp-24-s16) #xff)) 495 1.1 skrll (set (ifield f-dsp-32-u8) 496 1.1 skrll (and (srl (ifield f-dsp-24-s16) 8) #xff)) 497 1.1 skrll ) 498 1.1 skrll (sequence () ; extract 499 1.1 skrll (set (ifield f-dsp-24-s16) 500 1.1 skrll (ext INT 501 1.1 skrll (trunc HI (or (sll (ifield f-dsp-32-u8) 8) 502 1.1 skrll (ifield f-dsp-24-u8))))) 503 1.1 skrll ) 504 1.1 skrll ) 505 1.1 skrll 506 1.1 skrll (df f-dsp-32-u16 "16 bit unsigned" (all-isas) 32 16 UINT 507 1.1.1.3 christos ((value pc) (or UHI 508 1.1.1.3 christos (and (srl value 8) #xff) 509 1.1 skrll (sll (and value #xff) 8))) ; insert 510 1.1.1.3 christos ((value pc) (or UHI 511 1.1.1.3 christos (and UHI (srl UHI value 8) #xff) 512 1.1 skrll (sll UHI (and UHI value #xff) 8))) ; extract 513 1.1 skrll ) 514 1.1 skrll 515 1.1 skrll (df f-dsp-32-s16 "16 bit signed" (all-isas) 32 16 INT 516 1.1 skrll ((value pc) (ext INT 517 1.1.1.3 christos (trunc HI 518 1.1.1.3 christos (or (and (srl value 8) #xff) 519 1.1 skrll (sll (and value #xff) 8))))) ; insert 520 1.1 skrll ((value pc) (ext INT 521 1.1.1.3 christos (trunc HI 522 1.1.1.3 christos (or (and (srl value 8) #xff) 523 1.1 skrll (sll (and value #xff) 8))))) ; extract 524 1.1 skrll ) 525 1.1 skrll 526 1.1 skrll (df f-dsp-40-u16 "16 bit unsigned" (all-isas) 40 16 UINT 527 1.1.1.3 christos ((value pc) (or UHI 528 1.1.1.3 christos (and (srl value 8) #xff) 529 1.1 skrll (sll (and value #xff) 8))) ; insert 530 1.1.1.3 christos ((value pc) (or UHI 531 1.1.1.3 christos (and UHI (srl UHI value 8) #xff) 532 1.1 skrll (sll UHI (and UHI value #xff) 8))) ; extract 533 1.1 skrll ) 534 1.1 skrll 535 1.1 skrll (df f-dsp-40-s16 "16 bit signed" (all-isas) 40 16 INT 536 1.1 skrll ((value pc) (ext INT 537 1.1.1.3 christos (trunc HI 538 1.1.1.3 christos (or (and (srl value 8) #xff) 539 1.1 skrll (sll (and value #xff) 8))))) ; insert 540 1.1 skrll ((value pc) (ext INT 541 1.1.1.3 christos (trunc HI 542 1.1.1.3 christos (or (and (srl value 8) #xff) 543 1.1 skrll (sll (and value #xff) 8))))) ; extract 544 1.1 skrll ) 545 1.1 skrll 546 1.1 skrll (df f-dsp-48-u16 "16 bit unsigned" (all-isas) 48 16 UINT 547 1.1.1.3 christos ((value pc) (or UHI 548 1.1.1.3 christos (and (srl value 8) #xff) 549 1.1 skrll (sll (and value #xff) 8))) ; insert 550 1.1.1.3 christos ((value pc) (or UHI 551 1.1.1.3 christos (and UHI (srl UHI value 8) #xff) 552 1.1 skrll (sll UHI (and UHI value #xff) 8))) ; extract 553 1.1 skrll ) 554 1.1 skrll 555 1.1 skrll (df f-dsp-48-s16 "16 bit signed" (all-isas) 48 16 INT 556 1.1 skrll ((value pc) (ext INT 557 1.1.1.3 christos (trunc HI 558 1.1.1.3 christos (or (and (srl value 8) #xff) 559 1.1 skrll (sll (and value #xff) 8))))) ; insert 560 1.1 skrll ((value pc) (ext INT 561 1.1.1.3 christos (trunc HI 562 1.1.1.3 christos (or (and (srl value 8) #xff) 563 1.1 skrll (sll (and value #xff) 8))))) ; extract 564 1.1 skrll ) 565 1.1 skrll 566 1.1 skrll (df f-dsp-64-u16 "16 bit unsigned" (all-isas) 64 16 UINT 567 1.1.1.3 christos ((value pc) (or UHI 568 1.1.1.3 christos (and (srl value 8) #xff) 569 1.1 skrll (sll (and value #xff) 8))) ; insert 570 1.1.1.3 christos ((value pc) (or UHI 571 1.1.1.3 christos (and UHI (srl UHI value 8) #xff) 572 1.1 skrll (sll UHI (and UHI value #xff) 8))) ; extract 573 1.1 skrll ) 574 1.1.1.3 christos (df f-dsp-8-s24 "24 bit signed" (all-isas) 8 24 INT 575 1.1.1.3 christos ((value pc) (sub SI (xor (or SI (or (and (srl value 16) #xff) 576 1.1.1.3 christos (and value #xff00)) 577 1.1.1.3 christos (sll (and value #xff) 16)) 578 1.1.1.3 christos #x800000) #x800000)) 579 1.1.1.3 christos ((value pc) (sub SI (xor (or SI 580 1.1.1.3 christos (or (and (srl value 16) #xff) 581 1.1.1.3 christos (and value #xff00)) 582 1.1.1.3 christos (sll (and value #xff) 16)) 583 1.1 skrll #x800000) #x800000)) 584 1.1 skrll ) 585 1.1 skrll 586 1.1 skrll (df f-dsp-8-u24 "24 bit unsigned" (all-isas) 8 24 UINT 587 1.1 skrll ((value pc) (or SI 588 1.1 skrll (or (srl value 16) (and value #xff00)) 589 1.1 skrll (sll (and value #xff) 16))) 590 1.1 skrll ((value pc) (or SI 591 1.1 skrll (or (srl value 16) (and value #xff00)) 592 1.1 skrll (sll (and value #xff) 16))) 593 1.1 skrll ) 594 1.1 skrll 595 1.1 skrll (dnmf f-dsp-16-u24 "24 bit unsigned" (all-isas) UINT 596 1.1 skrll (f-dsp-16-u16 f-dsp-32-u8) 597 1.1 skrll (sequence () ; insert 598 1.1 skrll (set (ifield f-dsp-16-u16) (and (ifield f-dsp-16-u24) #xffff)) 599 1.1 skrll (set (ifield f-dsp-32-u8) (and (srl (ifield f-dsp-16-u24) 16) #xff)) 600 1.1 skrll ) 601 1.1 skrll (sequence () ; extract 602 1.1 skrll (set (ifield f-dsp-16-u24) (or (sll (ifield f-dsp-32-u8) 16) 603 1.1 skrll (ifield f-dsp-16-u16))) 604 1.1 skrll ) 605 1.1 skrll ) 606 1.1 skrll 607 1.1 skrll (dnmf f-dsp-24-u24 "24 bit unsigned" (all-isas) UINT 608 1.1 skrll (f-dsp-24-u8 f-dsp-32-u16) 609 1.1 skrll (sequence () ; insert 610 1.1 skrll (set (ifield f-dsp-24-u8) (and (ifield f-dsp-24-u24) #xff)) 611 1.1 skrll (set (ifield f-dsp-32-u16) (and (srl (ifield f-dsp-24-u24) 8) #xffff)) 612 1.1 skrll ) 613 1.1 skrll (sequence () ; extract 614 1.1 skrll (set (ifield f-dsp-24-u24) (or (sll (ifield f-dsp-32-u16) 8) 615 1.1 skrll (ifield f-dsp-24-u8))) 616 1.1 skrll ) 617 1.1 skrll ) 618 1.1 skrll 619 1.1 skrll (df f-dsp-32-u24 "24 bit unsigned" (all-isas) 32 24 UINT 620 1.1 skrll ((value pc) (or USI 621 1.1 skrll (or USI 622 1.1 skrll (and (srl value 16) #x0000ff) 623 1.1.1.2 christos (and value #x00ff00)) 624 1.1 skrll (and (sll value 16) #xff0000))) ; insert 625 1.1 skrll ((value pc) (or USI 626 1.1.1.2 christos (or USI 627 1.1.1.2 christos (and USI (srl value 16) #x0000ff) 628 1.1.1.2 christos (and USI value #x00ff00)) 629 1.1 skrll (and USI (sll value 16) #xff0000))) ; extract 630 1.1 skrll ) 631 1.1 skrll 632 1.1 skrll (df f-dsp-40-u20 "20 bit unsigned" (all-isas) 40 20 UINT 633 1.1 skrll ((value pc) (or USI 634 1.1 skrll (or USI 635 1.1 skrll (and (srl value 16) #x0000ff) 636 1.1.1.2 christos (and value #x00ff00)) 637 1.1 skrll (and (sll value 16) #x0f0000))) ; insert 638 1.1 skrll ((value pc) (or USI 639 1.1.1.2 christos (or USI 640 1.1.1.2 christos (and USI (srl value 16) #x0000ff) 641 1.1.1.2 christos (and USI value #x00ff00)) 642 1.1 skrll (and USI (sll value 16) #x0f0000))) ; extract 643 1.1.1.2 christos ) 644 1.1 skrll 645 1.1 skrll (df f-dsp-40-u24 "24 bit unsigned" (all-isas) 40 24 UINT 646 1.1 skrll ((value pc) (or USI 647 1.1 skrll (or USI 648 1.1 skrll (and (srl value 16) #x0000ff) 649 1.1.1.2 christos (and value #x00ff00)) 650 1.1 skrll (and (sll value 16) #xff0000))) ; insert 651 1.1 skrll ((value pc) (or USI 652 1.1.1.2 christos (or USI 653 1.1.1.2 christos (and USI (srl value 16) #x0000ff) 654 1.1.1.2 christos (and USI value #x00ff00)) 655 1.1 skrll (and USI (sll value 16) #xff0000))) ; extract 656 1.1 skrll ) 657 1.1 skrll 658 1.1 skrll (dnmf f-dsp-40-s32 "32 bit signed" (all-isas) INT 659 1.1 skrll (f-dsp-40-u24 f-dsp-64-u8) 660 1.1 skrll (sequence () ; insert 661 1.1 skrll (set (ifield f-dsp-64-u8) (and (srl (ifield f-dsp-40-s32) 24) #xff)) 662 1.1 skrll (set (ifield f-dsp-40-u24) (and (ifield f-dsp-40-s32) #xffffff)) 663 1.1 skrll ) 664 1.1 skrll (sequence () ; extract 665 1.1 skrll (set (ifield f-dsp-40-s32) (or (and (ifield f-dsp-40-u24) #xffffff) 666 1.1 skrll (and (sll (ifield f-dsp-64-u8) 24) #xff000000))) 667 1.1 skrll ) 668 1.1 skrll ) 669 1.1 skrll 670 1.1 skrll (dnmf f-dsp-48-u20 "20 bit unsigned" (all-isas) UINT 671 1.1 skrll (f-dsp-48-u16 f-dsp-64-u8) 672 1.1 skrll (sequence () ; insert 673 1.1 skrll (set (ifield f-dsp-64-u8) (and (srl (ifield f-dsp-48-u20) 16) #x0f)) 674 1.1 skrll (set (ifield f-dsp-48-u16) (and (ifield f-dsp-48-u20) #xffff)) 675 1.1 skrll ) 676 1.1 skrll (sequence () ; extract 677 1.1 skrll (set (ifield f-dsp-48-u20) (or (and (ifield f-dsp-48-u16) #xffff) 678 1.1 skrll (and (sll (ifield f-dsp-64-u8) 16) #x0f0000))) 679 1.1 skrll ) 680 1.1 skrll ) 681 1.1 skrll (dnmf f-dsp-48-u24 "24 bit unsigned" (all-isas) UINT 682 1.1 skrll (f-dsp-48-u16 f-dsp-64-u8) 683 1.1 skrll (sequence () ; insert 684 1.1 skrll (set (ifield f-dsp-64-u8) (and (srl (ifield f-dsp-48-u24) 16) #xff)) 685 1.1 skrll (set (ifield f-dsp-48-u16) (and (ifield f-dsp-48-u24) #xffff)) 686 1.1 skrll ) 687 1.1 skrll (sequence () ; extract 688 1.1 skrll (set (ifield f-dsp-48-u24) (or (and (ifield f-dsp-48-u16) #xffff) 689 1.1 skrll (and (sll (ifield f-dsp-64-u8) 16) #xff0000))) 690 1.1 skrll ) 691 1.1 skrll ) 692 1.1 skrll 693 1.1 skrll (dnmf f-dsp-16-s32 "32 bit signed" (all-isas) INT 694 1.1 skrll (f-dsp-16-u16 f-dsp-32-u16) 695 1.1 skrll (sequence () ; insert 696 1.1 skrll (set (ifield f-dsp-32-u16) (and (srl (ifield f-dsp-16-s32) 16) #xffff)) 697 1.1 skrll (set (ifield f-dsp-16-u16) (and (ifield f-dsp-16-s32) #xffff)) 698 1.1 skrll ) 699 1.1 skrll (sequence () ; extract 700 1.1 skrll (set (ifield f-dsp-16-s32) (or (and (ifield f-dsp-16-u16) #xffff) 701 1.1 skrll (and (sll (ifield f-dsp-32-u16) 16) #xffff0000))) 702 1.1 skrll ) 703 1.1 skrll ) 704 1.1 skrll 705 1.1 skrll (dnmf f-dsp-24-s32 "32 bit signed" (all-isas) INT 706 1.1 skrll (f-dsp-24-u8 f-dsp-32-u24) 707 1.1 skrll (sequence () ; insert 708 1.1 skrll (set (ifield f-dsp-32-u24) (and (srl (ifield f-dsp-24-s32) 8) #xffffff)) 709 1.1 skrll (set (ifield f-dsp-24-u8) (and (ifield f-dsp-24-s32) #xff)) 710 1.1 skrll ) 711 1.1 skrll (sequence () ; extract 712 1.1 skrll (set (ifield f-dsp-24-s32) (or (and (ifield f-dsp-24-u8) #xff) 713 1.1 skrll (and (sll (ifield f-dsp-32-u24) 8) #xffffff00))) 714 1.1 skrll ) 715 1.1 skrll ) 716 1.1 skrll 717 1.1 skrll (df f-dsp-32-s32 "32 bit signed" (all-isas) 32 32 INT 718 1.1 skrll ((value pc) 719 1.1 skrll 720 1.1 skrll ;; insert 721 1.1 skrll (ext INT 722 1.1 skrll (or SI 723 1.1.1.4 christos (or SI 724 1.1.1.4 christos (and (srl value 24) #x00ff) 725 1.1 skrll (and (srl value 8) #xff00)) 726 1.1.1.4 christos (or SI 727 1.1.1.4 christos (sll (and value #xff00) 8) 728 1.1 skrll (sll (and value #x00ff) 24))))) 729 1.1 skrll 730 1.1 skrll ;; extract 731 1.1 skrll ((value pc) 732 1.1 skrll (ext INT 733 1.1 skrll (or SI 734 1.1.1.4 christos (or SI 735 1.1.1.4 christos (and (srl value 24) #x00ff) 736 1.1 skrll (and (srl value 8) #xff00)) 737 1.1.1.4 christos (or SI 738 1.1.1.4 christos (sll (and value #xff00) 8) 739 1.1 skrll (sll (and value #x00ff) 24))))) 740 1.1 skrll ) 741 1.1 skrll 742 1.1 skrll (dnmf f-dsp-48-u32 "32 bit unsigned" (all-isas) UINT 743 1.1 skrll (f-dsp-48-u16 f-dsp-64-u16) 744 1.1 skrll (sequence () ; insert 745 1.1 skrll (set (ifield f-dsp-64-u16) (and (srl (ifield f-dsp-48-u32) 16) #xffff)) 746 1.1 skrll (set (ifield f-dsp-48-u16) (and (ifield f-dsp-48-u32) #xffff)) 747 1.1 skrll ) 748 1.1 skrll (sequence () ; extract 749 1.1.1.4 christos (set (ifield f-dsp-48-u32) (or (and (ifield f-dsp-48-u16) #xffff) 750 1.1 skrll (sll (and (ifield f-dsp-64-u16) #xffff) 16))) 751 1.1 skrll ) 752 1.1 skrll ) 753 1.1 skrll 754 1.1 skrll (dnmf f-dsp-48-s32 "32 bit signed" (all-isas) INT 755 1.1 skrll (f-dsp-48-u16 f-dsp-64-u16) 756 1.1 skrll (sequence () ; insert 757 1.1 skrll (set (ifield f-dsp-64-u16) (and (srl (ifield f-dsp-48-s32) 16) #xffff)) 758 1.1 skrll (set (ifield f-dsp-48-u16) (and (ifield f-dsp-48-s32) #xffff)) 759 1.1 skrll ) 760 1.1 skrll (sequence () ; extract 761 1.1.1.4 christos (set (ifield f-dsp-48-s32) (or (and (ifield f-dsp-48-u16) #xffff) 762 1.1 skrll (sll (and (ifield f-dsp-64-u16) #xffff) 16))) 763 1.1 skrll ) 764 1.1 skrll ) 765 1.1 skrll 766 1.1 skrll (dnmf f-dsp-56-s16 "16 bit signed" (all-isas) INT 767 1.1 skrll (f-dsp-56-u8 f-dsp-64-u8) 768 1.1 skrll (sequence () ; insert 769 1.1 skrll (set (ifield f-dsp-56-u8) 770 1.1 skrll (and (ifield f-dsp-56-s16) #xff)) 771 1.1 skrll (set (ifield f-dsp-64-u8) 772 1.1 skrll (and (srl (ifield f-dsp-56-s16) 8) #xff)) 773 1.1 skrll ) 774 1.1 skrll (sequence () ; extract 775 1.1 skrll (set (ifield f-dsp-56-s16) 776 1.1 skrll (ext INT 777 1.1 skrll (trunc HI (or (sll (ifield f-dsp-64-u8) 8) 778 1.1 skrll (ifield f-dsp-56-u8))))) 779 1.1 skrll ) 780 1.1 skrll ) 781 1.1 skrll 782 1.1 skrll (df f-dsp-64-s16 " 16 bit signed" (all-isas) 64 16 INT 783 1.1 skrll ((value pc) (ext INT 784 1.1.1.4 christos (trunc HI 785 1.1.1.4 christos (or (and (srl value 8) #xff) 786 1.1 skrll (sll (and value #xff) 8))))) ; insert 787 1.1 skrll ((value pc) (ext INT 788 1.1.1.4 christos (trunc HI 789 1.1.1.4 christos (or (and (srl value 8) #xff) 790 1.1 skrll (sll (and value #xff) 8))))) ; extract 791 1.1 skrll ) 792 1.1 skrll 793 1.1 skrll ;------------------------------------------------------------- 794 1.1 skrll ; Bit indices 795 1.1 skrll ;------------------------------------------------------------- 796 1.1 skrll 797 1.1 skrll (dnf f-bitno16-S "bit index for m16c" (all-isas) 5 3) 798 1.1 skrll (dnf f-bitno32-prefixed "bit index for m32c" (all-isas) 21 3) 799 1.1 skrll (dnf f-bitno32-unprefixed "bit index for m32c" (all-isas) 13 3) 800 1.1 skrll 801 1.1 skrll (dnmf f-bitbase16-u11-S "unsigned bit,base:11" (all-isas) UINT 802 1.1 skrll (f-bitno16-S f-dsp-8-u8) 803 1.1 skrll (sequence () ; insert 804 1.1 skrll (set (ifield f-bitno16-S) (and f-bitbase16-u11-S #x7)) 805 1.1 skrll (set (ifield f-dsp-8-u8) (and (srl (ifield f-bitbase16-u11-S) 3) #xff)) 806 1.1 skrll ) 807 1.1 skrll (sequence () ; extract 808 1.1 skrll (set (ifield f-bitbase16-u11-S) (or (sll (ifield f-dsp-8-u8) 3) 809 1.1 skrll (ifield f-bitno16-S))) 810 1.1 skrll ) 811 1.1 skrll ) 812 1.1 skrll 813 1.1 skrll (dnmf f-bitbase32-16-u11-unprefixed "unsigned bit,base:11" (all-isas) UINT 814 1.1 skrll (f-bitno32-unprefixed f-dsp-16-u8) 815 1.1 skrll (sequence () ; insert 816 1.1 skrll (set (ifield f-bitno32-unprefixed) (and f-bitbase32-16-u11-unprefixed #x7)) 817 1.1 skrll (set (ifield f-dsp-16-u8) (and (srl (ifield f-bitbase32-16-u11-unprefixed) 3) #xff)) 818 1.1 skrll ) 819 1.1 skrll (sequence () ; extract 820 1.1 skrll (set (ifield f-bitbase32-16-u11-unprefixed) (or (sll (ifield f-dsp-16-u8) 3) 821 1.1 skrll (ifield f-bitno32-unprefixed))) 822 1.1 skrll ) 823 1.1 skrll ) 824 1.1 skrll (dnmf f-bitbase32-16-s11-unprefixed "signed bit,base:11" (all-isas) INT 825 1.1 skrll (f-bitno32-unprefixed f-dsp-16-s8) 826 1.1 skrll (sequence () ; insert 827 1.1 skrll (set (ifield f-bitno32-unprefixed) (and f-bitbase32-16-s11-unprefixed #x7)) 828 1.1 skrll (set (ifield f-dsp-16-s8) (sra INT (ifield f-bitbase32-16-s11-unprefixed) 3)) 829 1.1 skrll ) 830 1.1.1.4 christos (sequence () ; extract 831 1.1 skrll (set (ifield f-bitbase32-16-s11-unprefixed) (or (mul (ifield f-dsp-16-s8) 8) 832 1.1 skrll (ifield f-bitno32-unprefixed))) 833 1.1 skrll ) 834 1.1 skrll ) 835 1.1 skrll (dnmf f-bitbase32-16-u19-unprefixed "unsigned bit,base:19" (all-isas) UINT 836 1.1 skrll (f-bitno32-unprefixed f-dsp-16-u16) 837 1.1 skrll (sequence () ; insert 838 1.1 skrll (set (ifield f-bitno32-unprefixed) (and f-bitbase32-16-u19-unprefixed #x7)) 839 1.1 skrll (set (ifield f-dsp-16-u16) (and (srl (ifield f-bitbase32-16-u19-unprefixed) 3) #xffff)) 840 1.1 skrll ) 841 1.1 skrll (sequence () ; extract 842 1.1 skrll (set (ifield f-bitbase32-16-u19-unprefixed) (or (sll (ifield f-dsp-16-u16) 3) 843 1.1 skrll (ifield f-bitno32-unprefixed))) 844 1.1 skrll ) 845 1.1 skrll ) 846 1.1 skrll (dnmf f-bitbase32-16-s19-unprefixed "signed bit,base:11" (all-isas) INT 847 1.1 skrll (f-bitno32-unprefixed f-dsp-16-s16) 848 1.1 skrll (sequence () ; insert 849 1.1 skrll (set (ifield f-bitno32-unprefixed) (and f-bitbase32-16-s19-unprefixed #x7)) 850 1.1 skrll (set (ifield f-dsp-16-s16) (sra INT (ifield f-bitbase32-16-s19-unprefixed) 3)) 851 1.1 skrll ) 852 1.1.1.3 christos (sequence () ; extract 853 1.1 skrll (set (ifield f-bitbase32-16-s19-unprefixed) (or (mul (ifield f-dsp-16-s16) 8) 854 1.1 skrll (ifield f-bitno32-unprefixed))) 855 1.1 skrll ) 856 1.1 skrll ) 857 1.1 skrll ; SID decoder doesn't handle multi-ifield referencing another multi-ifield :-( 858 1.1 skrll (dnmf f-bitbase32-16-u27-unprefixed "unsigned bit,base:27" (all-isas) UINT 859 1.1 skrll (f-bitno32-unprefixed f-dsp-16-u16 f-dsp-32-u8) 860 1.1 skrll (sequence () ; insert 861 1.1 skrll (set (ifield f-bitno32-unprefixed) (and f-bitbase32-16-u27-unprefixed #x7)) 862 1.1 skrll (set (ifield f-dsp-16-u16) (and (srl (ifield f-bitbase32-16-u27-unprefixed) 3) #xffff)) 863 1.1 skrll (set (ifield f-dsp-32-u8) (and (srl (ifield f-bitbase32-16-u27-unprefixed) 19) #xff)) 864 1.1 skrll ) 865 1.1 skrll (sequence () ; extract 866 1.1 skrll (set (ifield f-bitbase32-16-u27-unprefixed) (or (sll (ifield f-dsp-16-u16) 3) 867 1.1 skrll (or (sll (ifield f-dsp-32-u8) 19) 868 1.1 skrll (ifield f-bitno32-unprefixed)))) 869 1.1 skrll ) 870 1.1 skrll ) 871 1.1 skrll (dnmf f-bitbase32-24-u11-prefixed "unsigned bit,base:11" (all-isas) UINT 872 1.1 skrll (f-bitno32-prefixed f-dsp-24-u8) 873 1.1 skrll (sequence () ; insert 874 1.1 skrll (set (ifield f-bitno32-prefixed) (and f-bitbase32-24-u11-prefixed #x7)) 875 1.1 skrll (set (ifield f-dsp-24-u8) (and (srl (ifield f-bitbase32-24-u11-prefixed) 3) #xff)) 876 1.1 skrll ) 877 1.1 skrll (sequence () ; extract 878 1.1 skrll (set (ifield f-bitbase32-24-u11-prefixed) (or (sll (ifield f-dsp-24-u8) 3) 879 1.1 skrll (ifield f-bitno32-prefixed))) 880 1.1 skrll ) 881 1.1 skrll ) 882 1.1 skrll (dnmf f-bitbase32-24-s11-prefixed "signed bit,base:11" (all-isas) INT 883 1.1 skrll (f-bitno32-prefixed f-dsp-24-s8) 884 1.1 skrll (sequence () ; insert 885 1.1 skrll (set (ifield f-bitno32-prefixed) (and f-bitbase32-24-s11-prefixed #x7)) 886 1.1 skrll (set (ifield f-dsp-24-s8) (sra INT (ifield f-bitbase32-24-s11-prefixed) 3)) 887 1.1 skrll ) 888 1.1.1.4 christos (sequence () ; extract 889 1.1 skrll (set (ifield f-bitbase32-24-s11-prefixed) (or (mul (ifield f-dsp-24-s8) 8) 890 1.1 skrll (ifield f-bitno32-prefixed))) 891 1.1 skrll ) 892 1.1 skrll ) 893 1.1 skrll ; SID decoder doesn't handle multi-ifield referencing another multi-ifield :-( 894 1.1 skrll (dnmf f-bitbase32-24-u19-prefixed "unsigned bit,base:19" (all-isas) UINT 895 1.1 skrll (f-bitno32-prefixed f-dsp-24-u8 f-dsp-32-u8) 896 1.1 skrll (sequence () ; insert 897 1.1 skrll (set (ifield f-bitno32-prefixed) (and f-bitbase32-24-u19-prefixed #x7)) 898 1.1 skrll (set (ifield f-dsp-24-u8) (and (srl (ifield f-bitbase32-24-u19-prefixed) 3) #xff)) 899 1.1 skrll (set (ifield f-dsp-32-u8) (and (srl (ifield f-bitbase32-24-u19-prefixed) 11) #xff)) 900 1.1 skrll ) 901 1.1 skrll (sequence () ; extract 902 1.1 skrll (set (ifield f-bitbase32-24-u19-prefixed) (or (sll (ifield f-dsp-24-u8) 3) 903 1.1 skrll (or (sll (ifield f-dsp-32-u8) 11) 904 1.1 skrll (ifield f-bitno32-prefixed)))) 905 1.1 skrll ) 906 1.1 skrll ) 907 1.1 skrll ; SID decoder doesn't handle multi-ifield referencing another multi-ifield :-( 908 1.1 skrll (dnmf f-bitbase32-24-s19-prefixed "signed bit,base:11" (all-isas) INT 909 1.1 skrll (f-bitno32-prefixed f-dsp-24-u8 f-dsp-32-s8) 910 1.1 skrll (sequence () ; insert 911 1.1 skrll (set (ifield f-bitno32-prefixed) (and f-bitbase32-24-s19-prefixed #x7)) 912 1.1 skrll (set (ifield f-dsp-24-u8) (and (srl (ifield f-bitbase32-24-s19-prefixed) 3) #xff)) 913 1.1 skrll (set (ifield f-dsp-32-s8) (sra INT (ifield f-bitbase32-24-s19-prefixed) 11)) 914 1.1 skrll ) 915 1.1 skrll (sequence () ; extract 916 1.1.1.4 christos (set (ifield f-bitbase32-24-s19-prefixed) (or (sll (ifield f-dsp-24-u8) 3) 917 1.1 skrll (or (mul (ifield f-dsp-32-s8) 2048) 918 1.1 skrll (ifield f-bitno32-prefixed)))) 919 1.1 skrll ) 920 1.1 skrll ) 921 1.1 skrll ; SID decoder doesn't handle multi-ifield referencing another multi-ifield :-( 922 1.1 skrll (dnmf f-bitbase32-24-u27-prefixed "unsigned bit,base:27" (all-isas) UINT 923 1.1 skrll (f-bitno32-prefixed f-dsp-24-u8 f-dsp-32-u16) 924 1.1 skrll (sequence () ; insert 925 1.1 skrll (set (ifield f-bitno32-prefixed) (and f-bitbase32-24-u27-prefixed #x7)) 926 1.1 skrll (set (ifield f-dsp-24-u8) (and (srl (ifield f-bitbase32-24-u27-prefixed) 3) #xff)) 927 1.1 skrll (set (ifield f-dsp-32-u16) (and (srl (ifield f-bitbase32-24-u27-prefixed) 11) #xffff)) 928 1.1 skrll ) 929 1.1 skrll (sequence () ; extract 930 1.1 skrll (set (ifield f-bitbase32-24-u27-prefixed) (or (sll (ifield f-dsp-24-u8) 3) 931 1.1 skrll (or (sll (ifield f-dsp-32-u16) 11) 932 1.1 skrll (ifield f-bitno32-prefixed)))) 933 1.1 skrll ) 934 1.1 skrll ) 935 1.1 skrll 936 1.1 skrll ;------------------------------------------------------------- 937 1.1 skrll ; Labels 938 1.1 skrll ;------------------------------------------------------------- 939 1.1 skrll 940 1.1 skrll (df f-lab-5-3 "3 bit pc relative unsigned offset" (PCREL-ADDR all-isas) 5 3 UINT 941 1.1 skrll ((value pc) (sub SI value (add SI pc 2))) ; insert 942 1.1 skrll ((value pc) (add SI value (add SI pc 2))) ; extract 943 1.1 skrll ) 944 1.1 skrll (dnmf f-lab32-jmp-s "unsigned 3 bit pc relative offset" (PCREL-ADDR all-isas) UINT 945 1.1 skrll (f-2-2 f-7-1) 946 1.1 skrll (sequence ((SI val)) ; insert 947 1.1 skrll (set val (sub (sub (ifield f-lab32-jmp-s) pc) 2)) 948 1.1 skrll (set (ifield f-7-1) (and val #x1)) 949 1.1 skrll (set (ifield f-2-2) (srl val 1)) 950 1.1 skrll ) 951 1.1 skrll (sequence () ; extract 952 1.1 skrll (set (ifield f-lab32-jmp-s) (add pc (add (or (sll (ifield f-2-2) 1) 953 1.1 skrll (ifield f-7-1)) 954 1.1 skrll 2))) 955 1.1 skrll ) 956 1.1 skrll ) 957 1.1 skrll (df f-lab-8-8 "8 bit pc relative signed offset" (PCREL-ADDR all-isas) 8 8 INT 958 1.1 skrll ((value pc) (sub SI value (add SI pc 1))) ; insert 959 1.1 skrll ((value pc) (add SI value (add SI pc 1))) ; extract 960 1.1 skrll ) 961 1.1 skrll (df f-lab-8-16 "16 bit pc relative signed offset" (PCREL-ADDR SIGN-OPT all-isas) 8 16 UINT 962 1.1.1.3 christos ((value pc) (or SI (sll (and (sub value (add pc 1)) #xff) 8) 963 1.1.1.3 christos (srl (and (sub value (add pc 1)) #xff00) 8))) 964 1.1.1.3 christos ((value pc) (add SI (sub (xor (or (srl (and value #xff00) 8) 965 1.1.1.3 christos (sll (and value #xff) 8)) 966 1.1.1.3 christos #x8000) 967 1.1.1.3 christos #x8000) 968 1.1 skrll (add pc 1))) 969 1.1 skrll ) 970 1.1 skrll (df f-lab-8-24 "24 bit absolute" (all-isas ABS-ADDR) 8 24 UINT 971 1.1 skrll ((value pc) (or SI 972 1.1 skrll (or (srl value 16) (and value #xff00)) 973 1.1 skrll (sll (and value #xff) 16))) 974 1.1 skrll ((value pc) (or SI 975 1.1 skrll (or (srl value 16) (and value #xff00)) 976 1.1 skrll (sll (and value #xff) 16))) 977 1.1 skrll ) 978 1.1 skrll (df f-lab-16-8 "8 bit pc relative signed offset" (PCREL-ADDR all-isas) 16 8 INT 979 1.1 skrll ((value pc) (sub SI value (add SI pc 2))) ; insert 980 1.1 skrll ((value pc) (add SI value (add SI pc 2))) ; extract 981 1.1 skrll ) 982 1.1 skrll (df f-lab-24-8 "8 bit pc relative signed offset" (PCREL-ADDR all-isas) 24 8 INT 983 1.1 skrll ((value pc) (sub SI value (add SI pc 2))) ; insert 984 1.1 skrll ((value pc) (add SI value (add SI pc 2))) ; extract 985 1.1 skrll ) 986 1.1 skrll (df f-lab-32-8 "8 bit pc relative signed offset" (PCREL-ADDR all-isas) 32 8 INT 987 1.1 skrll ((value pc) (sub SI value (add SI pc 2))) ; insert 988 1.1 skrll ((value pc) (add SI value (add SI pc 2))) ; extract 989 1.1 skrll ) 990 1.1 skrll (df f-lab-40-8 "8 bit pc relative signed offset" (PCREL-ADDR all-isas) 40 8 INT 991 1.1 skrll ((value pc) (sub SI value (add SI pc 2))) ; insert 992 1.1 skrll ((value pc) (add SI value (add SI pc 2))) ; extract 993 1.1 skrll ) 994 1.1 skrll 995 1.1 skrll ;------------------------------------------------------------- 996 1.1 skrll ; Condition codes 997 1.1 skrll ;------------------------------------------------------------- 998 1.1 skrll 999 1.1 skrll (dnf f-cond16 "condition code" (all-isas) 12 4) 1000 1.1 skrll (dnf f-cond16j-5 "condition code" (all-isas) 5 3) 1001 1.1 skrll 1002 1.1 skrll (dnmf f-cond32 "condition code" (all-isas) UINT 1003 1.1 skrll (f-9-1 f-13-3) 1004 1.1 skrll (sequence () ; insert 1005 1.1 skrll (set (ifield f-9-1) (and (srl (ifield f-cond32) 3) 1)) 1006 1.1 skrll (set (ifield f-13-3) (and (ifield f-cond32) #x7)) 1007 1.1 skrll ) 1008 1.1 skrll (sequence () ; extract 1009 1.1 skrll (set (ifield f-cond32) (or (sll (ifield f-9-1) 3) 1010 1.1 skrll (ifield f-13-3))) 1011 1.1 skrll ) 1012 1.1 skrll ) 1013 1.1 skrll 1014 1.1 skrll (dnmf f-cond32j "condition code" (all-isas) UINT 1015 1.1 skrll (f-1-3 f-7-1) 1016 1.1 skrll (sequence () ; insert 1017 1.1 skrll (set (ifield f-1-3) (and (srl (ifield f-cond32j) 1) #x7)) 1018 1.1 skrll (set (ifield f-7-1) (and (ifield f-cond32j) #x1)) 1019 1.1 skrll ) 1020 1.1 skrll (sequence () ; extract 1021 1.1 skrll (set (ifield f-cond32j) (or (sll (ifield f-1-3) 1) 1022 1.1 skrll (ifield f-7-1))) 1023 1.1 skrll ) 1024 1.1 skrll ) 1025 1.1 skrll 1027 1.1 skrll ;============================================================= 1028 1.1 skrll ; Hardware 1029 1.1 skrll ; 1030 1.1 skrll (dnh h-pc "program counter" (PC all-isas) (pc USI) () () ()) 1031 1.1 skrll 1032 1.1 skrll ;------------------------------------------------------------- 1033 1.1 skrll ; General registers 1034 1.1 skrll ; The actual registers are 16 bits 1035 1.1 skrll ;------------------------------------------------------------- 1036 1.1 skrll 1037 1.1 skrll (define-hardware 1038 1.1 skrll (name h-gr) 1039 1.1 skrll (comment "general 16 bit registers") 1040 1.1 skrll (attrs all-isas CACHE-ADDR) 1041 1.1 skrll (type register HI (4)) 1042 1.1 skrll (indices keyword "" (("r0" 0) ("r1" 1) ("r2" 2) ("r3" 3)))) 1043 1.1 skrll 1044 1.1 skrll ; Define different views of the grs as VIRTUAL with getter/setter specs 1045 1.1 skrll ; 1046 1.1 skrll (define-hardware 1047 1.1 skrll (name h-gr-QI) 1048 1.1 skrll (comment "general 8 bit registers") 1049 1.1 skrll (attrs all-isas VIRTUAL) 1050 1.1 skrll (type register QI (4)) 1051 1.1 skrll (indices keyword "" (("r0l" 0) ("r0h" 1) ("r1l" 2) ("r1h" 3))) 1052 1.1 skrll (get (index) (and (if SI (mod index 2) 1053 1.1 skrll (srl (reg h-gr (div index 2)) 8) 1054 1.1 skrll (reg h-gr (div index 2))) 1055 1.1 skrll #xff)) 1056 1.1 skrll (set (index newval) (set (reg h-gr (div index 2)) 1057 1.1 skrll (if SI (mod index 2) 1058 1.1 skrll (or (and (reg h-gr (div index 2)) #xff) 1059 1.1 skrll (sll (and newval #xff) 8)) 1060 1.1 skrll (or (and (reg h-gr (div index 2)) #xff00) 1061 1.1 skrll (and newval #xff)))))) 1062 1.1 skrll 1063 1.1 skrll (define-hardware 1064 1.1 skrll (name h-gr-HI) 1065 1.1 skrll (comment "general 16 bit registers") 1066 1.1 skrll (attrs all-isas VIRTUAL) 1067 1.1 skrll (type register HI (4)) 1068 1.1 skrll (indices keyword "" (("r0" 0) ("r1" 1) ("r2" 2) ("r3" 3))) 1069 1.1 skrll (get (index) (reg h-gr index)) 1070 1.1 skrll (set (index newval) (set (reg h-gr index) newval))) 1071 1.1 skrll 1072 1.1 skrll (define-hardware 1073 1.1 skrll (name h-gr-SI) 1074 1.1 skrll (comment "general 32 bit registers") 1075 1.1 skrll (attrs all-isas VIRTUAL) 1076 1.1 skrll (type register SI (2)) 1077 1.1 skrll (indices keyword "" (("r2r0" 0) ("r3r1" 1))) 1078 1.1.1.4 christos (get (index) (or SI 1079 1.1 skrll (and (reg h-gr index) #xffff) 1080 1.1 skrll (sll (and (reg h-gr (add index 2)) #xffff) 16))) 1081 1.1 skrll (set (index newval) (sequence () 1082 1.1 skrll (set (reg h-gr index) (and newval #xffff)) 1083 1.1 skrll (set (reg h-gr (add index 2)) (srl newval 16))))) 1084 1.1 skrll 1085 1.1 skrll (define-hardware 1086 1.1 skrll (name h-gr-ext-QI) 1087 1.1 skrll (comment "general 16 bit registers") 1088 1.1 skrll (attrs all-isas VIRTUAL) 1089 1.1 skrll (type register HI (2)) 1090 1.1 skrll (indices keyword "" (("r0l" 0) ("r1l" 1))) 1091 1.1 skrll (get (index) (reg h-gr-QI (mul index 2))) 1092 1.1 skrll (set (index newval) (set (reg h-gr (mul index 2)) newval))) 1093 1.1 skrll 1094 1.1 skrll (define-hardware 1095 1.1 skrll (name h-gr-ext-HI) 1096 1.1 skrll (comment "general 16 bit registers") 1097 1.1 skrll (attrs all-isas VIRTUAL) 1098 1.1 skrll (type register SI (2)) 1099 1.1 skrll (indices keyword "" (("r0" 0) ("r1" 1))) 1100 1.1 skrll (get (index) (reg h-gr (mul index 2))) 1101 1.1 skrll (set (index newval) (set (reg h-gr-SI index) newval))) 1102 1.1 skrll 1103 1.1 skrll (define-hardware 1104 1.1 skrll (name h-r0l) 1105 1.1 skrll (comment "r0l register") 1106 1.1 skrll (attrs all-isas VIRTUAL) 1107 1.1 skrll (type register QI) 1108 1.1 skrll (indices keyword "" (("r0l" 0))) 1109 1.1 skrll (get () (reg h-gr-QI 0)) 1110 1.1 skrll (set (newval) (set (reg h-gr-QI 0) newval))) 1111 1.1 skrll 1112 1.1 skrll (define-hardware 1113 1.1 skrll (name h-r0h) 1114 1.1 skrll (comment "r0h register") 1115 1.1 skrll (attrs all-isas VIRTUAL) 1116 1.1 skrll (type register QI) 1117 1.1 skrll (indices keyword "" (("r0h" 0))) 1118 1.1 skrll (get () (reg h-gr-QI 1)) 1119 1.1 skrll (set (newval) (set (reg h-gr-QI 1) newval))) 1120 1.1 skrll 1121 1.1 skrll (define-hardware 1122 1.1 skrll (name h-r1l) 1123 1.1 skrll (comment "r1l register") 1124 1.1 skrll (attrs all-isas VIRTUAL) 1125 1.1 skrll (type register QI) 1126 1.1 skrll (indices keyword "" (("r1l" 0))) 1127 1.1 skrll (get () (reg h-gr-QI 2)) 1128 1.1 skrll (set (newval) (set (reg h-gr-QI 2) newval))) 1129 1.1 skrll 1130 1.1 skrll (define-hardware 1131 1.1 skrll (name h-r1h) 1132 1.1 skrll (comment "r1h register") 1133 1.1 skrll (attrs all-isas VIRTUAL) 1134 1.1 skrll (type register QI) 1135 1.1 skrll (indices keyword "" (("r1h" 0))) 1136 1.1 skrll (get () (reg h-gr-QI 3)) 1137 1.1 skrll (set (newval) (set (reg h-gr-QI 3) newval))) 1138 1.1 skrll 1139 1.1 skrll (define-hardware 1140 1.1 skrll (name h-r0) 1141 1.1 skrll (comment "r0 register") 1142 1.1 skrll (attrs all-isas VIRTUAL) 1143 1.1 skrll (type register HI) 1144 1.1 skrll (indices keyword "" (("r0" 0))) 1145 1.1 skrll (get () (reg h-gr 0)) 1146 1.1 skrll (set (newval) (set (reg h-gr 0) newval))) 1147 1.1 skrll 1148 1.1 skrll (define-hardware 1149 1.1 skrll (name h-r1) 1150 1.1 skrll (comment "r1 register") 1151 1.1 skrll (attrs all-isas VIRTUAL) 1152 1.1 skrll (type register HI) 1153 1.1 skrll (indices keyword "" (("r1" 0))) 1154 1.1 skrll (get () (reg h-gr 1)) 1155 1.1 skrll (set (newval) (set (reg h-gr 1) newval))) 1156 1.1 skrll 1157 1.1 skrll (define-hardware 1158 1.1 skrll (name h-r2) 1159 1.1 skrll (comment "r2 register") 1160 1.1 skrll (attrs all-isas VIRTUAL) 1161 1.1 skrll (type register HI) 1162 1.1 skrll (indices keyword "" (("r2" 0))) 1163 1.1 skrll (get () (reg h-gr 2)) 1164 1.1 skrll (set (newval) (set (reg h-gr 2) newval))) 1165 1.1 skrll 1166 1.1 skrll (define-hardware 1167 1.1 skrll (name h-r3) 1168 1.1 skrll (comment "r3 register") 1169 1.1 skrll (attrs all-isas VIRTUAL) 1170 1.1 skrll (type register HI) 1171 1.1 skrll (indices keyword "" (("r3" 0))) 1172 1.1 skrll (get () (reg h-gr 3)) 1173 1.1 skrll (set (newval) (set (reg h-gr 3) newval))) 1174 1.1 skrll 1175 1.1 skrll (define-hardware 1176 1.1 skrll (name h-r0l-r0h) 1177 1.1 skrll (comment "r0l or r0h") 1178 1.1 skrll (attrs all-isas VIRTUAL) 1179 1.1 skrll (type register QI (2)) 1180 1.1 skrll (indices keyword "" (("r0l" 0) ("r0h" 1))) 1181 1.1 skrll (get (index) (reg h-gr-QI index)) 1182 1.1 skrll (set (index newval) (set (reg h-gr-QI index) newval))) 1183 1.1 skrll 1184 1.1 skrll (define-hardware 1185 1.1 skrll (name h-r2r0) 1186 1.1 skrll (comment "r2r0 register") 1187 1.1 skrll (attrs all-isas VIRTUAL) 1188 1.1 skrll (type register SI) 1189 1.1 skrll (indices keyword "" (("r2r0" 0))) 1190 1.1 skrll (get () (or (sll (reg h-gr 2) 16) (reg h-gr 0))) 1191 1.1 skrll (set (newval) 1192 1.1 skrll (sequence () 1193 1.1 skrll (set (reg h-gr 0) newval) 1194 1.1 skrll (set (reg h-gr 2) (sra newval 16))))) 1195 1.1 skrll 1196 1.1 skrll (define-hardware 1197 1.1 skrll (name h-r3r1) 1198 1.1 skrll (comment "r3r1 register") 1199 1.1 skrll (attrs all-isas VIRTUAL) 1200 1.1 skrll (type register SI) 1201 1.1 skrll (indices keyword "" (("r3r1" 0))) 1202 1.1 skrll (get () (or (sll (reg h-gr 3) 16) (reg h-gr 1))) 1203 1.1 skrll (set (newval) 1204 1.1 skrll (sequence () 1205 1.1 skrll (set (reg h-gr 1) newval) 1206 1.1 skrll (set (reg h-gr 3) (sra newval 16))))) 1207 1.1 skrll 1208 1.1 skrll (define-hardware 1209 1.1 skrll (name h-r1r2r0) 1210 1.1 skrll (comment "r1r2r0 register") 1211 1.1 skrll (attrs all-isas VIRTUAL) 1212 1.1 skrll (type register DI) 1213 1.1 skrll (indices keyword "" (("r1r2r0" 0))) 1214 1.1 skrll (get () (or DI (sll DI (reg h-gr 1) 32) (or (sll (reg h-gr 2) 16) (reg h-gr 0)))) 1215 1.1 skrll (set (newval) 1216 1.1 skrll (sequence () 1217 1.1 skrll (set (reg h-gr 0) newval) 1218 1.1 skrll (set (reg h-gr 2) (sra newval 16)) 1219 1.1 skrll (set (reg h-gr 1) (sra newval 32))))) 1220 1.1 skrll 1221 1.1 skrll ;------------------------------------------------------------- 1222 1.1 skrll ; Address registers 1223 1.1 skrll ;------------------------------------------------------------- 1224 1.1 skrll 1225 1.1 skrll (define-hardware 1226 1.1 skrll (name h-ar) 1227 1.1 skrll (comment "address registers") 1228 1.1 skrll (attrs all-isas) 1229 1.1 skrll (type register USI (2)) 1230 1.1 skrll (indices keyword "" (("a0" 0) ("a1" 1))) 1231 1.1 skrll (get (index) (c-call USI "h_ar_get_handler" index)) 1232 1.1 skrll (set (index newval) (c-call VOID "h_ar_set_handler" index newval))) 1233 1.1 skrll 1234 1.1 skrll ; Define different views of the ars as VIRTUAL with getter/setter specs 1235 1.1 skrll (define-hardware 1236 1.1 skrll (name h-ar-QI) 1237 1.1 skrll (comment "8 bit view of address register") 1238 1.1 skrll (attrs all-isas VIRTUAL) 1239 1.1 skrll (type register QI (2)) 1240 1.1 skrll (indices keyword "" (("a0" 0) ("a1" 1))) 1241 1.1 skrll (get (index) (reg h-ar index)) 1242 1.1 skrll (set (index newval) (set (reg h-ar index) newval))) 1243 1.1 skrll 1244 1.1 skrll (define-hardware 1245 1.1 skrll (name h-ar-HI) 1246 1.1 skrll (comment "16 bit view of address register") 1247 1.1 skrll (attrs all-isas VIRTUAL) 1248 1.1 skrll (type register HI (2)) 1249 1.1 skrll (indices keyword "" (("a0" 0) ("a1" 1))) 1250 1.1 skrll (get (index) (reg h-ar index)) 1251 1.1 skrll (set (index newval) (set (reg h-ar index) newval))) 1252 1.1 skrll 1253 1.1 skrll (define-hardware 1254 1.1 skrll (name h-ar-SI) 1255 1.1 skrll (comment "32 bit view of address register") 1256 1.1 skrll (attrs all-isas VIRTUAL) 1257 1.1 skrll (type register SI) 1258 1.1 skrll (indices keyword "" (("a1a0" 0))) 1259 1.1 skrll (get () (or SI (sll SI (ext SI (reg h-ar 1)) 16) (ext SI (reg h-ar 0)))) 1260 1.1 skrll (set (newval) (sequence () 1261 1.1 skrll (set (reg h-ar 0) (and newval #xffff)) 1262 1.1 skrll (set (reg h-ar 1) (and (srl newval 16) #xffff))))) 1263 1.1 skrll 1264 1.1 skrll (define-hardware 1265 1.1 skrll (name h-a0) 1266 1.1 skrll (comment "16 bit view of address register") 1267 1.1 skrll (attrs all-isas VIRTUAL) 1268 1.1 skrll (type register HI) 1269 1.1 skrll (indices keyword "" (("a0" 0))) 1270 1.1 skrll (get () (reg h-ar 0)) 1271 1.1 skrll (set (newval) (set (reg h-ar 0) newval))) 1272 1.1 skrll 1273 1.1 skrll (define-hardware 1274 1.1 skrll (name h-a1) 1275 1.1 skrll (comment "16 bit view of address register") 1276 1.1 skrll (attrs all-isas VIRTUAL) 1277 1.1 skrll (type register HI) 1278 1.1 skrll (indices keyword "" (("a1" 1))) 1279 1.1 skrll (get () (reg h-ar 1)) 1280 1.1 skrll (set (newval) (set (reg h-ar 1) newval))) 1281 1.1 skrll 1282 1.1 skrll ; SB Register 1283 1.1 skrll (define-hardware 1284 1.1 skrll (name h-sb) 1285 1.1 skrll (comment "SB register") 1286 1.1 skrll (attrs all-isas) 1287 1.1 skrll (type register USI) 1288 1.1 skrll (get () (c-call USI "h_sb_get_handler")) 1289 1.1 skrll (set (newval) (c-call VOID "h_sb_set_handler" newval)) 1290 1.1 skrll ) 1291 1.1 skrll 1292 1.1 skrll ; FB Register 1293 1.1 skrll (define-hardware 1294 1.1 skrll (name h-fb) 1295 1.1 skrll (comment "FB register") 1296 1.1 skrll (attrs all-isas) 1297 1.1 skrll (type register USI) 1298 1.1 skrll (get () (c-call USI "h_fb_get_handler")) 1299 1.1 skrll (set (newval) (c-call VOID "h_fb_set_handler" newval)) 1300 1.1 skrll ) 1301 1.1 skrll 1302 1.1 skrll ; SP Register 1303 1.1 skrll (define-hardware 1304 1.1 skrll (name h-sp) 1305 1.1 skrll (comment "SP register") 1306 1.1 skrll (attrs all-isas) 1307 1.1 skrll (type register USI) 1308 1.1 skrll (get () (c-call USI "h_sp_get_handler")) 1309 1.1 skrll (set (newval) (c-call VOID "h_sp_set_handler" newval)) 1310 1.1 skrll ) 1311 1.1 skrll 1312 1.1 skrll ;------------------------------------------------------------- 1313 1.1 skrll ; condition-code bits 1314 1.1 skrll ;------------------------------------------------------------- 1315 1.1 skrll 1316 1.1 skrll (define-hardware 1317 1.1 skrll (name h-sbit) 1318 1.1 skrll (comment "sign bit") 1319 1.1 skrll (attrs all-isas) 1320 1.1 skrll (type register BI) 1321 1.1 skrll ) 1322 1.1 skrll 1323 1.1 skrll (define-hardware 1324 1.1 skrll (name h-zbit) 1325 1.1 skrll (comment "zero bit") 1326 1.1 skrll (attrs all-isas) 1327 1.1 skrll (type register BI) 1328 1.1 skrll ) 1329 1.1 skrll 1330 1.1 skrll (define-hardware 1331 1.1 skrll (name h-obit) 1332 1.1 skrll (comment "overflow bit") 1333 1.1 skrll (attrs all-isas) 1334 1.1 skrll (type register BI) 1335 1.1 skrll ) 1336 1.1 skrll 1337 1.1 skrll (define-hardware 1338 1.1 skrll (name h-cbit) 1339 1.1 skrll (comment "carry bit") 1340 1.1 skrll (attrs all-isas) 1341 1.1 skrll (type register BI) 1342 1.1 skrll ) 1343 1.1 skrll 1344 1.1 skrll (define-hardware 1345 1.1 skrll (name h-ubit) 1346 1.1 skrll (comment "stack pointer select bit") 1347 1.1 skrll (attrs all-isas) 1348 1.1 skrll (type register BI) 1349 1.1 skrll ) 1350 1.1 skrll 1351 1.1 skrll (define-hardware 1352 1.1 skrll (name h-ibit) 1353 1.1 skrll (comment "interrupt enable bit") 1354 1.1 skrll (attrs all-isas) 1355 1.1 skrll (type register BI) 1356 1.1 skrll ) 1357 1.1 skrll 1358 1.1 skrll (define-hardware 1359 1.1 skrll (name h-bbit) 1360 1.1 skrll (comment "register bank select bit") 1361 1.1 skrll (attrs all-isas) 1362 1.1 skrll (type register BI) 1363 1.1 skrll ) 1364 1.1 skrll 1365 1.1 skrll (define-hardware 1366 1.1 skrll (name h-dbit) 1367 1.1 skrll (comment "debug bit") 1368 1.1 skrll (attrs all-isas) 1369 1.1 skrll (type register BI) 1370 1.1 skrll ) 1371 1.1 skrll 1372 1.1 skrll (define-hardware 1373 1.1 skrll (name h-dct0) 1374 1.1 skrll (comment "dma transfer count 000") 1375 1.1 skrll (attrs all-isas) 1376 1.1 skrll (type register UHI) 1377 1.1 skrll ) 1378 1.1 skrll (define-hardware 1379 1.1 skrll (name h-dct1) 1380 1.1 skrll (comment "dma transfer count 001") 1381 1.1 skrll (attrs all-isas) 1382 1.1 skrll (type register UHI) 1383 1.1 skrll ) 1384 1.1 skrll (define-hardware 1385 1.1 skrll (name h-svf) 1386 1.1 skrll (comment "save flag 011") 1387 1.1 skrll (attrs all-isas) 1388 1.1 skrll (type register UHI) 1389 1.1 skrll ) 1390 1.1 skrll (define-hardware 1391 1.1 skrll (name h-drc0) 1392 1.1 skrll (comment "dma transfer count reload 100") 1393 1.1 skrll (attrs all-isas) 1394 1.1 skrll (type register UHI) 1395 1.1 skrll ) 1396 1.1 skrll (define-hardware 1397 1.1 skrll (name h-drc1) 1398 1.1 skrll (comment "dma transfer count reload 101") 1399 1.1 skrll (attrs all-isas) 1400 1.1 skrll (type register UHI) 1401 1.1 skrll ) 1402 1.1 skrll (define-hardware 1403 1.1 skrll (name h-dmd0) 1404 1.1 skrll (comment "dma mode 110") 1405 1.1 skrll (attrs all-isas) 1406 1.1 skrll (type register UQI) 1407 1.1 skrll ) 1408 1.1 skrll (define-hardware 1409 1.1 skrll (name h-dmd1) 1410 1.1 skrll (comment "dma mode 111") 1411 1.1 skrll (attrs all-isas) 1412 1.1 skrll (type register UQI) 1413 1.1 skrll ) 1414 1.1 skrll (define-hardware 1415 1.1 skrll (name h-intb) 1416 1.1 skrll (comment "interrupt table 000") 1417 1.1 skrll (attrs all-isas) 1418 1.1 skrll (type register USI) 1419 1.1 skrll ) 1420 1.1 skrll (define-hardware 1421 1.1 skrll (name h-svp) 1422 1.1 skrll (comment "save pc 100") 1423 1.1 skrll (attrs all-isas) 1424 1.1 skrll (type register UHI) 1425 1.1 skrll ) 1426 1.1 skrll (define-hardware 1427 1.1 skrll (name h-vct) 1428 1.1 skrll (comment "vector 101") 1429 1.1 skrll (attrs all-isas) 1430 1.1 skrll (type register USI) 1431 1.1 skrll ) 1432 1.1 skrll (define-hardware 1433 1.1 skrll (name h-isp) 1434 1.1 skrll (comment "interrupt stack ptr 111") 1435 1.1 skrll (attrs all-isas) 1436 1.1 skrll (type register USI) 1437 1.1 skrll ) 1438 1.1 skrll (define-hardware 1439 1.1 skrll (name h-dma0) 1440 1.1 skrll (comment "dma mem addr 010") 1441 1.1 skrll (attrs all-isas) 1442 1.1 skrll (type register USI) 1443 1.1 skrll ) 1444 1.1 skrll (define-hardware 1445 1.1 skrll (name h-dma1) 1446 1.1 skrll (comment "dma mem addr 011") 1447 1.1 skrll (attrs all-isas) 1448 1.1 skrll (type register USI) 1449 1.1 skrll ) 1450 1.1 skrll (define-hardware 1451 1.1 skrll (name h-dra0) 1452 1.1 skrll (comment "dma mem addr reload 100") 1453 1.1 skrll (attrs all-isas) 1454 1.1 skrll (type register USI) 1455 1.1 skrll ) 1456 1.1 skrll (define-hardware 1457 1.1 skrll (name h-dra1) 1458 1.1 skrll (comment "dma mem addr reload 101") 1459 1.1 skrll (attrs all-isas) 1460 1.1 skrll (type register USI) 1461 1.1 skrll ) 1462 1.1 skrll (define-hardware 1463 1.1 skrll (name h-dsa0) 1464 1.1 skrll (comment "dma sfr addr 110") 1465 1.1 skrll (attrs all-isas) 1466 1.1 skrll (type register USI) 1467 1.1 skrll ) 1468 1.1 skrll (define-hardware 1469 1.1 skrll (name h-dsa1) 1470 1.1 skrll (comment "dma sfr addr 111") 1471 1.1 skrll (attrs all-isas) 1472 1.1 skrll (type register USI) 1473 1.1 skrll ) 1474 1.1 skrll 1475 1.1 skrll ;------------------------------------------------------------- 1476 1.1 skrll ; Condition code operand hardware 1477 1.1 skrll ;------------------------------------------------------------- 1478 1.1 skrll 1479 1.1 skrll (define-hardware 1480 1.1 skrll (name h-cond16) 1481 1.1 skrll (comment "condition code hardware for m16c") 1482 1.1 skrll (attrs m16c-isa MACH16) 1483 1.1 skrll (type immediate UQI) 1484 1.1 skrll (values keyword "" 1485 1.1 skrll (("geu" #x00) ("c" #x00) 1486 1.1 skrll ("gtu" #x01) 1487 1.1 skrll ("eq" #x02) ("z" #x02) 1488 1.1 skrll ("n" #x03) 1489 1.1 skrll ("le" #x04) 1490 1.1 skrll ("o" #x05) 1491 1.1 skrll ("ge" #x06) 1492 1.1 skrll ("ltu" #xf8) ("nc" #xf8) 1493 1.1 skrll ("leu" #xf9) 1494 1.1 skrll ("ne" #xfa) ("nz" #xfa) 1495 1.1 skrll ("pz" #xfb) 1496 1.1 skrll ("gt" #xfc) 1497 1.1 skrll ("no" #xfd) 1498 1.1 skrll ("lt" #xfe) 1499 1.1 skrll ) 1500 1.1 skrll ) 1501 1.1 skrll ) 1502 1.1 skrll (define-hardware 1503 1.1 skrll (name h-cond16c) 1504 1.1 skrll (comment "condition code hardware for m16c") 1505 1.1 skrll (attrs m16c-isa MACH16) 1506 1.1 skrll (type immediate UQI) 1507 1.1 skrll (values keyword "" 1508 1.1 skrll (("geu" #x00) ("c" #x00) 1509 1.1 skrll ("gtu" #x01) 1510 1.1 skrll ("eq" #x02) ("z" #x02) 1511 1.1 skrll ("n" #x03) 1512 1.1 skrll ("ltu" #x04) ("nc" #x04) 1513 1.1 skrll ("leu" #x05) 1514 1.1 skrll ("ne" #x06) ("nz" #x06) 1515 1.1 skrll ("pz" #x07) 1516 1.1 skrll ("le" #x08) 1517 1.1 skrll ("o" #x09) 1518 1.1 skrll ("ge" #x0a) 1519 1.1 skrll ("gt" #x0c) 1520 1.1 skrll ("no" #x0d) 1521 1.1 skrll ("lt" #x0e) 1522 1.1 skrll ) 1523 1.1 skrll ) 1524 1.1 skrll ) 1525 1.1 skrll (define-hardware 1526 1.1 skrll (name h-cond16j) 1527 1.1 skrll (comment "condition code hardware for m16c") 1528 1.1 skrll (attrs m16c-isa MACH16) 1529 1.1 skrll (type immediate UQI) 1530 1.1 skrll (values keyword "" 1531 1.1 skrll (("le" #x08) 1532 1.1 skrll ("o" #x09) 1533 1.1 skrll ("ge" #x0a) 1534 1.1 skrll ("gt" #x0c) 1535 1.1 skrll ("no" #x0d) 1536 1.1 skrll ("lt" #x0e) 1537 1.1 skrll ) 1538 1.1 skrll ) 1539 1.1 skrll ) 1540 1.1 skrll (define-hardware 1541 1.1 skrll (name h-cond16j-5) 1542 1.1 skrll (comment "condition code hardware for m16c") 1543 1.1 skrll (attrs m16c-isa MACH16) 1544 1.1 skrll (type immediate UQI) 1545 1.1 skrll (values keyword "" 1546 1.1 skrll (("geu" #x00) ("c" #x00) 1547 1.1 skrll ("gtu" #x01) 1548 1.1 skrll ("eq" #x02) ("z" #x02) 1549 1.1 skrll ("n" #x03) 1550 1.1 skrll ("ltu" #x04) ("nc" #x04) 1551 1.1 skrll ("leu" #x05) 1552 1.1 skrll ("ne" #x06) ("nz" #x06) 1553 1.1 skrll ("pz" #x07) 1554 1.1 skrll ) 1555 1.1 skrll ) 1556 1.1 skrll ) 1557 1.1 skrll 1558 1.1 skrll (define-hardware 1559 1.1 skrll (name h-cond32) 1560 1.1 skrll (comment "condition code hardware for m32c") 1561 1.1 skrll (attrs m32c-isa MACH32) 1562 1.1 skrll (type immediate UQI) 1563 1.1 skrll (values keyword "" 1564 1.1 skrll (("ltu" #x00) ("nc" #x00) 1565 1.1 skrll ("leu" #x01) 1566 1.1 skrll ("ne" #x02) ("nz" #x02) 1567 1.1 skrll ("pz" #x03) 1568 1.1 skrll ("no" #x04) 1569 1.1 skrll ("gt" #x05) 1570 1.1 skrll ("ge" #x06) 1571 1.1 skrll ("geu" #x08) ("c" #x08) 1572 1.1 skrll ("gtu" #x09) 1573 1.1 skrll ("eq" #x0a) ("z" #x0a) 1574 1.1 skrll ("n" #x0b) 1575 1.1 skrll ("o" #x0c) 1576 1.1 skrll ("le" #x0d) 1577 1.1 skrll ("lt" #x0e) 1578 1.1 skrll ) 1579 1.1 skrll ) 1580 1.1 skrll ) 1581 1.1 skrll 1582 1.1 skrll (define-hardware 1583 1.1 skrll (name h-cr1-32) 1584 1.1 skrll (comment "control registers") 1585 1.1 skrll (attrs m32c-isa MACH32) 1586 1.1 skrll (type immediate UQI) 1587 1.1 skrll (values keyword "" (("dct0" 0) ("dct1" 1) ("flg" 2) ("svf" 3) ("drc0" 4) 1588 1.1 skrll ("drc1" 5) ("dmd0" 6) ("dmd1" 7)))) 1589 1.1 skrll (define-hardware 1590 1.1 skrll (name h-cr2-32) 1591 1.1 skrll (comment "control registers") 1592 1.1 skrll (attrs m32c-isa MACH32) 1593 1.1 skrll (type immediate UQI) 1594 1.1 skrll (values keyword "" (("intb" 0) ("sp" 1) ("sb" 2) ("fb" 3) ("svp" 4) 1595 1.1 skrll ("vct" 5) ("isp" 7)))) 1596 1.1 skrll 1597 1.1 skrll (define-hardware 1598 1.1 skrll (name h-cr3-32) 1599 1.1 skrll (comment "control registers") 1600 1.1 skrll (attrs m32c-isa MACH32) 1601 1.1 skrll (type immediate UQI) 1602 1.1 skrll (values keyword "" (("dma0" 2) ("dma1" 3) ("dra0" 4) 1603 1.1 skrll ("dra1" 5) ("dsa0" 6) ("dsa1" 7)))) 1604 1.1 skrll (define-hardware 1605 1.1 skrll (name h-cr-16) 1606 1.1 skrll (comment "control registers") 1607 1.1 skrll (attrs m16c-isa MACH16) 1608 1.1 skrll (type immediate UQI) 1609 1.1 skrll (values keyword "" (("intbl" 1) ("intbh" 2) ("flg" 3) ("isp" 4) 1610 1.1 skrll ("sp" 5) ("sb" 6) ("fb" 7)))) 1611 1.1 skrll 1612 1.1 skrll (define-hardware 1613 1.1 skrll (name h-flags) 1614 1.1 skrll (comment "flag hardware for m32c") 1615 1.1 skrll (attrs all-isas) 1616 1.1 skrll (type immediate UQI) 1617 1.1 skrll (values keyword "" 1618 1.1 skrll (("c" #x0) 1619 1.1 skrll ("d" #x1) 1620 1.1 skrll ("z" #x2) 1621 1.1 skrll ("s" #x3) 1622 1.1 skrll ("b" #x4) 1623 1.1 skrll ("o" #x5) 1624 1.1 skrll ("i" #x6) 1625 1.1 skrll ("u" #x7) 1626 1.1 skrll ) 1627 1.1 skrll ) 1628 1.1 skrll ) 1629 1.1 skrll 1630 1.1 skrll ;------------------------------------------------------------- 1631 1.1 skrll ; Misc helper hardware 1632 1.1 skrll ;------------------------------------------------------------- 1633 1.1 skrll 1634 1.1 skrll (define-hardware 1635 1.1 skrll (name h-shimm) 1636 1.1 skrll (comment "shift immediate") 1637 1.1 skrll (attrs all-isas) 1638 1.1 skrll (type immediate (INT 4)) 1639 1.1 skrll (values keyword "" (("1" 0) ("2" 1) ("3" 2) ("4" 3) ("5" 4) ("6" 5) ("7" 6) 1640 1.1 skrll ("8" 7) ("-1" -8) ("-2" -7) ("-3" -6) ("-4" -5) ("-5" -4) 1641 1.1 skrll ("-6" -3) ("-7" -2) ("-8" -1) 1642 1.1 skrll ))) 1643 1.1 skrll (define-hardware 1644 1.1 skrll (name h-bit-index) 1645 1.1 skrll (comment "bit index for the next insn") 1646 1.1 skrll (attrs m32c-isa MACH32) 1647 1.1 skrll (type register UHI) 1648 1.1 skrll ) 1649 1.1 skrll (define-hardware 1650 1.1 skrll (name h-src-index) 1651 1.1 skrll (comment "source index for the next insn") 1652 1.1 skrll (attrs m32c-isa MACH32) 1653 1.1 skrll (type register UHI) 1654 1.1 skrll ) 1655 1.1 skrll (define-hardware 1656 1.1 skrll (name h-dst-index) 1657 1.1 skrll (comment "destination index for the next insn") 1658 1.1 skrll (attrs m32c-isa MACH32) 1659 1.1 skrll (type register UHI) 1660 1.1 skrll ) 1661 1.1 skrll (define-hardware 1662 1.1 skrll (name h-src-indirect) 1663 1.1 skrll (comment "indirect src for the next insn") 1664 1.1 skrll (attrs all-isas) 1665 1.1 skrll (type register UHI) 1666 1.1 skrll ) 1667 1.1 skrll (define-hardware 1668 1.1 skrll (name h-dst-indirect) 1669 1.1 skrll (comment "indirect dst for the next insn") 1670 1.1 skrll (attrs all-isas) 1671 1.1 skrll (type register UHI) 1672 1.1 skrll ) 1673 1.1 skrll (define-hardware 1674 1.1 skrll (name h-none) 1675 1.1 skrll (comment "for storing unused values") 1676 1.1 skrll (attrs m32c-isa MACH32) 1677 1.1 skrll (type register SI) 1678 1.1 skrll ) 1679 1.1 skrll 1681 1.1 skrll ;============================================================= 1682 1.1 skrll ; Operands 1683 1.1 skrll ;------------------------------------------------------------- 1684 1.1 skrll ; Source Registers 1685 1.1 skrll ;------------------------------------------------------------- 1686 1.1 skrll 1687 1.1 skrll (dnop Src16RnQI "general register QI view" (MACH16 m16c-isa) h-gr-QI f-src16-rn) 1688 1.1 skrll (dnop Src16RnHI "general register QH view" (MACH16 m16c-isa) h-gr-HI f-src16-rn) 1689 1.1 skrll 1690 1.1 skrll (dnop Src32RnUnprefixedQI "general register QI view" (MACH32 m32c-isa) h-gr-QI f-src32-rn-unprefixed-QI) 1691 1.1 skrll (dnop Src32RnUnprefixedHI "general register HI view" (MACH32 m32c-isa) h-gr-HI f-src32-rn-unprefixed-HI) 1692 1.1 skrll (dnop Src32RnUnprefixedSI "general register SI view" (MACH32 m32c-isa) h-gr-SI f-src32-rn-unprefixed-SI) 1693 1.1 skrll 1694 1.1 skrll (dnop Src32RnPrefixedQI "general register QI view" (MACH32 m32c-isa) h-gr-QI f-src32-rn-prefixed-QI) 1695 1.1 skrll (dnop Src32RnPrefixedHI "general register HI view" (MACH32 m32c-isa) h-gr-HI f-src32-rn-prefixed-HI) 1696 1.1 skrll (dnop Src32RnPrefixedSI "general register SI view" (MACH32 m32c-isa) h-gr-SI f-src32-rn-prefixed-SI) 1697 1.1 skrll 1698 1.1 skrll (dnop Src16An "address register" (MACH16 m16c-isa) h-ar f-src16-an) 1699 1.1 skrll (dnop Src16AnQI "address register QI view" (MACH16 m16c-isa) h-ar-QI f-src16-an) 1700 1.1 skrll (dnop Src16AnHI "address register HI view" (MACH16 m16c-isa) h-ar-HI f-src16-an) 1701 1.1 skrll 1702 1.1 skrll (dnop Src32AnUnprefixed "address register" (MACH32 m32c-isa) h-ar f-src32-an-unprefixed) 1703 1.1 skrll (dnop Src32AnUnprefixedQI "address register QI view" (MACH32 m32c-isa) h-ar-QI f-src32-an-unprefixed) 1704 1.1 skrll (dnop Src32AnUnprefixedHI "address register HI view" (MACH32 m32c-isa) h-ar-HI f-src32-an-unprefixed) 1705 1.1 skrll (dnop Src32AnUnprefixedSI "address register SI view" (MACH32 m32c-isa) h-ar f-src32-an-unprefixed) 1706 1.1 skrll 1707 1.1 skrll (dnop Src32AnPrefixed "address register" (MACH32 m32c-isa) h-ar f-src32-an-prefixed) 1708 1.1 skrll (dnop Src32AnPrefixedQI "address register QI view" (MACH32 m32c-isa) h-ar-QI f-src32-an-prefixed) 1709 1.1 skrll (dnop Src32AnPrefixedHI "address register HI view" (MACH32 m32c-isa) h-ar-HI f-src32-an-prefixed) 1710 1.1 skrll (dnop Src32AnPrefixedSI "address register SI view" (MACH32 m32c-isa) h-ar f-src32-an-prefixed) 1711 1.1 skrll 1712 1.1 skrll ; Destination Registers 1713 1.1 skrll ; 1714 1.1 skrll (dnop Dst16RnQI "general register QI view" (MACH16 m16c-isa) h-gr-QI f-dst16-rn) 1715 1.1 skrll (dnop Dst16RnHI "general register HI view" (MACH16 m16c-isa) h-gr-HI f-dst16-rn) 1716 1.1 skrll (dnop Dst16RnSI "general register SI view" (MACH16 m16c-isa) h-gr-SI f-dst16-rn) 1717 1.1 skrll (dnop Dst16RnExtQI "general register QI/HI view for 'ext' insns" (MACH16 m16c-isa) h-gr-ext-QI f-dst16-rn-ext) 1718 1.1 skrll 1719 1.1 skrll (dnop Dst32R0QI-S "general register QI view" (MACH32 m32c-isa) h-r0l f-nil) 1720 1.1 skrll (dnop Dst32R0HI-S "general register HI view" (MACH32 m32c-isa) h-r0 f-nil) 1721 1.1 skrll 1722 1.1 skrll (dnop Dst32RnUnprefixedQI "general register QI view" (MACH32 m32c-isa) h-gr-QI f-dst32-rn-unprefixed-QI) 1723 1.1 skrll (dnop Dst32RnUnprefixedHI "general register HI view" (MACH32 m32c-isa) h-gr-HI f-dst32-rn-unprefixed-HI) 1724 1.1 skrll (dnop Dst32RnUnprefixedSI "general register SI view" (MACH32 m32c-isa) h-gr-SI f-dst32-rn-unprefixed-SI) 1725 1.1 skrll (dnop Dst32RnExtUnprefixedQI "general register QI view" (MACH32 m32c-isa) h-gr-ext-QI f-dst32-rn-ext-unprefixed) 1726 1.1 skrll (dnop Dst32RnExtUnprefixedHI "general register HI view" (MACH32 m32c-isa) h-gr-ext-HI f-dst32-rn-ext-unprefixed) 1727 1.1 skrll 1728 1.1 skrll (dnop Dst32RnPrefixedQI "general register QI view" (MACH32 m32c-isa) h-gr-QI f-dst32-rn-prefixed-QI) 1729 1.1 skrll (dnop Dst32RnPrefixedHI "general register HI view" (MACH32 m32c-isa) h-gr-HI f-dst32-rn-prefixed-HI) 1730 1.1 skrll (dnop Dst32RnPrefixedSI "general register SI view" (MACH32 m32c-isa) h-gr-SI f-dst32-rn-prefixed-SI) 1731 1.1 skrll 1732 1.1 skrll (dnop Dst16RnQI-S "general register QI view" (MACH16 m16c-isa) h-r0l-r0h f-dst16-rn-QI-s) 1733 1.1 skrll 1734 1.1 skrll (dnop Dst16AnQI-S "address register QI view" (MACH16 m16c-isa) h-ar-QI f-dst16-rn-QI-s) 1735 1.1 skrll 1736 1.1 skrll (dnop Bit16Rn "general register bit view" (MACH16 m16c-isa) h-gr-HI f-dst16-rn) 1737 1.1 skrll 1738 1.1 skrll (dnop Bit32RnPrefixed "general register bit view" (MACH32 m32c-isa) h-gr-QI f-dst32-rn-prefixed-QI) 1739 1.1 skrll (dnop Bit32RnUnprefixed "general register bit view" (MACH32 m32c-isa) h-gr-QI f-dst32-rn-unprefixed-QI) 1740 1.1 skrll 1741 1.1 skrll (dnop R0 "r0" (all-isas) h-r0 f-nil) 1742 1.1 skrll (dnop R1 "r1" (all-isas) h-r1 f-nil) 1743 1.1 skrll (dnop R2 "r2" (all-isas) h-r2 f-nil) 1744 1.1 skrll (dnop R3 "r3" (all-isas) h-r3 f-nil) 1745 1.1 skrll (dnop R0l "r0l" (all-isas) h-r0l f-nil) 1746 1.1 skrll (dnop R0h "r0h" (all-isas) h-r0h f-nil) 1747 1.1 skrll (dnop R2R0 "r2r0" (all-isas) h-r2r0 f-nil) 1748 1.1 skrll (dnop R3R1 "r3r1" (all-isas) h-r3r1 f-nil) 1749 1.1 skrll (dnop R1R2R0 "r1r2r0" (all-isas) h-r1r2r0 f-nil) 1750 1.1 skrll 1751 1.1 skrll (dnop Dst16An "address register" (MACH16 m16c-isa) h-ar f-dst16-an) 1752 1.1 skrll (dnop Dst16AnQI "address register QI view" (MACH16 m16c-isa) h-ar-QI f-dst16-an) 1753 1.1 skrll (dnop Dst16AnHI "address register HI view" (MACH16 m16c-isa) h-ar-HI f-dst16-an) 1754 1.1 skrll (dnop Dst16AnSI "address register SI view" (MACH16 m16c-isa) h-ar-SI f-dst16-an) 1755 1.1 skrll (dnop Dst16An-S "address register HI view" (MACH16 m16c-isa) h-ar-HI f-dst16-an-s) 1756 1.1 skrll 1757 1.1 skrll (dnop Dst32AnUnprefixed "address register" (MACH32 m32c-isa) h-ar f-dst32-an-unprefixed) 1758 1.1 skrll (dnop Dst32AnUnprefixedQI "address register QI view" (MACH32 m32c-isa) h-ar-QI f-dst32-an-unprefixed) 1759 1.1 skrll (dnop Dst32AnUnprefixedHI "address register HI view" (MACH32 m32c-isa) h-ar-HI f-dst32-an-unprefixed) 1760 1.1 skrll (dnop Dst32AnUnprefixedSI "address register SI view" (MACH32 m32c-isa) h-ar f-dst32-an-unprefixed) 1761 1.1 skrll 1762 1.1 skrll (dnop Dst32AnExtUnprefixed "address register" (MACH32 m32c-isa) h-ar f-dst32-an-unprefixed) 1763 1.1 skrll 1764 1.1 skrll (dnop Dst32AnPrefixed "address register" (MACH32 m32c-isa) h-ar f-dst32-an-prefixed) 1765 1.1 skrll (dnop Dst32AnPrefixedQI "address register QI view" (MACH32 m32c-isa) h-ar-QI f-dst32-an-prefixed) 1766 1.1 skrll (dnop Dst32AnPrefixedHI "address register HI view" (MACH32 m32c-isa) h-ar-HI f-dst32-an-prefixed) 1767 1.1 skrll (dnop Dst32AnPrefixedSI "address register SI view" (MACH32 m32c-isa) h-ar f-dst32-an-prefixed) 1768 1.1 skrll 1769 1.1 skrll (dnop Bit16An "address register bit view" (MACH16 m16c-isa) h-ar f-dst16-an) 1770 1.1 skrll 1771 1.1 skrll (dnop Bit32AnPrefixed "address register bit" (MACH32 m32c-isa) h-ar f-dst32-an-prefixed) 1772 1.1 skrll (dnop Bit32AnUnprefixed "address register bit" (MACH32 m32c-isa) h-ar f-dst32-an-unprefixed) 1773 1.1 skrll 1774 1.1 skrll (dnop A0 "a0" (all-isas) h-a0 f-nil) 1775 1.1 skrll (dnop A1 "a1" (all-isas) h-a1 f-nil) 1776 1.1 skrll 1777 1.1 skrll (dnop sb "SB register" (all-isas SEM-ONLY) h-sb f-nil) 1778 1.1 skrll (dnop fb "FB register" (all-isas SEM-ONLY) h-fb f-nil) 1779 1.1 skrll (dnop sp "SP register" (all-isas SEM-ONLY) h-sp f-nil) 1780 1.1 skrll 1781 1.1 skrll (define-full-operand SrcDst16-r0l-r0h-S-normal "r0l/r0h pair" (MACH16 m16c-isa) 1782 1.1 skrll h-sint DFLT f-5-1 1783 1.1 skrll ((parse "r0l_r0h") (print "r0l_r0h")) () () 1784 1.1 skrll ) 1785 1.1 skrll 1786 1.1 skrll (define-full-operand Regsetpop "popm regset" (all-isas) h-uint 1787 1.1 skrll DFLT f-8-8 ((parse "pop_regset") (print "pop_regset")) () ()) 1788 1.1 skrll (define-full-operand Regsetpush "pushm regset" (all-isas) h-uint 1789 1.1 skrll DFLT f-8-8 ((parse "push_regset") (print "push_regset")) () ()) 1790 1.1 skrll 1791 1.1 skrll (dnop Rn16-push-S "r0[lh]" (MACH16 m16c-isa) h-gr-QI f-4-1) 1792 1.1 skrll (dnop An16-push-S "a[01]" (MACH16 m16c-isa) h-ar-HI f-4-1) 1793 1.1 skrll 1794 1.1 skrll ;------------------------------------------------------------- 1795 1.1 skrll ; Offsets and absolutes 1796 1.1 skrll ;------------------------------------------------------------- 1797 1.1 skrll 1798 1.1 skrll (define-full-operand Dsp-8-u6 "unsigned 6 bit displacement at offset 8 bits" (all-isas) 1799 1.1 skrll h-uint DFLT f-dsp-8-u6 1800 1.1 skrll ((parse "unsigned6")) () () 1801 1.1 skrll ) 1802 1.1 skrll (define-full-operand Dsp-8-u8 "unsigned 8 bit displacement at offset 8 bits" (all-isas) 1803 1.1 skrll h-uint DFLT f-dsp-8-u8 1804 1.1 skrll ((parse "unsigned8")) () () 1805 1.1 skrll ) 1806 1.1 skrll (define-full-operand Dsp-8-u16 "unsigned 16 bit displacement at offset 8 bits" (all-isas) 1807 1.1 skrll h-uint DFLT f-dsp-8-u16 1808 1.1 skrll ((parse "unsigned16")) () () 1809 1.1 skrll ) 1810 1.1 skrll (define-full-operand Dsp-8-s8 "signed 8 bit displacement at offset 8 bits" (all-isas) 1811 1.1 skrll h-sint DFLT f-dsp-8-s8 1812 1.1 skrll ((parse "signed8")) () () 1813 1.1 skrll ) 1814 1.1 skrll (define-full-operand Dsp-8-s24 "signed 24 bit displacement at offset 8 bits" (all-isas) 1815 1.1 skrll h-sint DFLT f-dsp-8-s24 1816 1.1 skrll ((parse "signed24")) () () 1817 1.1 skrll ) 1818 1.1 skrll (define-full-operand Dsp-8-u24 "unsigned 24 bit displacement at offset 8 bits" (all-isas) 1819 1.1 skrll h-uint DFLT f-dsp-8-u24 1820 1.1 skrll ((parse "unsigned24")) () () 1821 1.1 skrll ) 1822 1.1 skrll (define-full-operand Dsp-10-u6 "unsigned 6 bit displacement at offset 10 bits" (all-isas) 1823 1.1 skrll h-uint DFLT f-dsp-10-u6 1824 1.1 skrll ((parse "unsigned6")) () () 1825 1.1 skrll ) 1826 1.1 skrll (define-full-operand Dsp-16-u8 "unsigned 8 bit displacement at offset 16 bits" (all-isas) 1827 1.1 skrll h-uint DFLT f-dsp-16-u8 1828 1.1 skrll ((parse "unsigned8")) () () 1829 1.1 skrll ) 1830 1.1 skrll (define-full-operand Dsp-16-u16 "unsigned 16 bit displacement at offset 16 bits" (all-isas) 1831 1.1 skrll h-uint DFLT f-dsp-16-u16 1832 1.1 skrll ((parse "unsigned16")) () () 1833 1.1 skrll ) 1834 1.1 skrll (define-full-operand Dsp-16-u20 "unsigned 20 bit displacement at offset 16 bits" (all-isas) 1835 1.1 skrll h-uint DFLT f-dsp-16-u24 1836 1.1 skrll ((parse "unsigned20")) () () 1837 1.1 skrll ) 1838 1.1 skrll (define-full-operand Dsp-16-u24 "unsigned 24 bit displacement at offset 16 bits" (all-isas) 1839 1.1 skrll h-uint DFLT f-dsp-16-u24 1840 1.1 skrll ((parse "unsigned24")) () () 1841 1.1 skrll ) 1842 1.1 skrll (define-full-operand Dsp-16-s8 "signed 8 bit displacement at offset 16 bits" (all-isas) 1843 1.1 skrll h-sint DFLT f-dsp-16-s8 1844 1.1 skrll ((parse "signed8")) () () 1845 1.1 skrll ) 1846 1.1 skrll (define-full-operand Dsp-16-s16 "signed 16 bit displacement at offset 16 bits" (all-isas) 1847 1.1 skrll h-sint DFLT f-dsp-16-s16 1848 1.1 skrll ((parse "signed16")) () () 1849 1.1 skrll ) 1850 1.1 skrll (define-full-operand Dsp-24-u8 "unsigned 8 bit displacement at offset 24 bits" (all-isas) 1851 1.1 skrll h-uint DFLT f-dsp-24-u8 1852 1.1 skrll ((parse "unsigned8")) () () 1853 1.1 skrll ) 1854 1.1 skrll (define-full-operand Dsp-24-u16 "unsigned 16 bit displacement at offset 24 bits" (all-isas) 1855 1.1 skrll h-uint DFLT f-dsp-24-u16 1856 1.1 skrll ((parse "unsigned16")) () () 1857 1.1 skrll ) 1858 1.1 skrll (define-full-operand Dsp-24-u20 "unsigned 20 bit displacement at offset 24 bits" (all-isas) 1859 1.1 skrll h-uint DFLT f-dsp-24-u24 1860 1.1 skrll ((parse "unsigned20")) () () 1861 1.1 skrll ) 1862 1.1 skrll (define-full-operand Dsp-24-u24 "unsigned 24 bit displacement at offset 24 bits" (all-isas) 1863 1.1 skrll h-uint DFLT f-dsp-24-u24 1864 1.1 skrll ((parse "unsigned24")) () () 1865 1.1 skrll ) 1866 1.1 skrll (define-full-operand Dsp-24-s8 "signed 8 bit displacement at offset 24 bits" (all-isas) 1867 1.1 skrll h-sint DFLT f-dsp-24-s8 1868 1.1 skrll ((parse "signed8")) () () 1869 1.1 skrll ) 1870 1.1 skrll (define-full-operand Dsp-24-s16 "signed 16 bit displacement at offset 24 bits" (all-isas) 1871 1.1 skrll h-sint DFLT f-dsp-24-s16 1872 1.1 skrll ((parse "signed16")) () () 1873 1.1 skrll ) 1874 1.1 skrll (define-full-operand Dsp-32-u8 "unsigned 8 bit displacement at offset 32 bits" (all-isas) 1875 1.1 skrll h-uint DFLT f-dsp-32-u8 1876 1.1 skrll ((parse "unsigned8")) () () 1877 1.1 skrll ) 1878 1.1 skrll (define-full-operand Dsp-32-u16 "unsigned 16 bit displacement at offset 32 bits" (all-isas) 1879 1.1 skrll h-uint DFLT f-dsp-32-u16 1880 1.1 skrll ((parse "unsigned16")) () () 1881 1.1 skrll ) 1882 1.1 skrll (define-full-operand Dsp-32-u24 "unsigned 24 bit displacement at offset 32 bits" (all-isas) 1883 1.1 skrll h-uint DFLT f-dsp-32-u24 1884 1.1 skrll ((parse "unsigned24")) () () 1885 1.1 skrll ) 1886 1.1 skrll (define-full-operand Dsp-32-u20 "unsigned 20 bit displacement at offset 32 bits" (all-isas) 1887 1.1 skrll h-uint DFLT f-dsp-32-u24 1888 1.1 skrll ((parse "unsigned20")) () () 1889 1.1 skrll ) 1890 1.1 skrll (define-full-operand Dsp-32-s8 "signed 8 bit displacement at offset 32 bits" (all-isas) 1891 1.1 skrll h-sint DFLT f-dsp-32-s8 1892 1.1 skrll ((parse "signed8")) () () 1893 1.1 skrll ) 1894 1.1 skrll (define-full-operand Dsp-32-s16 "signed 16 bit displacement at offset 32 bits" (all-isas) 1895 1.1 skrll h-sint DFLT f-dsp-32-s16 1896 1.1 skrll ((parse "signed16")) () () 1897 1.1 skrll ) 1898 1.1 skrll (define-full-operand Dsp-40-u8 "unsigned 8 bit displacement at offset 40 bits" (all-isas) 1899 1.1 skrll h-uint DFLT f-dsp-40-u8 1900 1.1 skrll ((parse "unsigned8")) () () 1901 1.1 skrll ) 1902 1.1 skrll (define-full-operand Dsp-40-s8 "signed 8 bit displacement at offset 40 bits" (all-isas) 1903 1.1 skrll h-sint DFLT f-dsp-40-s8 1904 1.1 skrll ((parse "signed8")) () () 1905 1.1 skrll ) 1906 1.1 skrll (define-full-operand Dsp-40-u16 "unsigned 16 bit displacement at offset 40 bits" (all-isas) 1907 1.1 skrll h-uint DFLT f-dsp-40-u16 1908 1.1 skrll ((parse "unsigned16")) () () 1909 1.1 skrll ) 1910 1.1 skrll (define-full-operand Dsp-40-s16 "signed 16 bit displacement at offset 40 bits" (all-isas) 1911 1.1 skrll h-sint DFLT f-dsp-40-s16 1912 1.1 skrll ((parse "signed16")) () () 1913 1.1 skrll ) 1914 1.1 skrll (define-full-operand Dsp-40-u20 "unsigned 20 bit displacement at offset 40 bits" (all-isas) 1915 1.1 skrll h-uint DFLT f-dsp-40-u20 1916 1.1 skrll ((parse "unsigned20")) () () 1917 1.1 skrll ) 1918 1.1 skrll (define-full-operand Dsp-40-u24 "unsigned 24 bit displacement at offset 40 bits" (all-isas) 1919 1.1 skrll h-uint DFLT f-dsp-40-u24 1920 1.1 skrll ((parse "unsigned24")) () () 1921 1.1 skrll ) 1922 1.1 skrll (define-full-operand Dsp-48-u8 "unsigned 8 bit displacement at offset 48 bits" (all-isas) 1923 1.1 skrll h-uint DFLT f-dsp-48-u8 1924 1.1 skrll ((parse "unsigned8")) () () 1925 1.1 skrll ) 1926 1.1 skrll (define-full-operand Dsp-48-s8 "signed 8 bit displacement at offset 48 bits" (all-isas) 1927 1.1 skrll h-sint DFLT f-dsp-48-s8 1928 1.1 skrll ((parse "signed8")) () () 1929 1.1 skrll ) 1930 1.1 skrll (define-full-operand Dsp-48-u16 "unsigned 16 bit displacement at offset 48 bits" (all-isas) 1931 1.1 skrll h-uint DFLT f-dsp-48-u16 1932 1.1 skrll ((parse "unsigned16")) () () 1933 1.1 skrll ) 1934 1.1 skrll (define-full-operand Dsp-48-s16 "signed 16 bit displacement at offset 48 bits" (all-isas) 1935 1.1 skrll h-sint DFLT f-dsp-48-s16 1936 1.1 skrll ((parse "signed16")) () () 1937 1.1 skrll ) 1938 1.1 skrll (define-full-operand Dsp-48-u20 "unsigned 24 bit displacement at offset 40 bits" (all-isas) 1939 1.1 skrll h-uint DFLT f-dsp-48-u20 1940 1.1 skrll ((parse "unsigned24")) () () 1941 1.1 skrll ) 1942 1.1 skrll (define-full-operand Dsp-48-u24 "unsigned 24 bit displacement at offset 48 bits" (all-isas) 1943 1.1 skrll h-uint DFLT f-dsp-48-u24 1944 1.1 skrll ((parse "unsigned24")) () () 1945 1.1 skrll ) 1946 1.1 skrll 1947 1.1 skrll (define-full-operand Imm-8-s4 "signed 4 bit immediate at offset 8 bits" (all-isas) 1948 1.1 skrll h-sint DFLT f-imm-8-s4 1949 1.1 skrll ((parse "signed4")) () () 1950 1.1 skrll ) 1951 1.1 skrll (define-full-operand Imm-8-s4n "negated 4 bit immediate at offset 8 bits" (all-isas) 1952 1.1 skrll h-sint DFLT f-imm-8-s4 1953 1.1 skrll ((parse "signed4n") (print "signed4n")) () () 1954 1.1 skrll ) 1955 1.1 skrll (define-full-operand Imm-sh-8-s4 "signed 4 bit shift immediate at offset 8 bits" (all-isas) 1956 1.1 skrll h-shimm DFLT f-imm-8-s4 1957 1.1 skrll () () () 1958 1.1 skrll ) 1959 1.1 skrll (define-full-operand Imm-8-QI "signed 8 bit immediate at offset 8 bits" (all-isas) 1960 1.1 skrll h-sint DFLT f-dsp-8-s8 1961 1.1 skrll ((parse "signed8")) () () 1962 1.1 skrll ) 1963 1.1 skrll (define-full-operand Imm-8-HI "signed 16 bit immediate at offset 8 bits" (all-isas) 1964 1.1 skrll h-sint DFLT f-dsp-8-s16 1965 1.1 skrll ((parse "signed16")) () () 1966 1.1 skrll ) 1967 1.1 skrll (define-full-operand Imm-12-s4 "signed 4 bit immediate at offset 12 bits" (all-isas) 1968 1.1 skrll h-sint DFLT f-imm-12-s4 1969 1.1 skrll ((parse "signed4")) () () 1970 1.1 skrll ) 1971 1.1 skrll (define-full-operand Imm-12-s4n "negated 4 bit immediate at offset 12 bits" (all-isas) 1972 1.1 skrll h-sint DFLT f-imm-12-s4 1973 1.1 skrll ((parse "signed4n") (print "signed4n")) () () 1974 1.1 skrll ) 1975 1.1 skrll (define-full-operand Imm-sh-12-s4 "signed 4 bit shift immediate at offset 12 bits" (all-isas) 1976 1.1 skrll h-shimm DFLT f-imm-12-s4 1977 1.1 skrll () () () 1978 1.1 skrll ) 1979 1.1 skrll (define-full-operand Imm-13-u3 "signed 3 bit immediate at offset 13 bits" (all-isas) 1980 1.1 skrll h-sint DFLT f-imm-13-u3 1981 1.1 skrll ((parse "signed4")) () () 1982 1.1 skrll ) 1983 1.1 skrll (define-full-operand Imm-20-s4 "signed 4 bit immediate at offset 20 bits" (all-isas) 1984 1.1 skrll h-sint DFLT f-imm-20-s4 1985 1.1 skrll ((parse "signed4")) () () 1986 1.1 skrll ) 1987 1.1 skrll (define-full-operand Imm-sh-20-s4 "signed 4 bit shift immediate at offset 12 bits" (all-isas) 1988 1.1 skrll h-shimm DFLT f-imm-20-s4 1989 1.1 skrll () () () 1990 1.1 skrll ) 1991 1.1 skrll (define-full-operand Imm-16-QI "signed 8 bit immediate at offset 16 bits" (all-isas) 1992 1.1 skrll h-sint DFLT f-dsp-16-s8 1993 1.1 skrll ((parse "signed8")) () () 1994 1.1 skrll ) 1995 1.1 skrll (define-full-operand Imm-16-HI "signed 16 bit immediate at offset 16 bits" (all-isas) 1996 1.1 skrll h-sint DFLT f-dsp-16-s16 1997 1.1 skrll ((parse "signed16")) () () 1998 1.1 skrll ) 1999 1.1 skrll (define-full-operand Imm-16-SI "signed 32 bit immediate at offset 16 bits" (all-isas) 2000 1.1 skrll h-sint DFLT f-dsp-16-s32 2001 1.1 skrll ((parse "signed32")) () () 2002 1.1 skrll ) 2003 1.1 skrll (define-full-operand Imm-24-QI "signed 8 bit immediate at offset 24 bits" (all-isas) 2004 1.1 skrll h-sint DFLT f-dsp-24-s8 2005 1.1 skrll ((parse "signed8")) () () 2006 1.1 skrll ) 2007 1.1 skrll (define-full-operand Imm-24-HI "signed 16 bit immediate at offset 24 bits" (all-isas) 2008 1.1 skrll h-sint DFLT f-dsp-24-s16 2009 1.1 skrll ((parse "signed16")) () () 2010 1.1 skrll ) 2011 1.1 skrll (define-full-operand Imm-24-SI "signed 32 bit immediate at offset 24 bits" (all-isas) 2012 1.1 skrll h-sint DFLT f-dsp-24-s32 2013 1.1 skrll ((parse "signed32")) () () 2014 1.1 skrll ) 2015 1.1 skrll (define-full-operand Imm-32-QI "signed 8 bit immediate at offset 32 bits" (all-isas) 2016 1.1 skrll h-sint DFLT f-dsp-32-s8 2017 1.1 skrll ((parse "signed8")) () () 2018 1.1 skrll ) 2019 1.1 skrll (define-full-operand Imm-32-SI "signed 32 bit immediate at offset 32 bits" (all-isas) 2020 1.1 skrll h-sint DFLT f-dsp-32-s32 2021 1.1 skrll ((parse "signed32")) () () 2022 1.1 skrll ) 2023 1.1 skrll (define-full-operand Imm-32-HI "signed 16 bit immediate at offset 32 bits" (all-isas) 2024 1.1 skrll h-sint DFLT f-dsp-32-s16 2025 1.1 skrll ((parse "signed16")) () () 2026 1.1 skrll ) 2027 1.1 skrll (define-full-operand Imm-40-QI "signed 8 bit immediate at offset 40 bits" (all-isas) 2028 1.1 skrll h-sint DFLT f-dsp-40-s8 2029 1.1 skrll ((parse "signed8")) () () 2030 1.1 skrll ) 2031 1.1 skrll (define-full-operand Imm-40-HI "signed 16 bit immediate at offset 40 bits" (all-isas) 2032 1.1 skrll h-sint DFLT f-dsp-40-s16 2033 1.1 skrll ((parse "signed16")) () () 2034 1.1 skrll ) 2035 1.1 skrll (define-full-operand Imm-40-SI "signed 32 bit immediate at offset 40 bits" (all-isas) 2036 1.1 skrll h-sint DFLT f-dsp-40-s32 2037 1.1 skrll ((parse "signed32")) () () 2038 1.1 skrll ) 2039 1.1 skrll (define-full-operand Imm-48-QI "signed 8 bit immediate at offset 48 bits" (all-isas) 2040 1.1 skrll h-sint DFLT f-dsp-48-s8 2041 1.1 skrll ((parse "signed8")) () () 2042 1.1 skrll ) 2043 1.1 skrll (define-full-operand Imm-48-HI "signed 16 bit immediate at offset 48 bits" (all-isas) 2044 1.1 skrll h-sint DFLT f-dsp-48-s16 2045 1.1 skrll ((parse "signed16")) () () 2046 1.1 skrll ) 2047 1.1 skrll (define-full-operand Imm-48-SI "signed 32 bit immediate at offset 48 bits" (all-isas) 2048 1.1 skrll h-sint DFLT f-dsp-48-s32 2049 1.1 skrll ((parse "signed32")) () () 2050 1.1 skrll ) 2051 1.1 skrll (define-full-operand Imm-56-QI "signed 8 bit immediate at offset 56 bits" (all-isas) 2052 1.1 skrll h-sint DFLT f-dsp-56-s8 2053 1.1 skrll ((parse "signed8")) () () 2054 1.1 skrll ) 2055 1.1 skrll (define-full-operand Imm-56-HI "signed 16 bit immediate at offset 56 bits" (all-isas) 2056 1.1 skrll h-sint DFLT f-dsp-56-s16 2057 1.1 skrll ((parse "signed16")) () () 2058 1.1 skrll ) 2059 1.1 skrll (define-full-operand Imm-64-HI "signed 16 bit immediate at offset 64 bits" (all-isas) 2060 1.1 skrll h-sint DFLT f-dsp-64-s16 2061 1.1 skrll ((parse "signed16")) () () 2062 1.1 skrll ) 2063 1.1 skrll (define-full-operand Imm1-S "signed 1 bit immediate for short format binary insns" (m32c-isa) 2064 1.1 skrll h-sint DFLT f-imm1-S 2065 1.1 skrll ((parse "imm1_S")) () () 2066 1.1 skrll ) 2067 1.1 skrll (define-full-operand Imm3-S "signed 3 bit immediate for short format binary insns" (m32c-isa) 2068 1.1 skrll h-sint DFLT f-imm3-S 2069 1.1 skrll ((parse "imm3_S")) () () 2070 1.1 skrll ) 2071 1.1 skrll (define-full-operand Bit3-S "3 bit bit number" (m32c-isa) 2072 1.1 skrll h-sint DFLT f-imm3-S 2073 1.1 skrll ((parse "bit3_S")) () () 2074 1.1 skrll ) 2075 1.1 skrll 2076 1.1 skrll ;------------------------------------------------------------- 2077 1.1 skrll ; Bit numbers 2078 1.1 skrll ;------------------------------------------------------------- 2079 1.1 skrll 2080 1.1 skrll (define-full-operand Bitno16R "bit number for indexing registers" (m16c-isa) 2081 1.1 skrll h-uint DFLT f-dsp-16-u8 2082 1.1 skrll ((parse "Bitno16R")) () () 2083 1.1 skrll ) 2084 1.1 skrll (dnop Bitno32Prefixed "bit number for indexing objects" (m32c-isa) h-uint f-bitno32-prefixed) 2085 1.1 skrll (dnop Bitno32Unprefixed "bit number for indexing objects" (m32c-isa) h-uint f-bitno32-unprefixed) 2086 1.1 skrll 2087 1.1 skrll (define-full-operand BitBase16-16-u8 "unsigned bit,base:8 at offset 16for m16c" (m16c-isa) 2088 1.1 skrll h-uint DFLT f-dsp-16-u8 2089 1.1 skrll ((parse "unsigned_bitbase8") (print "unsigned_bitbase")) () () 2090 1.1 skrll ) 2091 1.1 skrll (define-full-operand BitBase16-16-s8 "signed bit,base:8 at offset 16for m16c" (m16c-isa) 2092 1.1 skrll h-sint DFLT f-dsp-16-s8 2093 1.1 skrll ((parse "signed_bitbase8") (print "signed_bitbase")) () () 2094 1.1 skrll ) 2095 1.1 skrll (define-full-operand BitBase16-16-u16 "unsigned bit,base:16 at offset 16 for m16c" (m16c-isa) 2096 1.1 skrll h-uint DFLT f-dsp-16-u16 2097 1.1 skrll ((parse "unsigned_bitbase16") (print "unsigned_bitbase")) () () 2098 1.1 skrll ) 2099 1.1 skrll (define-full-operand BitBase16-8-u11-S "signed bit,base:11 at offset 16 for m16c" (m16c-isa) 2100 1.1 skrll h-uint DFLT f-bitbase16-u11-S 2101 1.1 skrll ((parse "unsigned_bitbase11") (print "unsigned_bitbase")) () () 2102 1.1 skrll ) 2103 1.1 skrll 2104 1.1 skrll (define-full-operand BitBase32-16-u11-Unprefixed "unsigned bit,base:11 at offset 16 for m32c" (m32c-isa) 2105 1.1 skrll h-uint DFLT f-bitbase32-16-u11-unprefixed 2106 1.1 skrll ((parse "unsigned_bitbase11") (print "unsigned_bitbase")) () () 2107 1.1 skrll ) 2108 1.1 skrll (define-full-operand BitBase32-16-s11-Unprefixed "signed bit,base:11 at offset 16 for m32c" (m32c-isa) 2109 1.1 skrll h-sint DFLT f-bitbase32-16-s11-unprefixed 2110 1.1 skrll ((parse "signed_bitbase11") (print "signed_bitbase")) () () 2111 1.1 skrll ) 2112 1.1 skrll (define-full-operand BitBase32-16-u19-Unprefixed "unsigned bit,base:19 at offset 16 for m32c" (m32c-isa) 2113 1.1 skrll h-uint DFLT f-bitbase32-16-u19-unprefixed 2114 1.1 skrll ((parse "unsigned_bitbase19") (print "unsigned_bitbase")) () () 2115 1.1 skrll ) 2116 1.1 skrll (define-full-operand BitBase32-16-s19-Unprefixed "signed bit,base:19 at offset 16 for m32c" (m32c-isa) 2117 1.1 skrll h-sint DFLT f-bitbase32-16-s19-unprefixed 2118 1.1 skrll ((parse "signed_bitbase19") (print "signed_bitbase")) () () 2119 1.1 skrll ) 2120 1.1 skrll (define-full-operand BitBase32-16-u27-Unprefixed "unsigned bit,base:27 at offset 16 for m32c" (m32c-isa) 2121 1.1 skrll h-uint DFLT f-bitbase32-16-u27-unprefixed 2122 1.1 skrll ((parse "unsigned_bitbase27") (print "unsigned_bitbase")) () () 2123 1.1 skrll ) 2124 1.1 skrll (define-full-operand BitBase32-24-u11-Prefixed "unsigned bit,base:11 at offset 24 for m32c" (m32c-isa) 2125 1.1 skrll h-uint DFLT f-bitbase32-24-u11-prefixed 2126 1.1 skrll ((parse "unsigned_bitbase11") (print "unsigned_bitbase")) () () 2127 1.1 skrll ) 2128 1.1 skrll (define-full-operand BitBase32-24-s11-Prefixed "signed bit,base:11 at offset 24 for m32c" (m32c-isa) 2129 1.1 skrll h-sint DFLT f-bitbase32-24-s11-prefixed 2130 1.1 skrll ((parse "signed_bitbase11") (print "signed_bitbase")) () () 2131 1.1 skrll ) 2132 1.1 skrll (define-full-operand BitBase32-24-u19-Prefixed "unsigned bit,base:19 at offset 24 for m32c" (m32c-isa) 2133 1.1 skrll h-uint DFLT f-bitbase32-24-u19-prefixed 2134 1.1 skrll ((parse "unsigned_bitbase19") (print "unsigned_bitbase")) () () 2135 1.1 skrll ) 2136 1.1 skrll (define-full-operand BitBase32-24-s19-Prefixed "signed bit,base:19 at offset 24 for m32c" (m32c-isa) 2137 1.1 skrll h-sint DFLT f-bitbase32-24-s19-prefixed 2138 1.1 skrll ((parse "signed_bitbase19") (print "signed_bitbase")) () () 2139 1.1 skrll ) 2140 1.1 skrll (define-full-operand BitBase32-24-u27-Prefixed "unsigned bit,base:27 at offset 24 for m32c" (m32c-isa) 2141 1.1 skrll h-uint DFLT f-bitbase32-24-u27-prefixed 2142 1.1 skrll ((parse "unsigned_bitbase27") (print "unsigned_bitbase")) () () 2143 1.1 skrll ) 2144 1.1 skrll ;------------------------------------------------------------- 2145 1.1 skrll ; Labels 2146 1.1 skrll ;------------------------------------------------------------- 2147 1.1 skrll 2148 1.1 skrll (define-full-operand Lab-5-3 "3 bit label" (all-isas RELAX) 2149 1.1 skrll h-iaddr DFLT f-lab-5-3 2150 1.1 skrll ((parse "lab_5_3")) () () ) 2151 1.1 skrll 2152 1.1 skrll (define-full-operand Lab32-jmp-s "3 bit label" (all-isas RELAX) 2153 1.1 skrll h-iaddr DFLT f-lab32-jmp-s 2154 1.1 skrll ((parse "lab_5_3")) () () ) 2155 1.1 skrll 2156 1.1 skrll (dnop Lab-8-8 "8 bit label" (all-isas RELAX) h-iaddr f-lab-8-8) 2157 1.1 skrll (dnop Lab-8-16 "16 bit label" (all-isas RELAX) h-iaddr f-lab-8-16) 2158 1.1 skrll (dnop Lab-8-24 "24 bit label" (all-isas RELAX) h-iaddr f-lab-8-24) 2159 1.1 skrll (dnop Lab-16-8 "8 bit label" (all-isas RELAX) h-iaddr f-lab-16-8) 2160 1.1 skrll (dnop Lab-24-8 "8 bit label" (all-isas RELAX) h-iaddr f-lab-24-8) 2161 1.1 skrll (dnop Lab-32-8 "8 bit label" (all-isas RELAX) h-iaddr f-lab-32-8) 2162 1.1 skrll (dnop Lab-40-8 "8 bit label" (all-isas RELAX) h-iaddr f-lab-40-8) 2163 1.1 skrll 2164 1.1 skrll ;------------------------------------------------------------- 2165 1.1 skrll ; Condition code bits 2166 1.1 skrll ;------------------------------------------------------------- 2167 1.1 skrll 2168 1.1 skrll (dnop sbit "negative bit" (SEM-ONLY all-isas) h-sbit f-nil) 2169 1.1 skrll (dnop obit "overflow bit" (SEM-ONLY all-isas) h-obit f-nil) 2170 1.1 skrll (dnop zbit "zero bit" (SEM-ONLY all-isas) h-zbit f-nil) 2171 1.1 skrll (dnop cbit "carry bit" (SEM-ONLY all-isas) h-cbit f-nil) 2172 1.1 skrll (dnop ubit "stack ptr select bit" (SEM-ONLY all-isas) h-ubit f-nil) 2173 1.1 skrll (dnop ibit "interrupt enable bit" (SEM-ONLY all-isas) h-ibit f-nil) 2174 1.1 skrll (dnop bbit "reg bank select bit" (SEM-ONLY all-isas) h-bbit f-nil) 2175 1.1 skrll (dnop dbit "debug bit" (SEM-ONLY all-isas) h-dbit f-nil) 2176 1.1 skrll 2177 1.1 skrll ;------------------------------------------------------------- 2178 1.1 skrll ; Condition operands 2179 1.1 skrll ;------------------------------------------------------------- 2180 1.1 skrll 2181 1.1 skrll (define-pmacro (cond-operand mach offset) 2182 1.1 skrll (dnop (.sym cond mach - offset) "condition" ((.sym m mach c-isa)) (.sym h-cond mach) (.sym f-dsp- offset -u8)) 2183 1.1 skrll ) 2184 1.1 skrll 2185 1.1 skrll (cond-operand 16 16) 2186 1.1 skrll (cond-operand 16 24) 2187 1.1 skrll (cond-operand 16 32) 2188 1.1 skrll (cond-operand 32 16) 2189 1.1 skrll (cond-operand 32 24) 2190 1.1 skrll (cond-operand 32 32) 2191 1.1 skrll (cond-operand 32 40) 2192 1.1 skrll 2193 1.1 skrll (dnop cond16c "condition" (m16c-isa) h-cond16c f-cond16) 2194 1.1 skrll (dnop cond16j "condition" (m16c-isa) h-cond16j f-cond16) 2195 1.1 skrll (dnop cond16j5 "condition" (m16c-isa) h-cond16j-5 f-cond16j-5) 2196 1.1 skrll (dnop cond32 "condition" (m32c-isa) h-cond32 f-cond32) 2197 1.1 skrll (dnop cond32j "condition" (m32c-isa) h-cond32 f-cond32j) 2198 1.1 skrll (dnop sccond32 "scCND condition" (m32c-isa) h-cond32 f-cond16) 2199 1.1 skrll (dnop flags16 "flags" (m16c-isa) h-flags f-9-3) 2200 1.1 skrll (dnop flags32 "flags" (m32c-isa) h-flags f-13-3) 2201 1.1 skrll (dnop cr16 "control" (m16c-isa) h-cr-16 f-9-3) 2202 1.1 skrll (dnop cr1-Unprefixed-32 "control" (m32c-isa) h-cr1-32 f-13-3) 2203 1.1 skrll (dnop cr1-Prefixed-32 "control" (m32c-isa) h-cr1-32 f-21-3) 2204 1.1 skrll (dnop cr2-32 "control" (m32c-isa) h-cr2-32 f-13-3) 2205 1.1 skrll (dnop cr3-Unprefixed-32 "control" (m32c-isa) h-cr3-32 f-13-3) 2206 1.1 skrll (dnop cr3-Prefixed-32 "control" (m32c-isa) h-cr3-32 f-21-3) 2207 1.1 skrll 2208 1.1 skrll ;------------------------------------------------------------- 2209 1.1 skrll ; Suffixes 2210 1.1 skrll ;------------------------------------------------------------- 2211 1.1 skrll 2212 1.1 skrll (define-full-operand Z "Suffix for zero format insns" (all-isas) 2213 1.1 skrll h-sint DFLT f-nil 2214 1.1 skrll ((parse "Z") (print "Z")) () () 2215 1.1 skrll ) 2216 1.1 skrll (define-full-operand S "Suffix for short format insns" (all-isas) 2217 1.1 skrll h-sint DFLT f-nil 2218 1.1 skrll ((parse "S") (print "S")) () () 2219 1.1 skrll ) 2220 1.1 skrll (define-full-operand Q "Suffix for quick format insns" (all-isas) 2221 1.1 skrll h-sint DFLT f-nil 2222 1.1 skrll ((parse "Q") (print "Q")) () () 2223 1.1 skrll ) 2224 1.1 skrll (define-full-operand G "Suffix for general format insns" (all-isas) 2225 1.1 skrll h-sint DFLT f-nil 2226 1.1 skrll ((parse "G") (print "G")) () () 2227 1.1 skrll ) 2228 1.1 skrll (define-full-operand X "Empty suffix" (all-isas) 2229 1.1 skrll h-sint DFLT f-nil 2230 1.1 skrll ((parse "X") (print "X")) () () 2231 1.1 skrll ) 2232 1.1 skrll (define-full-operand size "any size specifier" (all-isas) 2233 1.1 skrll h-sint DFLT f-nil 2234 1.1 skrll ((parse "size") (print "size")) () () 2235 1.1 skrll ) 2236 1.1 skrll ;------------------------------------------------------------- 2237 1.1 skrll ; Misc 2238 1.1 skrll ;------------------------------------------------------------- 2239 1.1 skrll 2240 1.1 skrll (dnop BitIndex "Bit Index for the next insn" (SEM-ONLY MACH32 m32c-isa) h-bit-index f-nil) 2241 1.1 skrll (dnop SrcIndex "Source Index for the next insn" (SEM-ONLY MACH32 m32c-isa) h-src-index f-nil) 2242 1.1 skrll (dnop DstIndex "Destination Index for the next insn" (SEM-ONLY MACH32 m32c-isa) h-dst-index f-nil) 2243 1.1 skrll (dnop NoRemainder "Place holder for when the remainder is not kept" (SEM-ONLY MACH32 m32c-isa) h-none f-nil) 2244 1.1 skrll 2246 1.1 skrll ;============================================================= 2247 1.1 skrll ; Derived Operands 2248 1.1 skrll 2249 1.1 skrll ; Memory reference macros that clip addresses appropriately. Refer to 2250 1.1 skrll ; memory at ADDRESS in MODE, clipped appropriately for either the m16c 2251 1.1 skrll ; or m32c. 2252 1.1 skrll (define-pmacro (mem16 mode address) 2253 1.1 skrll (mem mode (and #xffff address))) 2254 1.1 skrll 2255 1.1 skrll (define-pmacro (mem20 mode address) 2256 1.1 skrll (mem mode (and #xfffff address))) 2257 1.1 skrll 2258 1.1 skrll (define-pmacro (mem32 mode address) 2259 1.1 skrll (mem mode (and #xffffff address))) 2260 1.1 skrll 2261 1.1 skrll ; Like mem16 and mem32, but takes MACH as a parameter. MACH must be 2262 1.1 skrll ; either 16 or 32. 2263 1.1 skrll (define-pmacro (mem-mach mach mode address) 2264 1.1 skrll ((.sym mem mach) mode address)) 2265 1.1 skrll 2266 1.1 skrll ;------------------------------------------------------------- 2267 1.1 skrll ; Source 2268 1.1 skrll ;------------------------------------------------------------- 2269 1.1 skrll ; Rn direct 2270 1.1 skrll ;------------------------------------------------------------- 2271 1.1 skrll 2272 1.1 skrll (define-pmacro (src16-Rn-direct-operand xmode) 2273 1.1 skrll (begin 2274 1.1 skrll (define-derived-operand 2275 1.1 skrll (name (.sym src16-Rn-direct- xmode)) 2276 1.1 skrll (comment (.str "m16c Rn direct source " xmode)) 2277 1.1 skrll (attrs (machine 16)) 2278 1.1 skrll (mode xmode) 2279 1.1 skrll (args ((.sym Src16Rn xmode))) 2280 1.1 skrll (syntax (.str "$Src16Rn" xmode)) 2281 1.1 skrll (base-ifield f-8-4) 2282 1.1 skrll (encoding (+ (f-8-2 0) (.sym Src16Rn xmode))) 2283 1.1 skrll (ifield-assertion (eq f-8-2 0)) 2284 1.1 skrll (getter (trunc xmode (.sym Src16Rn xmode))) 2285 1.1 skrll (setter (set (.sym Src16Rn xmode) newval)) 2286 1.1 skrll ) 2287 1.1 skrll ) 2288 1.1 skrll ) 2289 1.1 skrll (src16-Rn-direct-operand QI) 2290 1.1 skrll (src16-Rn-direct-operand HI) 2291 1.1 skrll 2292 1.1 skrll (define-pmacro (src32-Rn-direct-operand group base xmode) 2293 1.1 skrll (begin 2294 1.1 skrll (define-derived-operand 2295 1.1 skrll (name (.sym src32-Rn-direct- group - xmode)) 2296 1.1 skrll (comment (.str "m32c Rn direct source " xmode)) 2297 1.1 skrll (attrs (machine 32)) 2298 1.1 skrll (mode xmode) 2299 1.1 skrll (args ((.sym Src32Rn group xmode))) 2300 1.1 skrll (syntax (.str "$Src32Rn" group xmode)) 2301 1.1 skrll (base-ifield (.sym f- base -11)) 2302 1.1 skrll (encoding (+ ((.sym f- base -3) 4) (.sym Src32Rn group xmode))) 2303 1.1 skrll (ifield-assertion (eq (.sym f- base -3) 4)) 2304 1.1 skrll (getter (trunc xmode (.sym Src32Rn group xmode))) 2305 1.1 skrll (setter (set (.sym Src32Rn group xmode) newval)) 2306 1.1 skrll ) 2307 1.1 skrll ) 2308 1.1 skrll ) 2309 1.1 skrll 2310 1.1 skrll (src32-Rn-direct-operand Unprefixed 1 QI) 2311 1.1 skrll (src32-Rn-direct-operand Prefixed 9 QI) 2312 1.1 skrll (src32-Rn-direct-operand Unprefixed 1 HI) 2313 1.1 skrll (src32-Rn-direct-operand Prefixed 9 HI) 2314 1.1 skrll (src32-Rn-direct-operand Unprefixed 1 SI) 2315 1.1 skrll (src32-Rn-direct-operand Prefixed 9 SI) 2316 1.1 skrll 2317 1.1 skrll ;------------------------------------------------------------- 2318 1.1 skrll ; An direct 2319 1.1 skrll ;------------------------------------------------------------- 2320 1.1 skrll 2321 1.1 skrll (define-pmacro (src16-An-direct-operand xmode) 2322 1.1 skrll (begin 2323 1.1 skrll (define-derived-operand 2324 1.1 skrll (name (.sym src16-An-direct- xmode)) 2325 1.1 skrll (comment (.str "m16c An direct destination " xmode)) 2326 1.1 skrll (attrs (machine 16)) 2327 1.1 skrll (mode xmode) 2328 1.1 skrll (args ((.sym Src16An xmode))) 2329 1.1 skrll (syntax (.str "$Src16An" xmode)) 2330 1.1 skrll (base-ifield f-8-4) 2331 1.1 skrll (encoding (+ (f-8-2 1) (f-10-1 0) (.sym Src16An xmode))) 2332 1.1 skrll (ifield-assertion (andif (eq f-8-2 1) (eq f-10-1 0))) 2333 1.1 skrll (getter (trunc xmode (.sym Src16An xmode))) 2334 1.1 skrll (setter (set (.sym Src16An xmode) newval)) 2335 1.1 skrll ) 2336 1.1 skrll ) 2337 1.1 skrll ) 2338 1.1 skrll (src16-An-direct-operand QI) 2339 1.1 skrll (src16-An-direct-operand HI) 2340 1.1 skrll 2341 1.1 skrll (define-pmacro (src32-An-direct-operand group base1 base2 xmode) 2342 1.1 skrll (begin 2343 1.1 skrll (define-derived-operand 2344 1.1 skrll (name (.sym src32-An-direct- group - xmode)) 2345 1.1 skrll (comment (.str "m32c An direct destination " xmode)) 2346 1.1 skrll (attrs (machine 32)) 2347 1.1 skrll (mode xmode) 2348 1.1 skrll (args ((.sym Src32An group xmode))) 2349 1.1 skrll (syntax (.str "$Src32An" group xmode)) 2350 1.1 skrll (base-ifield (.sym f- base1 -11)) 2351 1.1 skrll (encoding (+ ((.sym f- base1 -3) 0) ((.sym f- base2 -1) 1) (.sym Src32An group xmode))) 2352 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 0) (eq (.sym f- base2 -1) 1))) 2353 1.1 skrll (getter (trunc xmode (.sym Src32An group xmode))) 2354 1.1 skrll (setter (set (.sym Src32An group xmode) newval)) 2355 1.1 skrll ) 2356 1.1 skrll ) 2357 1.1 skrll ) 2358 1.1 skrll 2359 1.1 skrll (src32-An-direct-operand Unprefixed 1 10 QI) 2360 1.1 skrll (src32-An-direct-operand Unprefixed 1 10 HI) 2361 1.1 skrll (src32-An-direct-operand Unprefixed 1 10 SI) 2362 1.1 skrll (src32-An-direct-operand Prefixed 9 18 QI) 2363 1.1 skrll (src32-An-direct-operand Prefixed 9 18 HI) 2364 1.1 skrll (src32-An-direct-operand Prefixed 9 18 SI) 2365 1.1 skrll 2366 1.1 skrll ;------------------------------------------------------------- 2367 1.1 skrll ; An indirect 2368 1.1 skrll ;------------------------------------------------------------- 2369 1.1 skrll 2370 1.1 skrll (define-pmacro (src16-An-indirect-operand xmode) 2371 1.1 skrll (begin 2372 1.1 skrll (define-derived-operand 2373 1.1 skrll (name (.sym src16-An-indirect- xmode)) 2374 1.1 skrll (comment (.str "m16c An indirect destination " xmode)) 2375 1.1 skrll (attrs (machine 16)) 2376 1.1 skrll (mode xmode) 2377 1.1 skrll (args (Src16An)) 2378 1.1 skrll (syntax "[$Src16An]") 2379 1.1 skrll (base-ifield f-8-4) 2380 1.1 skrll (encoding (+ (f-8-2 1) (f-10-1 1) Src16An)) 2381 1.1 skrll (ifield-assertion (andif (eq f-8-2 1) (eq f-10-1 1))) 2382 1.1 skrll (getter (mem16 xmode Src16An)) 2383 1.1 skrll (setter (set (mem16 xmode Src16An) newval)) 2384 1.1 skrll ) 2385 1.1 skrll ) 2386 1.1 skrll ) 2387 1.1 skrll (src16-An-indirect-operand QI) 2388 1.1 skrll (src16-An-indirect-operand HI) 2389 1.1 skrll 2390 1.1 skrll (define-pmacro (src32-An-indirect-operand group base1 base2 xmode) 2391 1.1 skrll (begin 2392 1.1 skrll (define-derived-operand 2393 1.1 skrll (name (.sym src32-An-indirect- group - xmode)) 2394 1.1 skrll (comment (.str "m32c An indirect destination " xmode)) 2395 1.1 skrll (attrs (machine 32)) 2396 1.1 skrll (mode xmode) 2397 1.1 skrll (args ((.sym Src32An group))) 2398 1.1 skrll (syntax (.str "[$Src32An" group "]")) 2399 1.1 skrll (base-ifield (.sym f- base1 -11)) 2400 1.1 skrll (encoding (+ ((.sym f- base1 -3) 0) ((.sym f- base2 -1) 0) (.sym Src32An group))) 2401 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 0) (eq (.sym f- base2 -1) 0))) 2402 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) (.sym Src32An group) 2403 1.1 skrll (const 0))) 2404 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval 2405 1.1 skrll (.sym Src32An group) (const 0))) 2406 1.1 skrll ; (getter (mem32 xmode (.sym Src32An group))) 2407 1.1 skrll ; (setter (set (mem32 xmode (.sym Src32An group)) newval)) 2408 1.1 skrll ) 2409 1.1 skrll ) 2410 1.1 skrll ) 2411 1.1 skrll 2412 1.1 skrll (src32-An-indirect-operand Unprefixed 1 10 QI) 2413 1.1 skrll (src32-An-indirect-operand Unprefixed 1 10 HI) 2414 1.1 skrll (src32-An-indirect-operand Unprefixed 1 10 SI) 2415 1.1 skrll (src32-An-indirect-operand Prefixed 9 18 QI) 2416 1.1 skrll (src32-An-indirect-operand Prefixed 9 18 HI) 2417 1.1 skrll (src32-An-indirect-operand Prefixed 9 18 SI) 2418 1.1 skrll 2419 1.1 skrll ;------------------------------------------------------------- 2420 1.1 skrll ; dsp:d[r] relative 2421 1.1 skrll ;------------------------------------------------------------- 2422 1.1 skrll 2423 1.1 skrll (define-pmacro (src16-relative-operand xmode) 2424 1.1 skrll (begin 2425 1.1 skrll (define-derived-operand 2426 1.1 skrll (name (.sym src16-16-8-SB-relative- xmode)) 2427 1.1 skrll (comment (.str "m16c dsp:8[sb] relative destination " xmode)) 2428 1.1 skrll (attrs (machine 16)) 2429 1.1 skrll (mode xmode) 2430 1.1 skrll (args (Dsp-16-u8)) 2431 1.1 skrll (syntax "${Dsp-16-u8}[sb]") 2432 1.1 skrll (base-ifield f-8-4) 2433 1.1 skrll (encoding (+ (f-8-4 #xA) Dsp-16-u8)) 2434 1.1 skrll (ifield-assertion (eq f-8-4 #xA)) 2435 1.1 skrll (getter (mem16 xmode (add Dsp-16-u8 (reg h-sb)))) 2436 1.1 skrll (setter (set (mem16 xmode (add Dsp-16-u8 (reg h-sb))) newval)) 2437 1.1 skrll ) 2438 1.1 skrll (define-derived-operand 2439 1.1 skrll (name (.sym src16-16-16-SB-relative- xmode)) 2440 1.1 skrll (comment (.str "m16c dsp:16[sb] relative destination " xmode)) 2441 1.1 skrll (attrs (machine 16)) 2442 1.1 skrll (mode xmode) 2443 1.1 skrll (args (Dsp-16-u16)) 2444 1.1 skrll (syntax "${Dsp-16-u16}[sb]") 2445 1.1 skrll (base-ifield f-8-4) 2446 1.1 skrll (encoding (+ (f-8-4 #xE) Dsp-16-u16)) 2447 1.1 skrll (ifield-assertion (eq f-8-4 #xE)) 2448 1.1 skrll (getter (mem16 xmode (add Dsp-16-u16 (reg h-sb)))) 2449 1.1 skrll (setter (set (mem16 xmode (add Dsp-16-u16 (reg h-sb))) newval)) 2450 1.1 skrll ) 2451 1.1 skrll (define-derived-operand 2452 1.1 skrll (name (.sym src16-16-8-FB-relative- xmode)) 2453 1.1 skrll (comment (.str "m16c dsp:8[fb] relative destination " xmode)) 2454 1.1 skrll (attrs (machine 16)) 2455 1.1 skrll (mode xmode) 2456 1.1 skrll (args (Dsp-16-s8)) 2457 1.1 skrll (syntax "${Dsp-16-s8}[fb]") 2458 1.1 skrll (base-ifield f-8-4) 2459 1.1 skrll (encoding (+ (f-8-4 #xB) Dsp-16-s8)) 2460 1.1 skrll (ifield-assertion (eq f-8-4 #xB)) 2461 1.1 skrll (getter (mem16 xmode (add Dsp-16-s8 (reg h-fb)))) 2462 1.1 skrll (setter (set (mem16 xmode (add Dsp-16-s8 (reg h-fb))) newval)) 2463 1.1 skrll ) 2464 1.1 skrll (define-derived-operand 2465 1.1 skrll (name (.sym src16-16-8-An-relative- xmode)) 2466 1.1 skrll (comment (.str "m16c dsp:8[An] relative destination " xmode)) 2467 1.1 skrll (attrs (machine 16)) 2468 1.1 skrll (mode xmode) 2469 1.1 skrll (args (Src16An Dsp-16-u8)) 2470 1.1 skrll (syntax "${Dsp-16-u8}[$Src16An]") 2471 1.1 skrll (base-ifield f-8-4) 2472 1.1 skrll (encoding (+ (f-8-2 2) (f-10-1 0) Dsp-16-u8 Src16An)) 2473 1.1 skrll (ifield-assertion (andif (eq f-8-2 2) (eq f-10-1 0))) 2474 1.1 skrll (getter (mem16 xmode (add Dsp-16-u8 Src16An))) 2475 1.1 skrll (setter (set (mem16 xmode (add Dsp-16-u8 Src16An)) newval)) 2476 1.1 skrll ) 2477 1.1 skrll (define-derived-operand 2478 1.1 skrll (name (.sym src16-16-16-An-relative- xmode)) 2479 1.1 skrll (comment (.str "m16c dsp:16[An] relative destination " xmode)) 2480 1.1 skrll (attrs (machine 16)) 2481 1.1 skrll (mode xmode) 2482 1.1 skrll (args (Src16An Dsp-16-u16)) 2483 1.1 skrll (syntax "${Dsp-16-u16}[$Src16An]") 2484 1.1 skrll (base-ifield f-8-4) 2485 1.1 skrll (encoding (+ (f-8-2 3) (f-10-1 0) Dsp-16-u16 Src16An)) 2486 1.1 skrll (ifield-assertion (andif (eq f-8-2 3) (eq f-10-1 0))) 2487 1.1 skrll (getter (mem16 xmode (add Dsp-16-u16 Src16An))) 2488 1.1 skrll (setter (set (mem16 xmode (add Dsp-16-u16 Src16An)) newval)) 2489 1.1 skrll ) 2490 1.1 skrll (define-derived-operand 2491 1.1 skrll (name (.sym src16-16-20-An-relative- xmode)) 2492 1.1 skrll (comment (.str "m16c dsp:20[An] relative destination " xmode)) 2493 1.1 skrll (attrs (machine 16)) 2494 1.1 skrll (mode xmode) 2495 1.1 skrll (args (Src16An Dsp-16-u20)) 2496 1.1 skrll (syntax "${Dsp-16-u20}[$Src16An]") 2497 1.1 skrll (base-ifield f-8-4) 2498 1.1 skrll (encoding (+ (f-8-2 3) (f-10-1 0) Dsp-16-u20 Src16An)) 2499 1.1 skrll (ifield-assertion (andif (eq f-8-2 3) (eq f-10-1 0))) 2500 1.1 skrll (getter (mem20 xmode (add Dsp-16-u20 Src16An))) 2501 1.1 skrll (setter (set (mem20 xmode (add Dsp-16-u20 Src16An)) newval)) 2502 1.1 skrll ) 2503 1.1 skrll ) 2504 1.1 skrll ) 2505 1.1 skrll 2506 1.1 skrll (src16-relative-operand QI) 2507 1.1 skrll (src16-relative-operand HI) 2508 1.1 skrll 2509 1.1 skrll (define-pmacro (src32-relative-operand offset group base1 base2 xmode) 2510 1.1 skrll (begin 2511 1.1 skrll (define-derived-operand 2512 1.1 skrll (name (.sym src32- offset -8-SB-relative- group - xmode)) 2513 1.1 skrll (comment (.str "m32c dsp:8[sb] relative destination " xmode)) 2514 1.1 skrll (attrs (machine 32)) 2515 1.1 skrll (mode xmode) 2516 1.1 skrll (args ((.sym Dsp- offset -u8))) 2517 1.1 skrll (syntax (.str "${Dsp-" offset "-u8}[sb]")) 2518 1.1 skrll (base-ifield (.sym f- base1 -11)) 2519 1.1 skrll (encoding (+ ((.sym f- base1 -3) 1) ((.sym f- base2 -2) 2) (.sym Dsp- offset -u8))) 2520 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 1) (eq (.sym f- base2 -2) 2))) 2521 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) sb (.sym Dsp- offset -u8))) 2522 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval sb (.sym Dsp- offset -u8))) 2523 1.1 skrll ; (getter (mem32 xmode (add (.sym Dsp- offset -u8) (reg h-sb)))) 2524 1.1 skrll ; (setter (set (mem32 xmode (add (.sym Dsp- offset -u8) (reg h-sb))) newval)) 2525 1.1 skrll ) 2526 1.1 skrll (define-derived-operand 2527 1.1 skrll (name (.sym src32- offset -16-SB-relative- group - xmode)) 2528 1.1 skrll (comment (.str "m32c dsp:16[sb] relative destination " xmode)) 2529 1.1 skrll (attrs (machine 32)) 2530 1.1 skrll (mode xmode) 2531 1.1 skrll (args ((.sym Dsp- offset -u16))) 2532 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}[sb]")) 2533 1.1 skrll (base-ifield (.sym f- base1 -11)) 2534 1.1 skrll (encoding (+ ((.sym f- base1 -3) 2) ((.sym f- base2 -2) 2) (.sym Dsp- offset -u16))) 2535 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 2) (eq (.sym f- base2 -2) 2))) 2536 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) sb (.sym Dsp- offset -u16))) 2537 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval sb (.sym Dsp- offset -u16))) 2538 1.1 skrll ; (getter (mem32 xmode (add (.sym Dsp- offset -u16) (reg h-sb)))) 2539 1.1 skrll ; (setter (set (mem32 xmode (add (.sym Dsp- offset -u16) (reg h-sb))) newval)) 2540 1.1 skrll ) 2541 1.1 skrll (define-derived-operand 2542 1.1 skrll (name (.sym src32- offset -8-FB-relative- group - xmode)) 2543 1.1 skrll (comment (.str "m32c dsp:8[fb] relative destination " xmode)) 2544 1.1 skrll (attrs (machine 32)) 2545 1.1 skrll (mode xmode) 2546 1.1 skrll (args ((.sym Dsp- offset -s8))) 2547 1.1 skrll (syntax (.str "${Dsp-" offset "-s8}[fb]")) 2548 1.1 skrll (base-ifield (.sym f- base1 -11)) 2549 1.1 skrll (encoding (+ ((.sym f- base1 -3) 1) ((.sym f- base2 -2) 3) (.sym Dsp- offset -s8))) 2550 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 1) (eq (.sym f- base2 -2) 3))) 2551 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) fb (.sym Dsp- offset -s8))) 2552 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval fb (.sym Dsp- offset -s8))) 2553 1.1 skrll ; (getter (mem32 xmode (add (.sym Dsp- offset -s8) (reg h-fb)))) 2554 1.1 skrll ; (setter (set (mem32 xmode (add (.sym Dsp- offset -s8) (reg h-fb))) newval)) 2555 1.1 skrll ) 2556 1.1 skrll (define-derived-operand 2557 1.1 skrll (name (.sym src32- offset -16-FB-relative- group - xmode)) 2558 1.1 skrll (comment (.str "m32c dsp:16[fb] relative destination " xmode)) 2559 1.1 skrll (attrs (machine 32)) 2560 1.1 skrll (mode xmode) 2561 1.1 skrll (args ((.sym Dsp- offset -s16))) 2562 1.1 skrll (syntax (.str "${Dsp-" offset "-s16}[fb]")) 2563 1.1 skrll (base-ifield (.sym f- base1 -11)) 2564 1.1 skrll (encoding (+ ((.sym f- base1 -3) 2) ((.sym f- base2 -2) 3) (.sym Dsp- offset -s16))) 2565 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 2) (eq (.sym f- base2 -2) 3))) 2566 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) fb (.sym Dsp- offset -s16))) 2567 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval fb (.sym Dsp- offset -s16))) 2568 1.1 skrll ; (getter (mem32 xmode (add (.sym Dsp- offset -s16) (reg h-fb)))) 2569 1.1 skrll ; (setter (set (mem32 xmode (add (.sym Dsp- offset -s16) (reg h-fb))) newval)) 2570 1.1 skrll ) 2571 1.1 skrll (define-derived-operand 2572 1.1 skrll (name (.sym src32- offset -8-An-relative- group - xmode)) 2573 1.1 skrll (comment (.str "m32c dsp:8[An] relative destination " xmode)) 2574 1.1 skrll (attrs (machine 32)) 2575 1.1 skrll (mode xmode) 2576 1.1 skrll (args ((.sym Src32An group) (.sym Dsp- offset -u8))) 2577 1.1 skrll (syntax (.str "${Dsp-" offset "-u8}[$Src32An" group "]")) 2578 1.1 skrll (base-ifield (.sym f- base1 -11)) 2579 1.1 skrll (encoding (+ ((.sym f- base1 -3) 1) ((.sym f- base2 -1) 0) (.sym Dsp- offset -u8) (.sym Src32An group))) 2580 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 1) (eq (.sym f- base2 -1) 0))) 2581 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) (.sym Src32An group) (.sym Dsp- offset -u8))) 2582 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval (.sym Src32An group) (.sym Dsp- offset -u8))) 2583 1.1 skrll ; (getter (mem32 xmode (add (.sym Dsp- offset -u8) (.sym Src32An group)))) 2584 1.1 skrll ; (setter (set (mem32 xmode (add (.sym Dsp- offset -u8) (.sym Src32An group))) newval)) 2585 1.1 skrll ) 2586 1.1 skrll (define-derived-operand 2587 1.1 skrll (name (.sym src32- offset -16-An-relative- group - xmode)) 2588 1.1 skrll (comment (.str "m32c dsp:16[An] relative destination " xmode)) 2589 1.1 skrll (attrs (machine 32)) 2590 1.1 skrll (mode xmode) 2591 1.1 skrll (args ((.sym Src32An group) (.sym Dsp- offset -u16))) 2592 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}[$Src32An" group "]")) 2593 1.1 skrll (base-ifield (.sym f- base1 -11)) 2594 1.1 skrll (encoding (+ ((.sym f- base1 -3) 2) ((.sym f- base2 -1) 0) (.sym Dsp- offset -u16) (.sym Src32An group))) 2595 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 2) (eq (.sym f- base2 -1) 0))) 2596 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) (.sym Src32An group) (.sym Dsp- offset -u16))) 2597 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval (.sym Src32An group) (.sym Dsp- offset -u16))) 2598 1.1 skrll ; (getter (mem32 xmode (add (.sym Dsp- offset -u16) (.sym Src32An group)))) 2599 1.1 skrll ; (setter (set (mem32 xmode (add (.sym Dsp- offset -u16) (.sym Src32An group))) newval)) 2600 1.1 skrll ) 2601 1.1 skrll (define-derived-operand 2602 1.1 skrll (name (.sym src32- offset -24-An-relative- group - xmode)) 2603 1.1 skrll (comment (.str "m32c dsp:16[An] relative destination " xmode)) 2604 1.1 skrll (attrs (machine 32)) 2605 1.1 skrll (mode xmode) 2606 1.1 skrll (args ((.sym Src32An group) (.sym Dsp- offset -u24))) 2607 1.1 skrll (syntax (.str "${Dsp-" offset "-u24}[$Src32An" group "]")) 2608 1.1 skrll (base-ifield (.sym f- base1 -11)) 2609 1.1 skrll (encoding (+ ((.sym f- base1 -3) 3) ((.sym f- base2 -1) 0) (.sym Dsp- offset -u24) (.sym Src32An group))) 2610 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 3) (eq (.sym f- base2 -1) 0))) 2611 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) (.sym Src32An group) (.sym Dsp- offset -u24) )) 2612 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval (.sym Src32An group) (.sym Dsp- offset -u24))) 2613 1.1 skrll ; (getter (mem32 xmode (add (.sym Dsp- offset -u24) (.sym Src32An group)))) 2614 1.1 skrll ; (setter (set (mem32 xmode (add (.sym Dsp- offset -u24) (.sym Src32An group))) newval)) 2615 1.1 skrll ) 2616 1.1 skrll ) 2617 1.1 skrll ) 2618 1.1 skrll 2619 1.1 skrll (src32-relative-operand 16 Unprefixed 1 10 QI) 2620 1.1 skrll (src32-relative-operand 16 Unprefixed 1 10 HI) 2621 1.1 skrll (src32-relative-operand 16 Unprefixed 1 10 SI) 2622 1.1 skrll (src32-relative-operand 24 Prefixed 9 18 QI) 2623 1.1 skrll (src32-relative-operand 24 Prefixed 9 18 HI) 2624 1.1 skrll (src32-relative-operand 24 Prefixed 9 18 SI) 2625 1.1 skrll 2626 1.1 skrll ;------------------------------------------------------------- 2627 1.1 skrll ; Absolute address 2628 1.1 skrll ;------------------------------------------------------------- 2629 1.1 skrll 2630 1.1 skrll (define-pmacro (src16-absolute xmode) 2631 1.1 skrll (begin 2632 1.1 skrll (define-derived-operand 2633 1.1 skrll (name (.sym src16-16-16-absolute- xmode)) 2634 1.1 skrll (comment (.str "m16c absolute address " xmode)) 2635 1.1 skrll (attrs (machine 16)) 2636 1.1 skrll (mode xmode) 2637 1.1 skrll (args (Dsp-16-u16)) 2638 1.1 skrll (syntax (.str "${Dsp-16-u16}")) 2639 1.1 skrll (base-ifield f-8-4) 2640 1.1 skrll (encoding (+ (f-8-4 #xF) Dsp-16-u16)) 2641 1.1 skrll (ifield-assertion (eq f-8-4 #xF)) 2642 1.1 skrll (getter (mem16 xmode Dsp-16-u16)) 2643 1.1 skrll (setter (set (mem16 xmode Dsp-16-u16) newval)) 2644 1.1 skrll ) 2645 1.1 skrll ) 2646 1.1 skrll ) 2647 1.1 skrll 2648 1.1 skrll (src16-absolute QI) 2649 1.1 skrll (src16-absolute HI) 2650 1.1 skrll 2651 1.1 skrll (define-pmacro (src32-absolute offset group base1 base2 xmode) 2652 1.1 skrll (begin 2653 1.1 skrll (define-derived-operand 2654 1.1 skrll (name (.sym src32- offset -16-absolute- group - xmode)) 2655 1.1 skrll (comment (.str "m32c absolute address " xmode)) 2656 1.1 skrll (attrs (machine 32)) 2657 1.1 skrll (mode xmode) 2658 1.1 skrll (args ((.sym Dsp- offset -u16))) 2659 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}")) 2660 1.1 skrll (base-ifield (.sym f- base1 -11)) 2661 1.1 skrll (encoding (+ ((.sym f- base1 -3) 3) ((.sym f- base2 -2) 3) (.sym Dsp- offset -u16))) 2662 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 3) (eq (.sym f- base2 -2) 3))) 2663 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) (const 0) (.sym Dsp- offset -u16))) 2664 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval (const 0) (.sym Dsp- offset -u16))) 2665 1.1 skrll ; (getter (mem32 xmode (.sym Dsp- offset -u16))) 2666 1.1 skrll ; (setter (set (mem32 xmode (.sym Dsp- offset -u16)) newval)) 2667 1.1 skrll ) 2668 1.1 skrll (define-derived-operand 2669 1.1 skrll (name (.sym src32- offset -24-absolute- group - xmode)) 2670 1.1 skrll (comment (.str "m32c absolute address " xmode)) 2671 1.1 skrll (attrs (machine 32)) 2672 1.1 skrll (mode xmode) 2673 1.1 skrll (args ((.sym Dsp- offset -u24))) 2674 1.1 skrll (syntax (.str "${Dsp-" offset "-u24}")) 2675 1.1 skrll (base-ifield (.sym f- base1 -11)) 2676 1.1 skrll (encoding (+ ((.sym f- base1 -3) 3) ((.sym f- base2 -2) 2) (.sym Dsp- offset -u24))) 2677 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 3) (eq (.sym f- base2 -2) 2))) 2678 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) (const 0) (.sym Dsp- offset -u24))) 2679 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval (const 0) (.sym Dsp- offset -u24))) 2680 1.1 skrll ; (getter (mem32 xmode (.sym Dsp- offset -u24))) 2681 1.1 skrll ; (setter (set (mem32 xmode (.sym Dsp- offset -u24)) newval)) 2682 1.1 skrll ) 2683 1.1 skrll ) 2684 1.1 skrll ) 2685 1.1 skrll 2686 1.1 skrll (src32-absolute 16 Unprefixed 1 10 QI) 2687 1.1 skrll (src32-absolute 16 Unprefixed 1 10 HI) 2688 1.1 skrll (src32-absolute 16 Unprefixed 1 10 SI) 2689 1.1 skrll (src32-absolute 24 Prefixed 9 18 QI) 2690 1.1 skrll (src32-absolute 24 Prefixed 9 18 HI) 2691 1.1 skrll (src32-absolute 24 Prefixed 9 18 SI) 2692 1.1 skrll 2693 1.1 skrll ;------------------------------------------------------------- 2694 1.1 skrll ; An indirect indirect 2695 1.1 skrll ; 2696 1.1 skrll ; Double indirect addressing uses the lower 3 bytes of the value stored 2697 1.1 skrll ; at the address referenced by 'op' as the effective address. 2698 1.1 skrll ;------------------------------------------------------------- 2699 1.1 skrll 2700 1.1 skrll (define-pmacro (indirect-addr op) (and USI (mem32 USI op) #x00ffffff)) 2701 1.1 skrll 2702 1.1 skrll ; (define-pmacro (src-An-indirect-indirect-operand xmode) 2703 1.1 skrll ; (define-derived-operand 2704 1.1 skrll ; (name (.sym src32-An-indirect-indirect- xmode)) 2705 1.1 skrll ; (comment (.str "m32c An indirect indirect destination " xmode)) 2706 1.1 skrll ; (attrs (machine 32)) 2707 1.1 skrll ; (mode xmode) 2708 1.1 skrll ; (args (Src32AnPrefixed)) 2709 1.1 skrll ; (syntax (.str "[[$Src32AnPrefixed]]")) 2710 1.1 skrll ; (base-ifield f-9-11) 2711 1.1 skrll ; (encoding (+ (f-9-3 0) (f-18-1 0) Src32AnPrefixed)) 2712 1.1 skrll ; (ifield-assertion (andif (eq f-9-3 0) (eq f-18-1 0))) 2713 1.1 skrll ; (getter (mem32 xmode (indirect-addr Src32AnPrefixed))) 2714 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr Src32AnPrefixed)) newval)) 2715 1.1 skrll ; ) 2716 1.1 skrll ; ) 2717 1.1 skrll 2718 1.1 skrll ; (src-An-indirect-indirect-operand QI) 2719 1.1 skrll ; (src-An-indirect-indirect-operand HI) 2720 1.1 skrll ; (src-An-indirect-indirect-operand SI) 2721 1.1 skrll 2722 1.1 skrll ;------------------------------------------------------------- 2723 1.1 skrll ; Relative indirect 2724 1.1 skrll ;------------------------------------------------------------- 2725 1.1 skrll 2726 1.1 skrll (define-pmacro (src-relative-indirect-operand xmode) 2727 1.1 skrll (begin 2728 1.1 skrll ; (define-derived-operand 2729 1.1 skrll ; (name (.sym src32-24-8-SB-relative-indirect- xmode)) 2730 1.1 skrll ; (comment (.str "m32c dsp:8[sb] relative source " xmode)) 2731 1.1 skrll ; (attrs (machine 32)) 2732 1.1 skrll ; (mode xmode) 2733 1.1 skrll ; (args (Dsp-24-u8)) 2734 1.1 skrll ; (syntax "[${Dsp-24-u8}[sb]]") 2735 1.1 skrll ; (base-ifield f-9-11) 2736 1.1 skrll ; (encoding (+ (f-9-3 1) (f-18-2 2) Dsp-24-u8)) 2737 1.1 skrll ; (ifield-assertion (andif (eq f-9-3 1) (eq f-18-2 2))) 2738 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add Dsp-24-u8 (reg h-sb))))) 2739 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add Dsp-24-u8 (reg h-sb)))) newval)) 2740 1.1 skrll ; ) 2741 1.1 skrll ; (define-derived-operand 2742 1.1 skrll ; (name (.sym src32-24-16-SB-relative-indirect- xmode)) 2743 1.1 skrll ; (comment (.str "m32c dsp:16[sb] relative source " xmode)) 2744 1.1 skrll ; (attrs (machine 32)) 2745 1.1 skrll ; (mode xmode) 2746 1.1 skrll ; (args (Dsp-24-u16)) 2747 1.1 skrll ; (syntax "[${Dsp-24-u16}[sb]]") 2748 1.1 skrll ; (base-ifield f-9-11) 2749 1.1 skrll ; (encoding (+ (f-9-3 2) (f-18-2 2) Dsp-24-u16)) 2750 1.1 skrll ; (ifield-assertion (andif (eq f-9-3 2) (eq f-18-2 2))) 2751 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add Dsp-24-u16 (reg h-sb))))) 2752 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add Dsp-24-u16 (reg h-sb)))) newval)) 2753 1.1 skrll ; ) 2754 1.1 skrll ; (define-derived-operand 2755 1.1 skrll ; (name (.sym src32-24-8-FB-relative-indirect- xmode)) 2756 1.1 skrll ; (comment (.str "m32c dsp:8[fb] relative source " xmode)) 2757 1.1 skrll ; (attrs (machine 32)) 2758 1.1 skrll ; (mode xmode) 2759 1.1 skrll ; (args (Dsp-24-s8)) 2760 1.1 skrll ; (syntax "[${Dsp-24-s8}[fb]]") 2761 1.1 skrll ; (base-ifield f-9-11) 2762 1.1 skrll ; (encoding (+ (f-9-3 1) (f-18-2 3) Dsp-24-s8)) 2763 1.1 skrll ; (ifield-assertion (andif (eq f-9-3 1) (eq f-18-2 3))) 2764 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add Dsp-24-s8 (reg h-fb))))) 2765 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add Dsp-24-s8 (reg h-fb)))) newval)) 2766 1.1 skrll ; ) 2767 1.1 skrll ; (define-derived-operand 2768 1.1 skrll ; (name (.sym src32-24-16-FB-relative-indirect- xmode)) 2769 1.1 skrll ; (comment (.str "m32c dsp:16[fb] relative source " xmode)) 2770 1.1 skrll ; (attrs (machine 32)) 2771 1.1 skrll ; (mode xmode) 2772 1.1 skrll ; (args (Dsp-24-s16)) 2773 1.1 skrll ; (syntax "[${Dsp-24-s16}[fb]]") 2774 1.1 skrll ; (base-ifield f-9-11) 2775 1.1 skrll ; (encoding (+ (f-9-3 2) (f-18-2 3) Dsp-24-s16)) 2776 1.1 skrll ; (ifield-assertion (andif (eq f-9-3 2) (eq f-18-2 3))) 2777 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add Dsp-24-s16 (reg h-fb))))) 2778 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add Dsp-24-s16 (reg h-fb)))) newval)) 2779 1.1 skrll ; ) 2780 1.1 skrll ; (define-derived-operand 2781 1.1 skrll ; (name (.sym src32-24-8-An-relative-indirect- xmode)) 2782 1.1 skrll ; (comment (.str "m32c dsp:8[An] relative indirect source " xmode)) 2783 1.1 skrll ; (attrs (machine 32)) 2784 1.1 skrll ; (mode xmode) 2785 1.1 skrll ; (args (Src32AnPrefixed Dsp-24-u8)) 2786 1.1 skrll ; (syntax "[${Dsp-24-u8}[$Src32AnPrefixed]]") 2787 1.1 skrll ; (base-ifield f-9-11) 2788 1.1 skrll ; (encoding (+ (f-9-3 1) (f-18-1 0) Dsp-24-u8 Src32AnPrefixed)) 2789 1.1 skrll ; (ifield-assertion (andif (eq f-9-3 1) (eq f-18-1 0))) 2790 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add Dsp-24-u8 Src32AnPrefixed)))) 2791 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add Dsp-24-u8 Src32AnPrefixed))) newval)) 2792 1.1 skrll ; ) 2793 1.1 skrll ; (define-derived-operand 2794 1.1 skrll ; (name (.sym src32-24-16-An-relative-indirect- xmode)) 2795 1.1 skrll ; (comment (.str "m32c dsp:16[An] relative source " xmode)) 2796 1.1 skrll ; (attrs (machine 32)) 2797 1.1 skrll ; (mode xmode) 2798 1.1 skrll ; (args (Src32AnPrefixed Dsp-24-u16)) 2799 1.1 skrll ; (syntax "[${Dsp-24-u16}[$Src32AnPrefixed]]") 2800 1.1 skrll ; (base-ifield f-9-11) 2801 1.1 skrll ; (encoding (+ (f-9-3 2) (f-18-1 0) Dsp-24-u16 Src32AnPrefixed)) 2802 1.1 skrll ; (ifield-assertion (andif (eq f-9-3 2) (eq f-18-1 0))) 2803 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add Dsp-24-u16 Src32AnPrefixed)))) 2804 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add Dsp-24-u16 Src32AnPrefixed))) newval)) 2805 1.1 skrll ; ) 2806 1.1 skrll ; (define-derived-operand 2807 1.1 skrll ; (name (.sym src32-24-24-An-relative-indirect- xmode)) 2808 1.1 skrll ; (comment (.str "m32c dsp:24[An] relative source " xmode)) 2809 1.1 skrll ; (attrs (machine 32)) 2810 1.1 skrll ; (mode xmode) 2811 1.1 skrll ; (args (Src32AnPrefixed Dsp-24-u24)) 2812 1.1 skrll ; (syntax "[${Dsp-24-u24}[$Src32AnPrefixed]]") 2813 1.1 skrll ; (base-ifield f-9-11) 2814 1.1 skrll ; (encoding (+ (f-9-3 3) (f-18-1 0) Dsp-24-u24 Src32AnPrefixed)) 2815 1.1 skrll ; (ifield-assertion (andif (eq f-9-3 3) (eq f-18-1 0))) 2816 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add Dsp-24-u24 Src32AnPrefixed)))) 2817 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add Dsp-24-u24 Src32AnPrefixed))) newval)) 2818 1.1 skrll ; ) 2819 1.1 skrll ) 2820 1.1 skrll ) 2821 1.1 skrll 2822 1.1 skrll ; (src-relative-indirect-operand QI) 2823 1.1 skrll ; (src-relative-indirect-operand HI) 2824 1.1 skrll ; (src-relative-indirect-operand SI) 2825 1.1 skrll 2826 1.1 skrll ;------------------------------------------------------------- 2827 1.1 skrll ; Absolute Indirect address 2828 1.1 skrll ;------------------------------------------------------------- 2829 1.1 skrll 2830 1.1 skrll (define-pmacro (src32-absolute-indirect offset base1 base2 xmode) 2831 1.1 skrll (begin 2832 1.1 skrll ; (define-derived-operand 2833 1.1 skrll ; (name (.sym src32- offset -16-absolute-indirect-derived- xmode)) 2834 1.1 skrll ; (comment (.str "m32c absolute indirect address " xmode)) 2835 1.1 skrll ; (attrs (machine 32)) 2836 1.1 skrll ; (mode xmode) 2837 1.1 skrll ; (args ((.sym Dsp- offset -u16))) 2838 1.1 skrll ; (syntax (.str "[${Dsp-" offset "-u16}]")) 2839 1.1 skrll ; (base-ifield (.sym f- base1 -11)) 2840 1.1 skrll ; (encoding (+ ((.sym f- base1 -3) 3) ((.sym f- base2 -2) 3) (.sym Dsp- offset -u16))) 2841 1.1 skrll ; (ifield-assertion (andif (eq (.sym f- base1 -3) 3) (eq (.sym f- base2 -2) 3))) 2842 1.1 skrll ; (getter (mem32 xmode (indirect-addr (.sym Dsp- offset -u16)))) 2843 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (.sym Dsp- offset -u16))) newval)) 2844 1.1 skrll ; ) 2845 1.1 skrll ; (define-derived-operand 2846 1.1 skrll ; (name (.sym src32- offset -24-absolute-indirect-derived- xmode)) 2847 1.1 skrll ; (comment (.str "m32c absolute indirect address " xmode)) 2848 1.1 skrll ; (attrs (machine 32)) 2849 1.1 skrll ; (mode xmode) 2850 1.1 skrll ; (args ((.sym Dsp- offset -u24))) 2851 1.1 skrll ; (syntax (.str "[${Dsp-" offset "-u24}]")) 2852 1.1 skrll ; (base-ifield (.sym f- base1 -11)) 2853 1.1 skrll ; (encoding (+ ((.sym f- base1 -3) 3) ((.sym f- base2 -2) 2) (.sym Dsp- offset -u24))) 2854 1.1 skrll ; (ifield-assertion (andif (eq (.sym f- base1 -3) 3) (eq (.sym f- base2 -2) 2))) 2855 1.1 skrll ; (getter (mem32 xmode (indirect-addr (.sym Dsp- offset -u24)))) 2856 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (.sym Dsp- offset -u24))) newval)) 2857 1.1 skrll ; ) 2858 1.1 skrll ) 2859 1.1 skrll ) 2860 1.1 skrll 2861 1.1 skrll (src32-absolute-indirect 24 9 18 QI) 2862 1.1 skrll (src32-absolute-indirect 24 9 18 HI) 2863 1.1 skrll (src32-absolute-indirect 24 9 18 SI) 2864 1.1 skrll 2865 1.1 skrll ;------------------------------------------------------------- 2866 1.1 skrll ; Register relative source operands for short format insns 2867 1.1 skrll ;------------------------------------------------------------- 2868 1.1 skrll 2869 1.1 skrll (define-pmacro (src-2-S-operands mach xmode base opc1 opc2 opc3) 2870 1.1 skrll (begin 2871 1.1 skrll (define-derived-operand 2872 1.1 skrll (name (.sym src mach -2-S-8-SB-relative- xmode)) 2873 1.1 skrll (comment (.str "m" mach "c SB relative address")) 2874 1.1 skrll (attrs (machine mach)) 2875 1.1 skrll (mode xmode) 2876 1.1 skrll (args (Dsp-8-u8)) 2877 1.1 skrll (syntax "${Dsp-8-u8}[sb]") 2878 1.1 skrll (base-ifield (.sym f- base -2)) 2879 1.1 skrll (encoding (+ ((.sym f- base -2) opc1) Dsp-8-u8)) 2880 1.1 skrll (ifield-assertion (eq (.sym f- base -2) opc1)) 2881 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) sb Dsp-8-u8)) 2882 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval sb Dsp-8-u8)) 2883 1.1 skrll ; (getter (mem-mach mach xmode (indirect-addr (add (reg h-sb) Dsp-8-u8)))) 2884 1.1 skrll ; (setter (set (mem-mach mach xmode (indirect-addr (add (reg h-sb) Dsp-8-u8))) newval)) 2885 1.1 skrll ) 2886 1.1 skrll (define-derived-operand 2887 1.1 skrll (name (.sym src mach -2-S-8-FB-relative- xmode)) 2888 1.1 skrll (comment (.str "m" mach "c FB relative address")) 2889 1.1 skrll (attrs (machine mach)) 2890 1.1 skrll (mode xmode) 2891 1.1 skrll (args (Dsp-8-s8)) 2892 1.1 skrll (syntax "${Dsp-8-s8}[fb]") 2893 1.1 skrll (base-ifield (.sym f- base -2)) 2894 1.1 skrll (encoding (+ ((.sym f- base -2) opc2) Dsp-8-s8)) 2895 1.1 skrll (ifield-assertion (eq (.sym f- base -2) opc2)) 2896 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) fb Dsp-8-s8)) 2897 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval fb Dsp-8-s8)) 2898 1.1 skrll ; (getter (mem-mach mach xmode (indirect-addr (add (reg h-fb) Dsp-8-s8)))) 2899 1.1 skrll ; (setter (set (mem-mach mach xmode (indirect-addr (add (reg h-fb) Dsp-8-s8))) newval)) 2900 1.1 skrll ) 2901 1.1 skrll (define-derived-operand 2902 1.1 skrll (name (.sym src mach -2-S-16-absolute- xmode)) 2903 1.1 skrll (comment (.str "m" mach "c absolute address")) 2904 1.1 skrll (attrs (machine mach)) 2905 1.1 skrll (mode xmode) 2906 1.1 skrll (args (Dsp-8-u16)) 2907 1.1 skrll (syntax "${Dsp-8-u16}") 2908 1.1 skrll (base-ifield (.sym f- base -2)) 2909 1.1 skrll (encoding (+ ((.sym f- base -2) opc3) Dsp-8-u16)) 2910 1.1 skrll (ifield-assertion (eq (.sym f- base -2) opc3)) 2911 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) (const 0) Dsp-8-u16)) 2912 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval (const 0) Dsp-8-u16)) 2913 1.1 skrll ; (getter (mem-mach mach xmode Dsp-8-u16)) 2914 1.1 skrll ; (setter (set (mem-mach mach xmode Dsp-8-u16) newval)) 2915 1.1 skrll ) 2916 1.1 skrll ) 2917 1.1 skrll ) 2918 1.1 skrll 2919 1.1 skrll (src-2-S-operands 16 QI 6 1 2 3) 2920 1.1 skrll (src-2-S-operands 32 QI 2 2 3 1) 2921 1.1 skrll (src-2-S-operands 32 HI 2 2 3 1) 2922 1.1 skrll 2923 1.1 skrll ;============================================================= 2924 1.1 skrll ; Derived Operands 2925 1.1 skrll ;------------------------------------------------------------- 2926 1.1 skrll ; Destination 2927 1.1 skrll ;------------------------------------------------------------- 2928 1.1 skrll ; Rn direct 2929 1.1 skrll ;------------------------------------------------------------- 2930 1.1 skrll 2931 1.1 skrll (define-pmacro (dst16-Rn-direct-operand xmode) 2932 1.1 skrll (begin 2933 1.1 skrll (define-derived-operand 2934 1.1 skrll (name (.sym dst16-Rn-direct- xmode)) 2935 1.1 skrll (comment (.str "m16c Rn direct destination " xmode)) 2936 1.1 skrll (attrs (machine 16)) 2937 1.1 skrll (mode xmode) 2938 1.1 skrll (args ((.sym Dst16Rn xmode))) 2939 1.1 skrll (syntax (.str "$Dst16Rn" xmode)) 2940 1.1 skrll (base-ifield f-12-4) 2941 1.1 skrll (encoding (+ (f-12-2 0) (.sym Dst16Rn xmode))) 2942 1.1 skrll (ifield-assertion (eq f-12-2 0)) 2943 1.1 skrll (getter (trunc xmode (.sym Dst16Rn xmode))) 2944 1.1 skrll (setter (set (.sym Dst16Rn xmode) newval)) 2945 1.1 skrll ) 2946 1.1 skrll ) 2947 1.1 skrll ) 2948 1.1 skrll 2949 1.1 skrll (dst16-Rn-direct-operand QI) 2950 1.1 skrll (dst16-Rn-direct-operand HI) 2951 1.1 skrll (dst16-Rn-direct-operand SI) 2952 1.1 skrll 2953 1.1 skrll (define-derived-operand 2954 1.1 skrll (name dst16-Rn-direct-Ext-QI) 2955 1.1 skrll (comment "m16c Rn direct destination QI") 2956 1.1 skrll (attrs (machine 16)) 2957 1.1 skrll (mode HI) 2958 1.1 skrll (args (Dst16RnExtQI)) 2959 1.1 skrll (syntax "$Dst16RnExtQI") 2960 1.1 skrll (base-ifield f-12-4) 2961 1.1 skrll (encoding (+ (f-12-2 0) Dst16RnExtQI (f-15-1 0))) 2962 1.1 skrll (ifield-assertion (andif (eq f-12-2 0) (eq f-15-1 0))) 2963 1.1 skrll (getter (trunc QI (.sym Dst16RnExtQI))) 2964 1.1 skrll (setter (set Dst16RnExtQI newval)) 2965 1.1 skrll ) 2966 1.1 skrll 2967 1.1 skrll (define-pmacro (dst32-Rn-direct-operand group base xmode) 2968 1.1 skrll (begin 2969 1.1 skrll (define-derived-operand 2970 1.1 skrll (name (.sym dst32-Rn-direct- group - xmode)) 2971 1.1 skrll (comment (.str "m32c Rn direct destination " xmode)) 2972 1.1 skrll (attrs (machine 32)) 2973 1.1 skrll (mode xmode) 2974 1.1 skrll (args ((.sym Dst32Rn group xmode))) 2975 1.1 skrll (syntax (.str "$Dst32Rn" group xmode)) 2976 1.1 skrll (base-ifield (.sym f- base -6)) 2977 1.1 skrll (encoding (+ ((.sym f- base -3) 4) (.sym Dst32Rn group xmode))) 2978 1.1 skrll (ifield-assertion (eq (.sym f- base -3) 4)) 2979 1.1 skrll (getter (trunc xmode (.sym Dst32Rn group xmode))) 2980 1.1 skrll (setter (set (.sym Dst32Rn group xmode) newval)) 2981 1.1 skrll ) 2982 1.1 skrll ) 2983 1.1 skrll ) 2984 1.1 skrll 2985 1.1 skrll (dst32-Rn-direct-operand Unprefixed 4 QI) 2986 1.1 skrll (dst32-Rn-direct-operand Prefixed 12 QI) 2987 1.1 skrll (dst32-Rn-direct-operand Unprefixed 4 HI) 2988 1.1 skrll (dst32-Rn-direct-operand Prefixed 12 HI) 2989 1.1 skrll (dst32-Rn-direct-operand Unprefixed 4 SI) 2990 1.1 skrll (dst32-Rn-direct-operand Prefixed 12 SI) 2991 1.1 skrll 2992 1.1 skrll (define-pmacro (dst32-Rn-direct-Ext-operand group base1 base2 smode dmode) 2993 1.1 skrll (begin 2994 1.1 skrll (define-derived-operand 2995 1.1 skrll (name (.sym dst32-Rn-direct- group - smode)) 2996 1.1 skrll (comment (.str "m32c Rn direct destination " smode)) 2997 1.1 skrll (attrs (machine 32)) 2998 1.1 skrll (mode dmode) 2999 1.1 skrll (args ((.sym Dst32Rn group smode))) 3000 1.1 skrll (syntax (.str "$Dst32Rn" group smode)) 3001 1.1 skrll (base-ifield (.sym f- base1 -6)) 3002 1.1 skrll (encoding (+ ((.sym f- base1 -3) 4) ((.sym f- base2 -1) 1) (.sym Dst32Rn group smode))) 3003 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 4) (eq (.sym f- base2 -1) 1))) 3004 1.1 skrll (getter (trunc smode (.sym Dst32Rn group smode))) 3005 1.1 skrll (setter (set (.sym Dst32Rn group smode) newval)) 3006 1.1 skrll ) 3007 1.1 skrll ) 3008 1.1 skrll ) 3009 1.1 skrll 3010 1.1 skrll (dst32-Rn-direct-Ext-operand ExtUnprefixed 4 8 QI HI) 3011 1.1 skrll (dst32-Rn-direct-Ext-operand ExtUnprefixed 4 8 HI SI) 3012 1.1 skrll 3013 1.1 skrll (define-derived-operand 3014 1.1 skrll (name dst32-R3-direct-Unprefixed-HI) 3015 1.1 skrll (comment "m32c R3 direct HI") 3016 1.1 skrll (attrs (machine 32)) 3017 1.1 skrll (mode HI) 3018 1.1 skrll (args (R3)) 3019 1.1 skrll (syntax "$R3") 3020 1.1 skrll (base-ifield f-4-6) 3021 1.1 skrll (encoding (+ (f-4-3 4) (f-8-2 #x1))) 3022 1.1 skrll (ifield-assertion (andif (eq f-4-3 4) (eq f-8-2 #x1))) 3023 1.1 skrll (getter (trunc HI R3)) 3024 1.1 skrll (setter (set R3 newval)) 3025 1.1 skrll ) 3026 1.1 skrll ;------------------------------------------------------------- 3027 1.1 skrll ; An direct 3028 1.1 skrll ;------------------------------------------------------------- 3029 1.1 skrll 3030 1.1 skrll (define-pmacro (dst16-An-direct-operand xmode) 3031 1.1 skrll (begin 3032 1.1 skrll (define-derived-operand 3033 1.1 skrll (name (.sym dst16-An-direct- xmode)) 3034 1.1 skrll (comment (.str "m16c An direct destination " xmode)) 3035 1.1 skrll (attrs (machine 16)) 3036 1.1 skrll (mode xmode) 3037 1.1 skrll (args ((.sym Dst16An xmode))) 3038 1.1 skrll (syntax (.str "$Dst16An" xmode)) 3039 1.1 skrll (base-ifield f-12-4) 3040 1.1 skrll (encoding (+ (f-12-2 1) (f-14-1 0) (.sym Dst16An xmode))) 3041 1.1 skrll (ifield-assertion (andif (eq f-12-2 1) (eq f-14-1 0))) 3042 1.1 skrll (getter (trunc xmode (.sym Dst16An xmode))) 3043 1.1 skrll (setter (set (.sym Dst16An xmode) newval)) 3044 1.1 skrll ) 3045 1.1 skrll ) 3046 1.1 skrll ) 3047 1.1 skrll 3048 1.1 skrll (dst16-An-direct-operand QI) 3049 1.1 skrll (dst16-An-direct-operand HI) 3050 1.1 skrll (dst16-An-direct-operand SI) 3051 1.1 skrll 3052 1.1 skrll (define-pmacro (dst32-An-direct-operand group base1 base2 xmode) 3053 1.1 skrll (begin 3054 1.1 skrll (define-derived-operand 3055 1.1 skrll (name (.sym dst32-An-direct- group - xmode)) 3056 1.1 skrll (comment (.str "m32c An direct destination " xmode)) 3057 1.1 skrll (attrs (machine 32)) 3058 1.1 skrll (mode xmode) 3059 1.1 skrll (args ((.sym Dst32An group xmode))) 3060 1.1 skrll (syntax (.str "$Dst32An" group xmode)) 3061 1.1 skrll (base-ifield (.sym f- base1 -6)) 3062 1.1 skrll (encoding (+ ((.sym f- base1 -3) 0) ((.sym f- base2 -1) 1) (.sym Dst32An group xmode))) 3063 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 0) (eq (.sym f- base2 -1) 1))) 3064 1.1 skrll (getter (trunc xmode (.sym Dst32An group xmode))) 3065 1.1 skrll (setter (set (.sym Dst32An group xmode) newval)) 3066 1.1 skrll ) 3067 1.1 skrll ) 3068 1.1 skrll ) 3069 1.1 skrll 3070 1.1 skrll (dst32-An-direct-operand Unprefixed 4 8 QI) 3071 1.1 skrll (dst32-An-direct-operand Prefixed 12 16 QI) 3072 1.1 skrll (dst32-An-direct-operand Unprefixed 4 8 HI) 3073 1.1 skrll (dst32-An-direct-operand Prefixed 12 16 HI) 3074 1.1 skrll (dst32-An-direct-operand Unprefixed 4 8 SI) 3075 1.1 skrll (dst32-An-direct-operand Prefixed 12 16 SI) 3076 1.1 skrll 3077 1.1 skrll ;------------------------------------------------------------- 3078 1.1 skrll ; An indirect 3079 1.1 skrll ;------------------------------------------------------------- 3080 1.1 skrll 3081 1.1 skrll (define-pmacro (dst16-An-indirect-operand xmode) 3082 1.1 skrll (begin 3083 1.1 skrll (define-derived-operand 3084 1.1 skrll (name (.sym dst16-An-indirect- xmode)) 3085 1.1 skrll (comment (.str "m16c An indirect destination " xmode)) 3086 1.1 skrll (attrs (machine 16)) 3087 1.1 skrll (mode xmode) 3088 1.1 skrll (args (Dst16An)) 3089 1.1 skrll (syntax "[$Dst16An]") 3090 1.1 skrll (base-ifield f-12-4) 3091 1.1 skrll (encoding (+ (f-12-2 1) (f-14-1 1) Dst16An)) 3092 1.1 skrll (ifield-assertion (andif (eq f-12-2 1) (eq f-14-1 1))) 3093 1.1 skrll (getter (mem16 xmode Dst16An)) 3094 1.1 skrll (setter (set (mem16 xmode Dst16An) newval)) 3095 1.1 skrll ) 3096 1.1 skrll ) 3097 1.1 skrll ) 3098 1.1 skrll 3099 1.1 skrll (dst16-An-indirect-operand QI) 3100 1.1 skrll (dst16-An-indirect-operand HI) 3101 1.1 skrll (dst16-An-indirect-operand SI) 3102 1.1 skrll 3103 1.1 skrll (define-derived-operand 3104 1.1 skrll (name dst16-An-indirect-Ext-QI) 3105 1.1 skrll (comment "m16c An indirect destination QI") 3106 1.1 skrll (attrs (machine 16)) 3107 1.1 skrll (mode HI) 3108 1.1 skrll (args (Dst16An)) 3109 1.1 skrll (syntax "[$Dst16An]") 3110 1.1 skrll (base-ifield f-12-4) 3111 1.1 skrll (encoding (+ (f-12-2 1) (f-14-1 1) Dst16An)) 3112 1.1 skrll (ifield-assertion (andif (eq f-12-2 1) (eq f-14-1 1))) 3113 1.1 skrll (getter (mem16 QI Dst16An)) 3114 1.1 skrll (setter (set (mem16 HI Dst16An) newval)) 3115 1.1 skrll ) 3116 1.1 skrll 3117 1.1 skrll (define-pmacro (dst32-An-indirect-operand group base1 base2 smode dmode) 3118 1.1 skrll (begin 3119 1.1 skrll (define-derived-operand 3120 1.1 skrll (name (.sym dst32-An-indirect- group - smode)) 3121 1.1 skrll (comment (.str "m32c An indirect destination " smode)) 3122 1.1 skrll (attrs (machine 32)) 3123 1.1 skrll (mode dmode) 3124 1.1 skrll (args ((.sym Dst32An group))) 3125 1.1 skrll (syntax (.str "[$Dst32An" group "]")) 3126 1.1 skrll (base-ifield (.sym f- base1 -6)) 3127 1.1 skrll (encoding (+ ((.sym f- base1 -3) 0) ((.sym f- base2 -1) 0) (.sym Dst32An group))) 3128 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 0) (eq (.sym f- base2 -1) 0))) 3129 1.1 skrll (getter (c-call dmode (.str "operand_getter_" dmode) (.sym Dst32An group) 3130 1.1 skrll (const 0))) 3131 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" dmode) newval 3132 1.1 skrll (.sym Dst32An group) (const 0))) 3133 1.1 skrll ; (getter (mem32 smode (.sym Dst32An group))) 3134 1.1 skrll ; (setter (set (mem32 dmode (.sym Dst32An group)) newval)) 3135 1.1 skrll ) 3136 1.1 skrll ) 3137 1.1 skrll ) 3138 1.1 skrll 3139 1.1 skrll (dst32-An-indirect-operand Unprefixed 4 8 QI QI) 3140 1.1 skrll (dst32-An-indirect-operand Prefixed 12 16 QI QI) 3141 1.1 skrll (dst32-An-indirect-operand Unprefixed 4 8 HI HI) 3142 1.1 skrll (dst32-An-indirect-operand Prefixed 12 16 HI HI) 3143 1.1 skrll (dst32-An-indirect-operand Unprefixed 4 8 SI SI) 3144 1.1 skrll (dst32-An-indirect-operand Prefixed 12 16 SI SI) 3145 1.1 skrll (dst32-An-indirect-operand ExtUnprefixed 4 8 QI HI) 3146 1.1 skrll (dst32-An-indirect-operand ExtUnprefixed 4 8 HI SI) 3147 1.1 skrll 3148 1.1 skrll ;------------------------------------------------------------- 3149 1.1 skrll ; dsp:d[r] relative 3150 1.1 skrll ;------------------------------------------------------------- 3151 1.1 skrll 3152 1.1 skrll (define-pmacro (dst16-relative-operand offset xmode) 3153 1.1 skrll (begin 3154 1.1 skrll (define-derived-operand 3155 1.1 skrll (name (.sym dst16- offset -8-SB-relative- xmode)) 3156 1.1 skrll (comment (.str "m16c dsp:8[sb] relative destination " xmode)) 3157 1.1 skrll (attrs (machine 16)) 3158 1.1 skrll (mode xmode) 3159 1.1 skrll (args ((.sym Dsp- offset -u8))) 3160 1.1 skrll (syntax (.str "${Dsp-" offset "-u8}[sb]")) 3161 1.1 skrll (base-ifield f-12-4) 3162 1.1 skrll (encoding (+ (f-12-4 #xA) (.sym Dsp- offset -u8))) 3163 1.1 skrll (ifield-assertion (eq f-12-4 #xA)) 3164 1.1 skrll (getter (mem16 xmode (add (.sym Dsp- offset -u8) (reg h-sb)))) 3165 1.1 skrll (setter (set (mem16 xmode (add (.sym Dsp- offset -u8) (reg h-sb))) newval)) 3166 1.1 skrll ) 3167 1.1 skrll (define-derived-operand 3168 1.1 skrll (name (.sym dst16- offset -16-SB-relative- xmode)) 3169 1.1 skrll (comment (.str "m16c dsp:16[sb] relative destination " xmode)) 3170 1.1 skrll (attrs (machine 16)) 3171 1.1 skrll (mode xmode) 3172 1.1 skrll (args ((.sym Dsp- offset -u16))) 3173 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}[sb]")) 3174 1.1 skrll (base-ifield f-12-4) 3175 1.1 skrll (encoding (+ (f-12-4 #xE) (.sym Dsp- offset -u16))) 3176 1.1 skrll (ifield-assertion (eq f-12-4 #xE)) 3177 1.1 skrll (getter (mem16 xmode (add (.sym Dsp- offset -u16) (reg h-sb)))) 3178 1.1 skrll (setter (set (mem16 xmode (add (.sym Dsp- offset -u16) (reg h-sb))) newval)) 3179 1.1 skrll ) 3180 1.1 skrll (define-derived-operand 3181 1.1 skrll (name (.sym dst16- offset -8-FB-relative- xmode)) 3182 1.1 skrll (comment (.str "m16c dsp:8[fb] relative destination " xmode)) 3183 1.1 skrll (attrs (machine 16)) 3184 1.1 skrll (mode xmode) 3185 1.1 skrll (args ((.sym Dsp- offset -s8))) 3186 1.1 skrll (syntax (.str "${Dsp-" offset "-s8}[fb]")) 3187 1.1 skrll (base-ifield f-12-4) 3188 1.1 skrll (encoding (+ (f-12-4 #xB) (.sym Dsp- offset -s8))) 3189 1.1 skrll (ifield-assertion (eq f-12-4 #xB)) 3190 1.1 skrll (getter (mem16 xmode (add (.sym Dsp- offset -s8) (reg h-fb)))) 3191 1.1 skrll (setter (set (mem16 xmode (add (.sym Dsp- offset -s8) (reg h-fb))) newval)) 3192 1.1 skrll ) 3193 1.1 skrll (define-derived-operand 3194 1.1 skrll (name (.sym dst16- offset -8-An-relative- xmode)) 3195 1.1 skrll (comment (.str "m16c dsp:8[An] relative destination " xmode)) 3196 1.1 skrll (attrs (machine 16)) 3197 1.1 skrll (mode xmode) 3198 1.1 skrll (args (Dst16An (.sym Dsp- offset -u8))) 3199 1.1 skrll (syntax (.str "${Dsp-" offset "-u8}[$Dst16An]")) 3200 1.1 skrll (base-ifield f-12-4) 3201 1.1 skrll (encoding (+ (f-12-2 2) (f-14-1 0) (.sym Dsp- offset -u8) Dst16An)) 3202 1.1 skrll (ifield-assertion (andif (eq f-12-2 2) (eq f-14-1 0))) 3203 1.1 skrll (getter (mem16 xmode (add (.sym Dsp- offset -u8) Dst16An))) 3204 1.1 skrll (setter (set (mem16 xmode (add (.sym Dsp- offset -u8) Dst16An)) newval)) 3205 1.1 skrll ) 3206 1.1 skrll (define-derived-operand 3207 1.1 skrll (name (.sym dst16- offset -16-An-relative- xmode)) 3208 1.1 skrll (comment (.str "m16c dsp:16[An] relative destination " xmode)) 3209 1.1 skrll (attrs (machine 16)) 3210 1.1 skrll (mode xmode) 3211 1.1 skrll (args (Dst16An (.sym Dsp- offset -u16))) 3212 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}[$Dst16An]")) 3213 1.1 skrll (base-ifield f-12-4) 3214 1.1 skrll (encoding (+ (f-12-2 3) (f-14-1 0) (.sym Dsp- offset -u16) Dst16An)) 3215 1.1 skrll (ifield-assertion (andif (eq f-12-2 3) (eq f-14-1 0))) 3216 1.1 skrll (getter (mem16 xmode (add (.sym Dsp- offset -u16) Dst16An))) 3217 1.1 skrll (setter (set (mem16 xmode (add (.sym Dsp- offset -u16) Dst16An)) newval)) 3218 1.1 skrll ) 3219 1.1 skrll (define-derived-operand 3220 1.1 skrll (name (.sym dst16- offset -20-An-relative- xmode)) 3221 1.1 skrll (comment (.str "m16c dsp:20[An] relative destination " xmode)) 3222 1.1 skrll (attrs (machine 16)) 3223 1.1 skrll (mode xmode) 3224 1.1 skrll (args (Dst16An (.sym Dsp- offset -u20))) 3225 1.1 skrll (syntax (.str "${Dsp-" offset "-u20}[$Dst16An]")) 3226 1.1 skrll (base-ifield f-12-4) 3227 1.1 skrll (encoding (+ (f-12-2 3) (f-14-1 0) (.sym Dsp- offset -u20) Dst16An)) 3228 1.1 skrll (ifield-assertion (andif (eq f-12-2 3) (eq f-14-1 0))) 3229 1.1 skrll (getter (mem16 xmode (add (.sym Dsp- offset -u20) Dst16An))) 3230 1.1 skrll (setter (set (mem16 xmode (add (.sym Dsp- offset -u20) Dst16An)) newval)) 3231 1.1 skrll ) 3232 1.1 skrll ) 3233 1.1 skrll ) 3234 1.1 skrll 3235 1.1 skrll (dst16-relative-operand 16 QI) 3236 1.1 skrll (dst16-relative-operand 24 QI) 3237 1.1 skrll (dst16-relative-operand 32 QI) 3238 1.1 skrll (dst16-relative-operand 40 QI) 3239 1.1 skrll (dst16-relative-operand 48 QI) 3240 1.1 skrll (dst16-relative-operand 16 HI) 3241 1.1 skrll (dst16-relative-operand 24 HI) 3242 1.1 skrll (dst16-relative-operand 32 HI) 3243 1.1 skrll (dst16-relative-operand 40 HI) 3244 1.1 skrll (dst16-relative-operand 48 HI) 3245 1.1 skrll (dst16-relative-operand 16 SI) 3246 1.1 skrll (dst16-relative-operand 24 SI) 3247 1.1 skrll (dst16-relative-operand 32 SI) 3248 1.1 skrll (dst16-relative-operand 40 SI) 3249 1.1 skrll (dst16-relative-operand 48 SI) 3250 1.1 skrll 3251 1.1 skrll (define-pmacro (dst16-relative-Ext-operand offset smode dmode) 3252 1.1 skrll (begin 3253 1.1 skrll (define-derived-operand 3254 1.1 skrll (name (.sym dst16- offset -8-SB-relative-Ext- smode)) 3255 1.1 skrll (comment (.str "m16c dsp:8[sb] relative destination " smode)) 3256 1.1 skrll (attrs (machine 16)) 3257 1.1 skrll (mode dmode) 3258 1.1 skrll (args ((.sym Dsp- offset -u8))) 3259 1.1 skrll (syntax (.str "${Dsp-" offset "-u8}[sb]")) 3260 1.1 skrll (base-ifield f-12-4) 3261 1.1 skrll (encoding (+ (f-12-4 #xA) (.sym Dsp- offset -u8))) 3262 1.1 skrll (ifield-assertion (eq f-12-4 #xA)) 3263 1.1 skrll (getter (mem16 smode (add (.sym Dsp- offset -u8) (reg h-sb)))) 3264 1.1 skrll (setter (set (mem16 dmode (add (.sym Dsp- offset -u8) (reg h-sb))) newval)) 3265 1.1 skrll ) 3266 1.1 skrll (define-derived-operand 3267 1.1 skrll (name (.sym dst16- offset -16-SB-relative-Ext- smode)) 3268 1.1 skrll (comment (.str "m16c dsp:16[sb] relative destination " smode)) 3269 1.1 skrll (attrs (machine 16)) 3270 1.1 skrll (mode dmode) 3271 1.1 skrll (args ((.sym Dsp- offset -u16))) 3272 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}[sb]")) 3273 1.1 skrll (base-ifield f-12-4) 3274 1.1 skrll (encoding (+ (f-12-4 #xE) (.sym Dsp- offset -u16))) 3275 1.1 skrll (ifield-assertion (eq f-12-4 #xE)) 3276 1.1 skrll (getter (mem16 smode (add (.sym Dsp- offset -u16) (reg h-sb)))) 3277 1.1 skrll (setter (set (mem16 dmode (add (.sym Dsp- offset -u16) (reg h-sb))) newval)) 3278 1.1 skrll ) 3279 1.1 skrll (define-derived-operand 3280 1.1 skrll (name (.sym dst16- offset -8-FB-relative-Ext- smode)) 3281 1.1 skrll (comment (.str "m16c dsp:8[fb] relative destination " smode)) 3282 1.1 skrll (attrs (machine 16)) 3283 1.1 skrll (mode dmode) 3284 1.1 skrll (args ((.sym Dsp- offset -s8))) 3285 1.1 skrll (syntax (.str "${Dsp-" offset "-s8}[fb]")) 3286 1.1 skrll (base-ifield f-12-4) 3287 1.1 skrll (encoding (+ (f-12-4 #xB) (.sym Dsp- offset -s8))) 3288 1.1 skrll (ifield-assertion (eq f-12-4 #xB)) 3289 1.1 skrll (getter (mem16 smode (add (.sym Dsp- offset -s8) (reg h-fb)))) 3290 1.1 skrll (setter (set (mem16 dmode (add (.sym Dsp- offset -s8) (reg h-fb))) newval)) 3291 1.1 skrll ) 3292 1.1 skrll (define-derived-operand 3293 1.1 skrll (name (.sym dst16- offset -8-An-relative-Ext- smode)) 3294 1.1 skrll (comment (.str "m16c dsp:8[An] relative destination " smode)) 3295 1.1 skrll (attrs (machine 16)) 3296 1.1 skrll (mode dmode) 3297 1.1 skrll (args (Dst16An (.sym Dsp- offset -u8))) 3298 1.1 skrll (syntax (.str "${Dsp-" offset "-u8}[$Dst16An]")) 3299 1.1 skrll (base-ifield f-12-4) 3300 1.1 skrll (encoding (+ (f-12-2 2) (f-14-1 0) (.sym Dsp- offset -u8) Dst16An)) 3301 1.1 skrll (ifield-assertion (andif (eq f-12-2 2) (eq f-14-1 0))) 3302 1.1 skrll (getter (mem16 smode (add (.sym Dsp- offset -u8) Dst16An))) 3303 1.1 skrll (setter (set (mem16 dmode (add (.sym Dsp- offset -u8) Dst16An)) newval)) 3304 1.1 skrll ) 3305 1.1 skrll (define-derived-operand 3306 1.1 skrll (name (.sym dst16- offset -16-An-relative-Ext- smode)) 3307 1.1 skrll (comment (.str "m16c dsp:16[An] relative destination " smode)) 3308 1.1 skrll (attrs (machine 16)) 3309 1.1 skrll (mode dmode) 3310 1.1 skrll (args (Dst16An (.sym Dsp- offset -u16))) 3311 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}[$Dst16An]")) 3312 1.1 skrll (base-ifield f-12-4) 3313 1.1 skrll (encoding (+ (f-12-2 3) (f-14-1 0) (.sym Dsp- offset -u16) Dst16An)) 3314 1.1 skrll (ifield-assertion (andif (eq f-12-2 3) (eq f-14-1 0))) 3315 1.1 skrll (getter (mem16 smode (add (.sym Dsp- offset -u16) Dst16An))) 3316 1.1 skrll (setter (set (mem16 dmode (add (.sym Dsp- offset -u16) Dst16An)) newval)) 3317 1.1 skrll ) 3318 1.1 skrll ) 3319 1.1 skrll ) 3320 1.1 skrll 3321 1.1 skrll (dst16-relative-Ext-operand 16 QI HI) 3322 1.1 skrll 3323 1.1 skrll (define-pmacro (dst32-relative-operand offset group base1 base2 smode dmode) 3324 1.1 skrll (begin 3325 1.1 skrll (define-derived-operand 3326 1.1 skrll (name (.sym dst32- offset -8-SB-relative- group - smode)) 3327 1.1 skrll (comment (.str "m32c dsp:8[sb] relative destination " smode)) 3328 1.1 skrll (attrs (machine 32)) 3329 1.1 skrll (mode dmode) 3330 1.1 skrll (args ((.sym Dsp- offset -u8))) 3331 1.1 skrll (syntax (.str "${Dsp-" offset "-u8}[sb]")) 3332 1.1 skrll (base-ifield (.sym f- base1 -6)) 3333 1.1 skrll (encoding (+ ((.sym f- base1 -3) 1) ((.sym f- base2 -2) 2) (.sym Dsp- offset -u8))) 3334 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 1) (eq (.sym f- base2 -2) 2))) 3335 1.1 skrll (getter (c-call dmode (.str "operand_getter_" dmode) sb (.sym Dsp- offset -u8))) 3336 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" dmode) newval sb (.sym Dsp- offset -u8))) 3337 1.1 skrll ; (getter (mem32 smode (add (.sym Dsp- offset -u8) (reg h-sb)))) 3338 1.1 skrll ; (setter (set (mem32 dmode (add (.sym Dsp- offset -u8) (reg h-sb))) newval)) 3339 1.1 skrll ) 3340 1.1 skrll (define-derived-operand 3341 1.1 skrll (name (.sym dst32- offset -16-SB-relative- group - smode)) 3342 1.1 skrll (comment (.str "m32c dsp:16[sb] relative destination " smode)) 3343 1.1 skrll (attrs (machine 32)) 3344 1.1 skrll (mode dmode) 3345 1.1 skrll (args ((.sym Dsp- offset -u16))) 3346 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}[sb]")) 3347 1.1 skrll (base-ifield (.sym f- base1 -6)) 3348 1.1 skrll (encoding (+ ((.sym f- base1 -3) 2) ((.sym f- base2 -2) 2) (.sym Dsp- offset -u16))) 3349 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 2) (eq (.sym f- base2 -2) 2))) 3350 1.1 skrll (getter (c-call dmode (.str "operand_getter_" dmode) sb (.sym Dsp- offset -u16))) 3351 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" dmode) newval sb (.sym Dsp- offset -u16))) 3352 1.1 skrll ; (getter (mem32 smode (add (.sym Dsp- offset -u16) (reg h-sb)))) 3353 1.1 skrll ; (setter (set (mem32 dmode (add (.sym Dsp- offset -u16) (reg h-sb))) newval)) 3354 1.1 skrll ) 3355 1.1 skrll (define-derived-operand 3356 1.1 skrll (name (.sym dst32- offset -8-FB-relative- group - smode)) 3357 1.1 skrll (comment (.str "m32c dsp:8[fb] relative destination " smode)) 3358 1.1 skrll (attrs (machine 32)) 3359 1.1 skrll (mode dmode) 3360 1.1 skrll (args ((.sym Dsp- offset -s8))) 3361 1.1 skrll (syntax (.str "${Dsp-" offset "-s8}[fb]")) 3362 1.1 skrll (base-ifield (.sym f- base1 -6)) 3363 1.1 skrll (encoding (+ ((.sym f- base1 -3) 1) ((.sym f- base2 -2) 3) (.sym Dsp- offset -s8))) 3364 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 1) (eq (.sym f- base2 -2) 3))) 3365 1.1 skrll (getter (c-call dmode (.str "operand_getter_" dmode) fb (.sym Dsp- offset -s8))) 3366 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" dmode) newval fb (.sym Dsp- offset -s8))) 3367 1.1 skrll ; (getter (mem32 smode (add (.sym Dsp- offset -s8) (reg h-fb)))) 3368 1.1 skrll ; (setter (set (mem32 dmode (add (.sym Dsp- offset -s8) (reg h-fb))) newval)) 3369 1.1 skrll ) 3370 1.1 skrll (define-derived-operand 3371 1.1 skrll (name (.sym dst32- offset -16-FB-relative- group - smode)) 3372 1.1 skrll (comment (.str "m32c dsp:16[fb] relative destination " smode)) 3373 1.1 skrll (attrs (machine 32)) 3374 1.1 skrll (mode dmode) 3375 1.1 skrll (args ((.sym Dsp- offset -s16))) 3376 1.1 skrll (syntax (.str "${Dsp-" offset "-s16}[fb]")) 3377 1.1 skrll (base-ifield (.sym f- base1 -6)) 3378 1.1 skrll (encoding (+ ((.sym f- base1 -3) 2) ((.sym f- base2 -2) 3) (.sym Dsp- offset -s16))) 3379 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 2) (eq (.sym f- base2 -2) 3))) 3380 1.1 skrll (getter (c-call dmode (.str "operand_getter_" dmode) fb (.sym Dsp- offset -s16))) 3381 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" dmode) newval fb (.sym Dsp- offset -s16))) 3382 1.1 skrll ; (getter (mem32 smode (add (.sym Dsp- offset -s16) (reg h-fb)))) 3383 1.1 skrll ; (setter (set (mem32 dmode (add (.sym Dsp- offset -s16) (reg h-fb))) newval)) 3384 1.1 skrll ) 3385 1.1 skrll (define-derived-operand 3386 1.1 skrll (name (.sym dst32- offset -8-An-relative- group - smode)) 3387 1.1 skrll (comment (.str "m32c dsp:8[An] relative destination " smode)) 3388 1.1 skrll (attrs (machine 32)) 3389 1.1 skrll (mode dmode) 3390 1.1 skrll (args ((.sym Dst32An group) (.sym Dsp- offset -u8))) 3391 1.1 skrll (syntax (.str "${Dsp-" offset "-u8}[$Dst32An" group "]")) 3392 1.1 skrll (base-ifield (.sym f- base1 -6)) 3393 1.1 skrll (encoding (+ ((.sym f- base1 -3) 1) ((.sym f- base2 -1) 0) (.sym Dsp- offset -u8) (.sym Dst32An group))) 3394 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 1) (eq (.sym f- base2 -1) 0))) 3395 1.1 skrll (getter (c-call dmode (.str "operand_getter_" dmode) (.sym Dst32An group) (.sym Dsp- offset -u8))) 3396 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" dmode) newval (.sym Dst32An group) (.sym Dsp- offset -u8))) 3397 1.1 skrll ; (getter (mem32 smode (add (.sym Dsp- offset -u8) (.sym Dst32An group)))) 3398 1.1 skrll ; (setter (set (mem32 dmode (add (.sym Dsp- offset -u8) (.sym Dst32An group))) newval)) 3399 1.1 skrll ) 3400 1.1 skrll (define-derived-operand 3401 1.1 skrll (name (.sym dst32- offset -16-An-relative- group - smode)) 3402 1.1 skrll (comment (.str "m32c dsp:16[An] relative destination " smode)) 3403 1.1 skrll (attrs (machine 32)) 3404 1.1 skrll (mode dmode) 3405 1.1 skrll (args ((.sym Dst32An group) (.sym Dsp- offset -u16))) 3406 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}[$Dst32An" group "]")) 3407 1.1 skrll (base-ifield (.sym f- base1 -6)) 3408 1.1 skrll (encoding (+ ((.sym f- base1 -3) 2) ((.sym f- base2 -1) 0) (.sym Dsp- offset -u16) (.sym Dst32An group))) 3409 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 2) (eq (.sym f- base2 -1) 0))) 3410 1.1 skrll (getter (c-call dmode (.str "operand_getter_" dmode) (.sym Dst32An group) (.sym Dsp- offset -u16))) 3411 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" dmode) newval (.sym Dst32An group) (.sym Dsp- offset -u16))) 3412 1.1 skrll ; (getter (mem32 smode (add (.sym Dsp- offset -u16) (.sym Dst32An group)))) 3413 1.1 skrll ; (setter (set (mem32 dmode (add (.sym Dsp- offset -u16) (.sym Dst32An group))) newval)) 3414 1.1 skrll ) 3415 1.1 skrll (define-derived-operand 3416 1.1 skrll (name (.sym dst32- offset -24-An-relative- group - smode)) 3417 1.1 skrll (comment (.str "m32c dsp:16[An] relative destination " smode)) 3418 1.1 skrll (attrs (machine 32)) 3419 1.1 skrll (mode dmode) 3420 1.1 skrll (args ((.sym Dst32An group) (.sym Dsp- offset -u24))) 3421 1.1 skrll (syntax (.str "${Dsp-" offset "-u24}[$Dst32An" group "]")) 3422 1.1 skrll (base-ifield (.sym f- base1 -6)) 3423 1.1 skrll (encoding (+ ((.sym f- base1 -3) 3) ((.sym f- base2 -1) 0) (.sym Dsp- offset -u24) (.sym Dst32An group))) 3424 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 3) (eq (.sym f- base2 -1) 0))) 3425 1.1 skrll (getter (c-call dmode (.str "operand_getter_" dmode) (.sym Dst32An group) (.sym Dsp- offset -u24))) 3426 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" dmode) newval (.sym Dst32An group) (.sym Dsp- offset -u24))) 3427 1.1 skrll ; (getter (mem32 smode (add (.sym Dsp- offset -u24) (.sym Dst32An group)))) 3428 1.1 skrll ; (setter (set (mem32 dmode (add (.sym Dsp- offset -u24) (.sym Dst32An group))) newval)) 3429 1.1 skrll ) 3430 1.1 skrll ) 3431 1.1 skrll ) 3432 1.1 skrll 3433 1.1 skrll (dst32-relative-operand 16 Unprefixed 4 8 QI QI) 3434 1.1 skrll (dst32-relative-operand 24 Unprefixed 4 8 QI QI) 3435 1.1 skrll (dst32-relative-operand 32 Unprefixed 4 8 QI QI) 3436 1.1 skrll (dst32-relative-operand 40 Unprefixed 4 8 QI QI) 3437 1.1 skrll (dst32-relative-operand 16 Unprefixed 4 8 HI HI) 3438 1.1 skrll (dst32-relative-operand 24 Unprefixed 4 8 HI HI) 3439 1.1 skrll (dst32-relative-operand 32 Unprefixed 4 8 HI HI) 3440 1.1 skrll (dst32-relative-operand 40 Unprefixed 4 8 HI HI) 3441 1.1 skrll (dst32-relative-operand 16 Unprefixed 4 8 SI SI) 3442 1.1 skrll (dst32-relative-operand 24 Unprefixed 4 8 SI SI) 3443 1.1 skrll (dst32-relative-operand 32 Unprefixed 4 8 SI SI) 3444 1.1 skrll (dst32-relative-operand 40 Unprefixed 4 8 SI SI) 3445 1.1 skrll 3446 1.1 skrll (dst32-relative-operand 24 Prefixed 12 16 QI QI) 3447 1.1 skrll (dst32-relative-operand 32 Prefixed 12 16 QI QI) 3448 1.1 skrll (dst32-relative-operand 40 Prefixed 12 16 QI QI) 3449 1.1 skrll (dst32-relative-operand 48 Prefixed 12 16 QI QI) 3450 1.1 skrll (dst32-relative-operand 24 Prefixed 12 16 HI HI) 3451 1.1 skrll (dst32-relative-operand 32 Prefixed 12 16 HI HI) 3452 1.1 skrll (dst32-relative-operand 40 Prefixed 12 16 HI HI) 3453 1.1 skrll (dst32-relative-operand 48 Prefixed 12 16 HI HI) 3454 1.1 skrll (dst32-relative-operand 24 Prefixed 12 16 SI SI) 3455 1.1 skrll (dst32-relative-operand 32 Prefixed 12 16 SI SI) 3456 1.1 skrll (dst32-relative-operand 40 Prefixed 12 16 SI SI) 3457 1.1 skrll (dst32-relative-operand 48 Prefixed 12 16 SI SI) 3458 1.1 skrll 3459 1.1 skrll (dst32-relative-operand 16 ExtUnprefixed 4 8 QI HI) 3460 1.1 skrll (dst32-relative-operand 16 ExtUnprefixed 4 8 HI SI) 3461 1.1 skrll 3462 1.1 skrll ;------------------------------------------------------------- 3463 1.1 skrll ; Absolute address 3464 1.1 skrll ;------------------------------------------------------------- 3465 1.1 skrll 3466 1.1 skrll (define-pmacro (dst16-absolute offset xmode) 3467 1.1 skrll (begin 3468 1.1 skrll (define-derived-operand 3469 1.1 skrll (name (.sym dst16- offset -16-absolute- xmode)) 3470 1.1 skrll (comment (.str "m16c absolute address " xmode)) 3471 1.1 skrll (attrs (machine 16)) 3472 1.1 skrll (mode xmode) 3473 1.1 skrll (args ((.sym Dsp- offset -u16))) 3474 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}")) 3475 1.1 skrll (base-ifield f-12-4) 3476 1.1 skrll (encoding (+ (f-12-4 #xF) (.sym Dsp- offset -u16))) 3477 1.1 skrll (ifield-assertion (eq f-12-4 #xF)) 3478 1.1 skrll (getter (mem16 xmode (.sym Dsp- offset -u16))) 3479 1.1 skrll (setter (set (mem16 xmode (.sym Dsp- offset -u16)) newval)) 3480 1.1 skrll ) 3481 1.1 skrll ) 3482 1.1 skrll ) 3483 1.1 skrll 3484 1.1 skrll (dst16-absolute 16 QI) 3485 1.1 skrll (dst16-absolute 24 QI) 3486 1.1 skrll (dst16-absolute 32 QI) 3487 1.1 skrll (dst16-absolute 40 QI) 3488 1.1 skrll (dst16-absolute 48 QI) 3489 1.1 skrll (dst16-absolute 16 HI) 3490 1.1 skrll (dst16-absolute 24 HI) 3491 1.1 skrll (dst16-absolute 32 HI) 3492 1.1 skrll (dst16-absolute 40 HI) 3493 1.1 skrll (dst16-absolute 48 HI) 3494 1.1 skrll (dst16-absolute 16 SI) 3495 1.1 skrll (dst16-absolute 24 SI) 3496 1.1 skrll (dst16-absolute 32 SI) 3497 1.1 skrll (dst16-absolute 40 SI) 3498 1.1 skrll (dst16-absolute 48 SI) 3499 1.1 skrll 3500 1.1 skrll (define-derived-operand 3501 1.1 skrll (name dst16-16-16-absolute-Ext-QI) 3502 1.1 skrll (comment "m16c absolute address QI") 3503 1.1 skrll (attrs (machine 16)) 3504 1.1 skrll (mode HI) 3505 1.1 skrll (args (Dsp-16-u16)) 3506 1.1 skrll (syntax "${Dsp-16-u16}") 3507 1.1 skrll (base-ifield f-12-4) 3508 1.1 skrll (encoding (+ (f-12-4 #xF) Dsp-16-u16)) 3509 1.1 skrll (ifield-assertion (eq f-12-4 #xF)) 3510 1.1 skrll (getter (mem16 QI Dsp-16-u16)) 3511 1.1 skrll (setter (set (mem16 HI Dsp-16-u16) newval)) 3512 1.1 skrll ) 3513 1.1 skrll 3514 1.1 skrll (define-pmacro (dst32-absolute offset group base1 base2 smode dmode) 3515 1.1 skrll (begin 3516 1.1 skrll (define-derived-operand 3517 1.1 skrll (name (.sym dst32- offset -16-absolute- group - smode)) 3518 1.1 skrll (comment (.str "m32c absolute address " smode)) 3519 1.1 skrll (attrs (machine 32)) 3520 1.1 skrll (mode dmode) 3521 1.1 skrll (args ((.sym Dsp- offset -u16))) 3522 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}")) 3523 1.1 skrll (base-ifield (.sym f- base1 -6)) 3524 1.1 skrll (encoding (+ ((.sym f- base1 -3) 3) ((.sym f- base2 -2) 3) (.sym Dsp- offset -u16))) 3525 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 3) (eq (.sym f- base2 -2) 3))) 3526 1.1 skrll (getter (c-call smode (.str "operand_getter_" smode) (const 0) (.sym Dsp- offset -u16))) 3527 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" dmode) newval (const 0) (.sym Dsp- offset -u16))) 3528 1.1 skrll ; (getter (mem32 smode (.sym Dsp- offset -u16))) 3529 1.1 skrll ; (setter (set (mem32 dmode (.sym Dsp- offset -u16)) newval)) 3530 1.1 skrll ) 3531 1.1 skrll (define-derived-operand 3532 1.1 skrll (name (.sym dst32- offset -24-absolute- group - smode)) 3533 1.1 skrll (comment (.str "m32c absolute address " smode)) 3534 1.1 skrll (attrs (machine 32)) 3535 1.1 skrll (mode dmode) 3536 1.1 skrll (args ((.sym Dsp- offset -u24))) 3537 1.1 skrll (syntax (.str "${Dsp-" offset "-u24}")) 3538 1.1 skrll (base-ifield (.sym f- base1 -6)) 3539 1.1 skrll (encoding (+ ((.sym f- base1 -3) 3) ((.sym f- base2 -2) 2) (.sym Dsp- offset -u24))) 3540 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 3) (eq (.sym f- base2 -2) 2))) 3541 1.1 skrll (getter (c-call smode (.str "operand_getter_" smode) (const 0) (.sym Dsp- offset -u24))) 3542 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" dmode) newval (const 0) (.sym Dsp- offset -u24))) 3543 1.1 skrll ; (getter (mem32 smode (.sym Dsp- offset -u24))) 3544 1.1 skrll ; (setter (set (mem32 dmode (.sym Dsp- offset -u24)) newval)) 3545 1.1 skrll ) 3546 1.1 skrll ) 3547 1.1 skrll ) 3548 1.1 skrll 3549 1.1 skrll (dst32-absolute 16 Unprefixed 4 8 QI QI) 3550 1.1 skrll (dst32-absolute 24 Unprefixed 4 8 QI QI) 3551 1.1 skrll (dst32-absolute 32 Unprefixed 4 8 QI QI) 3552 1.1 skrll (dst32-absolute 40 Unprefixed 4 8 QI QI) 3553 1.1 skrll (dst32-absolute 16 Unprefixed 4 8 HI HI) 3554 1.1 skrll (dst32-absolute 24 Unprefixed 4 8 HI HI) 3555 1.1 skrll (dst32-absolute 32 Unprefixed 4 8 HI HI) 3556 1.1 skrll (dst32-absolute 40 Unprefixed 4 8 HI HI) 3557 1.1 skrll (dst32-absolute 16 Unprefixed 4 8 SI SI) 3558 1.1 skrll (dst32-absolute 24 Unprefixed 4 8 SI SI) 3559 1.1 skrll (dst32-absolute 32 Unprefixed 4 8 SI SI) 3560 1.1 skrll (dst32-absolute 40 Unprefixed 4 8 SI SI) 3561 1.1 skrll 3562 1.1 skrll (dst32-absolute 24 Prefixed 12 16 QI QI) 3563 1.1 skrll (dst32-absolute 32 Prefixed 12 16 QI QI) 3564 1.1 skrll (dst32-absolute 40 Prefixed 12 16 QI QI) 3565 1.1 skrll (dst32-absolute 48 Prefixed 12 16 QI QI) 3566 1.1 skrll (dst32-absolute 24 Prefixed 12 16 HI HI) 3567 1.1 skrll (dst32-absolute 32 Prefixed 12 16 HI HI) 3568 1.1 skrll (dst32-absolute 40 Prefixed 12 16 HI HI) 3569 1.1 skrll (dst32-absolute 48 Prefixed 12 16 HI HI) 3570 1.1 skrll (dst32-absolute 24 Prefixed 12 16 SI SI) 3571 1.1 skrll (dst32-absolute 32 Prefixed 12 16 SI SI) 3572 1.1 skrll (dst32-absolute 40 Prefixed 12 16 SI SI) 3573 1.1 skrll (dst32-absolute 48 Prefixed 12 16 SI SI) 3574 1.1 skrll 3575 1.1 skrll (dst32-absolute 16 ExtUnprefixed 4 8 QI HI) 3576 1.1 skrll (dst32-absolute 16 ExtUnprefixed 4 8 HI SI) 3577 1.1 skrll 3578 1.1 skrll ;------------------------------------------------------------- 3579 1.1 skrll ; An indirect indirect 3580 1.1 skrll ;------------------------------------------------------------- 3581 1.1 skrll 3582 1.1 skrll ;(define-pmacro (dst-An-indirect-indirect-operand xmode) 3583 1.1 skrll ; (define-derived-operand 3584 1.1 skrll ; (name (.sym dst32-An-indirect-indirect- xmode)) 3585 1.1 skrll ; (comment (.str "m32c An indirect indirect destination " xmode)) 3586 1.1 skrll ; (attrs (machine 32)) 3587 1.1 skrll ; (mode xmode) 3588 1.1 skrll ; (args (Dst32AnPrefixed)) 3589 1.1 skrll ; (syntax (.str "[[$Dst32AnPrefixed]]")) 3590 1.1 skrll ; (base-ifield f-12-6) 3591 1.1 skrll ; (encoding (+ (f-12-3 0) (f-16-1 0) Dst32AnPrefixed)) 3592 1.1 skrll ; (ifield-assertion (andif (eq f-12-3 0) (eq f-16-1 0))) 3593 1.1 skrll ; (getter (mem32 xmode (indirect-addr Dst32AnPrefixed))) 3594 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr Dst32AnPrefixed)) newval)) 3595 1.1 skrll ; ) 3596 1.1 skrll ;) 3597 1.1 skrll 3598 1.1 skrll ; (dst-An-indirect-indirect-operand QI) 3599 1.1 skrll ; (dst-An-indirect-indirect-operand HI) 3600 1.1 skrll ; (dst-An-indirect-indirect-operand SI) 3601 1.1 skrll 3602 1.1 skrll ;------------------------------------------------------------- 3603 1.1 skrll ; Relative indirect 3604 1.1 skrll ;------------------------------------------------------------- 3605 1.1 skrll 3606 1.1 skrll (define-pmacro (dst-relative-indirect-operand offset xmode) 3607 1.1 skrll (begin 3608 1.1 skrll ; (define-derived-operand 3609 1.1 skrll ; (name (.sym dst32- offset -8-SB-relative-indirect- xmode)) 3610 1.1 skrll ; (comment (.str "m32c dsp:8[sb] relative destination " xmode)) 3611 1.1 skrll ; (attrs (machine 32)) 3612 1.1 skrll ; (mode xmode) 3613 1.1 skrll ; (args ((.sym Dsp- offset -u8))) 3614 1.1 skrll ; (syntax (.str "[${Dsp-" offset "-u8}[sb]]")) 3615 1.1 skrll ; (base-ifield f-12-6) 3616 1.1 skrll ; (encoding (+ (f-12-3 1) (f-16-2 2) (.sym Dsp- offset -u8))) 3617 1.1 skrll ; (ifield-assertion (andif (eq f-12-3 1) (eq f-16-2 2))) 3618 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add (.sym Dsp- offset -u8) (reg h-sb))))) 3619 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add (.sym Dsp- offset -u8) (reg h-sb)))) newval)) 3620 1.1 skrll ; ) 3621 1.1 skrll ; (define-derived-operand 3622 1.1 skrll ; (name (.sym dst32- offset -16-SB-relative-indirect- xmode)) 3623 1.1 skrll ; (comment (.str "m32c dsp:16[sb] relative destination " xmode)) 3624 1.1 skrll ; (attrs (machine 32)) 3625 1.1 skrll ; (mode xmode) 3626 1.1 skrll ; (args ((.sym Dsp- offset -u16))) 3627 1.1 skrll ; (syntax (.str "[${Dsp-" offset "-u16}[sb]]")) 3628 1.1 skrll ; (base-ifield f-12-6) 3629 1.1 skrll ; (encoding (+ (f-12-3 2) (f-16-2 2) (.sym Dsp- offset -u16))) 3630 1.1 skrll ; (ifield-assertion (andif (eq f-12-3 2) (eq f-16-2 2))) 3631 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add (.sym Dsp- offset -u16) (reg h-sb))))) 3632 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add (.sym Dsp- offset -u16) (reg h-sb)))) newval)) 3633 1.1 skrll ; ) 3634 1.1 skrll ; (define-derived-operand 3635 1.1 skrll ; (name (.sym dst32- offset -8-FB-relative-indirect- xmode)) 3636 1.1 skrll ; (comment (.str "m32c dsp:8[fb] relative destination " xmode)) 3637 1.1 skrll ; (attrs (machine 32)) 3638 1.1 skrll ; (mode xmode) 3639 1.1 skrll ; (args ((.sym Dsp- offset -s8))) 3640 1.1 skrll ; (syntax (.str "[${Dsp-" offset "-s8}[fb]]")) 3641 1.1 skrll ; (base-ifield f-12-6) 3642 1.1 skrll ; (encoding (+ (f-12-3 1) (f-16-2 3) (.sym Dsp- offset -s8))) 3643 1.1 skrll ; (ifield-assertion (andif (eq f-12-3 1) (eq f-16-2 3))) 3644 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add (.sym Dsp- offset -s8) (reg h-fb))))) 3645 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add (.sym Dsp- offset -s8) (reg h-fb)))) newval)) 3646 1.1 skrll ; ) 3647 1.1 skrll ; (define-derived-operand 3648 1.1 skrll ; (name (.sym dst32- offset -16-FB-relative-indirect- xmode)) 3649 1.1 skrll ; (comment (.str "m32c dsp:16[fb] relative destination " xmode)) 3650 1.1 skrll ; (attrs (machine 32)) 3651 1.1 skrll ; (mode xmode) 3652 1.1 skrll ; (args ((.sym Dsp- offset -s16))) 3653 1.1 skrll ; (syntax (.str "[${Dsp-" offset "-s16}[fb]]")) 3654 1.1 skrll ; (base-ifield f-12-6) 3655 1.1 skrll ; (encoding (+ (f-12-3 2) (f-16-2 3) (.sym Dsp- offset -s16))) 3656 1.1 skrll ; (ifield-assertion (andif (eq f-12-3 2) (eq f-16-2 3))) 3657 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add (.sym Dsp- offset -s16) (reg h-fb))))) 3658 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add (.sym Dsp- offset -s16) (reg h-fb)))) newval)) 3659 1.1 skrll ; ) 3660 1.1 skrll ; (define-derived-operand 3661 1.1 skrll ; (name (.sym dst32- offset -8-An-relative-indirect- xmode)) 3662 1.1 skrll ; (comment (.str "m32c dsp:8[An] relative indirect destination " xmode)) 3663 1.1 skrll ; (attrs (machine 32)) 3664 1.1 skrll ; (mode xmode) 3665 1.1 skrll ; (args (Dst32AnPrefixed (.sym Dsp- offset -u8))) 3666 1.1 skrll ; (syntax (.str "[${Dsp-" offset "-u8}[$Dst32AnPrefixed]]")) 3667 1.1 skrll ; (base-ifield f-12-6) 3668 1.1 skrll ; (encoding (+ (f-12-3 1) (f-16-1 0) (.sym Dsp- offset -u8) Dst32AnPrefixed)) 3669 1.1 skrll ; (ifield-assertion (andif (eq f-12-3 1) (eq f-16-1 0))) 3670 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add (.sym Dsp- offset -u8) Dst32AnPrefixed)))) 3671 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add (.sym Dsp- offset -u8) Dst32AnPrefixed))) newval)) 3672 1.1 skrll ; ) 3673 1.1 skrll ; (define-derived-operand 3674 1.1 skrll ; (name (.sym dst32- offset -16-An-relative-indirect- xmode)) 3675 1.1 skrll ; (comment (.str "m32c dsp:16[An] relative destination " xmode)) 3676 1.1 skrll ; (attrs (machine 32)) 3677 1.1 skrll ; (mode xmode) 3678 1.1 skrll ; (args (Dst32AnPrefixed (.sym Dsp- offset -u16))) 3679 1.1 skrll ; (syntax (.str "[${Dsp-" offset "-u16}[$Dst32AnPrefixed]]")) 3680 1.1 skrll ; (base-ifield f-12-6) 3681 1.1 skrll ; (encoding (+ (f-12-3 2) (f-16-1 0) (.sym Dsp- offset -u16) Dst32AnPrefixed)) 3682 1.1 skrll ; (ifield-assertion (andif (eq f-12-3 2) (eq f-16-1 0))) 3683 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add (.sym Dsp- offset -u16) Dst32AnPrefixed)))) 3684 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add (.sym Dsp- offset -u16) Dst32AnPrefixed))) newval)) 3685 1.1 skrll ; ) 3686 1.1 skrll ; (define-derived-operand 3687 1.1 skrll ; (name (.sym dst32- offset -24-An-relative-indirect- xmode)) 3688 1.1 skrll ; (comment (.str "m32c dsp:24[An] relative destination " xmode)) 3689 1.1 skrll ; (attrs (machine 32)) 3690 1.1 skrll ; (mode xmode) 3691 1.1 skrll ; (args (Dst32AnPrefixed (.sym Dsp- offset -u24))) 3692 1.1 skrll ; (syntax (.str "[${Dsp-" offset "-u24}[$Dst32AnPrefixed]]")) 3693 1.1 skrll ; (base-ifield f-12-6) 3694 1.1 skrll ; (encoding (+ (f-12-3 3) (f-16-1 0) (.sym Dsp- offset -u24) Dst32AnPrefixed)) 3695 1.1 skrll ; (ifield-assertion (andif (eq f-12-3 3) (eq f-16-1 0))) 3696 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add (.sym Dsp- offset -u24) Dst32AnPrefixed)))) 3697 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add (.sym Dsp- offset -u24) Dst32AnPrefixed))) newval)) 3698 1.1 skrll ; ) 3699 1.1 skrll ) 3700 1.1 skrll ) 3701 1.1 skrll 3702 1.1 skrll ; (dst-relative-indirect-operand 24 QI) 3703 1.1 skrll ; (dst-relative-indirect-operand 32 QI) 3704 1.1 skrll ; (dst-relative-indirect-operand 40 QI) 3705 1.1 skrll ; (dst-relative-indirect-operand 48 QI) 3706 1.1 skrll ; (dst-relative-indirect-operand 24 HI) 3707 1.1 skrll ; (dst-relative-indirect-operand 32 HI) 3708 1.1 skrll ; (dst-relative-indirect-operand 40 HI) 3709 1.1 skrll ; (dst-relative-indirect-operand 48 HI) 3710 1.1 skrll ; (dst-relative-indirect-operand 24 SI) 3711 1.1 skrll ; (dst-relative-indirect-operand 32 SI) 3712 1.1 skrll ; (dst-relative-indirect-operand 40 SI) 3713 1.1 skrll ; (dst-relative-indirect-operand 48 SI) 3714 1.1 skrll 3715 1.1 skrll ;------------------------------------------------------------- 3716 1.1 skrll ; Absolute indirect 3717 1.1 skrll ;------------------------------------------------------------- 3718 1.1 skrll 3719 1.1 skrll (define-pmacro (dst-absolute-indirect offset xmode) 3720 1.1 skrll (begin 3721 1.1 skrll ; (define-derived-operand 3722 1.1 skrll ; (name (.sym dst32- offset -16-absolute-indirect-derived- xmode)) 3723 1.1 skrll ; (comment (.str "m32c absolute indirect address " xmode)) 3724 1.1 skrll ; (attrs (machine 32)) 3725 1.1 skrll ; (mode xmode) 3726 1.1 skrll ; (args ((.sym Dsp- offset -u16))) 3727 1.1 skrll ; (syntax (.str "[${Dsp-" offset "-u16}]")) 3728 1.1 skrll ; (base-ifield f-12-6) 3729 1.1 skrll ; (encoding (+ (f-12-3 3) (f-16-2 3) (.sym Dsp- offset -u16))) 3730 1.1 skrll ; (ifield-assertion (andif (eq f-12-3 3) (eq f-16-2 3))) 3731 1.1 skrll ; (getter (mem32 xmode (indirect-addr (.sym Dsp- offset -u16)))) 3732 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (.sym Dsp- offset -u16))) newval)) 3733 1.1 skrll ; ) 3734 1.1 skrll ; (define-derived-operand 3735 1.1 skrll ; (name (.sym dst32- offset -24-absolute-indirect-derived- xmode)) 3736 1.1 skrll ; (comment (.str "m32c absolute indirect address " xmode)) 3737 1.1 skrll ; (attrs (machine 32)) 3738 1.1 skrll ; (mode xmode) 3739 1.1 skrll ; (args ((.sym Dsp- offset -u24))) 3740 1.1 skrll ; (syntax (.str "[${Dsp-" offset "-u24}]")) 3741 1.1 skrll ; (base-ifield f-12-6) 3742 1.1 skrll ; (encoding (+ (f-12-3 3) (f-16-2 2) (.sym Dsp- offset -u24))) 3743 1.1 skrll ; (ifield-assertion (andif (eq f-12-3 3) (eq f-16-2 2))) 3744 1.1 skrll ; (getter (mem32 xmode (indirect-addr (.sym Dsp- offset -u24)))) 3745 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (.sym Dsp- offset -u24))) newval)) 3746 1.1 skrll ; ) 3747 1.1 skrll ) 3748 1.1 skrll ) 3749 1.1 skrll 3750 1.1 skrll (dst-absolute-indirect 24 QI) 3751 1.1 skrll (dst-absolute-indirect 32 QI) 3752 1.1 skrll (dst-absolute-indirect 40 QI) 3753 1.1 skrll (dst-absolute-indirect 48 QI) 3754 1.1 skrll (dst-absolute-indirect 24 HI) 3755 1.1 skrll (dst-absolute-indirect 32 HI) 3756 1.1 skrll (dst-absolute-indirect 40 HI) 3757 1.1 skrll (dst-absolute-indirect 48 HI) 3758 1.1 skrll (dst-absolute-indirect 24 SI) 3759 1.1 skrll (dst-absolute-indirect 32 SI) 3760 1.1 skrll (dst-absolute-indirect 40 SI) 3761 1.1 skrll (dst-absolute-indirect 48 SI) 3762 1.1 skrll 3763 1.1 skrll ;------------------------------------------------------------- 3764 1.1 skrll ; Bit operands 3765 1.1 skrll ;------------------------------------------------------------- 3766 1.1 skrll (define-pmacro (get-register-bit reg bitno) 3767 1.1 skrll (and (srl reg bitno) 1) 3768 1.1 skrll ) 3769 1.1 skrll 3770 1.1 skrll (define-pmacro (set-register-bit reg bitno value) 3771 1.1 skrll (set reg (or (and reg (inv (sll 1 bitno))) 3772 1.1 skrll (sll (and QI value 1) bitno))) 3773 1.1 skrll ) 3774 1.1 skrll 3775 1.1 skrll (define-pmacro (get-memory-bit mach base bitno) 3776 1.1 skrll (and (srl (mem-mach mach QI (add base (div bitno 8))) 3777 1.1 skrll (mod bitno 8)) 3778 1.1 skrll 1) 3779 1.1 skrll ) 3780 1.1 skrll 3781 1.1 skrll (define-pmacro (set-memory-bit mach base bitno value) 3782 1.1 skrll (sequence ((USI addr)) 3783 1.1 skrll (set addr (add base (div bitno 8))) 3784 1.1 skrll (set (mem-mach mach QI addr) 3785 1.1 skrll (or (and (mem-mach mach QI addr) 3786 1.1 skrll (inv (sll 1 (mod bitno 8)))) 3787 1.1 skrll (sll (and QI value 1) (mod bitno 8))))) 3788 1.1 skrll ) 3789 1.1 skrll 3790 1.1 skrll ;------------------------------------------------------------- 3791 1.1 skrll ; Rn direct 3792 1.1 skrll ;------------------------------------------------------------- 3793 1.1 skrll 3794 1.1 skrll (define-derived-operand 3795 1.1 skrll (name bit16-Rn-direct) 3796 1.1 skrll (comment "m16c Rn direct bit") 3797 1.1 skrll (attrs (machine 16)) 3798 1.1 skrll (mode BI) 3799 1.1 skrll (args (Bitno16R Bit16Rn)) 3800 1.1 skrll (syntax "$Bitno16R,$Bit16Rn") 3801 1.1 skrll (base-ifield f-12-4) 3802 1.1 skrll (encoding (+ (f-12-2 0) Bit16Rn Bitno16R)) 3803 1.1 skrll (ifield-assertion (eq f-12-2 0)) 3804 1.1 skrll (getter (get-register-bit Bit16Rn Bitno16R)) 3805 1.1 skrll (setter (set-register-bit Bit16Rn Bitno16R newval)) 3806 1.1 skrll ) 3807 1.1 skrll 3808 1.1 skrll (define-pmacro (bit32-Rn-direct-operand group base) 3809 1.1 skrll (begin 3810 1.1 skrll (define-derived-operand 3811 1.1 skrll (name (.sym bit32-Rn-direct- group)) 3812 1.1 skrll (comment "m32c Rn direct bit") 3813 1.1 skrll (attrs (machine 32)) 3814 1.1 skrll (mode BI) 3815 1.1 skrll (args ((.sym Bitno32 group) (.sym Bit32Rn group))) 3816 1.1 skrll (syntax (.str "$Bitno32" group ",$Bit32Rn" group)) 3817 1.1 skrll (base-ifield (.sym f- base -6)) 3818 1.1 skrll (encoding (+ ((.sym f- base -3) 4) (.sym Bit32Rn group) (.sym Bitno32 group))) 3819 1.1 skrll (ifield-assertion (eq (.sym f- base -3) 4)) 3820 1.1 skrll (getter (get-register-bit (.sym Bit32Rn group) (.sym Bitno32 group))) 3821 1.1 skrll (setter (set-register-bit (.sym Bit32Rn group) (.sym Bitno32 group) newval)) 3822 1.1 skrll ) 3823 1.1 skrll ) 3824 1.1 skrll ) 3825 1.1 skrll 3826 1.1 skrll (bit32-Rn-direct-operand Unprefixed 4) 3827 1.1 skrll (bit32-Rn-direct-operand Prefixed 12) 3828 1.1 skrll 3829 1.1 skrll ;------------------------------------------------------------- 3830 1.1 skrll ; An direct 3831 1.1 skrll ;------------------------------------------------------------- 3832 1.1 skrll 3833 1.1 skrll (define-derived-operand 3834 1.1 skrll (name bit16-An-direct) 3835 1.1 skrll (comment "m16c An direct bit") 3836 1.1 skrll (attrs (machine 16)) 3837 1.1 skrll (mode BI) 3838 1.1 skrll (args (Bitno16R Bit16An)) 3839 1.1 skrll (syntax "$Bitno16R,$Bit16An") 3840 1.1 skrll (base-ifield f-12-4) 3841 1.1 skrll (encoding (+ (f-12-2 1) (f-14-1 0) Bit16An Bitno16R)) 3842 1.1 skrll (ifield-assertion (andif (eq f-12-2 1) (eq f-14-1 0))) 3843 1.1 skrll (getter (get-register-bit Bit16An Bitno16R)) 3844 1.1 skrll (setter (set-register-bit Bit16An Bitno16R newval)) 3845 1.1 skrll ) 3846 1.1 skrll 3847 1.1 skrll (define-pmacro (bit32-An-direct-operand group base1 base2) 3848 1.1 skrll (begin 3849 1.1 skrll (define-derived-operand 3850 1.1 skrll (name (.sym bit32-An-direct- group)) 3851 1.1 skrll (comment "m32c An direct bit") 3852 1.1 skrll (attrs (machine 32)) 3853 1.1 skrll (mode BI) 3854 1.1 skrll (args ((.sym Bitno32 group) (.sym Bit32An group))) 3855 1.1 skrll (syntax (.str "$Bitno32" group ",$Bit32An" group)) 3856 1.1 skrll (base-ifield (.sym f- base1 -6)) 3857 1.1 skrll (encoding (+ ((.sym f- base1 -3) 0) ((.sym f- base2 -1) 1) (.sym Bit32An group) (.sym Bitno32 group))) 3858 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 0) (eq (.sym f- base2 -1) 1))) 3859 1.1 skrll (getter (get-register-bit (.sym Bit32An group) (.sym Bitno32 group))) 3860 1.1 skrll (setter (set-register-bit (.sym Bit32An group) (.sym Bitno32 group) newval)) 3861 1.1 skrll ) 3862 1.1 skrll ) 3863 1.1 skrll ) 3864 1.1 skrll 3865 1.1 skrll (bit32-An-direct-operand Unprefixed 4 8) 3866 1.1 skrll (bit32-An-direct-operand Prefixed 12 16) 3867 1.1 skrll 3868 1.1 skrll ;------------------------------------------------------------- 3869 1.1 skrll ; An indirect 3870 1.1 skrll ;------------------------------------------------------------- 3871 1.1 skrll 3872 1.1 skrll (define-derived-operand 3873 1.1 skrll (name bit16-An-indirect) 3874 1.1 skrll (comment "m16c An indirect bit") 3875 1.1 skrll (attrs (machine 16)) 3876 1.1 skrll (mode BI) 3877 1.1 skrll (args (Bit16An)) 3878 1.1 skrll (syntax "[$Bit16An]") 3879 1.1 skrll (base-ifield f-12-4) 3880 1.1 skrll (encoding (+ (f-12-2 1) (f-14-1 1) Bit16An)) 3881 1.1 skrll (ifield-assertion (andif (eq f-12-2 1) (eq f-14-1 1))) 3882 1.1 skrll (getter (get-memory-bit 16 0 Bit16An)) 3883 1.1 skrll (setter (set-memory-bit 16 0 Bit16An newval)) 3884 1.1 skrll ) 3885 1.1 skrll 3886 1.1 skrll (define-pmacro (bit32-An-indirect-operand group base1 base2) 3887 1.1 skrll (begin 3888 1.1 skrll (define-derived-operand 3889 1.1 skrll (name (.sym bit32-An-indirect- group)) 3890 1.1 skrll (comment "m32c An indirect destination ") 3891 1.1 skrll (attrs (machine 32)) 3892 1.1 skrll (mode BI) 3893 1.1 skrll (args ((.sym Bitno32 group) (.sym Bit32An group))) 3894 1.1 skrll (syntax (.str "$Bitno32" group ",[$Bit32An" group "]")) 3895 1.1 skrll (base-ifield (.sym f- base1 -6)) 3896 1.1 skrll (encoding (+ ((.sym f- base1 -3) 0) ((.sym f- base2 -1) 0) (.sym Bit32An group) (.sym Bitno32 group))) 3897 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 0) (eq (.sym f- base2 -1) 0))) 3898 1.1 skrll (getter (get-memory-bit 32 (.sym Bit32An group) (.sym Bitno32 group))) 3899 1.1 skrll (setter (set-memory-bit 32 (.sym Bit32An group) (.sym Bitno32 group) newval)) 3900 1.1 skrll ) 3901 1.1 skrll ) 3902 1.1 skrll ) 3903 1.1 skrll 3904 1.1 skrll (bit32-An-indirect-operand Unprefixed 4 8) 3905 1.1 skrll (bit32-An-indirect-operand Prefixed 12 16) 3906 1.1 skrll 3907 1.1 skrll ;------------------------------------------------------------- 3908 1.1 skrll ; dsp:d[r] relative 3909 1.1 skrll ;------------------------------------------------------------- 3910 1.1 skrll 3911 1.1 skrll (define-pmacro (bit16-relative-operand offset) 3912 1.1 skrll (begin 3913 1.1 skrll (define-derived-operand 3914 1.1 skrll (name (.sym bit16- offset -8-SB-relative)) 3915 1.1 skrll (comment (.str "m16c dsp:8[sb] relative bit " xmode)) 3916 1.1 skrll (attrs (machine 16)) 3917 1.1 skrll (mode BI) 3918 1.1 skrll (args ((.sym BitBase16- offset -u8))) 3919 1.1 skrll (syntax (.str "${BitBase16-" offset "-u8}[sb]")) 3920 1.1 skrll (base-ifield f-12-4) 3921 1.1 skrll (encoding (+ (f-12-4 #xA) (.sym BitBase16- offset -u8))) 3922 1.1 skrll (ifield-assertion (eq f-12-4 #xA)) 3923 1.1 skrll (getter (get-memory-bit 16 (reg h-sb) (.sym BitBase16- offset -u8))) 3924 1.1 skrll (setter (set-memory-bit 16 (reg h-sb) (.sym BitBase16- offset -u8) newval)) 3925 1.1 skrll ) 3926 1.1 skrll (define-derived-operand 3927 1.1 skrll (name (.sym bit16- offset -16-SB-relative)) 3928 1.1 skrll (comment (.str "m16c dsp:16[sb] relative bit " xmode)) 3929 1.1 skrll (attrs (machine 16)) 3930 1.1 skrll (mode BI) 3931 1.1 skrll (args ((.sym BitBase16- offset -u16))) 3932 1.1 skrll (syntax (.str "${BitBase16-" offset "-u16}[sb]")) 3933 1.1 skrll (base-ifield f-12-4) 3934 1.1 skrll (encoding (+ (f-12-4 #xE) (.sym BitBase16- offset -u16))) 3935 1.1 skrll (ifield-assertion (eq f-12-4 #xE)) 3936 1.1 skrll (getter (get-memory-bit 16 (reg h-sb) (.sym BitBase16- offset -u16))) 3937 1.1 skrll (setter (set-memory-bit 16 (reg h-sb) (.sym BitBase16- offset -u16) newval)) 3938 1.1 skrll ) 3939 1.1 skrll (define-derived-operand 3940 1.1 skrll (name (.sym bit16- offset -8-FB-relative)) 3941 1.1 skrll (comment (.str "m16c dsp:8[fb] relative bit " xmode)) 3942 1.1 skrll (attrs (machine 16)) 3943 1.1 skrll (mode BI) 3944 1.1 skrll (args ((.sym BitBase16- offset -s8))) 3945 1.1 skrll (syntax (.str "${BitBase16-" offset "-s8}[fb]")) 3946 1.1 skrll (base-ifield f-12-4) 3947 1.1 skrll (encoding (+ (f-12-4 #xB) (.sym BitBase16- offset -s8))) 3948 1.1 skrll (ifield-assertion (eq f-12-4 #xB)) 3949 1.1 skrll (getter (get-memory-bit 16 (reg h-fb) (.sym BitBase16- offset -s8))) 3950 1.1 skrll (setter (set-memory-bit 16 (reg h-fb) (.sym BitBase16- offset -s8) newval)) 3951 1.1 skrll ) 3952 1.1 skrll (define-derived-operand 3953 1.1 skrll (name (.sym bit16- offset -8-An-relative)) 3954 1.1 skrll (comment (.str "m16c dsp:8[An] relative bit " xmode)) 3955 1.1 skrll (attrs (machine 16)) 3956 1.1 skrll (mode BI) 3957 1.1 skrll (args (Bit16An (.sym Dsp- offset -u8))) 3958 1.1 skrll (syntax (.str "${Dsp-" offset "-u8}[$Bit16An]")) 3959 1.1 skrll (base-ifield f-12-4) 3960 1.1 skrll (encoding (+ (f-12-2 2) (f-14-1 0) (.sym Dsp- offset -u8) Bit16An)) 3961 1.1 skrll (ifield-assertion (andif (eq f-12-2 2) (eq f-14-1 0))) 3962 1.1 skrll (getter (get-memory-bit 16 (.sym Dsp- offset -u8) Bit16An)) 3963 1.1 skrll (setter (set-memory-bit 16 (.sym Dsp- offset -u8) Bit16An newval)) 3964 1.1 skrll ) 3965 1.1 skrll (define-derived-operand 3966 1.1 skrll (name (.sym bit16- offset -16-An-relative)) 3967 1.1 skrll (comment (.str "m16c dsp:16[An] relative bit " xmode)) 3968 1.1 skrll (attrs (machine 16)) 3969 1.1 skrll (mode BI) 3970 1.1 skrll (args (Bit16An (.sym Dsp- offset -u16))) 3971 1.1 skrll (syntax (.str "${Dsp-" offset "-u16}[$Bit16An]")) 3972 1.1 skrll (base-ifield f-12-4) 3973 1.1 skrll (encoding (+ (f-12-2 3) (f-14-1 0) (.sym Dsp- offset -u16) Bit16An)) 3974 1.1 skrll (ifield-assertion (andif (eq f-12-2 3) (eq f-14-1 0))) 3975 1.1 skrll (getter (get-memory-bit 16 (.sym Dsp- offset -u16) Bit16An)) 3976 1.1 skrll (setter (set-memory-bit 16 (.sym Dsp- offset -u16) Bit16An newval)) 3977 1.1 skrll ) 3978 1.1 skrll ) 3979 1.1 skrll ) 3980 1.1 skrll 3981 1.1 skrll (bit16-relative-operand 16) 3982 1.1 skrll 3983 1.1 skrll (define-pmacro (bit32-relative-operand offset group base1 base2) 3984 1.1 skrll (begin 3985 1.1 skrll (define-derived-operand 3986 1.1 skrll (name (.sym bit32- offset -11-SB-relative- group)) 3987 1.1 skrll (comment "m32c bit,base:11[sb] relative bit") 3988 1.1 skrll (attrs (machine 32)) 3989 1.1 skrll (mode BI) 3990 1.1 skrll (args ((.sym BitBase32- offset -u11- group))) 3991 1.1 skrll (syntax (.str "${BitBase32-" offset "-u11-" group "}[sb]")) 3992 1.1 skrll (base-ifield (.sym f- base1 -12)) 3993 1.1 skrll (encoding (+ ((.sym f- base1 -3) 1) ((.sym f- base2 -2) 2) (.sym BitBase32- offset -u11- group))) 3994 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 1) (eq (.sym f- base2 -2) 2))) 3995 1.1 skrll (getter (get-memory-bit 32 (reg h-sb) (.sym BitBase32- offset -u11- group))) 3996 1.1 skrll (setter (set-memory-bit 32 (reg h-sb) (.sym BitBase32- offset -u11- group) newval)) 3997 1.1 skrll ) 3998 1.1 skrll (define-derived-operand 3999 1.1 skrll (name (.sym bit32- offset -19-SB-relative- group)) 4000 1.1 skrll (comment "m32c bit,base:19[sb] relative bit") 4001 1.1 skrll (attrs (machine 32)) 4002 1.1 skrll (mode BI) 4003 1.1 skrll (args ((.sym BitBase32- offset -u19- group))) 4004 1.1 skrll (syntax (.str "${BitBase32-" offset "-u19-" group "}[sb]")) 4005 1.1 skrll (base-ifield (.sym f- base1 -12)) 4006 1.1 skrll (encoding (+ ((.sym f- base1 -3) 2) ((.sym f- base2 -2) 2) (.sym BitBase32- offset -u19- group))) 4007 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 2) (eq (.sym f- base2 -2) 2))) 4008 1.1 skrll (getter (get-memory-bit 32 (reg h-sb) (.sym BitBase32- offset -u19- group))) 4009 1.1 skrll (setter (set-memory-bit 32 (reg h-sb) (.sym BitBase32- offset -u19- group) newval)) 4010 1.1 skrll ) 4011 1.1 skrll (define-derived-operand 4012 1.1 skrll (name (.sym bit32- offset -11-FB-relative- group)) 4013 1.1 skrll (comment "m32c bit,base:11[fb] relative bit") 4014 1.1 skrll (attrs (machine 32)) 4015 1.1 skrll (mode BI) 4016 1.1 skrll (args ((.sym BitBase32- offset -s11- group))) 4017 1.1 skrll (syntax (.str "${BitBase32-" offset "-s11-" group "}[fb]")) 4018 1.1 skrll (base-ifield (.sym f- base1 -12)) 4019 1.1 skrll (encoding (+ ((.sym f- base1 -3) 1) ((.sym f- base2 -2) 3) (.sym BitBase32- offset -s11- group))) 4020 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 1) (eq (.sym f- base2 -2) 3))) 4021 1.1 skrll (getter (get-memory-bit 32 (reg h-fb) (.sym BitBase32- offset -s11- group))) 4022 1.1 skrll (setter (set-memory-bit 32 (reg h-fb) (.sym BitBase32- offset -s11- group) newval)) 4023 1.1 skrll ) 4024 1.1 skrll (define-derived-operand 4025 1.1 skrll (name (.sym bit32- offset -19-FB-relative- group)) 4026 1.1 skrll (comment "m32c bit,base:19[fb] relative bit") 4027 1.1 skrll (attrs (machine 32)) 4028 1.1 skrll (mode BI) 4029 1.1 skrll (args ((.sym BitBase32- offset -s19- group))) 4030 1.1 skrll (syntax (.str "${BitBase32-" offset "-s19-" group "}[fb]")) 4031 1.1 skrll (base-ifield (.sym f- base1 -12)) 4032 1.1 skrll (encoding (+ ((.sym f- base1 -3) 2) ((.sym f- base2 -2) 3) (.sym BitBase32- offset -s19- group))) 4033 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 2) (eq (.sym f- base2 -2) 3))) 4034 1.1 skrll (getter (get-memory-bit 32 (reg h-fb) (.sym BitBase32- offset -s19- group))) 4035 1.1 skrll (setter (set-memory-bit 32 (reg h-fb) (.sym BitBase32- offset -s19- group) newval)) 4036 1.1 skrll ) 4037 1.1 skrll (define-derived-operand 4038 1.1 skrll (name (.sym bit32- offset -11-An-relative- group)) 4039 1.1 skrll (comment "m32c bit,base:11[An] relative bit") 4040 1.1 skrll (attrs (machine 32)) 4041 1.1 skrll (mode BI) 4042 1.1 skrll (args ((.sym BitBase32- offset -u11- group) (.sym Bit32An group))) 4043 1.1 skrll (syntax (.str "${BitBase32-" offset "-u11-" group "}[$Bit32An" group "]")) 4044 1.1 skrll (base-ifield (.sym f- base1 -12)) 4045 1.1 skrll (encoding (+ ((.sym f- base1 -3) 1) ((.sym f- base2 -1) 0) (.sym BitBase32- offset -u11- group) (.sym Bit32An group))) 4046 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 1) (eq (.sym f- base2 -1) 0))) 4047 1.1 skrll (getter (get-memory-bit 32 (.sym Bit32An group) (.sym BitBase32- offset -u11- group))) 4048 1.1 skrll (setter (set-memory-bit 32 (.sym Bit32An group) (.sym BitBase32- offset -u11- group) newval)) 4049 1.1 skrll ) 4050 1.1 skrll (define-derived-operand 4051 1.1 skrll (name (.sym bit32- offset -19-An-relative- group)) 4052 1.1 skrll (comment "m32c bit,base:19[An] relative bit") 4053 1.1 skrll (attrs (machine 32)) 4054 1.1 skrll (mode BI) 4055 1.1 skrll (args ((.sym BitBase32- offset -u19- group) (.sym Bit32An group))) 4056 1.1 skrll (syntax (.str "${BitBase32-" offset "-u19-" group "}[$Bit32An" group "]")) 4057 1.1 skrll (base-ifield (.sym f- base1 -12)) 4058 1.1 skrll (encoding (+ ((.sym f- base1 -3) 2) ((.sym f- base2 -1) 0) (.sym BitBase32- offset -u19- group) (.sym Bit32An group))) 4059 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 2) (eq (.sym f- base2 -1) 0))) 4060 1.1 skrll (getter (get-memory-bit 32 (.sym Bit32An group) (.sym BitBase32- offset -u19- group))) 4061 1.1 skrll (setter (set-memory-bit 32 (.sym Bit32An group) (.sym BitBase32- offset -u19- group) newval)) 4062 1.1 skrll ) 4063 1.1 skrll (define-derived-operand 4064 1.1 skrll (name (.sym bit32- offset -27-An-relative- group)) 4065 1.1 skrll (comment "m32c bit,base:27[An] relative bit") 4066 1.1 skrll (attrs (machine 32)) 4067 1.1 skrll (mode BI) 4068 1.1 skrll (args ((.sym BitBase32- offset -u27- group) (.sym Bit32An group))) 4069 1.1 skrll (syntax (.str "${BitBase32-" offset "-u27-" group "}[$Bit32An" group "]")) 4070 1.1 skrll (base-ifield (.sym f- base1 -12)) 4071 1.1 skrll (encoding (+ ((.sym f- base1 -3) 3) ((.sym f- base2 -1) 0) (.sym BitBase32- offset -u27- group) (.sym Bit32An group))) 4072 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 3) (eq (.sym f- base2 -1) 0))) 4073 1.1 skrll (getter (get-memory-bit 32 (.sym Bit32An group) (.sym BitBase32- offset -u27- group))) 4074 1.1 skrll (setter (set-memory-bit 32 (.sym Bit32An group) (.sym BitBase32- offset -u27- group) newval)) 4075 1.1 skrll ) 4076 1.1 skrll ) 4077 1.1 skrll ) 4078 1.1 skrll 4079 1.1 skrll (bit32-relative-operand 16 Unprefixed 4 8) 4080 1.1 skrll (bit32-relative-operand 24 Prefixed 12 16) 4081 1.1 skrll 4082 1.1 skrll (define-derived-operand 4083 1.1 skrll (name bit16-11-SB-relative-S) 4084 1.1 skrll (comment "m16c bit,base:11[sb] relative bit") 4085 1.1 skrll (attrs (machine 16)) 4086 1.1 skrll (mode BI) 4087 1.1 skrll (args (BitBase16-8-u11-S)) 4088 1.1 skrll (syntax "${BitBase16-8-u11-S}[sb]") 4089 1.1 skrll (base-ifield (.sym f-5-3)) 4090 1.1 skrll (encoding (+ BitBase16-8-u11-S)) 4091 1.1 skrll ; (ifield-assertion (#t)) 4092 1.1 skrll (getter (get-memory-bit 16 (reg h-sb) BitBase16-8-u11-S)) 4093 1.1 skrll (setter (set-memory-bit 16 (reg h-sb) BitBase16-8-u11-S newval)) 4094 1.1 skrll ) 4095 1.1 skrll 4096 1.1 skrll (define-derived-operand 4097 1.1 skrll (name Rn16-push-S-derived) 4098 1.1 skrll (comment "m16c r0[lh] for push,pop short version") 4099 1.1 skrll (attrs (machine 16)) 4100 1.1 skrll (mode QI) 4101 1.1 skrll (args (Rn16-push-S)) 4102 1.1 skrll (syntax "${Rn16-push-S}") 4103 1.1 skrll (base-ifield (.sym f-4-1)) 4104 1.1 skrll (encoding (+ Rn16-push-S)) 4105 1.1 skrll ; (ifield-assertion (#t)) 4106 1.1 skrll (getter (trunc QI Rn16-push-S)) 4107 1.1 skrll (setter (set Rn16-push-S newval)) 4108 1.1 skrll ) 4109 1.1 skrll 4110 1.1 skrll (define-derived-operand 4111 1.1 skrll (name An16-push-S-derived) 4112 1.1 skrll (comment "m16c r0[lh] for push,pop short version") 4113 1.1 skrll (attrs (machine 16)) 4114 1.1 skrll (mode HI) 4115 1.1 skrll (args (An16-push-S)) 4116 1.1 skrll (syntax "${An16-push-S}") 4117 1.1 skrll (base-ifield (.sym f-4-1)) 4118 1.1 skrll (encoding (+ An16-push-S)) 4119 1.1 skrll ; (ifield-assertion (#t)) 4120 1.1 skrll (getter (trunc QI An16-push-S)) 4121 1.1 skrll (setter (set An16-push-S newval)) 4122 1.1 skrll ) 4123 1.1 skrll 4124 1.1 skrll ;------------------------------------------------------------- 4125 1.1 skrll ; Absolute address 4126 1.1 skrll ;------------------------------------------------------------- 4127 1.1 skrll 4128 1.1 skrll (define-pmacro (bit16-absolute offset) 4129 1.1 skrll (begin 4130 1.1 skrll (define-derived-operand 4131 1.1 skrll (name (.sym bit16- offset -16-absolute)) 4132 1.1 skrll (comment "m16c absolute address") 4133 1.1 skrll (attrs (machine 16)) 4134 1.1 skrll (mode BI) 4135 1.1 skrll (args ((.sym BitBase16- offset -u16))) 4136 1.1 skrll (syntax (.str "${BitBase16-" offset "-u16}")) 4137 1.1 skrll (base-ifield f-12-4) 4138 1.1 skrll (encoding (+ (f-12-4 #xF) (.sym BitBase16- offset -u16))) 4139 1.1 skrll (ifield-assertion (eq f-12-4 #xF)) 4140 1.1 skrll (getter (get-memory-bit 16 0 (.sym BitBase16- offset -u16))) 4141 1.1 skrll (setter (set-memory-bit 16 0 (.sym BitBase16- offset -u16) newval)) 4142 1.1 skrll ) 4143 1.1 skrll ) 4144 1.1 skrll ) 4145 1.1 skrll 4146 1.1 skrll (bit16-absolute 16) 4147 1.1 skrll 4148 1.1 skrll (define-pmacro (bit32-absolute offset group base1 base2) 4149 1.1 skrll (begin 4150 1.1 skrll (define-derived-operand 4151 1.1 skrll (name (.sym bit32- offset -19-absolute- group)) 4152 1.1 skrll (comment "m32c absolute address bit") 4153 1.1 skrll (attrs (machine 32)) 4154 1.1 skrll (mode BI) 4155 1.1 skrll (args ((.sym BitBase32- offset -u19- group))) 4156 1.1 skrll (syntax (.str "${BitBase32-" offset "-u19-" group "}")) 4157 1.1 skrll (base-ifield (.sym f- base1 -12)) 4158 1.1 skrll (encoding (+ ((.sym f- base1 -3) 3) ((.sym f- base2 -2) 3) (.sym BitBase32- offset -u19- group))) 4159 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 3) (eq (.sym f- base2 -2) 3))) 4160 1.1 skrll (getter (get-memory-bit 32 0 (.sym BitBase32- offset -u19- group))) 4161 1.1 skrll (setter (set-memory-bit 32 0 (.sym BitBase32- offset -u19- group) newval)) 4162 1.1 skrll ) 4163 1.1 skrll (define-derived-operand 4164 1.1 skrll (name (.sym bit32- offset -27-absolute- group)) 4165 1.1 skrll (comment "m32c absolute address bit") 4166 1.1 skrll (attrs (machine 32)) 4167 1.1 skrll (mode BI) 4168 1.1 skrll (args ((.sym BitBase32- offset -u27- group))) 4169 1.1 skrll (syntax (.str "${BitBase32-" offset "-u27-" group "}")) 4170 1.1 skrll (base-ifield (.sym f- base1 -12)) 4171 1.1 skrll (encoding (+ ((.sym f- base1 -3) 3) ((.sym f- base2 -2) 2) (.sym BitBase32- offset -u27- group))) 4172 1.1 skrll (ifield-assertion (andif (eq (.sym f- base1 -3) 3) (eq (.sym f- base2 -2) 2))) 4173 1.1 skrll (getter (get-memory-bit 32 0 (.sym BitBase32- offset -u27- group))) 4174 1.1 skrll (setter (set-memory-bit 32 0 (.sym BitBase32- offset -u27- group) newval)) 4175 1.1 skrll ) 4176 1.1 skrll ) 4177 1.1 skrll ) 4178 1.1 skrll 4179 1.1 skrll (bit32-absolute 16 Unprefixed 4 8) 4180 1.1 skrll (bit32-absolute 24 Prefixed 12 16) 4181 1.1 skrll 4182 1.1 skrll ;------------------------------------------------------------- 4183 1.1 skrll ; Destination operands for short fomat insns 4184 1.1 skrll ;------------------------------------------------------------- 4185 1.1 skrll 4186 1.1 skrll (define-derived-operand 4187 1.1 skrll (name dst16-3-S-R0l-direct-QI) 4188 1.1 skrll (comment "m16c R0l direct QI") 4189 1.1 skrll (attrs (machine 16)) 4190 1.1 skrll (mode QI) 4191 1.1 skrll (args (R0l)) 4192 1.1 skrll (syntax "r0l") 4193 1.1 skrll (base-ifield f-5-3) 4194 1.1 skrll (encoding (+ (f-5-3 4))) 4195 1.1 skrll (ifield-assertion (eq f-5-3 4)) 4196 1.1 skrll (getter (trunc QI R0l)) 4197 1.1 skrll (setter (set R0l newval)) 4198 1.1 skrll ) 4199 1.1 skrll (define-derived-operand 4200 1.1 skrll (name dst16-3-S-R0h-direct-QI) 4201 1.1 skrll (comment "m16c R0h direct QI") 4202 1.1 skrll (attrs (machine 16)) 4203 1.1 skrll (mode QI) 4204 1.1 skrll (args (R0h)) 4205 1.1 skrll (syntax "r0h") 4206 1.1 skrll (base-ifield f-5-3) 4207 1.1 skrll (encoding (+ (f-5-3 3))) 4208 1.1 skrll (ifield-assertion (eq f-5-3 3)) 4209 1.1 skrll (getter (trunc QI R0h)) 4210 1.1 skrll (setter (set R0h newval)) 4211 1.1 skrll ) 4212 1.1 skrll (define-derived-operand 4213 1.1 skrll (name dst16-3-S-8-8-SB-relative-QI) 4214 1.1 skrll (comment "m16c SB relative QI") 4215 1.1 skrll (attrs (machine 16)) 4216 1.1 skrll (mode QI) 4217 1.1 skrll (args (Dsp-8-u8)) 4218 1.1 skrll (syntax "${Dsp-8-u8}[sb]") 4219 1.1 skrll (base-ifield f-5-3) 4220 1.1 skrll (encoding (+ (f-5-3 5) Dsp-8-u8)) 4221 1.1 skrll (ifield-assertion (eq f-5-3 5)) 4222 1.1 skrll (getter (mem16 QI (add Dsp-8-u8 (reg h-sb)))) 4223 1.1 skrll (setter (set (mem16 QI (add Dsp-8-u8 (reg h-sb))) newval)) 4224 1.1 skrll ) 4225 1.1 skrll (define-derived-operand 4226 1.1 skrll (name dst16-3-S-8-8-FB-relative-QI) 4227 1.1 skrll (comment "m16c FB relative QI") 4228 1.1 skrll (attrs (machine 16)) 4229 1.1 skrll (mode QI) 4230 1.1 skrll (args (Dsp-8-s8)) 4231 1.1 skrll (syntax "${Dsp-8-s8}[fb]") 4232 1.1 skrll (base-ifield f-5-3) 4233 1.1 skrll (encoding (+ (f-5-3 6) Dsp-8-s8)) 4234 1.1 skrll (ifield-assertion (eq f-5-3 6)) 4235 1.1 skrll (getter (mem16 QI (add Dsp-8-s8 (reg h-fb)))) 4236 1.1 skrll (setter (set (mem16 QI (add Dsp-8-s8 (reg h-fb))) newval)) 4237 1.1 skrll ) 4238 1.1 skrll (define-derived-operand 4239 1.1 skrll (name dst16-3-S-8-16-absolute-QI) 4240 1.1 skrll (comment "m16c absolute address QI") 4241 1.1 skrll (attrs (machine 16)) 4242 1.1 skrll (mode QI) 4243 1.1 skrll (args (Dsp-8-u16)) 4244 1.1 skrll (syntax "${Dsp-8-u16}") 4245 1.1 skrll (base-ifield f-5-3) 4246 1.1 skrll (encoding (+ (f-5-3 7) Dsp-8-u16)) 4247 1.1 skrll (ifield-assertion (eq f-5-3 7)) 4248 1.1 skrll (getter (mem16 QI Dsp-8-u16)) 4249 1.1 skrll (setter (set (mem16 QI Dsp-8-u16) newval)) 4250 1.1 skrll ) 4251 1.1 skrll (define-derived-operand 4252 1.1 skrll (name dst16-3-S-16-8-SB-relative-QI) 4253 1.1 skrll (comment "m16c SB relative QI") 4254 1.1 skrll (attrs (machine 16)) 4255 1.1 skrll (mode QI) 4256 1.1 skrll (args (Dsp-16-u8)) 4257 1.1 skrll (syntax "${Dsp-16-u8}[sb]") 4258 1.1 skrll (base-ifield f-5-3) 4259 1.1 skrll (encoding (+ (f-5-3 5) Dsp-16-u8)) 4260 1.1 skrll (ifield-assertion (eq f-5-3 5)) 4261 1.1 skrll (getter (mem16 QI (add Dsp-16-u8 (reg h-sb)))) 4262 1.1 skrll (setter (set (mem16 QI (add Dsp-16-u8 (reg h-sb))) newval)) 4263 1.1 skrll ) 4264 1.1 skrll (define-derived-operand 4265 1.1 skrll (name dst16-3-S-16-8-FB-relative-QI) 4266 1.1 skrll (comment "m16c FB relative QI") 4267 1.1 skrll (attrs (machine 16)) 4268 1.1 skrll (mode QI) 4269 1.1 skrll (args (Dsp-16-s8)) 4270 1.1 skrll (syntax "${Dsp-16-s8}[fb]") 4271 1.1 skrll (base-ifield f-5-3) 4272 1.1 skrll (encoding (+ (f-5-3 6) Dsp-16-s8)) 4273 1.1 skrll (ifield-assertion (eq f-5-3 6)) 4274 1.1 skrll (getter (mem16 QI (add Dsp-16-s8 (reg h-fb)))) 4275 1.1 skrll (setter (set (mem16 QI (add Dsp-16-s8 (reg h-fb))) newval)) 4276 1.1 skrll ) 4277 1.1 skrll (define-derived-operand 4278 1.1 skrll (name dst16-3-S-16-16-absolute-QI) 4279 1.1 skrll (comment "m16c absolute address QI") 4280 1.1 skrll (attrs (machine 16)) 4281 1.1 skrll (mode QI) 4282 1.1 skrll (args (Dsp-16-u16)) 4283 1.1 skrll (syntax "${Dsp-16-u16}") 4284 1.1 skrll (base-ifield f-5-3) 4285 1.1 skrll (encoding (+ (f-5-3 7) Dsp-16-u16)) 4286 1.1 skrll (ifield-assertion (eq f-5-3 7)) 4287 1.1 skrll (getter (mem16 QI Dsp-16-u16)) 4288 1.1 skrll (setter (set (mem16 QI Dsp-16-u16) newval)) 4289 1.1 skrll ) 4290 1.1 skrll (define-derived-operand 4291 1.1 skrll (name srcdst16-r0l-r0h-S-derived) 4292 1.1 skrll (comment "m16c r0l/r0h operand for short format insns") 4293 1.1 skrll (attrs (machine 16)) 4294 1.1 skrll (mode SI) 4295 1.1 skrll (args (SrcDst16-r0l-r0h-S-normal)) 4296 1.1 skrll (syntax "${SrcDst16-r0l-r0h-S-normal}") 4297 1.1 skrll (base-ifield f-6-3) 4298 1.1 skrll (encoding (+ (f-6-2 0) SrcDst16-r0l-r0h-S-normal)) 4299 1.1 skrll (ifield-assertion (eq f-6-2 0)) 4300 1.1 skrll (getter (trunc SI SrcDst16-r0l-r0h-S-normal)) 4301 1.1 skrll (setter ()) ; no setter 4302 1.1 skrll ) 4303 1.1 skrll (define-derived-operand 4304 1.1 skrll (name dst32-2-S-R0l-direct-QI) 4305 1.1 skrll (comment "m32c R0l direct QI") 4306 1.1 skrll (attrs (machine 32)) 4307 1.1 skrll (mode QI) 4308 1.1 skrll (args (R0l)) 4309 1.1 skrll (syntax "r0l") 4310 1.1 skrll (base-ifield f-2-2) 4311 1.1 skrll (encoding (+ (f-2-2 0))) 4312 1.1 skrll (ifield-assertion (eq f-2-2 0)) 4313 1.1 skrll (getter (trunc QI R0l)) 4314 1.1 skrll (setter (set R0l newval)) 4315 1.1 skrll ) 4316 1.1 skrll (define-derived-operand 4317 1.1 skrll (name dst32-2-S-R0-direct-HI) 4318 1.1 skrll (comment "m32c R0 direct HI") 4319 1.1 skrll (attrs (machine 32)) 4320 1.1 skrll (mode HI) 4321 1.1 skrll (args (R0)) 4322 1.1 skrll (syntax "r0") 4323 1.1 skrll (base-ifield f-2-2) 4324 1.1 skrll (encoding (+ (f-2-2 0))) 4325 1.1 skrll (ifield-assertion (eq f-2-2 0)) 4326 1.1 skrll (getter (trunc HI R0)) 4327 1.1 skrll (setter (set R0 newval)) 4328 1.1 skrll ) 4329 1.1 skrll (define-derived-operand 4330 1.1 skrll (name dst32-1-S-A0-direct-HI) 4331 1.1 skrll (comment "m32c A0 direct HI") 4332 1.1 skrll (attrs (machine 32)) 4333 1.1 skrll (mode HI) 4334 1.1 skrll (args (A0)) 4335 1.1 skrll (syntax "a0") 4336 1.1 skrll (base-ifield f-7-1) 4337 1.1 skrll (encoding (+ (f-7-1 0))) 4338 1.1 skrll (ifield-assertion (eq f-7-1 0)) 4339 1.1 skrll (getter (trunc HI A0)) 4340 1.1 skrll (setter (set A0 newval)) 4341 1.1 skrll ) 4342 1.1 skrll (define-derived-operand 4343 1.1 skrll (name dst32-1-S-A1-direct-HI) 4344 1.1 skrll (comment "m32c A1 direct HI") 4345 1.1 skrll (attrs (machine 32)) 4346 1.1 skrll (mode HI) 4347 1.1 skrll (args (A1)) 4348 1.1 skrll (syntax "a1") 4349 1.1 skrll (base-ifield f-7-1) 4350 1.1 skrll (encoding (+ (f-7-1 1))) 4351 1.1 skrll (ifield-assertion (eq f-7-1 1)) 4352 1.1 skrll (getter (trunc HI A1)) 4353 1.1 skrll (setter (set A1 newval)) 4354 1.1 skrll ) 4355 1.1 skrll (define-pmacro (dst32-2-S-operands xmode) 4356 1.1 skrll (begin 4357 1.1 skrll (define-derived-operand 4358 1.1 skrll (name (.sym dst32-2-S-8-SB-relative- xmode)) 4359 1.1 skrll (comment "m32c SB relative for short binary insns") 4360 1.1 skrll (attrs (machine 32)) 4361 1.1 skrll (mode xmode) 4362 1.1 skrll (args (Dsp-8-u8)) 4363 1.1 skrll (syntax "${Dsp-8-u8}[sb]") 4364 1.1 skrll (base-ifield f-2-2) 4365 1.1 skrll (encoding (+ (f-2-2 2) Dsp-8-u8)) 4366 1.1 skrll (ifield-assertion (eq f-2-2 2)) 4367 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) sb Dsp-8-u8)) 4368 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval sb Dsp-8-u8)) 4369 1.1 skrll ; (getter (mem32 xmode (add Dsp-8-u8 (reg h-sb)))) 4370 1.1 skrll ; (setter (set (mem32 xmode (add Dsp-8-u8 (reg h-sb))) newval)) 4371 1.1 skrll ) 4372 1.1 skrll (define-derived-operand 4373 1.1 skrll (name (.sym dst32-2-S-8-FB-relative- xmode)) 4374 1.1 skrll (comment "m32c FB relative for short binary insns") 4375 1.1 skrll (attrs (machine 32)) 4376 1.1 skrll (mode xmode) 4377 1.1 skrll (args (Dsp-8-s8)) 4378 1.1 skrll (syntax "${Dsp-8-s8}[fb]") 4379 1.1 skrll (base-ifield f-2-2) 4380 1.1 skrll (encoding (+ (f-2-2 3) Dsp-8-s8)) 4381 1.1 skrll (ifield-assertion (eq f-2-2 3)) 4382 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) fb Dsp-8-s8)) 4383 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval fb Dsp-8-s8)) 4384 1.1 skrll ; (getter (mem32 xmode (add Dsp-8-s8 (reg h-fb)))) 4385 1.1 skrll ; (setter (set (mem32 xmode (add Dsp-8-s8 (reg h-fb))) newval)) 4386 1.1 skrll ) 4387 1.1 skrll (define-derived-operand 4388 1.1 skrll (name (.sym dst32-2-S-16-absolute- xmode)) 4389 1.1 skrll (comment "m32c absolute address for short binary insns") 4390 1.1 skrll (attrs (machine 32)) 4391 1.1 skrll (mode xmode) 4392 1.1 skrll (args (Dsp-8-u16)) 4393 1.1 skrll (syntax "${Dsp-8-u16}") 4394 1.1 skrll (base-ifield f-2-2) 4395 1.1 skrll (encoding (+ (f-2-2 1) Dsp-8-u16)) 4396 1.1 skrll (ifield-assertion (eq f-2-2 1)) 4397 1.1 skrll (getter (c-call xmode (.str "operand_getter_" xmode) (const 0) Dsp-8-u16)) 4398 1.1 skrll (setter (c-call DFLT (.str "operand_setter_" xmode) newval (const 0) Dsp-8-u16)) 4399 1.1 skrll ; (getter (mem32 xmode Dsp-8-u16)) 4400 1.1 skrll ; (setter (set (mem32 xmode Dsp-8-u16) newval)) 4401 1.1 skrll ) 4402 1.1 skrll ; (define-derived-operand 4403 1.1 skrll ; (name (.sym dst32-2-S-8-SB-relative-indirect- xmode)) 4404 1.1 skrll ; (comment "m32c SB relative for short binary insns") 4405 1.1 skrll ; (attrs (machine 32)) 4406 1.1 skrll ; (mode xmode) 4407 1.1 skrll ; (args (Dsp-16-u8)) 4408 1.1 skrll ; (syntax "[${Dsp-16-u8}[sb]]") 4409 1.1 skrll ; (base-ifield f-10-2) 4410 1.1 skrll ; (encoding (+ (f-10-2 2) Dsp-16-u8)) 4411 1.1 skrll ; (ifield-assertion (eq f-10-2 2)) 4412 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add Dsp-16-u8 (reg h-sb))))) 4413 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add Dsp-16-u8 (reg h-sb)))) newval)) 4414 1.1 skrll ; ) 4415 1.1 skrll ; (define-derived-operand 4416 1.1 skrll ; (name (.sym dst32-2-S-8-FB-relative-indirect- xmode)) 4417 1.1 skrll ; (comment "m32c FB relative for short binary insns") 4418 1.1 skrll ; (attrs (machine 32)) 4419 1.1 skrll ; (mode xmode) 4420 1.1 skrll ; (args (Dsp-16-s8)) 4421 1.1 skrll ; (syntax "[${Dsp-16-s8}[fb]]") 4422 1.1 skrll ; (base-ifield f-10-2) 4423 1.1 skrll ; (encoding (+ (f-10-2 3) Dsp-16-s8)) 4424 1.1 skrll ; (ifield-assertion (eq f-10-2 3)) 4425 1.1 skrll ; (getter (mem32 xmode (indirect-addr (add Dsp-16-s8 (reg h-fb))))) 4426 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr (add Dsp-16-s8 (reg h-fb)))) newval)) 4427 1.1 skrll ; ) 4428 1.1 skrll ; (define-derived-operand 4429 1.1 skrll ; (name (.sym dst32-2-S-16-absolute-indirect- xmode)) 4430 1.1 skrll ; (comment "m32c absolute address for short binary insns") 4431 1.1 skrll ; (attrs (machine 32)) 4432 1.1 skrll ; (mode xmode) 4433 1.1 skrll ; (args (Dsp-16-u16)) 4434 1.1 skrll ; (syntax "[${Dsp-16-u16}]") 4435 1.1 skrll ; (base-ifield f-10-2) 4436 1.1 skrll ; (encoding (+ (f-10-2 1) Dsp-16-u16)) 4437 1.1 skrll ; (ifield-assertion (eq f-10-2 1)) 4438 1.1 skrll ; (getter (mem32 xmode (indirect-addr Dsp-16-u16))) 4439 1.1 skrll ; (setter (set (mem32 xmode (indirect-addr Dsp-16-u16)) newval)) 4440 1.1 skrll ; ) 4441 1.1 skrll ) 4442 1.1 skrll ) 4443 1.1 skrll 4444 1.1 skrll (dst32-2-S-operands QI) 4445 1.1 skrll (dst32-2-S-operands HI) 4446 1.1 skrll (dst32-2-S-operands SI) 4447 1.1 skrll 4448 1.1 skrll ;============================================================= 4449 1.1 skrll ; Anyof operands 4450 1.1 skrll ;------------------------------------------------------------- 4451 1.1 skrll ; Source operands with no additional fields 4452 1.1 skrll ;------------------------------------------------------------- 4453 1.1 skrll 4454 1.1 skrll (define-pmacro (src16-basic-operand xmode) 4455 1.1 skrll (begin 4456 1.1 skrll (define-anyof-operand 4457 1.1 skrll (name (.sym src16-basic- xmode)) 4458 1.1 skrll (comment (.str "m16c source operand of size " xmode " with no additional fields")) 4459 1.1 skrll (attrs (machine 16)) 4460 1.1 skrll (mode xmode) 4461 1.1 skrll (choices 4462 1.1 skrll (.sym src16-Rn-direct- xmode) 4463 1.1 skrll (.sym src16-An-direct- xmode) 4464 1.1 skrll (.sym src16-An-indirect- xmode) 4465 1.1 skrll ) 4466 1.1 skrll ) 4467 1.1 skrll ) 4468 1.1 skrll ) 4469 1.1 skrll (src16-basic-operand QI) 4470 1.1 skrll (src16-basic-operand HI) 4471 1.1 skrll 4472 1.1 skrll (define-pmacro (src32-basic-operand xmode) 4473 1.1 skrll (begin 4474 1.1 skrll (define-anyof-operand 4475 1.1 skrll (name (.sym src32-basic-Unprefixed- xmode)) 4476 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with no additional fields")) 4477 1.1 skrll (attrs (machine 32)) 4478 1.1 skrll (mode xmode) 4479 1.1 skrll (choices 4480 1.1 skrll (.sym src32-Rn-direct-Unprefixed- xmode) 4481 1.1 skrll (.sym src32-An-direct-Unprefixed- xmode) 4482 1.1 skrll (.sym src32-An-indirect-Unprefixed- xmode) 4483 1.1 skrll ) 4484 1.1 skrll ) 4485 1.1 skrll (define-anyof-operand 4486 1.1 skrll (name (.sym src32-basic-Prefixed- xmode)) 4487 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with no additional fields")) 4488 1.1 skrll (attrs (machine 32)) 4489 1.1 skrll (mode xmode) 4490 1.1 skrll (choices 4491 1.1 skrll (.sym src32-Rn-direct-Prefixed- xmode) 4492 1.1 skrll (.sym src32-An-direct-Prefixed- xmode) 4493 1.1 skrll (.sym src32-An-indirect-Prefixed- xmode) 4494 1.1 skrll ) 4495 1.1 skrll ) 4496 1.1 skrll ; (define-anyof-operand 4497 1.1 skrll ; (name (.sym src32-basic-indirect- xmode)) 4498 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " indirect with no additional fields")) 4499 1.1 skrll ; (attrs (machine 32)) 4500 1.1 skrll ; (mode xmode) 4501 1.1 skrll ; (choices 4502 1.1 skrll ; (.sym src32-An-indirect-indirect- xmode) 4503 1.1 skrll ; ) 4504 1.1 skrll ; ) 4505 1.1 skrll ) 4506 1.1 skrll ) 4507 1.1 skrll 4508 1.1 skrll (src32-basic-operand QI) 4509 1.1 skrll (src32-basic-operand HI) 4510 1.1 skrll (src32-basic-operand SI) 4511 1.1 skrll 4512 1.1 skrll (define-anyof-operand 4513 1.1 skrll (name src32-basic-ExtPrefixed-QI) 4514 1.1 skrll (comment "m32c source operand of size QI with no additional fields") 4515 1.1 skrll (attrs (machine 32)) 4516 1.1 skrll (mode QI) 4517 1.1 skrll (choices 4518 1.1 skrll src32-Rn-direct-Prefixed-QI 4519 1.1 skrll src32-An-indirect-Prefixed-QI 4520 1.1 skrll ) 4521 1.1 skrll ) 4522 1.1 skrll 4523 1.1 skrll ;------------------------------------------------------------- 4524 1.1 skrll ; Source operands with additional fields at offset 16 bits 4525 1.1 skrll ;------------------------------------------------------------- 4526 1.1 skrll 4527 1.1 skrll (define-pmacro (src16-16-operand xmode) 4528 1.1 skrll (begin 4529 1.1 skrll (define-anyof-operand 4530 1.1 skrll (name (.sym src16-16-8- xmode)) 4531 1.1 skrll (comment (.str "m16c source operand of size " xmode " with additional 8 bit fields at offset 16")) 4532 1.1 skrll (attrs (machine 16)) 4533 1.1 skrll (mode xmode) 4534 1.1 skrll (choices 4535 1.1 skrll (.sym src16-16-8-An-relative- xmode) 4536 1.1 skrll (.sym src16-16-8-SB-relative- xmode) 4537 1.1 skrll (.sym src16-16-8-FB-relative- xmode) 4538 1.1 skrll ) 4539 1.1 skrll ) 4540 1.1 skrll (define-anyof-operand 4541 1.1 skrll (name (.sym src16-16-16- xmode)) 4542 1.1 skrll (comment (.str "m16c source operand of size " xmode " with additional 16 bit fields at offset 16")) 4543 1.1 skrll (attrs (machine 16)) 4544 1.1 skrll (mode xmode) 4545 1.1 skrll (choices 4546 1.1 skrll (.sym src16-16-16-An-relative- xmode) 4547 1.1 skrll (.sym src16-16-16-SB-relative- xmode) 4548 1.1 skrll (.sym src16-16-16-absolute- xmode) 4549 1.1 skrll ) 4550 1.1 skrll ) 4551 1.1 skrll ) 4552 1.1 skrll ) 4553 1.1 skrll (src16-16-operand QI) 4554 1.1 skrll (src16-16-operand HI) 4555 1.1 skrll 4556 1.1 skrll (define-pmacro (src32-16-operand xmode) 4557 1.1 skrll (begin 4558 1.1 skrll (define-anyof-operand 4559 1.1 skrll (name (.sym src32-16-8-Unprefixed- xmode)) 4560 1.1 skrll (comment (.str "m32c source operand of size " xmode " with additional 8 bit fields at offset 16")) 4561 1.1 skrll (attrs (machine 32)) 4562 1.1 skrll (mode xmode) 4563 1.1 skrll (choices 4564 1.1 skrll (.sym src32-16-8-An-relative-Unprefixed- xmode) 4565 1.1 skrll (.sym src32-16-8-SB-relative-Unprefixed- xmode) 4566 1.1 skrll (.sym src32-16-8-FB-relative-Unprefixed- xmode) 4567 1.1 skrll ) 4568 1.1 skrll ) 4569 1.1 skrll (define-anyof-operand 4570 1.1 skrll (name (.sym src32-16-16-Unprefixed- xmode)) 4571 1.1 skrll (comment (.str "m32c source operand of size " xmode " with additional 16 bit fields at offset 16")) 4572 1.1 skrll (attrs (machine 32)) 4573 1.1 skrll (mode xmode) 4574 1.1 skrll (choices 4575 1.1 skrll (.sym src32-16-16-An-relative-Unprefixed- xmode) 4576 1.1 skrll (.sym src32-16-16-SB-relative-Unprefixed- xmode) 4577 1.1 skrll (.sym src32-16-16-FB-relative-Unprefixed- xmode) 4578 1.1 skrll (.sym src32-16-16-absolute-Unprefixed- xmode) 4579 1.1 skrll ) 4580 1.1 skrll ) 4581 1.1 skrll (define-anyof-operand 4582 1.1 skrll (name (.sym src32-16-24-Unprefixed- xmode)) 4583 1.1 skrll (comment (.str "m32c source operand of size " xmode " with additional 24 bit fields at offset 16")) 4584 1.1 skrll (attrs (machine 32)) 4585 1.1 skrll (mode xmode) 4586 1.1 skrll (choices 4587 1.1 skrll (.sym src32-16-24-An-relative-Unprefixed- xmode) 4588 1.1 skrll (.sym src32-16-24-absolute-Unprefixed- xmode) 4589 1.1 skrll ) 4590 1.1 skrll ) 4591 1.1 skrll ) 4592 1.1 skrll ) 4593 1.1 skrll 4594 1.1 skrll (src32-16-operand QI) 4595 1.1 skrll (src32-16-operand HI) 4596 1.1 skrll (src32-16-operand SI) 4597 1.1 skrll 4598 1.1 skrll ;------------------------------------------------------------- 4599 1.1 skrll ; Source operands with additional fields at offset 24 bits 4600 1.1 skrll ;------------------------------------------------------------- 4601 1.1 skrll 4602 1.1 skrll (define-pmacro (src-24-operand group xmode) 4603 1.1 skrll (begin 4604 1.1 skrll (define-anyof-operand 4605 1.1 skrll (name (.sym src32-24-8- group - xmode)) 4606 1.1 skrll (comment (.str "m32c source operand of size " xmode " with additional 8 bit fields at offset 24")) 4607 1.1 skrll (attrs (machine 32)) 4608 1.1 skrll (mode xmode) 4609 1.1 skrll (choices 4610 1.1 skrll (.sym src32-24-8-An-relative- group - xmode) 4611 1.1 skrll (.sym src32-24-8-SB-relative- group - xmode) 4612 1.1 skrll (.sym src32-24-8-FB-relative- group - xmode) 4613 1.1 skrll ) 4614 1.1 skrll ) 4615 1.1 skrll (define-anyof-operand 4616 1.1 skrll (name (.sym src32-24-16- group - xmode)) 4617 1.1 skrll (comment (.str "m32c source operand of size " xmode " with additional 16 bit fields at offset 16")) 4618 1.1 skrll (attrs (machine 32)) 4619 1.1 skrll (mode xmode) 4620 1.1 skrll (choices 4621 1.1 skrll (.sym src32-24-16-An-relative- group - xmode) 4622 1.1 skrll (.sym src32-24-16-SB-relative- group - xmode) 4623 1.1 skrll (.sym src32-24-16-FB-relative- group - xmode) 4624 1.1 skrll (.sym src32-24-16-absolute- group - xmode) 4625 1.1 skrll ) 4626 1.1 skrll ) 4627 1.1 skrll (define-anyof-operand 4628 1.1 skrll (name (.sym src32-24-24- group - xmode)) 4629 1.1 skrll (comment (.str "m32c source operand of size " xmode " with additional 24 bit fields at offset 16")) 4630 1.1 skrll (attrs (machine 32)) 4631 1.1 skrll (mode xmode) 4632 1.1 skrll (choices 4633 1.1 skrll (.sym src32-24-24-An-relative- group - xmode) 4634 1.1 skrll (.sym src32-24-24-absolute- group - xmode) 4635 1.1 skrll ) 4636 1.1 skrll ) 4637 1.1 skrll ) 4638 1.1 skrll ) 4639 1.1 skrll 4640 1.1 skrll (src-24-operand Prefixed QI) 4641 1.1 skrll (src-24-operand Prefixed HI) 4642 1.1 skrll (src-24-operand Prefixed SI) 4643 1.1 skrll 4644 1.1 skrll (define-pmacro (src-24-indirect-operand xmode) 4645 1.1 skrll (begin 4646 1.1 skrll ; (define-anyof-operand 4647 1.1 skrll ; (name (.sym src32-24-8-indirect- xmode)) 4648 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 4649 1.1 skrll ; (attrs (machine 32)) 4650 1.1 skrll ; (mode xmode) 4651 1.1 skrll ; (choices 4652 1.1 skrll ; (.sym src32-24-8-An-relative-indirect- xmode) 4653 1.1 skrll ; (.sym src32-24-8-SB-relative-indirect- xmode) 4654 1.1 skrll ; (.sym src32-24-8-FB-relative-indirect- xmode) 4655 1.1 skrll ; ) 4656 1.1 skrll ; ) 4657 1.1 skrll ; (define-anyof-operand 4658 1.1 skrll ; (name (.sym src32-24-16-indirect- xmode)) 4659 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 4660 1.1 skrll ; (attrs (machine 32)) 4661 1.1 skrll ; (mode xmode) 4662 1.1 skrll ; (choices 4663 1.1 skrll ; (.sym src32-24-16-An-relative-indirect- xmode) 4664 1.1 skrll ; (.sym src32-24-16-SB-relative-indirect- xmode) 4665 1.1 skrll ; (.sym src32-24-16-FB-relative-indirect- xmode) 4666 1.1 skrll ; ) 4667 1.1 skrll ; ) 4668 1.1 skrll ; (define-anyof-operand 4669 1.1 skrll ; (name (.sym src32-24-24-indirect- xmode)) 4670 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 4671 1.1 skrll ; (attrs (machine 32)) 4672 1.1 skrll ; (mode xmode) 4673 1.1 skrll ; (choices 4674 1.1 skrll ; (.sym src32-24-24-An-relative-indirect- xmode) 4675 1.1 skrll ; ) 4676 1.1 skrll ; ) 4677 1.1 skrll ; (define-anyof-operand 4678 1.1 skrll ; (name (.sym src32-24-16-absolute-indirect- xmode)) 4679 1.1 skrll ; (comment (.str "m32c source operand of size " xmode " 16 bit absolute indirect")) 4680 1.1 skrll ; (attrs (machine 32)) 4681 1.1 skrll ; (mode xmode) 4682 1.1 skrll ; (choices 4683 1.1 skrll ; (.sym src32-24-16-absolute-indirect-derived- xmode) 4684 1.1 skrll ; ) 4685 1.1 skrll ; ) 4686 1.1 skrll ; (define-anyof-operand 4687 1.1 skrll ; (name (.sym src32-24-24-absolute-indirect- xmode)) 4688 1.1 skrll ; (comment (.str "m32c source operand of size " xmode " 24 bit absolute indirect")) 4689 1.1 skrll ; (attrs (machine 32)) 4690 1.1 skrll ; (mode xmode) 4691 1.1 skrll ; (choices 4692 1.1 skrll ; (.sym src32-24-24-absolute-indirect-derived- xmode) 4693 1.1 skrll ; ) 4694 1.1 skrll ; ) 4695 1.1 skrll ) 4696 1.1 skrll ) 4697 1.1 skrll 4698 1.1 skrll ; (src-24-indirect-operand QI) 4699 1.1 skrll ; (src-24-indirect-operand HI) 4700 1.1 skrll ; (src-24-indirect-operand SI) 4701 1.1 skrll 4702 1.1 skrll ;------------------------------------------------------------- 4703 1.1 skrll ; Destination operands with no additional fields 4704 1.1 skrll ;------------------------------------------------------------- 4705 1.1 skrll 4706 1.1 skrll (define-pmacro (dst16-basic-operand xmode) 4707 1.1 skrll (begin 4708 1.1 skrll (define-anyof-operand 4709 1.1 skrll (name (.sym dst16-basic- xmode)) 4710 1.1 skrll (comment (.str "m16c destination operand of size " xmode " with no additional fields")) 4711 1.1 skrll (attrs (machine 16)) 4712 1.1 skrll (mode xmode) 4713 1.1 skrll (choices 4714 1.1 skrll (.sym dst16-Rn-direct- xmode) 4715 1.1 skrll (.sym dst16-An-direct- xmode) 4716 1.1 skrll (.sym dst16-An-indirect- xmode) 4717 1.1 skrll ) 4718 1.1 skrll ) 4719 1.1 skrll ) 4720 1.1 skrll ) 4721 1.1 skrll 4722 1.1 skrll (dst16-basic-operand QI) 4723 1.1 skrll (dst16-basic-operand HI) 4724 1.1 skrll (dst16-basic-operand SI) 4725 1.1 skrll 4726 1.1 skrll (define-pmacro (dst32-basic-operand xmode) 4727 1.1 skrll (begin 4728 1.1 skrll (define-anyof-operand 4729 1.1 skrll (name (.sym dst32-basic-Unprefixed- xmode)) 4730 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with no additional fields")) 4731 1.1 skrll (attrs (machine 32)) 4732 1.1 skrll (mode xmode) 4733 1.1 skrll (choices 4734 1.1 skrll (.sym dst32-Rn-direct-Unprefixed- xmode) 4735 1.1 skrll (.sym dst32-An-direct-Unprefixed- xmode) 4736 1.1 skrll (.sym dst32-An-indirect-Unprefixed- xmode) 4737 1.1 skrll ) 4738 1.1 skrll ) 4739 1.1 skrll (define-anyof-operand 4740 1.1 skrll (name (.sym dst32-basic-Prefixed- xmode)) 4741 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with no additional fields")) 4742 1.1 skrll (attrs (machine 32)) 4743 1.1 skrll (mode xmode) 4744 1.1 skrll (choices 4745 1.1 skrll (.sym dst32-Rn-direct-Prefixed- xmode) 4746 1.1 skrll (.sym dst32-An-direct-Prefixed- xmode) 4747 1.1 skrll (.sym dst32-An-indirect-Prefixed- xmode) 4748 1.1 skrll ) 4749 1.1 skrll ) 4750 1.1 skrll ) 4751 1.1 skrll ) 4752 1.1 skrll 4753 1.1 skrll (dst32-basic-operand QI) 4754 1.1 skrll (dst32-basic-operand HI) 4755 1.1 skrll (dst32-basic-operand SI) 4756 1.1 skrll 4757 1.1 skrll ;------------------------------------------------------------- 4758 1.1 skrll ; Destination operands with possible additional fields at offset 16 bits 4759 1.1 skrll ;------------------------------------------------------------- 4760 1.1 skrll 4761 1.1 skrll (define-pmacro (dst16-16-operand xmode) 4762 1.1 skrll (begin 4763 1.1 skrll (define-anyof-operand 4764 1.1 skrll (name (.sym dst16-16- xmode)) 4765 1.1 skrll (comment (.str "m16c destination operand of size " xmode " with additional fields at offset 16")) 4766 1.1 skrll (attrs (machine 16)) 4767 1.1 skrll (mode xmode) 4768 1.1 skrll (choices 4769 1.1 skrll (.sym dst16-Rn-direct- xmode) 4770 1.1 skrll (.sym dst16-An-direct- xmode) 4771 1.1 skrll (.sym dst16-An-indirect- xmode) 4772 1.1 skrll (.sym dst16-16-8-An-relative- xmode) 4773 1.1 skrll (.sym dst16-16-16-An-relative- xmode) 4774 1.1 skrll (.sym dst16-16-8-SB-relative- xmode) 4775 1.1 skrll (.sym dst16-16-16-SB-relative- xmode) 4776 1.1 skrll (.sym dst16-16-8-FB-relative- xmode) 4777 1.1 skrll (.sym dst16-16-16-absolute- xmode) 4778 1.1 skrll ) 4779 1.1 skrll ) 4780 1.1 skrll (define-anyof-operand 4781 1.1 skrll (name (.sym dst16-16-8- xmode)) 4782 1.1 skrll (comment (.str "m16c destination operand of size " xmode " with additional fields at offset 16")) 4783 1.1 skrll (attrs (machine 16)) 4784 1.1 skrll (mode xmode) 4785 1.1 skrll (choices 4786 1.1 skrll (.sym dst16-16-8-An-relative- xmode) 4787 1.1 skrll (.sym dst16-16-8-SB-relative- xmode) 4788 1.1 skrll (.sym dst16-16-8-FB-relative- xmode) 4789 1.1 skrll ) 4790 1.1 skrll ) 4791 1.1 skrll (define-anyof-operand 4792 1.1 skrll (name (.sym dst16-16-16- xmode)) 4793 1.1 skrll (comment (.str "m16c destination operand of size " xmode " with additional fields at offset 16")) 4794 1.1 skrll (attrs (machine 16)) 4795 1.1 skrll (mode xmode) 4796 1.1 skrll (choices 4797 1.1 skrll (.sym dst16-16-16-An-relative- xmode) 4798 1.1 skrll (.sym dst16-16-16-SB-relative- xmode) 4799 1.1 skrll (.sym dst16-16-16-absolute- xmode) 4800 1.1 skrll ) 4801 1.1 skrll ) 4802 1.1 skrll (define-anyof-operand 4803 1.1 skrll (name (.sym dst16-16-16sa- xmode)) 4804 1.1 skrll (comment (.str "m16c destination operand of size " xmode " with additional fields at offset 16")) 4805 1.1 skrll (attrs (machine 16)) 4806 1.1 skrll (mode xmode) 4807 1.1 skrll (choices 4808 1.1 skrll (.sym dst16-16-16-SB-relative- xmode) 4809 1.1 skrll (.sym dst16-16-16-absolute- xmode) 4810 1.1 skrll ) 4811 1.1 skrll ) 4812 1.1 skrll (define-anyof-operand 4813 1.1 skrll (name (.sym dst16-16-20ar- xmode)) 4814 1.1 skrll (comment (.str "m16c destination operand of size " xmode " with additional fields at offset 16")) 4815 1.1 skrll (attrs (machine 16)) 4816 1.1 skrll (mode xmode) 4817 1.1 skrll (choices 4818 1.1 skrll (.sym dst16-16-20-An-relative- xmode) 4819 1.1 skrll ) 4820 1.1 skrll ) 4821 1.1 skrll ) 4822 1.1 skrll ) 4823 1.1 skrll 4824 1.1 skrll (dst16-16-operand QI) 4825 1.1 skrll (dst16-16-operand HI) 4826 1.1 skrll (dst16-16-operand SI) 4827 1.1 skrll 4828 1.1 skrll (define-anyof-operand 4829 1.1 skrll (name dst16-16-Ext-QI) 4830 1.1 skrll (comment "m16c destination operand of size QI for 'ext' insns with additional fields at offset 16") 4831 1.1 skrll (attrs (machine 16)) 4832 1.1 skrll (mode QI) 4833 1.1 skrll (choices 4834 1.1 skrll dst16-Rn-direct-Ext-QI 4835 1.1 skrll dst16-An-indirect-Ext-QI 4836 1.1 skrll dst16-16-8-An-relative-Ext-QI 4837 1.1 skrll dst16-16-16-An-relative-Ext-QI 4838 1.1 skrll dst16-16-8-SB-relative-Ext-QI 4839 1.1 skrll dst16-16-16-SB-relative-Ext-QI 4840 1.1 skrll dst16-16-8-FB-relative-Ext-QI 4841 1.1 skrll dst16-16-16-absolute-Ext-QI 4842 1.1 skrll ) 4843 1.1 skrll ) 4844 1.1 skrll 4845 1.1 skrll (define-derived-operand 4846 1.1 skrll (name dst16-An-indirect-Mova-HI) 4847 1.1 skrll (comment "m16c addressof An indirect destination HI") 4848 1.1 skrll (attrs (ISA m16c)) 4849 1.1 skrll (mode HI) 4850 1.1 skrll (args (Dst16An)) 4851 1.1 skrll (syntax "[$Dst16An]") 4852 1.1 skrll (base-ifield f-12-4) 4853 1.1 skrll (encoding (+ (f-12-2 1) (f-14-1 1) Dst16An)) 4854 1.1 skrll (ifield-assertion 4855 1.1 skrll (andif (eq f-12-2 1) (eq f-14-1 1))) 4856 1.1 skrll (getter Dst16An) 4857 1.1 skrll (setter (nop)) 4858 1.1 skrll ) 4859 1.1 skrll 4860 1.1 skrll (define-derived-operand 4861 1.1 skrll (name dst16-16-8-An-relative-Mova-HI) 4862 1.1 skrll (comment 4863 1.1 skrll "m16c addressof dsp:8[An] relative destination HI") 4864 1.1 skrll (attrs (ISA m16c)) 4865 1.1 skrll (mode HI) 4866 1.1 skrll (args (Dst16An Dsp-16-u8)) 4867 1.1 skrll (syntax "${Dsp-16-u8}[$Dst16An]") 4868 1.1 skrll (base-ifield f-12-4) 4869 1.1 skrll (encoding 4870 1.1 skrll (+ (f-12-2 2) (f-14-1 0) Dsp-16-u8 Dst16An)) 4871 1.1 skrll (ifield-assertion 4872 1.1 skrll (andif (eq f-12-2 2) (eq f-14-1 0))) 4873 1.1 skrll (getter (add Dsp-16-u8 Dst16An)) 4874 1.1 skrll (setter (nop)) 4875 1.1 skrll ) 4876 1.1 skrll (define-derived-operand 4877 1.1 skrll (name dst16-16-16-An-relative-Mova-HI) 4878 1.1 skrll (comment 4879 1.1 skrll "m16c addressof dsp:16[An] relative destination HI") 4880 1.1 skrll (attrs (ISA m16c)) 4881 1.1 skrll (mode HI) 4882 1.1 skrll (args (Dst16An Dsp-16-u16)) 4883 1.1 skrll (syntax "${Dsp-16-u16}[$Dst16An]") 4884 1.1 skrll (base-ifield f-12-4) 4885 1.1 skrll (encoding 4886 1.1 skrll (+ (f-12-2 3) (f-14-1 0) Dsp-16-u16 Dst16An)) 4887 1.1 skrll (ifield-assertion 4888 1.1 skrll (andif (eq f-12-2 3) (eq f-14-1 0))) 4889 1.1 skrll (getter (add Dsp-16-u16 Dst16An)) 4890 1.1 skrll (setter (nop)) 4891 1.1 skrll ) 4892 1.1 skrll (define-derived-operand 4893 1.1 skrll (name dst16-16-8-SB-relative-Mova-HI) 4894 1.1 skrll (comment 4895 1.1 skrll "m16c addressof dsp:8[sb] relative destination HI") 4896 1.1 skrll (attrs (ISA m16c)) 4897 1.1 skrll (mode HI) 4898 1.1 skrll (args (Dsp-16-u8)) 4899 1.1 skrll (syntax "${Dsp-16-u8}[sb]") 4900 1.1 skrll (base-ifield f-12-4) 4901 1.1 skrll (encoding (+ (f-12-4 10) Dsp-16-u8)) 4902 1.1 skrll (ifield-assertion (eq f-12-4 10)) 4903 1.1 skrll (getter (add Dsp-16-u8 (reg h-sb))) 4904 1.1 skrll (setter (nop)) 4905 1.1 skrll ) 4906 1.1 skrll (define-derived-operand 4907 1.1 skrll (name dst16-16-16-SB-relative-Mova-HI) 4908 1.1 skrll (comment 4909 1.1 skrll "m16c addressof dsp:16[sb] relative destination HI") 4910 1.1 skrll (attrs (ISA m16c)) 4911 1.1 skrll (mode HI) 4912 1.1 skrll (args (Dsp-16-u16)) 4913 1.1 skrll (syntax "${Dsp-16-u16}[sb]") 4914 1.1 skrll (base-ifield f-12-4) 4915 1.1 skrll (encoding (+ (f-12-4 14) Dsp-16-u16)) 4916 1.1 skrll (ifield-assertion (eq f-12-4 14)) 4917 1.1 skrll (getter (add Dsp-16-u16 (reg h-sb))) 4918 1.1 skrll (setter (nop)) 4919 1.1 skrll ) 4920 1.1 skrll (define-derived-operand 4921 1.1 skrll (name dst16-16-8-FB-relative-Mova-HI) 4922 1.1 skrll (comment 4923 1.1 skrll "m16c addressof dsp:8[fb] relative destination HI") 4924 1.1 skrll (attrs (ISA m16c)) 4925 1.1 skrll (mode HI) 4926 1.1 skrll (args (Dsp-16-s8)) 4927 1.1 skrll (syntax "${Dsp-16-s8}[fb]") 4928 1.1 skrll (base-ifield f-12-4) 4929 1.1 skrll (encoding (+ (f-12-4 11) Dsp-16-s8)) 4930 1.1 skrll (ifield-assertion (eq f-12-4 11)) 4931 1.1 skrll (getter (add Dsp-16-s8 (reg h-fb))) 4932 1.1 skrll (setter (nop)) 4933 1.1 skrll ) 4934 1.1 skrll (define-derived-operand 4935 1.1 skrll (name dst16-16-16-absolute-Mova-HI) 4936 1.1 skrll (comment "m16c addressof absolute address HI") 4937 1.1 skrll (attrs (ISA m16c)) 4938 1.1 skrll (mode HI) 4939 1.1 skrll (args (Dsp-16-u16)) 4940 1.1 skrll (syntax "${Dsp-16-u16}") 4941 1.1 skrll (base-ifield f-12-4) 4942 1.1 skrll (encoding (+ (f-12-4 15) Dsp-16-u16)) 4943 1.1 skrll (ifield-assertion (eq f-12-4 15)) 4944 1.1 skrll (getter Dsp-16-u16) 4945 1.1 skrll (setter (nop)) 4946 1.1 skrll ) 4947 1.1 skrll 4948 1.1 skrll (define-anyof-operand 4949 1.1 skrll (name dst16-16-Mova-HI) 4950 1.1 skrll (comment "m16c addressof destination operand of size HI with additional fields at offset 16") 4951 1.1 skrll (attrs (machine 16)) 4952 1.1 skrll (mode HI) 4953 1.1 skrll (choices 4954 1.1 skrll dst16-An-indirect-Mova-HI 4955 1.1 skrll dst16-16-8-An-relative-Mova-HI 4956 1.1 skrll dst16-16-16-An-relative-Mova-HI 4957 1.1 skrll dst16-16-8-SB-relative-Mova-HI 4958 1.1 skrll dst16-16-16-SB-relative-Mova-HI 4959 1.1 skrll dst16-16-8-FB-relative-Mova-HI 4960 1.1 skrll dst16-16-16-absolute-Mova-HI 4961 1.1 skrll ) 4962 1.1 skrll ) 4963 1.1 skrll 4964 1.1 skrll (define-derived-operand 4965 1.1 skrll (name dst32-An-indirect-Unprefixed-Mova-SI) 4966 1.1 skrll (comment "m32c addressof An indirect destination SI") 4967 1.1 skrll (attrs (ISA m32c)) 4968 1.1 skrll (mode SI) 4969 1.1 skrll (args (Dst32AnUnprefixed)) 4970 1.1 skrll (syntax "[$Dst32AnUnprefixed]") 4971 1.1 skrll (base-ifield f-4-6) 4972 1.1 skrll (encoding 4973 1.1 skrll (+ (f-4-3 0) (f-8-1 0) Dst32AnUnprefixed)) 4974 1.1 skrll (ifield-assertion 4975 1.1 skrll (andif (eq f-4-3 0) (eq f-8-1 0))) 4976 1.1 skrll (getter Dst32AnUnprefixed) 4977 1.1 skrll (setter (nop)) 4978 1.1 skrll ) 4979 1.1 skrll 4980 1.1 skrll (define-derived-operand 4981 1.1 skrll (name dst32-16-8-An-relative-Unprefixed-Mova-SI) 4982 1.1 skrll (comment "m32c addressof dsp:8[An] relative destination SI") 4983 1.1 skrll (attrs (ISA m32c)) 4984 1.1 skrll (mode SI) 4985 1.1 skrll (args (Dst32AnUnprefixed Dsp-16-u8)) 4986 1.1 skrll (syntax "${Dsp-16-u8}[$Dst32AnUnprefixed]") 4987 1.1 skrll (base-ifield f-4-6) 4988 1.1 skrll (encoding 4989 1.1 skrll (+ (f-4-3 1) 4990 1.1 skrll (f-8-1 0) 4991 1.1 skrll Dsp-16-u8 4992 1.1 skrll Dst32AnUnprefixed)) 4993 1.1 skrll (ifield-assertion 4994 1.1 skrll (andif (eq f-4-3 1) (eq f-8-1 0))) 4995 1.1 skrll (getter (add Dsp-16-u8 Dst32AnUnprefixed)) 4996 1.1 skrll (setter (nop)) 4997 1.1 skrll ) 4998 1.1 skrll 4999 1.1 skrll (define-derived-operand 5000 1.1 skrll (name dst32-16-16-An-relative-Unprefixed-Mova-SI) 5001 1.1 skrll (comment 5002 1.1 skrll "m32c addressof dsp:16[An] relative destination SI") 5003 1.1 skrll (attrs (ISA m32c)) 5004 1.1 skrll (mode SI) 5005 1.1 skrll (args (Dst32AnUnprefixed Dsp-16-u16)) 5006 1.1 skrll (syntax "${Dsp-16-u16}[$Dst32AnUnprefixed]") 5007 1.1 skrll (base-ifield f-4-6) 5008 1.1 skrll (encoding 5009 1.1 skrll (+ (f-4-3 2) 5010 1.1 skrll (f-8-1 0) 5011 1.1 skrll Dsp-16-u16 5012 1.1 skrll Dst32AnUnprefixed)) 5013 1.1 skrll (ifield-assertion 5014 1.1 skrll (andif (eq f-4-3 2) (eq f-8-1 0))) 5015 1.1 skrll (getter (add Dsp-16-u16 Dst32AnUnprefixed)) 5016 1.1 skrll (setter (nop)) 5017 1.1 skrll ) 5018 1.1 skrll 5019 1.1 skrll (define-derived-operand 5020 1.1 skrll (name dst32-16-24-An-relative-Unprefixed-Mova-SI) 5021 1.1 skrll (comment "addressof m32c dsp:16[An] relative destination SI") 5022 1.1 skrll (attrs (ISA m32c)) 5023 1.1 skrll (mode SI) 5024 1.1 skrll (args (Dst32AnUnprefixed Dsp-16-u24)) 5025 1.1 skrll (syntax "${Dsp-16-u24}[$Dst32AnUnprefixed]") 5026 1.1 skrll (base-ifield f-4-6) 5027 1.1 skrll (encoding 5028 1.1 skrll (+ (f-4-3 3) 5029 1.1 skrll (f-8-1 0) 5030 1.1 skrll Dsp-16-u24 5031 1.1 skrll Dst32AnUnprefixed)) 5032 1.1 skrll (ifield-assertion 5033 1.1 skrll (andif (eq f-4-3 3) (eq f-8-1 0))) 5034 1.1 skrll (getter (add Dsp-16-u24 Dst32AnUnprefixed)) 5035 1.1 skrll (setter (nop)) 5036 1.1 skrll ) 5037 1.1 skrll 5038 1.1 skrll (define-derived-operand 5039 1.1 skrll (name dst32-16-8-SB-relative-Unprefixed-Mova-SI) 5040 1.1 skrll (comment "m32c addressof dsp:8[sb] relative destination SI") 5041 1.1 skrll (attrs (ISA m32c)) 5042 1.1 skrll (mode SI) 5043 1.1 skrll (args (Dsp-16-u8)) 5044 1.1 skrll (syntax "${Dsp-16-u8}[sb]") 5045 1.1 skrll (base-ifield f-4-6) 5046 1.1 skrll (encoding (+ (f-4-3 1) (f-8-2 2) Dsp-16-u8)) 5047 1.1 skrll (ifield-assertion 5048 1.1 skrll (andif (eq f-4-3 1) (eq f-8-2 2))) 5049 1.1 skrll (getter (add Dsp-16-u8 (reg h-sb))) 5050 1.1 skrll (setter (nop)) 5051 1.1 skrll ) 5052 1.1 skrll 5053 1.1 skrll (define-derived-operand 5054 1.1 skrll (name dst32-16-16-SB-relative-Unprefixed-Mova-SI) 5055 1.1 skrll (comment "m32c addressof dsp:16[sb] relative destination SI") 5056 1.1 skrll (attrs (ISA m32c)) 5057 1.1 skrll (mode SI) 5058 1.1 skrll (args (Dsp-16-u16)) 5059 1.1 skrll (syntax "${Dsp-16-u16}[sb]") 5060 1.1 skrll (base-ifield f-4-6) 5061 1.1 skrll (encoding (+ (f-4-3 2) (f-8-2 2) Dsp-16-u16)) 5062 1.1 skrll (ifield-assertion 5063 1.1 skrll (andif (eq f-4-3 2) (eq f-8-2 2))) 5064 1.1 skrll (getter (add Dsp-16-u16 (reg h-sb))) 5065 1.1 skrll (setter (nop)) 5066 1.1 skrll ) 5067 1.1 skrll 5068 1.1 skrll (define-derived-operand 5069 1.1 skrll (name dst32-16-8-FB-relative-Unprefixed-Mova-SI) 5070 1.1 skrll (comment "m32c addressof dsp:8[fb] relative destination SI") 5071 1.1 skrll (attrs (ISA m32c)) 5072 1.1 skrll (mode SI) 5073 1.1 skrll (args (Dsp-16-s8)) 5074 1.1 skrll (syntax "${Dsp-16-s8}[fb]") 5075 1.1 skrll (base-ifield f-4-6) 5076 1.1 skrll (encoding (+ (f-4-3 1) (f-8-2 3) Dsp-16-s8)) 5077 1.1 skrll (ifield-assertion 5078 1.1 skrll (andif (eq f-4-3 1) (eq f-8-2 3))) 5079 1.1 skrll (getter (add Dsp-16-s8 (reg h-fb))) 5080 1.1 skrll (setter (nop)) 5081 1.1 skrll ) 5082 1.1 skrll 5083 1.1 skrll (define-derived-operand 5084 1.1 skrll (name dst32-16-16-FB-relative-Unprefixed-Mova-SI) 5085 1.1 skrll (comment "m32c addressof dsp:16[fb] relative destination SI") 5086 1.1 skrll (attrs (ISA m32c)) 5087 1.1 skrll (mode SI) 5088 1.1 skrll (args (Dsp-16-s16)) 5089 1.1 skrll (syntax "${Dsp-16-s16}[fb]") 5090 1.1 skrll (base-ifield f-4-6) 5091 1.1 skrll (encoding (+ (f-4-3 2) (f-8-2 3) Dsp-16-s16)) 5092 1.1 skrll (ifield-assertion 5093 1.1 skrll (andif (eq f-4-3 2) (eq f-8-2 3))) 5094 1.1 skrll (getter (add Dsp-16-s16 (reg h-fb))) 5095 1.1 skrll (setter (nop)) 5096 1.1 skrll ) 5097 1.1 skrll 5098 1.1 skrll (define-derived-operand 5099 1.1 skrll (name dst32-16-16-absolute-Unprefixed-Mova-SI) 5100 1.1 skrll (comment "m32c addressof absolute address SI") (attrs (ISA m32c)) 5101 1.1 skrll (mode SI) 5102 1.1 skrll (args (Dsp-16-u16)) 5103 1.1 skrll (syntax "${Dsp-16-u16}") 5104 1.1 skrll (base-ifield f-4-6) 5105 1.1 skrll (encoding (+ (f-4-3 3) (f-8-2 3) Dsp-16-u16)) 5106 1.1 skrll (ifield-assertion 5107 1.1 skrll (andif (eq f-4-3 3) (eq f-8-2 3))) 5108 1.1 skrll (getter Dsp-16-u16) 5109 1.1 skrll (setter (nop)) 5110 1.1 skrll ) 5111 1.1 skrll 5112 1.1 skrll (define-derived-operand 5113 1.1 skrll (name dst32-16-24-absolute-Unprefixed-Mova-SI) 5114 1.1 skrll (comment "m32c addressof absolute address SI") (attrs (ISA m32c)) 5115 1.1 skrll (mode SI) 5116 1.1 skrll (args (Dsp-16-u24)) 5117 1.1 skrll (syntax "${Dsp-16-u24}") 5118 1.1 skrll (base-ifield f-4-6) 5119 1.1 skrll (encoding (+ (f-4-3 3) (f-8-2 2) Dsp-16-u24)) 5120 1.1 skrll (ifield-assertion 5121 1.1 skrll (andif (eq f-4-3 3) (eq f-8-2 2))) 5122 1.1 skrll (getter Dsp-16-u24) 5123 1.1 skrll (setter (nop)) 5124 1.1 skrll ) 5125 1.1 skrll 5126 1.1 skrll (define-anyof-operand 5127 1.1 skrll (name dst32-16-Unprefixed-Mova-SI) 5128 1.1 skrll (comment 5129 1.1 skrll "m32c addressof destination operand of size SI with additional fields at offset 16") 5130 1.1 skrll (attrs (ISA m32c)) 5131 1.1 skrll (mode SI) 5132 1.1 skrll (choices 5133 1.1 skrll dst32-An-indirect-Unprefixed-Mova-SI 5134 1.1 skrll dst32-16-8-An-relative-Unprefixed-Mova-SI 5135 1.1 skrll dst32-16-16-An-relative-Unprefixed-Mova-SI 5136 1.1 skrll dst32-16-24-An-relative-Unprefixed-Mova-SI 5137 1.1 skrll dst32-16-8-SB-relative-Unprefixed-Mova-SI 5138 1.1 skrll dst32-16-16-SB-relative-Unprefixed-Mova-SI 5139 1.1 skrll dst32-16-8-FB-relative-Unprefixed-Mova-SI 5140 1.1 skrll dst32-16-16-FB-relative-Unprefixed-Mova-SI 5141 1.1 skrll dst32-16-16-absolute-Unprefixed-Mova-SI 5142 1.1 skrll dst32-16-24-absolute-Unprefixed-Mova-SI)) 5143 1.1 skrll 5144 1.1 skrll (define-pmacro (dst32-16-operand xmode) 5145 1.1 skrll (begin 5146 1.1 skrll (define-anyof-operand 5147 1.1 skrll (name (.sym dst32-16-Unprefixed- xmode)) 5148 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 16")) 5149 1.1 skrll (attrs (machine 32)) 5150 1.1 skrll (mode xmode) 5151 1.1 skrll (choices 5152 1.1 skrll (.sym dst32-Rn-direct-Unprefixed- xmode) 5153 1.1 skrll (.sym dst32-An-direct-Unprefixed- xmode) 5154 1.1 skrll (.sym dst32-An-indirect-Unprefixed- xmode) 5155 1.1 skrll (.sym dst32-16-8-An-relative-Unprefixed- xmode) 5156 1.1 skrll (.sym dst32-16-16-An-relative-Unprefixed- xmode) 5157 1.1 skrll (.sym dst32-16-24-An-relative-Unprefixed- xmode) 5158 1.1 skrll (.sym dst32-16-8-SB-relative-Unprefixed- xmode) 5159 1.1 skrll (.sym dst32-16-16-SB-relative-Unprefixed- xmode) 5160 1.1 skrll (.sym dst32-16-8-FB-relative-Unprefixed- xmode) 5161 1.1 skrll (.sym dst32-16-16-FB-relative-Unprefixed- xmode) 5162 1.1 skrll (.sym dst32-16-16-absolute-Unprefixed- xmode) 5163 1.1 skrll (.sym dst32-16-24-absolute-Unprefixed- xmode) 5164 1.1 skrll ) 5165 1.1 skrll ) 5166 1.1 skrll (define-anyof-operand 5167 1.1 skrll (name (.sym dst32-16-8-Unprefixed- xmode)) 5168 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 16")) 5169 1.1 skrll (attrs (machine 32)) 5170 1.1 skrll (mode xmode) 5171 1.1 skrll (choices 5172 1.1 skrll (.sym dst32-16-8-An-relative-Unprefixed- xmode) 5173 1.1 skrll (.sym dst32-16-8-SB-relative-Unprefixed- xmode) 5174 1.1 skrll (.sym dst32-16-8-FB-relative-Unprefixed- xmode) 5175 1.1 skrll ) 5176 1.1 skrll ) 5177 1.1 skrll (define-anyof-operand 5178 1.1 skrll (name (.sym dst32-16-16-Unprefixed- xmode)) 5179 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 16")) 5180 1.1 skrll (attrs (machine 32)) 5181 1.1 skrll (mode xmode) 5182 1.1 skrll (choices 5183 1.1 skrll (.sym dst32-16-16-An-relative-Unprefixed- xmode) 5184 1.1 skrll (.sym dst32-16-16-SB-relative-Unprefixed- xmode) 5185 1.1 skrll (.sym dst32-16-16-FB-relative-Unprefixed- xmode) 5186 1.1 skrll (.sym dst32-16-16-absolute-Unprefixed- xmode) 5187 1.1 skrll ) 5188 1.1 skrll ) 5189 1.1 skrll (define-anyof-operand 5190 1.1 skrll (name (.sym dst32-16-16sa-Unprefixed- xmode)) 5191 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 16")) 5192 1.1 skrll (attrs (machine 32)) 5193 1.1 skrll (mode xmode) 5194 1.1 skrll (choices 5195 1.1 skrll (.sym dst32-16-16-SB-relative-Unprefixed- xmode) 5196 1.1 skrll (.sym dst32-16-16-FB-relative-Unprefixed- xmode) 5197 1.1 skrll (.sym dst32-16-16-absolute-Unprefixed- xmode) 5198 1.1 skrll ) 5199 1.1 skrll ) 5200 1.1 skrll (define-anyof-operand 5201 1.1 skrll (name (.sym dst32-16-24-Unprefixed- xmode)) 5202 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 16")) 5203 1.1 skrll (attrs (machine 32)) 5204 1.1 skrll (mode xmode) 5205 1.1 skrll (choices 5206 1.1 skrll (.sym dst32-16-24-An-relative-Unprefixed- xmode) 5207 1.1 skrll (.sym dst32-16-24-absolute-Unprefixed- xmode) 5208 1.1 skrll ) 5209 1.1 skrll ) 5210 1.1 skrll ) 5211 1.1 skrll ) 5212 1.1 skrll 5213 1.1 skrll (dst32-16-operand QI) 5214 1.1 skrll (dst32-16-operand HI) 5215 1.1 skrll (dst32-16-operand SI) 5216 1.1 skrll 5217 1.1 skrll (define-pmacro (dst32-16-Ext-operand smode dmode) 5218 1.1 skrll (begin 5219 1.1 skrll (define-anyof-operand 5220 1.1 skrll (name (.sym dst32-16-ExtUnprefixed- smode)) 5221 1.1 skrll (comment (.str "m32c destination operand of size " smode " with additional fields at offset 16")) 5222 1.1 skrll (attrs (machine 32)) 5223 1.1 skrll (mode dmode) 5224 1.1 skrll (choices 5225 1.1 skrll (.sym dst32-Rn-direct-ExtUnprefixed- smode) 5226 1.1 skrll (.sym dst32-An-direct-Unprefixed- dmode) ; ExtUnprefixed mode not required for this operand -- use the normal dmode version 5227 1.1 skrll (.sym dst32-An-indirect-ExtUnprefixed- smode) 5228 1.1 skrll (.sym dst32-16-8-An-relative-ExtUnprefixed- smode) 5229 1.1 skrll (.sym dst32-16-16-An-relative-ExtUnprefixed- smode) 5230 1.1 skrll (.sym dst32-16-24-An-relative-ExtUnprefixed- smode) 5231 1.1 skrll (.sym dst32-16-8-SB-relative-ExtUnprefixed- smode) 5232 1.1 skrll (.sym dst32-16-16-SB-relative-ExtUnprefixed- smode) 5233 1.1 skrll (.sym dst32-16-8-FB-relative-ExtUnprefixed- smode) 5234 1.1 skrll (.sym dst32-16-16-FB-relative-ExtUnprefixed- smode) 5235 1.1 skrll (.sym dst32-16-16-absolute-ExtUnprefixed- smode) 5236 1.1 skrll (.sym dst32-16-24-absolute-ExtUnprefixed- smode) 5237 1.1 skrll ) 5238 1.1 skrll ) 5239 1.1 skrll ) 5240 1.1 skrll ) 5241 1.1 skrll 5242 1.1 skrll (dst32-16-Ext-operand QI HI) 5243 1.1 skrll (dst32-16-Ext-operand HI SI) 5244 1.1 skrll 5245 1.1 skrll (define-anyof-operand 5246 1.1 skrll (name dst32-16-Unprefixed-Mulex-HI) 5247 1.1 skrll (comment "m32c destination operand of size HI with additional fields at offset 16") 5248 1.1 skrll (attrs (machine 32)) 5249 1.1 skrll (mode HI) 5250 1.1 skrll (choices 5251 1.1 skrll dst32-R3-direct-Unprefixed-HI 5252 1.1 skrll dst32-An-direct-Unprefixed-HI 5253 1.1 skrll dst32-An-indirect-Unprefixed-HI 5254 1.1 skrll dst32-16-8-An-relative-Unprefixed-HI 5255 1.1 skrll dst32-16-16-An-relative-Unprefixed-HI 5256 1.1 skrll dst32-16-24-An-relative-Unprefixed-HI 5257 1.1 skrll dst32-16-8-SB-relative-Unprefixed-HI 5258 1.1 skrll dst32-16-16-SB-relative-Unprefixed-HI 5259 1.1 skrll dst32-16-8-FB-relative-Unprefixed-HI 5260 1.1 skrll dst32-16-16-FB-relative-Unprefixed-HI 5261 1.1 skrll dst32-16-16-absolute-Unprefixed-HI 5262 1.1 skrll dst32-16-24-absolute-Unprefixed-HI 5263 1.1 skrll ) 5264 1.1 skrll ) 5265 1.1 skrll ;------------------------------------------------------------- 5266 1.1 skrll ; Destination operands with possible additional fields at offset 24 bits 5267 1.1 skrll ;------------------------------------------------------------- 5268 1.1 skrll 5269 1.1 skrll (define-pmacro (dst16-24-operand xmode) 5270 1.1 skrll (begin 5271 1.1 skrll (define-anyof-operand 5272 1.1 skrll (name (.sym dst16-24- xmode)) 5273 1.1 skrll (comment (.str "m16c destination operand of size " xmode " with additional fields at offset 24")) 5274 1.1 skrll (attrs (machine 16)) 5275 1.1 skrll (mode xmode) 5276 1.1 skrll (choices 5277 1.1 skrll (.sym dst16-Rn-direct- xmode) 5278 1.1 skrll (.sym dst16-An-direct- xmode) 5279 1.1 skrll (.sym dst16-An-indirect- xmode) 5280 1.1 skrll (.sym dst16-24-8-An-relative- xmode) 5281 1.1 skrll (.sym dst16-24-16-An-relative- xmode) 5282 1.1 skrll (.sym dst16-24-8-SB-relative- xmode) 5283 1.1 skrll (.sym dst16-24-16-SB-relative- xmode) 5284 1.1 skrll (.sym dst16-24-8-FB-relative- xmode) 5285 1.1 skrll (.sym dst16-24-16-absolute- xmode) 5286 1.1 skrll ) 5287 1.1 skrll ) 5288 1.1 skrll ) 5289 1.1 skrll ) 5290 1.1 skrll 5291 1.1 skrll (dst16-24-operand QI) 5292 1.1 skrll (dst16-24-operand HI) 5293 1.1 skrll 5294 1.1 skrll (define-pmacro (dst32-24-operand xmode) 5295 1.1 skrll (begin 5296 1.1 skrll (define-anyof-operand 5297 1.1 skrll (name (.sym dst32-24-Unprefixed- xmode)) 5298 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 5299 1.1 skrll (attrs (machine 32)) 5300 1.1 skrll (mode xmode) 5301 1.1 skrll (choices 5302 1.1 skrll (.sym dst32-Rn-direct-Unprefixed- xmode) 5303 1.1 skrll (.sym dst32-An-direct-Unprefixed- xmode) 5304 1.1 skrll (.sym dst32-An-indirect-Unprefixed- xmode) 5305 1.1 skrll (.sym dst32-24-8-An-relative-Unprefixed- xmode) 5306 1.1 skrll (.sym dst32-24-16-An-relative-Unprefixed- xmode) 5307 1.1 skrll (.sym dst32-24-24-An-relative-Unprefixed- xmode) 5308 1.1 skrll (.sym dst32-24-8-SB-relative-Unprefixed- xmode) 5309 1.1 skrll (.sym dst32-24-16-SB-relative-Unprefixed- xmode) 5310 1.1 skrll (.sym dst32-24-8-FB-relative-Unprefixed- xmode) 5311 1.1 skrll (.sym dst32-24-16-FB-relative-Unprefixed- xmode) 5312 1.1 skrll (.sym dst32-24-16-absolute-Unprefixed- xmode) 5313 1.1 skrll (.sym dst32-24-24-absolute-Unprefixed- xmode) 5314 1.1 skrll ) 5315 1.1 skrll ) 5316 1.1 skrll (define-anyof-operand 5317 1.1 skrll (name (.sym dst32-24-Prefixed- xmode)) 5318 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 5319 1.1 skrll (attrs (machine 32)) 5320 1.1 skrll (mode xmode) 5321 1.1 skrll (choices 5322 1.1 skrll (.sym dst32-Rn-direct-Prefixed- xmode) 5323 1.1 skrll (.sym dst32-An-direct-Prefixed- xmode) 5324 1.1 skrll (.sym dst32-An-indirect-Prefixed- xmode) 5325 1.1 skrll (.sym dst32-24-8-An-relative-Prefixed- xmode) 5326 1.1 skrll (.sym dst32-24-16-An-relative-Prefixed- xmode) 5327 1.1 skrll (.sym dst32-24-24-An-relative-Prefixed- xmode) 5328 1.1 skrll (.sym dst32-24-8-SB-relative-Prefixed- xmode) 5329 1.1 skrll (.sym dst32-24-16-SB-relative-Prefixed- xmode) 5330 1.1 skrll (.sym dst32-24-8-FB-relative-Prefixed- xmode) 5331 1.1 skrll (.sym dst32-24-16-FB-relative-Prefixed- xmode) 5332 1.1 skrll (.sym dst32-24-16-absolute-Prefixed- xmode) 5333 1.1 skrll (.sym dst32-24-24-absolute-Prefixed- xmode) 5334 1.1 skrll ) 5335 1.1 skrll ) 5336 1.1 skrll (define-anyof-operand 5337 1.1 skrll (name (.sym dst32-24-8-Prefixed- xmode)) 5338 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 5339 1.1 skrll (attrs (machine 32)) 5340 1.1 skrll (mode xmode) 5341 1.1 skrll (choices 5342 1.1 skrll (.sym dst32-24-8-An-relative-Prefixed- xmode) 5343 1.1 skrll (.sym dst32-24-8-SB-relative-Prefixed- xmode) 5344 1.1 skrll (.sym dst32-24-8-FB-relative-Prefixed- xmode) 5345 1.1 skrll ) 5346 1.1 skrll ) 5347 1.1 skrll (define-anyof-operand 5348 1.1 skrll (name (.sym dst32-24-16-Prefixed- xmode)) 5349 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 5350 1.1 skrll (attrs (machine 32)) 5351 1.1 skrll (mode xmode) 5352 1.1 skrll (choices 5353 1.1 skrll (.sym dst32-24-16-An-relative-Prefixed- xmode) 5354 1.1 skrll (.sym dst32-24-16-SB-relative-Prefixed- xmode) 5355 1.1 skrll (.sym dst32-24-16-FB-relative-Prefixed- xmode) 5356 1.1 skrll (.sym dst32-24-16-absolute-Prefixed- xmode) 5357 1.1 skrll ) 5358 1.1 skrll ) 5359 1.1 skrll (define-anyof-operand 5360 1.1 skrll (name (.sym dst32-24-24-Prefixed- xmode)) 5361 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 5362 1.1 skrll (attrs (machine 32)) 5363 1.1 skrll (mode xmode) 5364 1.1 skrll (choices 5365 1.1 skrll (.sym dst32-24-24-An-relative-Prefixed- xmode) 5366 1.1 skrll (.sym dst32-24-24-absolute-Prefixed- xmode) 5367 1.1 skrll ) 5368 1.1 skrll ) 5369 1.1 skrll ; (define-anyof-operand 5370 1.1 skrll ; (name (.sym dst32-24-indirect- xmode)) 5371 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 5372 1.1 skrll ; (attrs (machine 32)) 5373 1.1 skrll ; (mode xmode) 5374 1.1 skrll ; (choices 5375 1.1 skrll ; (.sym dst32-An-indirect-indirect- xmode) 5376 1.1 skrll ; (.sym dst32-24-8-An-relative-indirect- xmode) 5377 1.1 skrll ; (.sym dst32-24-16-An-relative-indirect- xmode) 5378 1.1 skrll ; (.sym dst32-24-24-An-relative-indirect- xmode) 5379 1.1 skrll ; (.sym dst32-24-8-SB-relative-indirect- xmode) 5380 1.1 skrll ; (.sym dst32-24-16-SB-relative-indirect- xmode) 5381 1.1 skrll ; (.sym dst32-24-8-FB-relative-indirect- xmode) 5382 1.1 skrll ; (.sym dst32-24-16-FB-relative-indirect- xmode) 5383 1.1 skrll ; ) 5384 1.1 skrll ; ) 5385 1.1 skrll ; (define-anyof-operand 5386 1.1 skrll ; (name (.sym dst32-basic-indirect- xmode)) 5387 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " with no additional fields")) 5388 1.1 skrll ; (attrs (machine 32)) 5389 1.1 skrll ; (mode xmode) 5390 1.1 skrll ; (choices 5391 1.1 skrll ; (.sym dst32-An-indirect-indirect- xmode) 5392 1.1 skrll ; ) 5393 1.1 skrll ; ) 5394 1.1 skrll ; (define-anyof-operand 5395 1.1 skrll ; (name (.sym dst32-24-8-indirect- xmode)) 5396 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 5397 1.1 skrll ; (attrs (machine 32)) 5398 1.1 skrll ; (mode xmode) 5399 1.1 skrll ; (choices 5400 1.1 skrll ; (.sym dst32-24-8-An-relative-indirect- xmode) 5401 1.1 skrll ; (.sym dst32-24-8-SB-relative-indirect- xmode) 5402 1.1 skrll ; (.sym dst32-24-8-FB-relative-indirect- xmode) 5403 1.1 skrll ; ) 5404 1.1 skrll ; ) 5405 1.1 skrll ; (define-anyof-operand 5406 1.1 skrll ; (name (.sym dst32-24-16-indirect- xmode)) 5407 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 5408 1.1 skrll ; (attrs (machine 32)) 5409 1.1 skrll ; (mode xmode) 5410 1.1 skrll ; (choices 5411 1.1 skrll ; (.sym dst32-24-16-An-relative-indirect- xmode) 5412 1.1 skrll ; (.sym dst32-24-16-SB-relative-indirect- xmode) 5413 1.1 skrll ; (.sym dst32-24-16-FB-relative-indirect- xmode) 5414 1.1 skrll ; ) 5415 1.1 skrll ; ) 5416 1.1 skrll ; (define-anyof-operand 5417 1.1 skrll ; (name (.sym dst32-24-24-indirect- xmode)) 5418 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 24")) 5419 1.1 skrll ; (attrs (machine 32)) 5420 1.1 skrll ; (mode xmode) 5421 1.1 skrll ; (choices 5422 1.1 skrll ; (.sym dst32-24-24-An-relative-indirect- xmode) 5423 1.1 skrll ; ) 5424 1.1 skrll ; ) 5425 1.1 skrll ; (define-anyof-operand 5426 1.1 skrll ; (name (.sym dst32-24-absolute-indirect- xmode)) 5427 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " absolute indirect")) 5428 1.1 skrll ; (attrs (machine 32)) 5429 1.1 skrll ; (mode xmode) 5430 1.1 skrll ; (choices 5431 1.1 skrll ; (.sym dst32-24-16-absolute-indirect-derived- xmode) 5432 1.1 skrll ; (.sym dst32-24-24-absolute-indirect-derived- xmode) 5433 1.1 skrll ; ) 5434 1.1 skrll ; ) 5435 1.1 skrll ; (define-anyof-operand 5436 1.1 skrll ; (name (.sym dst32-24-16-absolute-indirect- xmode)) 5437 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " absolute indirect")) 5438 1.1 skrll ; (attrs (machine 32)) 5439 1.1 skrll ; (mode xmode) 5440 1.1 skrll ; (choices 5441 1.1 skrll ; (.sym dst32-24-16-absolute-indirect-derived- xmode) 5442 1.1 skrll ; ) 5443 1.1 skrll ; ) 5444 1.1 skrll ; (define-anyof-operand 5445 1.1 skrll ; (name (.sym dst32-24-24-absolute-indirect- xmode)) 5446 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " absolute indirect")) 5447 1.1 skrll ; (attrs (machine 32)) 5448 1.1 skrll ; (mode xmode) 5449 1.1 skrll ; (choices 5450 1.1 skrll ; (.sym dst32-24-24-absolute-indirect-derived- xmode) 5451 1.1 skrll ; ) 5452 1.1 skrll ; ) 5453 1.1 skrll ) 5454 1.1 skrll ) 5455 1.1 skrll 5456 1.1 skrll (dst32-24-operand QI) 5457 1.1 skrll (dst32-24-operand HI) 5458 1.1 skrll (dst32-24-operand SI) 5459 1.1 skrll 5460 1.1 skrll ;------------------------------------------------------------- 5461 1.1 skrll ; Destination operands with possible additional fields at offset 32 bits 5462 1.1 skrll ;------------------------------------------------------------- 5463 1.1 skrll 5464 1.1 skrll (define-pmacro (dst16-32-operand xmode) 5465 1.1 skrll (begin 5466 1.1 skrll (define-anyof-operand 5467 1.1 skrll (name (.sym dst16-32- xmode)) 5468 1.1 skrll (comment (.str "m16c destination operand of size " xmode " with additional fields at offset 32")) 5469 1.1 skrll (attrs (machine 16)) 5470 1.1 skrll (mode xmode) 5471 1.1 skrll (choices 5472 1.1 skrll (.sym dst16-Rn-direct- xmode) 5473 1.1 skrll (.sym dst16-An-direct- xmode) 5474 1.1 skrll (.sym dst16-An-indirect- xmode) 5475 1.1 skrll (.sym dst16-32-8-An-relative- xmode) 5476 1.1 skrll (.sym dst16-32-16-An-relative- xmode) 5477 1.1 skrll (.sym dst16-32-8-SB-relative- xmode) 5478 1.1 skrll (.sym dst16-32-16-SB-relative- xmode) 5479 1.1 skrll (.sym dst16-32-8-FB-relative- xmode) 5480 1.1 skrll (.sym dst16-32-16-absolute- xmode) 5481 1.1 skrll ) 5482 1.1 skrll ) 5483 1.1 skrll ) 5484 1.1 skrll ) 5485 1.1 skrll (dst16-32-operand QI) 5486 1.1 skrll (dst16-32-operand HI) 5487 1.1 skrll 5488 1.1 skrll ; This macro actually handles operands at offset 32, 40 and 48 bits 5489 1.1 skrll (define-pmacro (dst32-32plus-operand offset xmode) 5490 1.1 skrll (begin 5491 1.1 skrll (define-anyof-operand 5492 1.1 skrll (name (.sym dst32- offset -Unprefixed- xmode)) 5493 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 32")) 5494 1.1 skrll (attrs (machine 32)) 5495 1.1 skrll (mode xmode) 5496 1.1 skrll (choices 5497 1.1 skrll (.sym dst32-Rn-direct-Unprefixed- xmode) 5498 1.1 skrll (.sym dst32-An-direct-Unprefixed- xmode) 5499 1.1 skrll (.sym dst32-An-indirect-Unprefixed- xmode) 5500 1.1 skrll (.sym dst32- offset -8-An-relative-Unprefixed- xmode) 5501 1.1 skrll (.sym dst32- offset -16-An-relative-Unprefixed- xmode) 5502 1.1 skrll (.sym dst32- offset -24-An-relative-Unprefixed- xmode) 5503 1.1 skrll (.sym dst32- offset -8-SB-relative-Unprefixed- xmode) 5504 1.1 skrll (.sym dst32- offset -16-SB-relative-Unprefixed- xmode) 5505 1.1 skrll (.sym dst32- offset -8-FB-relative-Unprefixed- xmode) 5506 1.1 skrll (.sym dst32- offset -16-FB-relative-Unprefixed- xmode) 5507 1.1 skrll (.sym dst32- offset -16-absolute-Unprefixed- xmode) 5508 1.1 skrll (.sym dst32- offset -24-absolute-Unprefixed- xmode) 5509 1.1 skrll ) 5510 1.1 skrll ) 5511 1.1 skrll (define-anyof-operand 5512 1.1 skrll (name (.sym dst32- offset -Prefixed- xmode)) 5513 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 32")) 5514 1.1 skrll (attrs (machine 32)) 5515 1.1 skrll (mode xmode) 5516 1.1 skrll (choices 5517 1.1 skrll (.sym dst32-Rn-direct-Prefixed- xmode) 5518 1.1 skrll (.sym dst32-An-direct-Prefixed- xmode) 5519 1.1 skrll (.sym dst32-An-indirect-Prefixed- xmode) 5520 1.1 skrll (.sym dst32- offset -8-An-relative-Prefixed- xmode) 5521 1.1 skrll (.sym dst32- offset -16-An-relative-Prefixed- xmode) 5522 1.1 skrll (.sym dst32- offset -24-An-relative-Prefixed- xmode) 5523 1.1 skrll (.sym dst32- offset -8-SB-relative-Prefixed- xmode) 5524 1.1 skrll (.sym dst32- offset -16-SB-relative-Prefixed- xmode) 5525 1.1 skrll (.sym dst32- offset -8-FB-relative-Prefixed- xmode) 5526 1.1 skrll (.sym dst32- offset -16-FB-relative-Prefixed- xmode) 5527 1.1 skrll (.sym dst32- offset -16-absolute-Prefixed- xmode) 5528 1.1 skrll (.sym dst32- offset -24-absolute-Prefixed- xmode) 5529 1.1 skrll ) 5530 1.1 skrll ) 5531 1.1 skrll ; (define-anyof-operand 5532 1.1 skrll ; (name (.sym dst32- offset -indirect- xmode)) 5533 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 32")) 5534 1.1 skrll ; (attrs (machine 32)) 5535 1.1 skrll ; (mode xmode) 5536 1.1 skrll ; (choices 5537 1.1 skrll ; (.sym dst32-An-indirect-indirect- xmode) 5538 1.1 skrll ; (.sym dst32- offset -8-An-relative-indirect- xmode) 5539 1.1 skrll ; (.sym dst32- offset -16-An-relative-indirect- xmode) 5540 1.1 skrll ; (.sym dst32- offset -24-An-relative-indirect- xmode) 5541 1.1 skrll ; (.sym dst32- offset -8-SB-relative-indirect- xmode) 5542 1.1 skrll ; (.sym dst32- offset -16-SB-relative-indirect- xmode) 5543 1.1 skrll ; (.sym dst32- offset -8-FB-relative-indirect- xmode) 5544 1.1 skrll ; (.sym dst32- offset -16-FB-relative-indirect- xmode) 5545 1.1 skrll ; ) 5546 1.1 skrll ; ) 5547 1.1 skrll ; (define-anyof-operand 5548 1.1 skrll ; (name (.sym dst32- offset -absolute-indirect- xmode)) 5549 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " absolute indirect")) 5550 1.1 skrll ; (attrs (machine 32)) 5551 1.1 skrll ; (mode xmode) 5552 1.1 skrll ; (choices 5553 1.1 skrll ; (.sym dst32- offset -16-absolute-indirect-derived- xmode) 5554 1.1 skrll ; (.sym dst32- offset -24-absolute-indirect-derived- xmode) 5555 1.1 skrll ; ) 5556 1.1 skrll ; ) 5557 1.1 skrll ) 5558 1.1 skrll ) 5559 1.1 skrll 5560 1.1 skrll (dst32-32plus-operand 32 QI) 5561 1.1 skrll (dst32-32plus-operand 32 HI) 5562 1.1 skrll (dst32-32plus-operand 32 SI) 5563 1.1 skrll (dst32-32plus-operand 40 QI) 5564 1.1 skrll (dst32-32plus-operand 40 HI) 5565 1.1 skrll (dst32-32plus-operand 40 SI) 5566 1.1 skrll 5567 1.1 skrll ;------------------------------------------------------------- 5568 1.1 skrll ; Destination operands with possible additional fields at offset 48 bits 5569 1.1 skrll ;------------------------------------------------------------- 5570 1.1 skrll 5571 1.1 skrll (define-pmacro (dst32-48-operand offset xmode) 5572 1.1 skrll (begin 5573 1.1 skrll (define-anyof-operand 5574 1.1 skrll (name (.sym dst32- offset -Prefixed- xmode)) 5575 1.1 skrll (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 32")) 5576 1.1 skrll (attrs (machine 32)) 5577 1.1 skrll (mode xmode) 5578 1.1 skrll (choices 5579 1.1 skrll (.sym dst32-Rn-direct-Prefixed- xmode) 5580 1.1 skrll (.sym dst32-An-direct-Prefixed- xmode) 5581 1.1 skrll (.sym dst32-An-indirect-Prefixed- xmode) 5582 1.1 skrll (.sym dst32- offset -8-An-relative-Prefixed- xmode) 5583 1.1 skrll (.sym dst32- offset -16-An-relative-Prefixed- xmode) 5584 1.1 skrll (.sym dst32- offset -24-An-relative-Prefixed- xmode) 5585 1.1 skrll (.sym dst32- offset -8-SB-relative-Prefixed- xmode) 5586 1.1 skrll (.sym dst32- offset -16-SB-relative-Prefixed- xmode) 5587 1.1 skrll (.sym dst32- offset -8-FB-relative-Prefixed- xmode) 5588 1.1 skrll (.sym dst32- offset -16-FB-relative-Prefixed- xmode) 5589 1.1 skrll (.sym dst32- offset -16-absolute-Prefixed- xmode) 5590 1.1 skrll (.sym dst32- offset -24-absolute-Prefixed- xmode) 5591 1.1 skrll ) 5592 1.1 skrll ) 5593 1.1 skrll ; (define-anyof-operand 5594 1.1 skrll ; (name (.sym dst32- offset -indirect- xmode)) 5595 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " with additional fields at offset 32")) 5596 1.1 skrll ; (attrs (machine 32)) 5597 1.1 skrll ; (mode xmode) 5598 1.1 skrll ; (choices 5599 1.1 skrll ; (.sym dst32-An-indirect-indirect- xmode) 5600 1.1 skrll ; (.sym dst32- offset -8-An-relative-indirect- xmode) 5601 1.1 skrll ; (.sym dst32- offset -16-An-relative-indirect- xmode) 5602 1.1 skrll ; (.sym dst32- offset -24-An-relative-indirect- xmode) 5603 1.1 skrll ; (.sym dst32- offset -8-SB-relative-indirect- xmode) 5604 1.1 skrll ; (.sym dst32- offset -16-SB-relative-indirect- xmode) 5605 1.1 skrll ; (.sym dst32- offset -8-FB-relative-indirect- xmode) 5606 1.1 skrll ; (.sym dst32- offset -16-FB-relative-indirect- xmode) 5607 1.1 skrll ; ) 5608 1.1 skrll ; ) 5609 1.1 skrll ; (define-anyof-operand 5610 1.1 skrll ; (name (.sym dst32- offset -absolute-indirect- xmode)) 5611 1.1 skrll ; (comment (.str "m32c destination operand of size " xmode " absolute indirect")) 5612 1.1 skrll ; (attrs (machine 32)) 5613 1.1 skrll ; (mode xmode) 5614 1.1 skrll ; (choices 5615 1.1 skrll ; (.sym dst32- offset -16-absolute-indirect-derived- xmode) 5616 1.1 skrll ; (.sym dst32- offset -24-absolute-indirect-derived- xmode) 5617 1.1 skrll ; ) 5618 1.1 skrll ; ) 5619 1.1 skrll ) 5620 1.1 skrll ) 5621 1.1 skrll 5622 1.1 skrll (dst32-48-operand 48 QI) 5623 1.1 skrll (dst32-48-operand 48 HI) 5624 1.1 skrll (dst32-48-operand 48 SI) 5625 1.1 skrll 5626 1.1 skrll ;------------------------------------------------------------- 5627 1.1 skrll ; Bit operands for m16c 5628 1.1 skrll ;------------------------------------------------------------- 5629 1.1 skrll 5630 1.1 skrll (define-pmacro (bit16-operand offset) 5631 1.1 skrll (begin 5632 1.1 skrll (define-anyof-operand 5633 1.1 skrll (name (.sym bit16- offset)) 5634 1.1 skrll (comment (.str "m16c bit operand with possible additional fields at offset 24")) 5635 1.1 skrll (attrs (machine 16)) 5636 1.1 skrll (mode BI) 5637 1.1 skrll (choices 5638 1.1 skrll bit16-Rn-direct 5639 1.1 skrll bit16-An-direct 5640 1.1 skrll bit16-An-indirect 5641 1.1 skrll (.sym bit16- offset -8-An-relative) 5642 1.1 skrll (.sym bit16- offset -16-An-relative) 5643 1.1 skrll (.sym bit16- offset -8-SB-relative) 5644 1.1 skrll (.sym bit16- offset -16-SB-relative) 5645 1.1 skrll (.sym bit16- offset -8-FB-relative) 5646 1.1 skrll (.sym bit16- offset -16-absolute) 5647 1.1 skrll ) 5648 1.1 skrll ) 5649 1.1 skrll (define-anyof-operand 5650 1.1 skrll (name (.sym bit16- offset -basic)) 5651 1.1 skrll (comment (.str "m16c bit operand with no additional fields")) 5652 1.1 skrll (attrs (machine 16)) 5653 1.1 skrll (mode BI) 5654 1.1 skrll (choices 5655 1.1 skrll bit16-An-indirect 5656 1.1 skrll ) 5657 1.1 skrll ) 5658 1.1 skrll (define-anyof-operand 5659 1.1 skrll (name (.sym bit16- offset -8)) 5660 1.1 skrll (comment (.str "m16c bit operand with possible additional fields at offset 24")) 5661 1.1 skrll (attrs (machine 16)) 5662 1.1 skrll (mode BI) 5663 1.1 skrll (choices 5664 1.1 skrll bit16-Rn-direct 5665 1.1 skrll bit16-An-direct 5666 1.1 skrll (.sym bit16- offset -8-An-relative) 5667 1.1 skrll (.sym bit16- offset -8-SB-relative) 5668 1.1 skrll (.sym bit16- offset -8-FB-relative) 5669 1.1 skrll ) 5670 1.1 skrll ) 5671 1.1 skrll (define-anyof-operand 5672 1.1 skrll (name (.sym bit16- offset -16)) 5673 1.1 skrll (comment (.str "m16c bit operand with possible additional fields at offset 24")) 5674 1.1 skrll (attrs (machine 16)) 5675 1.1 skrll (mode BI) 5676 1.1 skrll (choices 5677 1.1 skrll (.sym bit16- offset -16-An-relative) 5678 1.1 skrll (.sym bit16- offset -16-SB-relative) 5679 1.1 skrll (.sym bit16- offset -16-absolute) 5680 1.1 skrll ) 5681 1.1 skrll ) 5682 1.1 skrll ) 5683 1.1 skrll ) 5684 1.1 skrll 5685 1.1 skrll (bit16-operand 16) 5686 1.1 skrll 5687 1.1 skrll ;------------------------------------------------------------- 5688 1.1 skrll ; Bit operands for m32c 5689 1.1 skrll ;------------------------------------------------------------- 5690 1.1 skrll 5691 1.1 skrll (define-pmacro (bit32-operand offset group) 5692 1.1 skrll (begin 5693 1.1 skrll (define-anyof-operand 5694 1.1 skrll (name (.sym bit32- offset - group)) 5695 1.1 skrll (comment (.str "m32c bit operand with possible additional fields at offset 24")) 5696 1.1 skrll (attrs (machine 32)) 5697 1.1 skrll (mode BI) 5698 1.1 skrll (choices 5699 1.1 skrll (.sym bit32-Rn-direct- group) 5700 1.1 skrll (.sym bit32-An-direct- group) 5701 1.1 skrll (.sym bit32-An-indirect- group) 5702 1.1 skrll (.sym bit32- offset -11-An-relative- group) 5703 1.1 skrll (.sym bit32- offset -19-An-relative- group) 5704 1.1 skrll (.sym bit32- offset -27-An-relative- group) 5705 1.1 skrll (.sym bit32- offset -11-SB-relative- group) 5706 1.1 skrll (.sym bit32- offset -19-SB-relative- group) 5707 1.1 skrll (.sym bit32- offset -11-FB-relative- group) 5708 1.1 skrll (.sym bit32- offset -19-FB-relative- group) 5709 1.1 skrll (.sym bit32- offset -19-absolute- group) 5710 1.1 skrll (.sym bit32- offset -27-absolute- group) 5711 1.1 skrll ) 5712 1.1 skrll ) 5713 1.1 skrll ) 5714 1.1 skrll ) 5715 1.1 skrll 5716 1.1 skrll (bit32-operand 16 Unprefixed) 5717 1.1 skrll (bit32-operand 24 Prefixed) 5718 1.1 skrll 5719 1.1 skrll (define-anyof-operand 5720 1.1 skrll (name bit32-basic-Unprefixed) 5721 1.1 skrll (comment "m32c bit operand with no additional fields") 5722 1.1 skrll (attrs (machine 32)) 5723 1.1 skrll (mode BI) 5724 1.1 skrll (choices 5725 1.1 skrll bit32-Rn-direct-Unprefixed 5726 1.1 skrll bit32-An-direct-Unprefixed 5727 1.1 skrll bit32-An-indirect-Unprefixed 5728 1.1 skrll ) 5729 1.1 skrll ) 5730 1.1 skrll 5731 1.1 skrll (define-anyof-operand 5732 1.1 skrll (name bit32-16-8-Unprefixed) 5733 1.1 skrll (comment "m32c bit operand with 8 bit additional fields") 5734 1.1 skrll (attrs (machine 32)) 5735 1.1 skrll (mode BI) 5736 1.1 skrll (choices 5737 1.1 skrll bit32-16-11-An-relative-Unprefixed 5738 1.1 skrll bit32-16-11-SB-relative-Unprefixed 5739 1.1 skrll bit32-16-11-FB-relative-Unprefixed 5740 1.1 skrll ) 5741 1.1 skrll ) 5742 1.1 skrll 5743 1.1 skrll (define-anyof-operand 5744 1.1 skrll (name bit32-16-16-Unprefixed) 5745 1.1 skrll (comment "m32c bit operand with 16 bit additional fields") 5746 1.1 skrll (attrs (machine 32)) 5747 1.1 skrll (mode BI) 5748 1.1 skrll (choices 5749 1.1 skrll bit32-16-19-An-relative-Unprefixed 5750 1.1 skrll bit32-16-19-SB-relative-Unprefixed 5751 1.1 skrll bit32-16-19-FB-relative-Unprefixed 5752 1.1 skrll bit32-16-19-absolute-Unprefixed 5753 1.1 skrll ) 5754 1.1 skrll ) 5755 1.1 skrll 5756 1.1 skrll (define-anyof-operand 5757 1.1 skrll (name bit32-16-24-Unprefixed) 5758 1.1 skrll (comment "m32c bit operand with 24 bit additional fields") 5759 1.1 skrll (attrs (machine 32)) 5760 1.1 skrll (mode BI) 5761 1.1 skrll (choices 5762 1.1 skrll bit32-16-27-An-relative-Unprefixed 5763 1.1 skrll bit32-16-27-absolute-Unprefixed 5764 1.1 skrll ) 5765 1.1 skrll ) 5766 1.1 skrll 5767 1.1 skrll ;------------------------------------------------------------- 5768 1.1 skrll ; Operands for short format binary insns 5769 1.1 skrll ;------------------------------------------------------------- 5770 1.1 skrll 5771 1.1 skrll (define-anyof-operand 5772 1.1 skrll (name src16-2-S) 5773 1.1 skrll (comment "m16c source operand of size QI for short format insns") 5774 1.1 skrll (attrs (machine 16)) 5775 1.1 skrll (mode QI) 5776 1.1 skrll (choices 5777 1.1 skrll src16-2-S-8-SB-relative-QI 5778 1.1 skrll src16-2-S-8-FB-relative-QI 5779 1.1 skrll src16-2-S-16-absolute-QI 5780 1.1 skrll ) 5781 1.1 skrll ) 5782 1.1 skrll 5783 1.1 skrll (define-anyof-operand 5784 1.1 skrll (name src32-2-S-QI) 5785 1.1 skrll (comment "m32c source operand of size QI for short format insns") 5786 1.1 skrll (attrs (machine 32)) 5787 1.1 skrll (mode QI) 5788 1.1 skrll (choices 5789 1.1 skrll src32-2-S-8-SB-relative-QI 5790 1.1 skrll src32-2-S-8-FB-relative-QI 5791 1.1 skrll src32-2-S-16-absolute-QI 5792 1.1 skrll ) 5793 1.1 skrll ) 5794 1.1 skrll 5795 1.1 skrll (define-anyof-operand 5796 1.1 skrll (name src32-2-S-HI) 5797 1.1 skrll (comment "m32c source operand of size QI for short format insns") 5798 1.1 skrll (attrs (machine 32)) 5799 1.1 skrll (mode HI) 5800 1.1 skrll (choices 5801 1.1 skrll src32-2-S-8-SB-relative-HI 5802 1.1 skrll src32-2-S-8-FB-relative-HI 5803 1.1 skrll src32-2-S-16-absolute-HI 5804 1.1 skrll ) 5805 1.1 skrll ) 5806 1.1 skrll 5807 1.1 skrll (define-anyof-operand 5808 1.1 skrll (name Dst16-3-S-8) 5809 1.1 skrll (comment "m16c destination operand of size QI for short format insns") 5810 1.1 skrll (attrs (machine 16)) 5811 1.1 skrll (mode QI) 5812 1.1 skrll (choices 5813 1.1 skrll dst16-3-S-R0l-direct-QI 5814 1.1 skrll dst16-3-S-R0h-direct-QI 5815 1.1 skrll dst16-3-S-8-8-SB-relative-QI 5816 1.1 skrll dst16-3-S-8-8-FB-relative-QI 5817 1.1 skrll dst16-3-S-8-16-absolute-QI 5818 1.1 skrll ) 5819 1.1 skrll ) 5820 1.1 skrll 5821 1.1 skrll (define-anyof-operand 5822 1.1 skrll (name Dst16-3-S-16) 5823 1.1 skrll (comment "m16c destination operand of size QI for short format insns") 5824 1.1 skrll (attrs (machine 16)) 5825 1.1 skrll (mode QI) 5826 1.1 skrll (choices 5827 1.1 skrll dst16-3-S-R0l-direct-QI 5828 1.1 skrll dst16-3-S-R0h-direct-QI 5829 1.1 skrll dst16-3-S-16-8-SB-relative-QI 5830 1.1 skrll dst16-3-S-16-8-FB-relative-QI 5831 1.1 skrll dst16-3-S-16-16-absolute-QI 5832 1.1 skrll ) 5833 1.1 skrll ) 5834 1.1 skrll 5835 1.1 skrll (define-anyof-operand 5836 1.1 skrll (name srcdst16-r0l-r0h-S) 5837 1.1 skrll (comment "m16c r0l/r0h operand of size QI for short format insns") 5838 1.1 skrll (attrs (machine 16)) 5839 1.1 skrll (mode SI) 5840 1.1 skrll (choices 5841 1.1 skrll srcdst16-r0l-r0h-S-derived 5842 1.1 skrll ) 5843 1.1 skrll ) 5844 1.1 skrll 5845 1.1 skrll (define-anyof-operand 5846 1.1 skrll (name dst32-2-S-basic-QI) 5847 1.1 skrll (comment "m32c r0l operand of size QI for short format binary insns") 5848 1.1 skrll (attrs (machine 32)) 5849 1.1 skrll (mode QI) 5850 1.1 skrll (choices 5851 1.1 skrll dst32-2-S-R0l-direct-QI 5852 1.1 skrll ) 5853 1.1 skrll ) 5854 1.1 skrll 5855 1.1 skrll (define-anyof-operand 5856 1.1 skrll (name dst32-2-S-basic-HI) 5857 1.1 skrll (comment "m32c r0 operand of size HI for short format binary insns") 5858 1.1 skrll (attrs (machine 32)) 5859 1.1 skrll (mode HI) 5860 1.1 skrll (choices 5861 1.1 skrll dst32-2-S-R0-direct-HI 5862 1.1 skrll ) 5863 1.1 skrll ) 5864 1.1 skrll 5865 1.1 skrll (define-pmacro (dst32-2-S-operands xmode) 5866 1.1 skrll (begin 5867 1.1 skrll (define-anyof-operand 5868 1.1 skrll (name (.sym dst32-2-S-8- xmode)) 5869 1.1 skrll (comment "m32c operand of size " xmode " for short format binary insns") 5870 1.1 skrll (attrs (machine 32)) 5871 1.1 skrll (mode xmode) 5872 1.1 skrll (choices 5873 1.1 skrll (.sym dst32-2-S-8-SB-relative- xmode) 5874 1.1 skrll (.sym dst32-2-S-8-FB-relative- xmode) 5875 1.1 skrll ) 5876 1.1 skrll ) 5877 1.1 skrll (define-anyof-operand 5878 1.1 skrll (name (.sym dst32-2-S-16- xmode)) 5879 1.1 skrll (comment "m32c operand of size " xmode " for short format binary insns") 5880 1.1 skrll (attrs (machine 32)) 5881 1.1 skrll (mode xmode) 5882 1.1 skrll (choices 5883 1.1 skrll (.sym dst32-2-S-16-absolute- xmode) 5884 1.1 skrll ) 5885 1.1 skrll ) 5886 1.1 skrll ; (define-anyof-operand 5887 1.1 skrll ; (name (.sym dst32-2-S-8-indirect- xmode)) 5888 1.1 skrll ; (comment "m32c operand of size " xmode " for short format binary insns") 5889 1.1 skrll ; (attrs (machine 32)) 5890 1.1 skrll ; (mode xmode) 5891 1.1 skrll ; (choices 5892 1.1 skrll ; (.sym dst32-2-S-8-SB-relative-indirect- xmode) 5893 1.1 skrll ; (.sym dst32-2-S-8-FB-relative-indirect- xmode) 5894 1.1 skrll ; ) 5895 1.1 skrll ; ) 5896 1.1 skrll ; (define-anyof-operand 5897 1.1 skrll ; (name (.sym dst32-2-S-absolute-indirect- xmode)) 5898 1.1 skrll ; (comment "m32c operand of size " xmode " for short format binary insns") 5899 1.1 skrll ; (attrs (machine 32)) 5900 1.1 skrll ; (mode xmode) 5901 1.1 skrll ; (choices 5902 1.1 skrll ; (.sym dst32-2-S-16-absolute-indirect- xmode) 5903 1.1 skrll ; ) 5904 1.1 skrll ; ) 5905 1.1 skrll ) 5906 1.1 skrll ) 5907 1.1 skrll 5908 1.1 skrll (dst32-2-S-operands QI) 5909 1.1 skrll (dst32-2-S-operands HI) 5910 1.1 skrll (dst32-2-S-operands SI) 5911 1.1 skrll 5912 1.1 skrll (define-anyof-operand 5913 1.1 skrll (name dst32-an-S) 5914 1.1 skrll (comment "m32c An operand for short format binary insns") 5915 1.1 skrll (attrs (machine 32)) 5916 1.1 skrll (mode HI) 5917 1.1 skrll (choices 5918 1.1 skrll dst32-1-S-A0-direct-HI 5919 1.1 skrll dst32-1-S-A1-direct-HI 5920 1.1 skrll ) 5921 1.1 skrll ) 5922 1.1 skrll 5923 1.1 skrll (define-anyof-operand 5924 1.1 skrll (name bit16-11-S) 5925 1.1 skrll (comment "m16c bit operand for short format insns") 5926 1.1 skrll (attrs (machine 16)) 5927 1.1 skrll (mode BI) 5928 1.1 skrll (choices 5929 1.1 skrll bit16-11-SB-relative-S 5930 1.1 skrll ) 5931 1.1 skrll ) 5932 1.1 skrll 5933 1.1 skrll (define-anyof-operand 5934 1.1 skrll (name Rn16-push-S-anyof) 5935 1.1 skrll (comment "m16c bit operand for short format insns") 5936 1.1 skrll (attrs (machine 16)) 5937 1.1 skrll (mode QI) 5938 1.1 skrll (choices 5939 1.1 skrll Rn16-push-S-derived 5940 1.1 skrll ) 5941 1.1 skrll ) 5942 1.1 skrll 5943 1.1 skrll (define-anyof-operand 5944 1.1 skrll (name An16-push-S-anyof) 5945 1.1 skrll (comment "m16c bit operand for short format insns") 5946 1.1 skrll (attrs (machine 16)) 5947 1.1 skrll (mode HI) 5948 1.1 skrll (choices 5949 1.1 skrll An16-push-S-derived 5950 1.1 skrll ) 5951 1.1 skrll ) 5952 1.1 skrll 5953 1.1 skrll ;============================================================= 5954 1.1 skrll ; Common macros for instruction definitions 5955 1.1 skrll ; 5956 1.1 skrll (define-pmacro (set-z x) 5957 1.1 skrll (sequence () 5958 1.1 skrll (set zbit (zflag x))) 5959 1.1 skrll 5960 1.1 skrll ) 5961 1.1 skrll 5962 1.1 skrll (define-pmacro (set-s x) 5963 1.1 skrll (sequence () 5964 1.1 skrll (set sbit (nflag x))) 5965 1.1 skrll ) 5966 1.1 skrll 5967 1.1 skrll (define-pmacro (set-z-and-s x) 5968 1.1 skrll (sequence () 5969 1.1 skrll (set-z x) 5970 1.1 skrll (set-s x)) 5971 1.1 skrll ) 5972 1.1 skrll 5974 1.1 skrll ;============================================================= 5975 1.1 skrll ; Unary insn macros 5976 1.1 skrll ;------------------------------------------------------------- 5977 1.1 skrll 5978 1.1 skrll (define-pmacro (unary-insn-defn-g mach group mode wstr op encoding sem opg) 5979 1.1 skrll (dni (.sym op mach wstr - group) 5980 1.1 skrll (.str op wstr opg " dst" mach "-" group "-" mode) 5981 1.1 skrll ((machine mach) RL_1ADDR) 5982 1.1 skrll (.str op wstr opg " ${dst" mach "-" group "-" mode "}") 5983 1.1 skrll encoding 5984 1.1 skrll (sem mode (.sym dst mach - group - mode)) 5985 1.1 skrll ()) 5986 1.1 skrll ) 5987 1.1 skrll 5988 1.1 skrll (define-pmacro (unary-insn-defn mach group mode wstr op encoding sem) 5989 1.1 skrll (unary-insn-defn-g mach group mode wstr op encoding sem "") 5990 1.1 skrll ) 5991 1.1 skrll 5992 1.1 skrll 5993 1.1 skrll (define-pmacro (unary16-defn-g mode wstr wbit op opc1 opc2 opc3 sem opg) 5994 1.1 skrll (unary-insn-defn-g 16 16 mode wstr op 5995 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-16- mode)) 5996 1.1 skrll sem opg) 5997 1.1 skrll ) 5998 1.1 skrll (define-pmacro (unary16-defn mode wstr wbit op opc1 opc2 opc3 sem) 5999 1.1 skrll (unary-16-defn-g mode wstr wbit op opc1 opc2 opc3 sem "") 6000 1.1 skrll ) 6001 1.1 skrll 6002 1.1 skrll (define-pmacro (unary32-defn-g mode wstr wbit op opc1 opc2 opc3 sem opg) 6003 1.1 skrll (begin 6004 1.1 skrll ; Multi insns are tried for assembly in the reverse order in which they appear here, so 6005 1.1 skrll ; define the absolute-indirect insns first in order to prevent them from being selected 6006 1.1 skrll ; when the mode is register-indirect 6007 1.1 skrll ; (unary-insn-defn 32 24-absolute-indirect mode wstr op 6008 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 opc1) (f-15-1 wbit) (.sym dst32-24-absolute-indirect- mode) (f-18-2 opc2) (f-20-4 opc3)) 6009 1.1 skrll ; sem) 6010 1.1 skrll (unary-insn-defn-g 32 16-Unprefixed mode wstr op 6011 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-16-Unprefixed- mode) (f-10-2 opc2) (f-12-4 opc3)) 6012 1.1 skrll sem opg) 6013 1.1 skrll ; (unary-insn-defn 32 24-indirect mode wstr op 6014 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 opc1) (f-15-1 wbit) (.sym dst32-24-indirect- mode) (f-18-2 opc2) (f-20-4 opc3)) 6015 1.1 skrll ; sem) 6016 1.1 skrll ) 6017 1.1 skrll ) 6018 1.1 skrll (define-pmacro (unary32-defn mode wstr wbit op opc1 opc2 opc3 sem) 6019 1.1 skrll (unary32-defn-g mode wstr wbit op opc1 opc2 opc3 sem "") 6020 1.1 skrll ) 6021 1.1 skrll 6022 1.1 skrll (define-pmacro (unary-insn-mach-g mach op opc1 opc2 opc3 sem opg) 6023 1.1 skrll (begin 6024 1.1 skrll (.apply (.sym unary mach -defn-g) (QI .b 0 op opc1 opc2 opc3 sem opg)) 6025 1.1 skrll (.apply (.sym unary mach -defn-g) (HI .w 1 op opc1 opc2 opc3 sem opg)) 6026 1.1 skrll ) 6027 1.1 skrll ) 6028 1.1 skrll (define-pmacro (unary-insn-mach mach op opc1 opc2 opc3 sem) 6029 1.1 skrll (unary-insn-mach-g mach op opc1 opc2 opc3 sem "") 6030 1.1 skrll ) 6031 1.1 skrll 6032 1.1 skrll (define-pmacro (unary-insn op opc16-1 opc16-2 opc16-3 opc32-1 opc32-2 opc32-3 sem) 6033 1.1 skrll (begin 6034 1.1 skrll (unary-insn-mach-g 16 op opc16-1 opc16-2 opc16-3 sem "") 6035 1.1 skrll (unary-insn-mach-g 32 op opc32-1 opc32-2 opc32-3 sem "") 6036 1.1 skrll ) 6037 1.1 skrll ) 6038 1.1 skrll 6039 1.1 skrll (define-pmacro (unary-insn-g op opc16-1 opc16-2 opc16-3 opc32-1 opc32-2 opc32-3 sem) 6040 1.1 skrll (begin 6041 1.1 skrll (unary-insn-mach-g 16 op opc16-1 opc16-2 opc16-3 sem "$G") 6042 1.1 skrll (unary-insn-mach-g 32 op opc32-1 opc32-2 opc32-3 sem "$G") 6043 1.1 skrll ) 6044 1.1 skrll ) 6045 1.1 skrll 6046 1.1 skrll ;------------------------------------------------------------- 6047 1.1 skrll ; Sign/zero extension macros 6048 1.1 skrll ;------------------------------------------------------------- 6049 1.1 skrll 6050 1.1 skrll (define-pmacro (ext-insn-defn mach group smode dmode wstr op encoding sem) 6051 1.1 skrll (dni (.sym op mach wstr - group) 6052 1.1 skrll (.str op wstr " dst" mach "-" group "-" smode) 6053 1.1 skrll ((machine mach)) 6054 1.1 skrll (.str op wstr " ${dst" mach "-" group "-" smode "}") 6055 1.1 skrll encoding 6056 1.1 skrll (sem smode dmode (.sym dst mach - group - smode) (.sym dst mach - group - smode)) 6057 1.1 skrll ()) 6058 1.1 skrll ) 6059 1.1 skrll 6060 1.1 skrll (define-pmacro (ext16-defn smode dmode wstr wbit op opc1 opc2 opc3 sem) 6061 1.1 skrll (ext-insn-defn 16 16-Ext smode dmode wstr op 6062 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-16-Ext- smode)) 6063 1.1 skrll sem) 6064 1.1 skrll ) 6065 1.1 skrll 6066 1.1 skrll (define-pmacro (ext32-defn smode dmode wstr wbit op opc1 opc2 opc3 sem) 6067 1.1 skrll (ext-insn-defn 32 16-ExtUnprefixed smode dmode wstr op 6068 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst32-16-ExtUnprefixed- smode)) 6069 1.1 skrll sem) 6070 1.1 skrll ) 6071 1.1 skrll 6072 1.1 skrll (define-pmacro (ext32-binary-insn src-group dst-group op wstr encoding sem) 6073 1.1 skrll (dni (.sym op 32 wstr - src-group - dst-group) 6074 1.1 skrll (.str op 32 wstr " src32-" src-group "-QI,dst32-" dst-group "-HI") 6075 1.1 skrll ((machine 32)) 6076 1.1 skrll (.str op wstr " ${src32-" src-group "-QI},${dst32-" dst-group "-HI}") 6077 1.1 skrll encoding 6078 1.1 skrll (sem QI HI (.sym src32- src-group -QI) (.sym dst32 - dst-group -HI)) 6079 1.1 skrll ()) 6080 1.1 skrll ) 6081 1.1 skrll 6082 1.1 skrll (define-pmacro (ext32-binary-defn op wstr opc1 opc2 sem) 6083 1.1 skrll (begin 6084 1.1 skrll (ext32-binary-insn basic-ExtPrefixed 24-Prefixed op wstr 6085 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-1 opc1) (f-15-1 0) src32-basic-ExtPrefixed-QI dst32-24-Prefixed-HI (f-20-4 opc2)) 6086 1.1 skrll sem) 6087 1.1 skrll (ext32-binary-insn 24-24-Prefixed 48-Prefixed op wstr 6088 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-1 opc1) (f-15-1 0) src32-24-24-Prefixed-QI dst32-48-Prefixed-HI (f-20-4 opc2)) 6089 1.1 skrll sem) 6090 1.1 skrll (ext32-binary-insn 24-16-Prefixed 40-Prefixed op wstr 6091 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-1 opc1) (f-15-1 0) src32-24-16-Prefixed-QI dst32-40-Prefixed-HI (f-20-4 opc2)) 6092 1.1 skrll sem) 6093 1.1 skrll (ext32-binary-insn 24-8-Prefixed 32-Prefixed op wstr 6094 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-1 opc1) (f-15-1 0) src32-24-8-Prefixed-QI dst32-32-Prefixed-HI (f-20-4 opc2)) 6095 1.1 skrll sem) 6096 1.1 skrll ) 6097 1.1 skrll ) 6098 1.1 skrll 6099 1.1 skrll ;============================================================= 6100 1.1 skrll ; Binary Arithmetic macros 6101 1.1 skrll ; 6102 1.1 skrll ;------------------------------------------------------------- 6103 1.1 skrll ;<arith>.size:S src2,r0[l] -- for m32c 6104 1.1 skrll ;------------------------------------------------------------- 6105 1.1 skrll 6106 1.1 skrll (define-pmacro (binary-arith32-S-src2 op xmode wstr wbit opc1 opc2 sem) 6107 1.1 skrll (dni (.sym op 32 wstr .S-src2-r0- xmode) 6108 1.1 skrll (.str op 32 wstr ":S src2,r0[l]") 6109 1.1 skrll ((machine 32)) 6110 1.1 skrll (.str op wstr"$S ${src32-2-S-" xmode "},${Dst32R0" xmode "-S}") 6111 1.1 skrll (+ opc1 opc2 (.sym src32-2-S- xmode) (f-7-1 wbit)) 6112 1.1 skrll (sem xmode (.sym src32-2-S- xmode) (.sym Dst32R0 xmode -S)) 6113 1.1 skrll ()) 6114 1.1 skrll ) 6115 1.1 skrll 6116 1.1 skrll ;------------------------------------------------------------- 6117 1.1 skrll ;<arith>.b:S src2,r0l/r0h -- for m16c 6118 1.1 skrll ;------------------------------------------------------------- 6119 1.1 skrll 6120 1.1 skrll (define-pmacro (binary-arith16-b-S-src2 op opc1 opc2 sem) 6121 1.1 skrll (begin 6122 1.1 skrll (dni (.sym op 16 .b.S-src2) 6123 1.1 skrll (.str op ".b:S src2,r0[lh]") 6124 1.1 skrll ((machine 16)) 6125 1.1 skrll (.str op ".b$S ${src16-2-S},${Dst16RnQI-S}") 6126 1.1 skrll (+ opc1 opc2 Dst16RnQI-S src16-2-S) 6127 1.1 skrll (sem QI src16-2-S Dst16RnQI-S) 6128 1.1 skrll ()) 6129 1.1 skrll (dni (.sym op 16 .b.S-r0l-r0h) 6130 1.1 skrll (.str op ".b:S r0l/r0h") 6131 1.1 skrll ((machine 16)) 6132 1.1 skrll (.str op ".b$S ${srcdst16-r0l-r0h-S}") 6133 1.1 skrll (+ opc1 opc2 srcdst16-r0l-r0h-S) 6134 1.1 skrll (if (eq srcdst16-r0l-r0h-S 0) 6135 1.1 skrll (sem QI R0h R0l) 6136 1.1 skrll (sem QI R0l R0h)) 6137 1.1 skrll ()) 6138 1.1 skrll ) 6139 1.1 skrll ) 6140 1.1 skrll 6141 1.1 skrll ;------------------------------------------------------------- 6142 1.1 skrll ;<arith>.b:S #imm8,dst3 -- for m16c 6143 1.1 skrll ;------------------------------------------------------------- 6144 1.1 skrll 6145 1.1 skrll (define-pmacro (binary-arith16-b-S-imm8-dst3 op sz opc1 opc2 sem) 6146 1.1 skrll (dni (.sym op 16 .b.S-imm8-dst3) 6147 1.1 skrll (.str op sz ":S imm8,dst3") 6148 1.1 skrll ((machine 16)) 6149 1.1 skrll (.str op sz "$S #${Imm-8-QI},${Dst16-3-S-16}") 6150 1.1 skrll (+ opc1 opc2 Dst16-3-S-16 Imm-8-QI) 6151 1.1 skrll (sem QI Imm-8-QI Dst16-3-S-16) 6152 1.1 skrll ()) 6153 1.1 skrll ) 6154 1.1 skrll 6155 1.1 skrll ;------------------------------------------------------------- 6156 1.1 skrll ;<arith>.size:Q #imm4,sp -- for m16c 6157 1.1 skrll ;------------------------------------------------------------- 6158 1.1 skrll 6159 1.1 skrll (define-pmacro (binary-arith16-Q-sp op opc1 opc2 opc3 sem) 6160 1.1 skrll (dni (.sym op 16 -wQ-sp) 6161 1.1 skrll (.str op ".w:q #imm4,sp") 6162 1.1 skrll ((machine 16)) 6163 1.1 skrll (.str op ".w$Q #${Imm-12-s4},sp") 6164 1.1 skrll (+ opc1 opc2 opc3 Imm-12-s4) 6165 1.1 skrll (sem QI Imm-12-s4 sp) 6166 1.1 skrll ()) 6167 1.1 skrll ) 6168 1.1 skrll 6169 1.1 skrll ;------------------------------------------------------------- 6170 1.1 skrll ;<arith>.size:G #imm,sp -- for m16c 6171 1.1 skrll ;------------------------------------------------------------- 6172 1.1 skrll 6173 1.1 skrll (define-pmacro (binary-arith16-G-sp-defn mode wstr wbit op opc1 opc2 opc3 opc4 sem) 6174 1.1 skrll (dni (.sym op 16 wstr - G-sp) 6175 1.1 skrll (.str op wstr " imm-sp " mode) 6176 1.1 skrll ((machine 16)) 6177 1.1 skrll (.str op wstr "$G #${Imm-16-" mode "},sp") 6178 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 opc4 (.sym Imm-16- mode)) 6179 1.1 skrll (sem mode (.sym Imm-16- mode) sp) 6180 1.1 skrll ()) 6181 1.1 skrll ) 6182 1.1 skrll 6183 1.1 skrll (define-pmacro (binary-arith16-G-sp op opc1 opc2 opc3 opc4 sem) 6184 1.1 skrll (begin 6185 1.1 skrll (binary-arith16-G-sp-defn QI .b 0 op opc1 opc2 opc3 opc4 sem) 6186 1.1 skrll (binary-arith16-G-sp-defn HI .w 1 op opc1 opc2 opc3 opc4 sem) 6187 1.1 skrll ) 6188 1.1 skrll ) 6189 1.1 skrll 6190 1.1 skrll ;------------------------------------------------------------- 6191 1.1 skrll ;<arith>.size:G #imm,dst -- for m16c and m32c 6192 1.1 skrll ;------------------------------------------------------------- 6193 1.1 skrll 6194 1.1 skrll (define-pmacro (binary-arith-imm-dst-defn mach src dstgroup dmode wstr op suffix encoding sem) 6195 1.1 skrll (dni (.sym op mach wstr - imm-G - dstgroup) 6196 1.1 skrll (.str op wstr " " mach "-imm-G-" dstgroup "-" dmode) 6197 1.1 skrll ((machine mach) RL_1ADDR) 6198 1.1 skrll (.str op wstr "$"suffix " #${" src "},${dst" mach "-" dstgroup "-" dmode "}") 6199 1.1 skrll encoding 6200 1.1 skrll (sem dmode src (.sym dst mach - dstgroup - dmode)) 6201 1.1 skrll ()) 6202 1.1 skrll ) 6203 1.1 skrll 6204 1.1 skrll ; m16c variants 6205 1.1 skrll (define-pmacro (binary-arith16-imm-dst-defn smode dmode wstr wbit op suffix opc1 opc2 opc3 sem) 6206 1.1 skrll (begin 6207 1.1 skrll (binary-arith-imm-dst-defn 16 (.sym Imm-32- smode) 16-16 dmode wstr op suffix 6208 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-16-16- dmode) (.sym Imm-32- smode)) 6209 1.1 skrll sem) 6210 1.1 skrll (binary-arith-imm-dst-defn 16 (.sym Imm-24- smode) 16-8 dmode wstr op suffix 6211 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-16-8- dmode) (.sym Imm-24- smode)) 6212 1.1 skrll sem) 6213 1.1 skrll (binary-arith-imm-dst-defn 16 (.sym Imm-16- smode) basic dmode wstr op suffix 6214 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-basic- dmode) (.sym Imm-16- smode)) 6215 1.1 skrll sem) 6216 1.1 skrll ) 6217 1.1 skrll ) 6218 1.1 skrll 6219 1.1 skrll ; m32c Unprefixed variants 6220 1.1 skrll (define-pmacro (binary-arith32-imm-dst-Unprefixed smode dmode wstr wbit op suffix opc1 opc2 opc3 sem) 6221 1.1 skrll (begin 6222 1.1 skrll (binary-arith-imm-dst-defn 32 (.sym Imm-40- smode) 16-24-Unprefixed dmode wstr op suffix 6223 1.1 skrll (+ (f-0-4 opc1) (f-10-2 opc2) (f-7-1 wbit) (f-12-4 opc3) (.sym dst32-16-24-Unprefixed- dmode) (.sym Imm-40- smode)) 6224 1.1 skrll sem) 6225 1.1 skrll (binary-arith-imm-dst-defn 32 (.sym Imm-32- smode) 16-16-Unprefixed dmode wstr op suffix 6226 1.1 skrll (+ (f-0-4 opc1) (f-10-2 opc2) (f-7-1 wbit) (f-12-4 opc3) (.sym dst32-16-16-Unprefixed- dmode) (.sym Imm-32- smode)) 6227 1.1 skrll sem) 6228 1.1 skrll (binary-arith-imm-dst-defn 32 (.sym Imm-24- smode) 16-8-Unprefixed dmode wstr op suffix 6229 1.1 skrll (+ (f-0-4 opc1) (f-10-2 opc2) (f-7-1 wbit) (f-12-4 opc3) (.sym dst32-16-8-Unprefixed- dmode) (.sym Imm-24- smode)) 6230 1.1 skrll sem) 6231 1.1 skrll (binary-arith-imm-dst-defn 32 (.sym Imm-16- smode) basic-Unprefixed dmode wstr op suffix 6232 1.1 skrll (+ (f-0-4 opc1) (f-10-2 opc2) (f-7-1 wbit) (f-12-4 opc3) (.sym dst32-basic-Unprefixed- dmode) (.sym Imm-16- smode)) 6233 1.1 skrll sem) 6234 1.1 skrll ) 6235 1.1 skrll ) 6236 1.1 skrll 6237 1.1 skrll ; m32c Prefixed variants 6238 1.1 skrll (define-pmacro (binary-arith32-imm-dst-Prefixed smode dmode wstr wbit op suffix opc1 opc2 opc3 sem) 6239 1.1 skrll (begin 6240 1.1 skrll (binary-arith-imm-dst-defn 32 (.sym Imm-48- smode) 24-24-Prefixed dmode wstr op suffix 6241 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) (.sym dst32-24-24-Prefixed- dmode) (.sym Imm-48- smode)) 6242 1.1 skrll sem) 6243 1.1 skrll (binary-arith-imm-dst-defn 32 (.sym Imm-40- smode) 24-16-Prefixed dmode wstr op suffix 6244 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) (.sym dst32-24-16-Prefixed- dmode) (.sym Imm-40- smode)) 6245 1.1 skrll sem) 6246 1.1 skrll (binary-arith-imm-dst-defn 32 (.sym Imm-32- smode) 24-8-Prefixed dmode wstr op suffix 6247 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) (.sym dst32-24-8-Prefixed- dmode) (.sym Imm-32- smode)) 6248 1.1 skrll sem) 6249 1.1 skrll (binary-arith-imm-dst-defn 32 (.sym Imm-24- smode) basic-Prefixed dmode wstr op suffix 6250 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) (.sym dst32-basic-Prefixed- dmode) (.sym Imm-24- smode)) 6251 1.1 skrll sem) 6252 1.1 skrll ) 6253 1.1 skrll ) 6254 1.1 skrll 6255 1.1 skrll ; All m32c variants 6256 1.1 skrll (define-pmacro (binary-arith32-imm-dst-defn smode dmode wstr wbit op suffix opc1 opc2 opc3 sem) 6257 1.1 skrll (begin 6258 1.1 skrll ; Multi insns are tried for assembly in the reverse order in which they appear here, so 6259 1.1 skrll ; define the absolute-indirect insns first in order to prevent them from being selected 6260 1.1 skrll ; when the mode is register-indirect 6261 1.1 skrll ; (binary-arith-imm-dst-defn 32 (.sym Imm-48- smode) 24-24-absolute-indirect dmode wstr op suffix 6262 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) (.sym dst32-24-24-absolute-indirect- dmode) (.sym Imm-48- smode)) 6263 1.1 skrll ; sem) 6264 1.1 skrll ; (binary-arith-imm-dst-defn 32 (.sym Imm-40- smode) 24-16-absolute-indirect dmode wstr op suffix 6265 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) (.sym dst32-24-16-absolute-indirect- dmode) (.sym Imm-40- smode)) 6266 1.1 skrll ; sem) 6267 1.1 skrll ; Unprefixed modes next 6268 1.1 skrll (binary-arith32-imm-dst-Unprefixed smode dmode wstr wbit op suffix opc1 opc2 opc3 sem) 6269 1.1 skrll 6270 1.1 skrll ; Remaining indirect modes 6271 1.1 skrll ; (binary-arith-imm-dst-defn 32 (.sym Imm-24- smode) basic-indirect dmode wstr op suffix 6272 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) (.sym dst32-basic-indirect- dmode) (.sym Imm-24- smode)) 6273 1.1 skrll ; sem) 6274 1.1 skrll ; (binary-arith-imm-dst-defn 32 (.sym Imm-48- smode) 24-24-indirect dmode wstr op suffix 6275 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) (.sym dst32-24-24-indirect- dmode) (.sym Imm-48- smode)) 6276 1.1 skrll ; sem) 6277 1.1 skrll ; (binary-arith-imm-dst-defn 32 (.sym Imm-40- smode) 24-16-indirect dmode wstr op suffix 6278 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) (.sym dst32-24-16-indirect- dmode) (.sym Imm-40- smode)) 6279 1.1 skrll ; sem) 6280 1.1 skrll ; (binary-arith-imm-dst-defn 32 (.sym Imm-32- smode) 24-8-indirect dmode wstr op suffix 6281 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) (.sym dst32-24-8-indirect- dmode) (.sym Imm-32- smode)) 6282 1.1 skrll ; sem) 6283 1.1 skrll ) 6284 1.1 skrll ) 6285 1.1 skrll 6286 1.1 skrll (define-pmacro (binary-arith-imm-dst-mach mach op suffix opc1 opc2 opc3 sem) 6287 1.1 skrll (begin 6288 1.1 skrll (.apply (.sym binary-arith mach -imm-dst-defn) (QI QI .b 0 op suffix opc1 opc2 opc3 sem)) 6289 1.1 skrll (.apply (.sym binary-arith mach -imm-dst-defn) (HI HI .w 1 op suffix opc1 opc2 opc3 sem)) 6290 1.1 skrll ) 6291 1.1 skrll ) 6292 1.1 skrll 6293 1.1 skrll (define-pmacro (binary-arith-imm-dst op suffix opc16-1 opc16-2 opc16-3 opc32-1 opc32-2 opc32-3 sem) 6294 1.1 skrll (begin 6295 1.1 skrll (binary-arith-imm-dst-mach 16 op suffix opc16-1 opc16-2 opc16-3 sem) 6296 1.1 skrll (binary-arith-imm-dst-mach 32 op suffix opc32-1 opc32-2 opc32-3 sem) 6297 1.1 skrll ) 6298 1.1 skrll ) 6299 1.1 skrll 6300 1.1 skrll ;------------------------------------------------------------- 6301 1.1 skrll ;<arith>.size:Q #imm4,dst -- for m16c and m32c 6302 1.1 skrll ;------------------------------------------------------------- 6303 1.1 skrll 6304 1.1 skrll (define-pmacro (binary-arith-imm4-dst-defn mach src dstgroup mode wstr op encoding sem) 6305 1.1 skrll (dni (.sym op mach wstr - imm4-Q - dstgroup) 6306 1.1 skrll (.str op wstr " " mach "-imm4-Q-" dstgroup "-" mode) 6307 1.1 skrll ((machine mach) RL_1ADDR) 6308 1.1 skrll (.str op wstr "$Q #${" src "},${dst" mach "-" dstgroup "-" mode "}") 6309 1.1 skrll encoding 6310 1.1 skrll (sem mode src (.sym dst mach - dstgroup - mode)) 6311 1.1 skrll ()) 6312 1.1 skrll ) 6313 1.1 skrll 6314 1.1 skrll ; m16c variants 6315 1.1 skrll (define-pmacro (binary-arith16-imm4-dst-defn mode wstr wbit1 wbit2 op opc1 opc2 sem) 6316 1.1 skrll (binary-arith-imm4-dst-defn 16 Imm-8-s4 16 mode wstr op 6317 1.1 skrll (+ opc1 opc2 (f-7-1 wbit2) Imm-8-s4 (.sym dst16-16- mode)) 6318 1.1 skrll sem) 6319 1.1 skrll ) 6320 1.1 skrll 6321 1.1 skrll (define-pmacro (binary-arith16-shimm4-dst-defn mode wstr wbit1 wbit2 op opc1 opc2 sem) 6322 1.1 skrll (binary-arith-imm4-dst-defn 16 Imm-sh-8-s4 16 mode wstr op 6323 1.1 skrll (+ opc1 opc2 (f-7-1 wbit2) Imm-sh-8-s4 (.sym dst16-16- mode)) 6324 1.1 skrll sem) 6325 1.1 skrll ) 6326 1.1 skrll 6327 1.1 skrll ; m32c variants 6328 1.1 skrll (define-pmacro (binary-arith32-imm4-dst-defn mode wstr wbit1 wbit2 op opc1 opc2 sem) 6329 1.1 skrll (begin 6330 1.1 skrll ; Multi insns are tried for assembly in the reverse order in which they appear here, so 6331 1.1 skrll ; define the absolute-indirect insns first in order to prevent them from being selected 6332 1.1 skrll ; when the mode is register-indirect 6333 1.1 skrll ; (binary-arith-imm4-dst-defn 32 Imm-20-s4 24-absolute-indirect mode wstr op 6334 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-3 opc1) (f-11-1 wbit1) (f-15-1 wbit2) (.sym dst32-24-absolute-indirect- mode) (f-18-2 opc2) Imm-20-s4) 6335 1.1 skrll ; sem) 6336 1.1 skrll (binary-arith-imm4-dst-defn 32 Imm-12-s4 16-Unprefixed mode wstr op 6337 1.1 skrll (+ (f-0-3 opc1) (f-3-1 wbit1) (f-7-1 wbit2) (.sym dst32-16-Unprefixed- mode) (f-10-2 opc2) Imm-12-s4) 6338 1.1 skrll sem) 6339 1.1 skrll ; (binary-arith-imm4-dst-defn 32 Imm-20-s4 24-indirect mode wstr op 6340 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-3 opc1) (f-11-1 wbit1) (f-15-1 wbit2) (.sym dst32-24-indirect- mode) (f-18-2 opc2) Imm-20-s4) 6341 1.1 skrll ; sem) 6342 1.1 skrll ) 6343 1.1 skrll ) 6344 1.1 skrll 6345 1.1 skrll (define-pmacro (binary-arith32-shimm4-dst-defn mode wstr wbit1 wbit2 op opc1 opc2 sem) 6346 1.1 skrll (begin 6347 1.1 skrll ; Multi insns are tried for assembly in the reverse order in which they appear here, so 6348 1.1 skrll ; define the absolute-indirect insns first in order to prevent them from being selected 6349 1.1 skrll ; when the mode is register-indirect 6350 1.1 skrll ; (binary-arith-imm4-dst-defn 32 Imm-sh-20-s4 24-absolute-indirect mode wstr op 6351 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-3 opc1) (f-11-1 wbit1) (f-15-1 wbit2) (.sym dst32-24-absolute-indirect- mode) (f-18-2 opc2) Imm-sh-20-s4) 6352 1.1 skrll ; sem) 6353 1.1 skrll (binary-arith-imm4-dst-defn 32 Imm-sh-12-s4 16-Unprefixed mode wstr op 6354 1.1 skrll (+ (f-0-3 opc1) (f-3-1 wbit1) (f-7-1 wbit2) (.sym dst32-16-Unprefixed- mode) (f-10-2 opc2) Imm-sh-12-s4) 6355 1.1 skrll sem) 6356 1.1 skrll ; (binary-arith-imm4-dst-defn 32 Imm-sh-20-s4 24-indirect mode wstr op 6357 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-3 opc1) (f-11-1 wbit1) (f-15-1 wbit2) (.sym dst32-24-indirect- mode) (f-18-2 opc2) Imm-sh-20-s4) 6358 1.1 skrll ; sem) 6359 1.1 skrll ) 6360 1.1 skrll ) 6361 1.1 skrll 6362 1.1 skrll (define-pmacro (binary-arith-imm4-dst-mach mach op opc1 opc2 sem) 6363 1.1 skrll (begin 6364 1.1 skrll (.apply (.sym binary-arith mach -imm4-dst-defn) (QI .b 0 0 op opc1 opc2 sem)) 6365 1.1 skrll (.apply (.sym binary-arith mach -imm4-dst-defn) (HI .w 0 1 op opc1 opc2 sem)) 6366 1.1 skrll ) 6367 1.1 skrll ) 6368 1.1 skrll 6369 1.1 skrll (define-pmacro (binary-arith-imm4-dst op opc16-1 opc16-2 opc32-1 opc32-2 sem) 6370 1.1 skrll (begin 6371 1.1 skrll (binary-arith-imm4-dst-mach 16 op opc16-1 opc16-2 sem) 6372 1.1 skrll (binary-arith-imm4-dst-mach 32 op opc32-1 opc32-2 sem) 6373 1.1 skrll ) 6374 1.1 skrll ) 6375 1.1 skrll 6376 1.1 skrll ;------------------------------------------------------------- 6377 1.1 skrll ;<arith>.size:G src,dst -- for m16c and m32c 6378 1.1 skrll ;------------------------------------------------------------- 6379 1.1 skrll 6380 1.1 skrll (define-pmacro (binary-arith-src-dst-defn mach srcgroup dstgroup smode dmode wstr op suffix encoding sem) 6381 1.1 skrll (dni (.sym op mach wstr - srcgroup - dstgroup) 6382 1.1 skrll (.str op wstr " dst" mach "-" srcgroup "-" dstgroup "-" dmode) 6383 1.1 skrll ((machine mach) RL_2ADDR) 6384 1.1 skrll (.str op wstr "$" suffix " ${src" mach "-" srcgroup "-" smode "},${dst" mach "-" dstgroup "-" dmode "}") 6385 1.1 skrll encoding 6386 1.1 skrll (sem dmode (.sym src mach - srcgroup - smode) (.sym dst mach - dstgroup - dmode)) 6387 1.1 skrll ()) 6388 1.1 skrll ) 6389 1.1 skrll 6390 1.1 skrll ; m16c variants 6391 1.1 skrll (define-pmacro (binary-arith16-src-dst-defn smode dmode wstr wbit op suffix opc1 opc2 sem) 6392 1.1 skrll (begin 6393 1.1 skrll (binary-arith-src-dst-defn 16 basic 16 smode dmode wstr op suffix 6394 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) (.sym src16-basic- smode) (.sym dst16-16- dmode)) 6395 1.1 skrll sem) 6396 1.1 skrll (binary-arith-src-dst-defn 16 16-16 32 smode dmode wstr op suffix 6397 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) (.sym src16-16-16- smode) (.sym dst16-32- dmode)) 6398 1.1 skrll sem) 6399 1.1 skrll (binary-arith-src-dst-defn 16 16-8 24 smode dmode wstr op suffix 6400 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) (.sym src16-16-8- smode) (.sym dst16-24- dmode)) 6401 1.1 skrll sem) 6402 1.1 skrll ) 6403 1.1 skrll ) 6404 1.1 skrll 6405 1.1 skrll ; m32c Prefixed variants 6406 1.1 skrll (define-pmacro (binary-arith32-src-dst-Prefixed smode dmode wstr wbit op suffix opc1 opc2 sem) 6407 1.1 skrll (begin 6408 1.1 skrll (binary-arith-src-dst-defn 32 basic-Prefixed 24-Prefixed smode dmode wstr op suffix 6409 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-1 opc1) (f-15-1 wbit) (.sym src32-basic-Prefixed- smode) (.sym dst32-24-Prefixed- dmode) (f-20-4 opc2)) 6410 1.1 skrll sem) 6411 1.1 skrll (binary-arith-src-dst-defn 32 24-24-Prefixed 48-Prefixed smode dmode wstr op suffix 6412 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-1 opc1) (f-15-1 wbit) (.sym src32-24-24-Prefixed- smode) (.sym dst32-48-Prefixed- dmode) (f-20-4 opc2)) 6413 1.1 skrll sem) 6414 1.1 skrll (binary-arith-src-dst-defn 32 24-16-Prefixed 40-Prefixed smode dmode wstr op suffix 6415 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-1 opc1) (f-15-1 wbit) (.sym src32-24-16-Prefixed- smode) (.sym dst32-40-Prefixed- dmode) (f-20-4 opc2)) 6416 1.1 skrll sem) 6417 1.1 skrll (binary-arith-src-dst-defn 32 24-8-Prefixed 32-Prefixed smode dmode wstr op suffix 6418 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-1 opc1) (f-15-1 wbit) (.sym src32-24-8-Prefixed- smode) (.sym dst32-32-Prefixed- dmode) (f-20-4 opc2)) 6419 1.1 skrll sem) 6420 1.1 skrll ) 6421 1.1 skrll ) 6422 1.1 skrll 6423 1.1 skrll ; all m32c variants 6424 1.1 skrll (define-pmacro (binary-arith32-src-dst-defn smode dmode wstr wbit op suffix opc1 opc2 sem) 6425 1.1 skrll (begin 6426 1.1 skrll ; Multi insns are tried for assembly in the reverse order in which they appear here, so 6427 1.1 skrll ; define the absolute-indirect insns first in order to prevent them from being selected 6428 1.1 skrll ; when the mode is register-indirect 6429 1.1 skrll ; (binary-arith-src-dst-defn 32 24-24-absolute-indirect 48-absolute-indirect smode dmode wstr op suffix 6430 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6431 1.1 skrll ; (.sym src32-24-24-absolute-indirect- smode) (.sym dst32-48-absolute-indirect- dmode) (f-20-4 opc2)) 6432 1.1 skrll ; sem) 6433 1.1 skrll ; (binary-arith-src-dst-defn 32 24-16-absolute-indirect 40-absolute-indirect smode dmode wstr op suffix 6434 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6435 1.1 skrll ; (.sym src32-24-16-absolute-indirect- smode) (.sym dst32-40-absolute-indirect- dmode) (f-20-4 opc2)) 6436 1.1 skrll ; sem) 6437 1.1 skrll ; (binary-arith-src-dst-defn 32 24-24-absolute-indirect 48-Prefixed smode dmode wstr op suffix 6438 1.1 skrll ; (+ (f-0-4 4) (f-4-4 1) (f-8-1 opc1) (f-15-1 wbit) 6439 1.1 skrll ; (.sym src32-24-24-absolute-indirect- smode) (.sym dst32-48-Prefixed- dmode) (f-20-4 opc2)) 6440 1.1 skrll ; sem) 6441 1.1 skrll ; (binary-arith-src-dst-defn 32 24-16-absolute-indirect 40-Prefixed smode dmode wstr op suffix 6442 1.1 skrll ; (+ (f-0-4 4) (f-4-4 1) (f-8-1 opc1) (f-15-1 wbit) 6443 1.1 skrll ; (.sym src32-24-16-absolute-indirect- smode) (.sym dst32-40-Prefixed- dmode) (f-20-4 opc2)) 6444 1.1 skrll ; sem) 6445 1.1 skrll ; (binary-arith-src-dst-defn 32 24-24-absolute-indirect 48-indirect smode dmode wstr op suffix 6446 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6447 1.1 skrll ; (.sym src32-24-24-absolute-indirect- smode) (.sym dst32-48-indirect- dmode) (f-20-4 opc2)) 6448 1.1 skrll ; sem) 6449 1.1 skrll ; (binary-arith-src-dst-defn 32 24-16-absolute-indirect 40-indirect smode dmode wstr op suffix 6450 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6451 1.1 skrll ; (.sym src32-24-16-absolute-indirect- smode) (.sym dst32-40-indirect- dmode) (f-20-4 opc2)) 6452 1.1 skrll ; sem) 6453 1.1 skrll ; (binary-arith-src-dst-defn 32 basic-Prefixed 24-absolute-indirect smode dmode wstr op suffix 6454 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6455 1.1 skrll ; (.sym src32-basic-Prefixed- smode) (.sym dst32-24-absolute-indirect- dmode) (f-20-4 opc2)) 6456 1.1 skrll ; sem) 6457 1.1 skrll ; (binary-arith-src-dst-defn 32 24-24-Prefixed 48-absolute-indirect smode dmode wstr op suffix 6458 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6459 1.1 skrll ; (.sym src32-24-24-Prefixed- smode) (.sym dst32-48-absolute-indirect- dmode) (f-20-4 opc2)) 6460 1.1 skrll ; sem) 6461 1.1 skrll ; (binary-arith-src-dst-defn 32 24-16-Prefixed 40-absolute-indirect smode dmode wstr op suffix 6462 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6463 1.1 skrll ; (.sym src32-24-16-Prefixed- smode) (.sym dst32-40-absolute-indirect- dmode) (f-20-4 opc2)) 6464 1.1 skrll ; sem) 6465 1.1 skrll ; (binary-arith-src-dst-defn 32 24-8-Prefixed 32-absolute-indirect smode dmode wstr op suffix 6466 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6467 1.1 skrll ; (.sym src32-24-8-Prefixed- smode) (.sym dst32-32-absolute-indirect- dmode) (f-20-4 opc2)) 6468 1.1 skrll ; sem) 6469 1.1 skrll ; (binary-arith-src-dst-defn 32 basic-indirect 24-absolute-indirect smode dmode wstr op suffix 6470 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6471 1.1 skrll ; (.sym src32-basic-indirect- smode) (.sym dst32-24-absolute-indirect- dmode) (f-20-4 opc2)) 6472 1.1 skrll ; sem) 6473 1.1 skrll ; (binary-arith-src-dst-defn 32 24-24-indirect 48-absolute-indirect smode dmode wstr op suffix 6474 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6475 1.1 skrll ; (.sym src32-24-24-indirect- smode) (.sym dst32-48-absolute-indirect- dmode) (f-20-4 opc2)) 6476 1.1 skrll ; sem) 6477 1.1 skrll ; (binary-arith-src-dst-defn 32 24-16-indirect 40-absolute-indirect smode dmode wstr op suffix 6478 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6479 1.1 skrll ; (.sym src32-24-16-indirect- smode) (.sym dst32-40-absolute-indirect- dmode) (f-20-4 opc2)) 6480 1.1 skrll ; sem) 6481 1.1 skrll ; (binary-arith-src-dst-defn 32 24-8-indirect 32-absolute-indirect smode dmode wstr op suffix 6482 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6483 1.1 skrll ; (.sym src32-24-8-indirect- smode) (.sym dst32-32-absolute-indirect- dmode) (f-20-4 opc2)) 6484 1.1 skrll ; sem) 6485 1.1 skrll (binary-arith-src-dst-defn 32 basic-Unprefixed 16-Unprefixed smode dmode wstr op suffix 6486 1.1 skrll (+ (f-0-1 opc1) (f-7-1 wbit) (.sym src32-basic-Unprefixed- smode) (.sym dst32-16-Unprefixed- dmode) (f-12-4 opc2)) 6487 1.1 skrll sem) 6488 1.1 skrll (binary-arith-src-dst-defn 32 16-24-Unprefixed 40-Unprefixed smode dmode wstr op suffix 6489 1.1 skrll (+ (f-0-1 opc1) (f-7-1 wbit) (.sym src32-16-24-Unprefixed- smode) (.sym dst32-40-Unprefixed- dmode) (f-12-4 opc2)) 6490 1.1 skrll sem) 6491 1.1 skrll (binary-arith-src-dst-defn 32 16-16-Unprefixed 32-Unprefixed smode dmode wstr op suffix 6492 1.1 skrll (+ (f-0-1 opc1) (f-7-1 wbit) (.sym src32-16-16-Unprefixed- smode) (.sym dst32-32-Unprefixed- dmode) (f-12-4 opc2)) 6493 1.1 skrll sem) 6494 1.1 skrll (binary-arith-src-dst-defn 32 16-8-Unprefixed 24-Unprefixed smode dmode wstr op suffix 6495 1.1 skrll (+ (f-0-1 opc1) (f-7-1 wbit) (.sym src32-16-8-Unprefixed- smode) (.sym dst32-24-Unprefixed- dmode) (f-12-4 opc2)) 6496 1.1 skrll sem) 6497 1.1 skrll ; (binary-arith-src-dst-defn 32 basic-indirect 24-Prefixed smode dmode wstr op suffix 6498 1.1 skrll ; (+ (f-0-4 4) (f-4-4 1) (f-8-1 opc1) (f-15-1 wbit) 6499 1.1 skrll ; (.sym src32-basic-indirect- smode) (.sym dst32-24-Prefixed- dmode) (f-20-4 opc2)) 6500 1.1 skrll ; sem) 6501 1.1 skrll ; (binary-arith-src-dst-defn 32 24-24-indirect 48-Prefixed smode dmode wstr op suffix 6502 1.1 skrll ; (+ (f-0-4 4) (f-4-4 1) (f-8-1 opc1) (f-15-1 wbit) 6503 1.1 skrll ; (.sym src32-24-24-indirect- smode) (.sym dst32-48-Prefixed- dmode) (f-20-4 opc2)) 6504 1.1 skrll ; sem) 6505 1.1 skrll ; (binary-arith-src-dst-defn 32 24-16-indirect 40-Prefixed smode dmode wstr op suffix 6506 1.1 skrll ; (+ (f-0-4 4) (f-4-4 1) (f-8-1 opc1) (f-15-1 wbit) 6507 1.1 skrll ; (.sym src32-24-16-indirect- smode) (.sym dst32-40-Prefixed- dmode) (f-20-4 opc2)) 6508 1.1 skrll ; sem) 6509 1.1 skrll ; (binary-arith-src-dst-defn 32 24-8-indirect 32-Prefixed smode dmode wstr op suffix 6510 1.1 skrll ; (+ (f-0-4 4) (f-4-4 1) (f-8-1 opc1) (f-15-1 wbit) 6511 1.1 skrll ; (.sym src32-24-8-indirect- smode) (.sym dst32-32-Prefixed- dmode) (f-20-4 opc2)) 6512 1.1 skrll ; sem) 6513 1.1 skrll ; (binary-arith-src-dst-defn 32 basic-Prefixed 24-indirect smode dmode wstr op suffix 6514 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6515 1.1 skrll ; (.sym src32-basic-Prefixed- smode) (.sym dst32-24-indirect- dmode) (f-20-4 opc2)) 6516 1.1 skrll ; sem) 6517 1.1 skrll ; (binary-arith-src-dst-defn 32 24-24-Prefixed 48-indirect smode dmode wstr op suffix 6518 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6519 1.1 skrll ; (.sym src32-24-24-Prefixed- smode) (.sym dst32-48-indirect- dmode) (f-20-4 opc2)) 6520 1.1 skrll ; sem) 6521 1.1 skrll ; (binary-arith-src-dst-defn 32 24-16-Prefixed 40-indirect smode dmode wstr op suffix 6522 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6523 1.1 skrll ; (.sym src32-24-16-Prefixed- smode) (.sym dst32-40-indirect- dmode) (f-20-4 opc2)) 6524 1.1 skrll ; sem) 6525 1.1 skrll ; (binary-arith-src-dst-defn 32 24-8-Prefixed 32-indirect smode dmode wstr op suffix 6526 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6527 1.1 skrll ; (.sym src32-24-8-Prefixed- smode) (.sym dst32-32-indirect- dmode) (f-20-4 opc2)) 6528 1.1 skrll ; sem) 6529 1.1 skrll ; (binary-arith-src-dst-defn 32 basic-indirect 24-indirect smode dmode wstr op suffix 6530 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6531 1.1 skrll ; (.sym src32-basic-indirect- smode) (.sym dst32-24-indirect- dmode) (f-20-4 opc2)) 6532 1.1 skrll ; sem) 6533 1.1 skrll ; (binary-arith-src-dst-defn 32 24-24-indirect 48-indirect smode dmode wstr op suffix 6534 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6535 1.1 skrll ; (.sym src32-24-24-indirect- smode) (.sym dst32-48-indirect- dmode) (f-20-4 opc2)) 6536 1.1 skrll ; sem) 6537 1.1 skrll ; (binary-arith-src-dst-defn 32 24-16-indirect 40-indirect smode dmode wstr op suffix 6538 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6539 1.1 skrll ; (.sym src32-24-16-indirect- smode) (.sym dst32-40-indirect- dmode) (f-20-4 opc2)) 6540 1.1 skrll ; sem) 6541 1.1 skrll ; (binary-arith-src-dst-defn 32 24-8-indirect 32-indirect smode dmode wstr op suffix 6542 1.1 skrll ; (+ (f-0-4 4) (f-4-4 9) (f-8-1 opc1) (f-15-1 wbit) 6543 1.1 skrll ; (.sym src32-24-8-indirect- smode) (.sym dst32-32-indirect- dmode) (f-20-4 opc2)) 6544 1.1 skrll ; sem) 6545 1.1 skrll ) 6546 1.1 skrll ) 6547 1.1 skrll 6548 1.1 skrll (define-pmacro (binary-arith-src-dst-mach mach op suffix opc1 opc2 sem) 6549 1.1 skrll (begin 6550 1.1 skrll (.apply (.sym binary-arith mach -src-dst-defn) (QI QI .b 0 op suffix opc1 opc2 sem)) 6551 1.1 skrll (.apply (.sym binary-arith mach -src-dst-defn) (HI HI .w 1 op suffix opc1 opc2 sem)) 6552 1.1 skrll ) 6553 1.1 skrll ) 6554 1.1 skrll 6555 1.1 skrll (define-pmacro (binary-arith-src-dst op suffix opc16-1 opc16-2 opc32-1 opc32-2 sem) 6556 1.1 skrll (begin 6557 1.1 skrll (binary-arith-src-dst-mach 16 op suffix opc16-1 opc16-2 sem) 6558 1.1 skrll (binary-arith-src-dst-mach 32 op suffix opc32-1 opc32-2 sem) 6559 1.1 skrll ) 6560 1.1 skrll ) 6561 1.1 skrll 6562 1.1 skrll ;------------------------------------------------------------- 6563 1.1 skrll ;<arith>.size:S #imm,dst -- for m32c 6564 1.1 skrll ;------------------------------------------------------------- 6565 1.1 skrll 6566 1.1 skrll (define-pmacro (binary-arith32-s-imm-dst-defn src dstgroup mode wstr op encoding sem) 6567 1.1 skrll (dni (.sym op 32 wstr - imm-S - dstgroup) 6568 1.1 skrll (.str op wstr " 32-imm-S-" dstgroup "-" mode) 6569 1.1 skrll ((machine 32)) 6570 1.1 skrll (.str op wstr "$S #${" src "},${dst32-" dstgroup "-" mode "}") 6571 1.1 skrll encoding 6572 1.1 skrll (sem mode src (.sym dst32- dstgroup - mode)) 6573 1.1 skrll ()) 6574 1.1 skrll ) 6575 1.1 skrll 6576 1.1 skrll (define-pmacro (binary-arith32-z-imm-dst-defn src dstgroup mode wstr op encoding sem) 6577 1.1 skrll (dni (.sym op 32 wstr - imm-Z - dstgroup) 6578 1.1 skrll (.str op wstr " 32-imm-Z-" dstgroup "-" mode) 6579 1.1 skrll ((machine 32)) 6580 1.1 skrll (.str op wstr "$Z #0,${dst32-" dstgroup "-" mode "}") 6581 1.1 skrll encoding 6582 1.1 skrll (sem mode (const 0) (.sym dst32- dstgroup - mode)) 6583 1.1 skrll ()) 6584 1.1 skrll ) 6585 1.1 skrll 6586 1.1 skrll (define-pmacro (binary-arith32-s-imm-dst mode wstr wbit op opc1 opc2 sem) 6587 1.1 skrll (begin 6588 1.1 skrll ; (binary-arith32-s-imm-dst-defn (.sym Imm-32- mode) 2-S-absolute-indirect mode wstr op 6589 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-2 opc1) (.sym dst32-2-S-absolute-indirect- mode) (f-12-3 opc2) (f-15-1 wbit) (.sym Imm-32- mode)) 6590 1.1 skrll ; sem) 6591 1.1 skrll (binary-arith32-s-imm-dst-defn (.sym Imm-8- mode) 2-S-basic mode wstr op 6592 1.1 skrll (+ (f-0-2 opc1) (.sym dst32-2-S-basic- mode) (f-4-3 opc2) (f-7-1 wbit) (.sym Imm-8- mode)) 6593 1.1 skrll sem) 6594 1.1 skrll (binary-arith32-s-imm-dst-defn (.sym Imm-24- mode) 2-S-16 mode wstr op 6595 1.1 skrll (+ (f-0-2 opc1) (.sym dst32-2-S-16- mode) (f-4-3 opc2) (f-7-1 wbit) (.sym Imm-24- mode)) 6596 1.1 skrll sem) 6597 1.1 skrll (binary-arith32-s-imm-dst-defn (.sym Imm-16- mode) 2-S-8 mode wstr op 6598 1.1 skrll (+ (f-0-2 opc1) (.sym dst32-2-S-8- mode) (f-4-3 opc2) (f-7-1 wbit) (.sym Imm-16- mode)) 6599 1.1 skrll sem) 6600 1.1 skrll ; (binary-arith32-s-imm-dst-defn (.sym Imm-24- mode) 2-S-8-indirect mode wstr op 6601 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-2 opc1) (.sym dst32-2-S-8-indirect- mode) (f-12-3 opc2) (f-15-1 wbit) (.sym Imm-24- mode)) 6602 1.1 skrll ; sem) 6603 1.1 skrll ) 6604 1.1 skrll ) 6605 1.1 skrll 6606 1.1 skrll (define-pmacro (binary-arith32-z-imm-dst mode wstr wbit op opc1 opc2 sem) 6607 1.1 skrll (begin 6608 1.1 skrll ; (binary-arith32-z-imm-dst-defn (.sym Imm-32- mode) 2-S-absolute-indirect mode wstr op 6609 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-2 opc1) (.sym dst32-2-S-absolute-indirect- mode) (f-12-3 opc2) (f-15-1 wbit) (.sym Imm-32- mode)) 6610 1.1 skrll ; sem) 6611 1.1 skrll (binary-arith32-z-imm-dst-defn (.sym Imm-8- mode) 2-S-basic mode wstr op 6612 1.1 skrll (+ (f-0-2 opc1) (.sym dst32-2-S-basic- mode) (f-4-3 opc2) (f-7-1 wbit)) 6613 1.1 skrll sem) 6614 1.1 skrll (binary-arith32-z-imm-dst-defn (.sym Imm-24- mode) 2-S-16 mode wstr op 6615 1.1 skrll (+ (f-0-2 opc1) (.sym dst32-2-S-16- mode) (f-4-3 opc2) (f-7-1 wbit)) 6616 1.1 skrll sem) 6617 1.1 skrll (binary-arith32-z-imm-dst-defn (.sym Imm-16- mode) 2-S-8 mode wstr op 6618 1.1 skrll (+ (f-0-2 opc1) (.sym dst32-2-S-8- mode) (f-4-3 opc2) (f-7-1 wbit)) 6619 1.1 skrll sem) 6620 1.1 skrll ; (binary-arith32-z-imm-dst-defn (.sym Imm-24- mode) 2-S-8-indirect mode wstr op 6621 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-2 opc1) (.sym dst32-2-S-8-indirect- mode) (f-12-3 opc2) (f-15-1 wbit) (.sym Imm-24- mode)) 6622 1.1 skrll ; sem) 6623 1.1 skrll ) 6624 1.1 skrll ) 6625 1.1 skrll 6626 1.1 skrll ;------------------------------------------------------------- 6627 1.1 skrll ;<arith>.L:S #imm1,An -- for m32c 6628 1.1 skrll ;------------------------------------------------------------- 6629 1.1 skrll 6630 1.1 skrll (define-pmacro (binary-arith32-l-s-imm1-an op opc1 opc2 sem) 6631 1.1 skrll (begin 6632 1.1 skrll (dni (.sym op 32.l-s-imm1-S-an) 6633 1.1 skrll (.str op ".l 32-imm1-S-an") 6634 1.1 skrll ((machine 32)) 6635 1.1 skrll (.str op ".l$S #${Imm1-S},${dst32-an-S}") 6636 1.1 skrll (+ opc1 Imm1-S opc2 dst32-an-S) 6637 1.1 skrll (sem SI Imm1-S dst32-an-S) 6638 1.1 skrll ()) 6639 1.1 skrll ) 6640 1.1 skrll ) 6641 1.1 skrll 6642 1.1 skrll ;------------------------------------------------------------- 6643 1.1 skrll ;<arith>.L:Q #imm3,sp -- for m32c 6644 1.1 skrll ;------------------------------------------------------------- 6645 1.1 skrll 6646 1.1 skrll (define-pmacro (binary-arith32-l-q-imm3-sp op opc1 opc2 sem) 6647 1.1 skrll (begin 6648 1.1 skrll (dni (.sym op 32.l-imm3-Q) 6649 1.1 skrll (.str op ".l 32-imm3-Q") 6650 1.1 skrll ((machine 32)) 6651 1.1 skrll (.str op ".l$Q #${Imm3-S},sp") 6652 1.1 skrll (+ opc1 Imm3-S opc2) 6653 1.1 skrll (sem SI Imm3-S sp) 6654 1.1 skrll ()) 6655 1.1 skrll ) 6656 1.1 skrll ) 6657 1.1 skrll 6658 1.1 skrll ;------------------------------------------------------------- 6659 1.1 skrll ;<arith>.L:S #imm8,sp -- for m32c 6660 1.1 skrll ;------------------------------------------------------------- 6661 1.1 skrll 6662 1.1 skrll (define-pmacro (binary-arith32-l-s-imm8-sp op opc1 opc2 opc3 opc4 sem) 6663 1.1 skrll (begin 6664 1.1 skrll (dni (.sym op 32.l-imm8-S) 6665 1.1 skrll (.str op ".l 32-imm8-S") 6666 1.1 skrll ((machine 32)) 6667 1.1 skrll (.str op ".l$S #${Imm-16-QI},sp") 6668 1.1 skrll (+ opc1 opc2 opc3 opc4 Imm-16-QI) 6669 1.1 skrll (sem SI Imm-16-QI sp) 6670 1.1 skrll ()) 6671 1.1 skrll ) 6672 1.1 skrll ) 6673 1.1 skrll 6674 1.1 skrll ;------------------------------------------------------------- 6675 1.1 skrll ;<arith>.L:G #imm16,sp -- for m32c 6676 1.1 skrll ;------------------------------------------------------------- 6677 1.1 skrll 6678 1.1 skrll (define-pmacro (binary-arith32-l-g-imm16-sp op opc1 opc2 opc3 opc4 sem) 6679 1.1 skrll (begin 6680 1.1 skrll (dni (.sym op 32.l-imm16-G) 6681 1.1 skrll (.str op ".l 32-imm16-G") 6682 1.1 skrll ((machine 32)) 6683 1.1 skrll (.str op ".l$G #${Imm-16-HI},sp") 6684 1.1 skrll (+ opc1 opc2 opc3 opc4 Imm-16-HI) 6685 1.1 skrll (sem SI Imm-16-HI sp) 6686 1.1 skrll ()) 6687 1.1 skrll ) 6688 1.1 skrll ) 6689 1.1 skrll 6690 1.1 skrll ;------------------------------------------------------------- 6691 1.1 skrll ;<arith>jnz.size #imm4,dst,label -- for m16c and m32c 6692 1.1 skrll ;------------------------------------------------------------- 6693 1.1 skrll 6694 1.1 skrll (define-pmacro (arith-jnz-imm4-dst-defn mach src dstgroup label mode wstr op encoding sem) 6695 1.1 skrll (dni (.sym op mach wstr - imm4 - dstgroup) 6696 1.1 skrll (.str op wstr " " mach "-imm4-" dstgroup "-" label "-" mode) 6697 1.1 skrll (RL_JUMP RELAXABLE (machine mach)) 6698 1.1 skrll (.str op wstr " #${" src "},${dst" mach "-" dstgroup "-" mode "},${" label "}") 6699 1.1 skrll encoding 6700 1.1 skrll (sem mode src (.sym dst mach - dstgroup - mode) label) 6701 1.1 skrll ()) 6702 1.1 skrll ) 6703 1.1 skrll 6704 1.1 skrll ; m16c variants 6705 1.1 skrll (define-pmacro (arith-jnz16-imm4-dst-defn mode wstr wbit op i4n opc1 opc2 sem) 6706 1.1 skrll (begin 6707 1.1 skrll (arith-jnz-imm4-dst-defn 16 (.sym Imm-8- i4n) basic Lab-16-8 mode wstr op 6708 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) (.sym Imm-8- i4n) (.sym dst16-basic- mode) Lab-16-8) 6709 1.1 skrll sem) 6710 1.1 skrll (arith-jnz-imm4-dst-defn 16 (.sym Imm-8- i4n) 16-16 Lab-32-8 mode wstr op 6711 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) (.sym Imm-8- i4n) (.sym dst16-16-16- mode) Lab-32-8) 6712 1.1 skrll sem) 6713 1.1 skrll (arith-jnz-imm4-dst-defn 16 (.sym Imm-8- i4n) 16-8 Lab-24-8 mode wstr op 6714 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) (.sym Imm-8- i4n) (.sym dst16-16-8- mode) Lab-24-8) 6715 1.1 skrll sem) 6716 1.1 skrll ) 6717 1.1 skrll ) 6718 1.1 skrll 6719 1.1 skrll ; m32c variants 6720 1.1 skrll (define-pmacro (arith-jnz32-imm4-dst-defn mode wstr wbit op i4n opc1 opc2 sem) 6721 1.1 skrll (begin 6722 1.1 skrll (arith-jnz-imm4-dst-defn 32 (.sym Imm-12- i4n) basic-Unprefixed Lab-16-8 mode wstr op 6723 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-basic-Unprefixed- mode) (f-10-2 opc2) (.sym Imm-12- i4n) Lab-16-8) 6724 1.1 skrll sem) 6725 1.1 skrll (arith-jnz-imm4-dst-defn 32 (.sym Imm-12- i4n) 16-24-Unprefixed Lab-40-8 mode wstr op 6726 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-16-24-Unprefixed- mode) (f-10-2 opc2) (.sym Imm-12- i4n) Lab-40-8) 6727 1.1 skrll sem) 6728 1.1 skrll (arith-jnz-imm4-dst-defn 32 (.sym Imm-12- i4n) 16-16-Unprefixed Lab-32-8 mode wstr op 6729 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-16-16-Unprefixed- mode) (f-10-2 opc2) (.sym Imm-12- i4n) Lab-32-8) 6730 1.1 skrll sem) 6731 1.1 skrll (arith-jnz-imm4-dst-defn 32 (.sym Imm-12- i4n) 16-8-Unprefixed Lab-24-8 mode wstr op 6732 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-16-8-Unprefixed- mode) (f-10-2 opc2) (.sym Imm-12- i4n) Lab-24-8) 6733 1.1 skrll sem) 6734 1.1 skrll ) 6735 1.1 skrll ) 6736 1.1 skrll 6737 1.1 skrll (define-pmacro (arith-jnz-imm4-dst-mach mach op i4n opc1 opc2 sem) 6738 1.1 skrll (begin 6739 1.1 skrll (.apply (.sym arith-jnz mach -imm4-dst-defn) (QI .b 0 op i4n opc1 opc2 sem)) 6740 1.1 skrll (.apply (.sym arith-jnz mach -imm4-dst-defn) (HI .w 1 op i4n opc1 opc2 sem)) 6741 1.1 skrll ) 6742 1.1 skrll ) 6743 1.1 skrll 6744 1.1 skrll (define-pmacro (arith-jnz-imm4-dst op i4n opc16-1 opc16-2 opc32-1 opc32-2 sem) 6745 1.1 skrll (begin 6746 1.1 skrll (arith-jnz-imm4-dst-mach 16 op i4n opc16-1 opc16-2 sem) 6747 1.1 skrll (arith-jnz-imm4-dst-mach 32 op i4n opc32-1 opc32-2 sem) 6748 1.1 skrll ) 6749 1.1 skrll ) 6750 1.1 skrll 6751 1.1 skrll ;------------------------------------------------------------- 6752 1.1 skrll ;mov.size dsp8[sp],dst -- for m16c and m32c 6753 1.1 skrll ;------------------------------------------------------------- 6754 1.1 skrll (define-pmacro (mov-dspsp-dst-defn mach dstgroup dsp mode wstr op encoding sem) 6755 1.1 skrll (dni (.sym op mach wstr -dspsp-dst- dstgroup) 6756 1.1 skrll (.str op wstr " " mach "-dsp[sp]-" dstgroup "-" dsp "-" mode) 6757 1.1 skrll ((machine mach)) 6758 1.1 skrll (.str op wstr "$G ${" dsp "}[sp],${dst" mach "-" dstgroup "-" mode "}") 6759 1.1 skrll encoding 6760 1.1 skrll (sem mach mode dsp (.sym dst mach - dstgroup - mode)) 6761 1.1 skrll ()) 6762 1.1 skrll ) 6763 1.1 skrll (define-pmacro (mov-src-dspsp-defn mach dstgroup dsp mode wstr op encoding sem) 6764 1.1 skrll (dni (.sym op mach wstr -dst-dspsp- dstgroup) 6765 1.1 skrll (.str op wstr " " mach "-dsp[sp]-" dstgroup "-" dsp "-" mode) 6766 1.1 skrll ((machine mach)) 6767 1.1 skrll (.str op wstr "$G ${dst" mach "-" dstgroup "-" mode "},${" dsp "}[sp]") 6768 1.1 skrll encoding 6769 1.1 skrll (sem mach mode (.sym dst mach - dstgroup - mode) dsp) 6770 1.1 skrll ()) 6771 1.1 skrll ) 6772 1.1 skrll 6773 1.1 skrll ; m16c variants 6774 1.1 skrll (define-pmacro (mov16-dspsp-dst-defn mode wstr wbit op opc1 opc2 opc3 sem) 6775 1.1 skrll (begin 6776 1.1 skrll (mov-dspsp-dst-defn 16 basic Dsp-16-s8 mode wstr op 6777 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-basic- mode) Dsp-16-s8) 6778 1.1 skrll sem) 6779 1.1 skrll (mov-dspsp-dst-defn 16 16-16 Dsp-32-s8 mode wstr op 6780 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-16-16- mode) Dsp-32-s8) 6781 1.1 skrll sem) 6782 1.1 skrll (mov-dspsp-dst-defn 16 16-8 Dsp-24-s8 mode wstr op 6783 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-16-8- mode) Dsp-24-s8) 6784 1.1 skrll sem) 6785 1.1 skrll ) 6786 1.1 skrll ) 6787 1.1 skrll 6788 1.1 skrll (define-pmacro (mov16-src-dspsp-defn mode wstr wbit op opc1 opc2 opc3 sem) 6789 1.1 skrll (begin 6790 1.1 skrll (mov-src-dspsp-defn 16 basic Dsp-16-s8 mode wstr op 6791 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-basic- mode) Dsp-16-s8) 6792 1.1 skrll sem) 6793 1.1 skrll (mov-src-dspsp-defn 16 16-16 Dsp-32-s8 mode wstr op 6794 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-16-16- mode) Dsp-32-s8) 6795 1.1 skrll sem) 6796 1.1 skrll (mov-src-dspsp-defn 16 16-8 Dsp-24-s8 mode wstr op 6797 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-16-8- mode) Dsp-24-s8) 6798 1.1 skrll sem) 6799 1.1 skrll ) 6800 1.1 skrll ) 6801 1.1 skrll 6802 1.1 skrll ; m32c variants 6803 1.1 skrll (define-pmacro (mov32-dspsp-dst-defn mode wstr wbit op opc1 opc2 opc3 sem) 6804 1.1 skrll (begin 6805 1.1 skrll (mov-dspsp-dst-defn 32 basic-Unprefixed Dsp-16-s8 mode wstr op 6806 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-basic-Unprefixed- mode) (f-10-2 opc2) (f-12-4 opc3) Dsp-16-s8) 6807 1.1 skrll sem) 6808 1.1 skrll (mov-dspsp-dst-defn 32 16-24-Unprefixed Dsp-40-s8 mode wstr op 6809 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-16-24-Unprefixed- mode) (f-10-2 opc2) (f-12-4 opc3) Dsp-40-s8) 6810 1.1 skrll sem) 6811 1.1 skrll (mov-dspsp-dst-defn 32 16-16-Unprefixed Dsp-32-s8 mode wstr op 6812 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-16-16-Unprefixed- mode) (f-10-2 opc2) (f-12-4 opc3) Dsp-32-s8) 6813 1.1 skrll sem) 6814 1.1 skrll (mov-dspsp-dst-defn 32 16-8-Unprefixed Dsp-24-s8 mode wstr op 6815 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-16-8-Unprefixed- mode) (f-10-2 opc2) (f-12-4 opc3) Dsp-24-s8) 6816 1.1 skrll sem) 6817 1.1 skrll ) 6818 1.1 skrll ) 6819 1.1 skrll (define-pmacro (mov32-src-dspsp-defn mode wstr wbit op opc1 opc2 opc3 sem) 6820 1.1 skrll (begin 6821 1.1 skrll (mov-src-dspsp-defn 32 basic-Unprefixed Dsp-16-s8 mode wstr op 6822 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-basic-Unprefixed- mode) (f-10-2 opc2) (f-12-4 opc3) Dsp-16-s8) 6823 1.1 skrll sem) 6824 1.1 skrll (mov-src-dspsp-defn 32 16-24-Unprefixed Dsp-40-s8 mode wstr op 6825 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-16-24-Unprefixed- mode) (f-10-2 opc2) (f-12-4 opc3) Dsp-40-s8) 6826 1.1 skrll sem) 6827 1.1 skrll (mov-src-dspsp-defn 32 16-16-Unprefixed Dsp-32-s8 mode wstr op 6828 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-16-16-Unprefixed- mode) (f-10-2 opc2) (f-12-4 opc3) Dsp-32-s8) 6829 1.1 skrll sem) 6830 1.1 skrll (mov-src-dspsp-defn 32 16-8-Unprefixed Dsp-24-s8 mode wstr op 6831 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (.sym dst32-16-8-Unprefixed- mode) (f-10-2 opc2) (f-12-4 opc3) Dsp-24-s8) 6832 1.1 skrll sem) 6833 1.1 skrll ) 6834 1.1 skrll ) 6835 1.1 skrll 6836 1.1 skrll (define-pmacro (mov-src-dspsp-mach mach op opc1 opc2 opc3 sem) 6837 1.1 skrll (begin 6838 1.1 skrll (.apply (.sym mov mach -src-dspsp-defn) (QI .b 0 op opc1 opc2 opc3 sem)) 6839 1.1 skrll (.apply (.sym mov mach -src-dspsp-defn) (HI .w 1 op opc1 opc2 opc3 sem)) 6840 1.1 skrll ) 6841 1.1 skrll ) 6842 1.1 skrll 6843 1.1 skrll (define-pmacro (mov-dspsp-dst-mach mach op opc1 opc2 opc3 sem) 6844 1.1 skrll (begin 6845 1.1 skrll (.apply (.sym mov mach -dspsp-dst-defn) (QI .b 0 op opc1 opc2 opc3 sem)) 6846 1.1 skrll (.apply (.sym mov mach -dspsp-dst-defn) (HI .w 1 op opc1 opc2 opc3 sem)) 6847 1.1 skrll ) 6848 1.1 skrll ) 6849 1.1 skrll 6850 1.1 skrll (define-pmacro (mov-dspsp-dst op opc16-1 opc16-2 opc16-3 opc32-1 opc32-2 opc32-3 sem) 6851 1.1 skrll (begin 6852 1.1 skrll (mov-dspsp-dst-mach 16 op opc16-1 opc16-2 opc16-3 sem) 6853 1.1 skrll (mov-dspsp-dst-mach 32 op opc32-1 opc32-2 opc32-3 sem) 6854 1.1 skrll ) 6855 1.1 skrll ) 6856 1.1 skrll (define-pmacro (mov-src-dspsp op opc16-1 opc16-2 opc16-3 opc32-1 opc32-2 opc32-3 sem) 6857 1.1 skrll (begin 6858 1.1 skrll (mov-src-dspsp-mach 16 op opc16-1 opc16-2 opc16-3 sem) 6859 1.1 skrll (mov-src-dspsp-mach 32 op opc32-1 opc32-2 opc32-3 sem) 6860 1.1 skrll ) 6861 1.1 skrll ) 6862 1.1 skrll 6863 1.1 skrll ;------------------------------------------------------------- 6864 1.1 skrll ; lde dsp24,dst -- for m16c 6865 1.1 skrll ;------------------------------------------------------------- 6866 1.1 skrll 6867 1.1 skrll (define-pmacro (lde-dst-dsp mode wstr wbit dstgroup srcdisp) 6868 1.1 skrll (begin 6869 1.1 skrll 6870 1.1 skrll (dni (.sym lde wstr - dstgroup -u20) 6871 1.1 skrll (.str "lde" wstr "-" dstgroup "-u20") 6872 1.1 skrll ((machine 16)) 6873 1.1 skrll (.str "lde" wstr " ${" srcdisp "},${dst16-" dstgroup "-" mode "}") 6874 1.1 skrll (+ (f-0-4 #x7) (f-4-3 #x2) (f-7-1 wbit) (f-8-4 #x8) 6875 1.1 skrll (.sym dst16- dstgroup - mode) srcdisp) 6876 1.1 skrll (nop) 6877 1.1 skrll ()) 6878 1.1 skrll 6879 1.1 skrll (dni (.sym lde wstr - dstgroup -u20a0) 6880 1.1 skrll (.str "lde" wstr "-" dstgroup "-u20a0") 6881 1.1 skrll ((machine 16)) 6882 1.1 skrll (.str "lde" wstr " ${" srcdisp "}[a0],${dst16-" dstgroup "-" mode "}") 6883 1.1 skrll (+ (f-0-4 #x7) (f-4-3 #x2) (f-7-1 wbit) (f-8-4 #x9) 6884 1.1 skrll (.sym dst16- dstgroup - mode) srcdisp) 6885 1.1 skrll (nop) 6886 1.1 skrll ()) 6887 1.1 skrll 6888 1.1 skrll (dni (.sym lde wstr - dstgroup -a1a0) 6889 1.1 skrll (.str "lde" wstr "-" dstgroup "-a1a0") 6890 1.1 skrll ((machine 16)) 6891 1.1 skrll (.str "lde" wstr " [a1a0],${dst16-" dstgroup "-" mode "}") 6892 1.1 skrll (+ (f-0-4 #x7) (f-4-3 #x2) (f-7-1 wbit) (f-8-4 #xa) 6893 1.1 skrll (.sym dst16- dstgroup - mode)) 6894 1.1 skrll (nop) 6895 1.1 skrll ()) 6896 1.1 skrll ) 6897 1.1 skrll ) 6898 1.1 skrll 6899 1.1 skrll (define-pmacro (lde-dst mode wstr wbit) 6900 1.1 skrll (begin 6901 1.1 skrll ; like: QI .b 0 6902 1.1 skrll (lde-dst-dsp mode wstr wbit basic Dsp-16-u20) 6903 1.1 skrll (lde-dst-dsp mode wstr wbit 16-8 Dsp-24-u20) 6904 1.1 skrll (lde-dst-dsp mode wstr wbit 16-16 Dsp-32-u20) 6905 1.1 skrll ) 6906 1.1 skrll ) 6907 1.1 skrll 6908 1.1 skrll ;------------------------------------------------------------- 6909 1.1 skrll ; ste dst,dsp24 -- for m16c 6910 1.1 skrll ;------------------------------------------------------------- 6911 1.1 skrll 6912 1.1 skrll (define-pmacro (ste-dst-dsp mode wstr wbit dstgroup srcdisp) 6913 1.1 skrll (begin 6914 1.1 skrll 6915 1.1 skrll (dni (.sym ste wstr - dstgroup -u20) 6916 1.1 skrll (.str "ste" wstr "-" dstgroup "-u20") 6917 1.1 skrll ((machine 16)) 6918 1.1 skrll (.str "ste" wstr " ${dst16-" dstgroup "-" mode "},${" srcdisp "}") 6919 1.1 skrll (+ (f-0-4 #x7) (f-4-3 #x2) (f-7-1 wbit) (f-8-4 #x0) 6920 1.1 skrll (.sym dst16- dstgroup - mode) srcdisp) 6921 1.1 skrll (nop) 6922 1.1 skrll ()) 6923 1.1 skrll 6924 1.1 skrll (dni (.sym ste wstr - dstgroup -u20a0) 6925 1.1 skrll (.str "ste" wstr "-" dstgroup "-u20a0") 6926 1.1 skrll ((machine 16)) 6927 1.1 skrll (.str "ste" wstr " ${dst16-" dstgroup "-" mode "},${" srcdisp "}[a0]") 6928 1.1 skrll (+ (f-0-4 #x7) (f-4-3 #x2) (f-7-1 wbit) (f-8-4 #x1) 6929 1.1 skrll (.sym dst16- dstgroup - mode) srcdisp) 6930 1.1 skrll (nop) 6931 1.1 skrll ()) 6932 1.1 skrll 6933 1.1 skrll (dni (.sym ste wstr - dstgroup -a1a0) 6934 1.1 skrll (.str "ste" wstr "-" dstgroup "-a1a0") 6935 1.1 skrll ((machine 16)) 6936 1.1 skrll (.str "ste" wstr " ${dst16-" dstgroup "-" mode "},[a1a0]") 6937 1.1 skrll (+ (f-0-4 #x7) (f-4-3 #x2) (f-7-1 wbit) (f-8-4 #x2) 6938 1.1 skrll (.sym dst16- dstgroup - mode)) 6939 1.1 skrll (nop) 6940 1.1 skrll ()) 6941 1.1 skrll ) 6942 1.1 skrll ) 6943 1.1 skrll 6944 1.1 skrll (define-pmacro (ste-dst mode wstr wbit) 6945 1.1 skrll (begin 6946 1.1 skrll ; like: QI .b 0 6947 1.1 skrll (ste-dst-dsp mode wstr wbit basic Dsp-16-u20) 6948 1.1 skrll (ste-dst-dsp mode wstr wbit 16-8 Dsp-24-u20) 6949 1.1 skrll (ste-dst-dsp mode wstr wbit 16-16 Dsp-32-u20) 6950 1.1 skrll ) 6951 1.1 skrll ) 6952 1.1 skrll 6953 1.1 skrll ;============================================================= 6954 1.1 skrll ; Division 6955 1.1 skrll ;------------------------------------------------------------- 6956 1.1 skrll 6957 1.1 skrll (define-pmacro (div-sem divop modop opmode reg src quot rem max min) 6958 1.1 skrll (sequence () 6959 1.1 skrll (if (eq src 0) 6960 1.1 skrll (set obit (const BI 1)) 6961 1.1 skrll (sequence ((opmode quot-result) (opmode rem-result)) 6962 1.1 skrll (set quot-result (divop opmode (ext opmode reg) src)) 6963 1.1 skrll (set rem-result (modop opmode (ext opmode reg) src)) 6964 1.1 skrll (set obit (orif (gt opmode quot-result max) 6965 1.1 skrll (lt opmode quot-result min))) 6966 1.1 skrll (set quot quot-result) 6967 1.1 skrll (set rem rem-result)))) 6968 1.1 skrll ) 6969 1.1 skrll 6970 1.1 skrll ;<divop>.size #imm -- for m16c and m32c 6971 1.1 skrll (define-pmacro (div-imm-defn mach wstr op src encoding divop modop opmode reg quot rem max min sem) 6972 1.1 skrll (dni (.sym op mach wstr - src) 6973 1.1 skrll (.str op mach wstr "-" src) 6974 1.1 skrll ((machine mach)) 6975 1.1 skrll (.str op wstr " #${" src "}") 6976 1.1 skrll encoding 6977 1.1 skrll (sem divop modop opmode reg src quot rem max min) 6978 1.1 skrll ()) 6979 1.1 skrll ) 6980 1.1 skrll (define-pmacro (div16-imm-defn smode wstr wbit op divop modop opmode reg quot rem max min opc1 opc2 opc3 opc4 sem) 6981 1.1 skrll (div-imm-defn 16 wstr op (.sym Imm-16 - smode) 6982 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 opc4 (.sym Imm-16 - smode)) 6983 1.1 skrll divop modop opmode reg quot rem max min 6984 1.1 skrll sem) 6985 1.1 skrll ) 6986 1.1 skrll (define-pmacro (div32-imm-defn smode wstr wbit op divop modop opmode reg quot rem max min opc1 opc2 opc3 opc4 sem) 6987 1.1 skrll (div-imm-defn 32 wstr op (.sym Imm-16 - smode) 6988 1.1 skrll (+ (f-0-4 opc1) (f-4-4 opc2) (f-8-3 opc3) (f-11-1 wbit) (f-12-4 opc4) (.sym Imm-16 - smode)) 6989 1.1 skrll divop modop opmode reg quot rem max min 6990 1.1 skrll sem) 6991 1.1 skrll ) 6992 1.1 skrll (define-pmacro (div-imm-mach mach op divop modop opmode max-QI min-QI max-HI min-HI opc1 opc2 opc3 opc4 sem) 6993 1.1 skrll (begin 6994 1.1 skrll (.apply (.sym div mach -imm-defn) (QI .b 0 op divop modop opmode R0 R0l R0h max-QI min-QI opc1 opc2 opc3 opc4 sem)) 6995 1.1 skrll (.apply (.sym div mach -imm-defn) (HI .w 1 op divop modop opmode R2R0 R0 R2 max-HI min-HI opc1 opc2 opc3 opc4 sem)) 6996 1.1 skrll ) 6997 1.1 skrll ) 6998 1.1 skrll (define-pmacro (div-imm op divop modop opmode max-QI min-QI max-HI min-HI opc16-1 opc16-2 opc16-3 opc16-4 opc32-1 opc32-2 opc32-3 opc32-4 sem) 6999 1.1 skrll (begin 7000 1.1 skrll (div-imm-mach 16 op divop modop opmode max-QI min-QI max-HI min-HI opc16-1 opc16-2 opc16-3 opc16-4 sem) 7001 1.1 skrll (div-imm-mach 32 op divop modop opmode max-QI min-QI max-HI min-HI opc32-1 opc32-2 opc32-3 opc32-4 sem) 7002 1.1 skrll ) 7003 1.1 skrll ) 7004 1.1 skrll 7005 1.1 skrll ;<divop>.size src -- for m16c and m32c 7006 1.1 skrll (define-pmacro (div-src-defn mach wstr op src encoding divop modop opmode reg quot rem max min sem) 7007 1.1 skrll (dni (.sym op mach wstr - src) 7008 1.1 skrll (.str op mach wstr "-" src) 7009 1.1 skrll ((machine mach)) 7010 1.1 skrll (.str op wstr " ${" src "}") 7011 1.1 skrll encoding 7012 1.1 skrll (sem divop modop opmode reg src quot rem max min) 7013 1.1 skrll ()) 7014 1.1 skrll ) 7015 1.1 skrll (define-pmacro (div16-src-defn smode wstr wbit op divop modop opmode reg quot rem max min opc1 opc2 opc3 sem) 7016 1.1 skrll (div-src-defn 16 wstr op (.sym dst16-16 - smode) 7017 1.1 skrll (+ opc1 opc2 (f-7-1 wbit) opc3 (.sym dst16-16 - smode)) 7018 1.1 skrll divop modop opmode reg quot rem max min 7019 1.1 skrll sem) 7020 1.1 skrll ) 7021 1.1 skrll (define-pmacro (div32-src-defn smode wstr wbit op divop modop opmode reg quot rem max min opc1 opc2 opc3 sem) 7022 1.1 skrll (begin 7023 1.1 skrll ; Multi insns are tried for assembly in the reverse order in which they appear here, so 7024 1.1 skrll ; define the absolute-indirect insns first in order to prevent them from being selected 7025 1.1 skrll ; when the mode is register-indirect 7026 1.1 skrll ; (div-src-defn 32 wstr op (.sym dst32-24-absolute-indirect- smode) 7027 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 opc1) (f-15-1 wbit) (f-18-2 opc2) (f-20-4 opc3) (.sym dst32-24-absolute-indirect - smode)) 7028 1.1 skrll ; divop modop opmode reg quot rem max min 7029 1.1 skrll ; sem) 7030 1.1 skrll (div-src-defn 32 wstr op (.sym dst32-16-Unprefixed- smode) 7031 1.1 skrll (+ (f-0-4 opc1) (f-7-1 wbit) (f-10-2 opc2) (f-12-4 opc3) (.sym dst32-16-Unprefixed- smode)) 7032 1.1 skrll divop modop opmode reg quot rem max min 7033 1.1 skrll sem) 7034 1.1 skrll ; (div-src-defn 32 wstr op (.sym dst32-24-indirect- smode) 7035 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 opc1) (f-15-1 wbit) (f-18-2 opc2) (f-20-4 opc3) (.sym dst32-24-indirect - smode)) 7036 1.1 skrll ; divop modop opmode reg quot rem max min 7037 1.1 skrll ; sem) 7038 1.1 skrll ) 7039 1.1 skrll ) 7040 1.1 skrll (define-pmacro (div-src-mach mach op divop modop opmode max-QI min-QI max-HI min-HI opc1 opc2 opc3 sem) 7041 1.1 skrll (begin 7042 1.1 skrll (.apply (.sym div mach -src-defn) (QI .b 0 op divop modop opmode R0 R0l R0h max-QI min-QI opc1 opc2 opc3 sem)) 7043 1.1 skrll (.apply (.sym div mach -src-defn) (HI .w 1 op divop modop opmode R2R0 R0 R2 max-HI min-HI opc1 opc2 opc3 sem)) 7044 1.1 skrll ) 7045 1.1 skrll ) 7046 1.1 skrll (define-pmacro (div-src op divop modop opmode max-QI min-QI max-HI min-HI opc16-1 opc16-2 opc16-3 opc32-1 opc32-2 opc32-3 sem) 7047 1.1 skrll (begin 7048 1.1 skrll (div-src-mach 16 op divop modop opmode max-QI min-QI max-HI min-HI opc16-1 opc16-2 opc16-3 sem) 7049 1.1 skrll (div-src-mach 32 op divop modop opmode max-QI min-QI max-HI min-HI opc32-1 opc32-2 opc32-3 sem) 7050 1.1 skrll ) 7051 1.1 skrll ) 7052 1.1 skrll 7053 1.1 skrll ;============================================================= 7054 1.1 skrll ; Bit manipulation 7055 1.1 skrll ; 7056 1.1 skrll (define-pmacro (bit-insn-defn mach op suffix opnd encoding sem) 7057 1.1 skrll (dni (.sym op mach - suffix - opnd) 7058 1.1 skrll (.str op mach ":" suffix " " opnd) 7059 1.1 skrll ((machine mach)) 7060 1.1 skrll (.str op "$" suffix " ${" opnd "}") 7061 1.1 skrll encoding 7062 1.1 skrll (sem opnd) 7063 1.1 skrll ()) 7064 1.1 skrll ) 7065 1.1 skrll 7066 1.1 skrll (define-pmacro (bitsrc16-defn op opc1 opc2 opc3 sem) 7067 1.1 skrll (bit-insn-defn 16 op X bit16-16 7068 1.1 skrll (+ opc1 opc2 opc3 bit16-16) 7069 1.1 skrll sem) 7070 1.1 skrll ) 7071 1.1 skrll 7072 1.1 skrll (define-pmacro (bitsrc32-defn op opc1 opc2 opc3 sem) 7073 1.1 skrll (begin 7074 1.1 skrll (bit-insn-defn 32 op X bit32-24-Prefixed 7075 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 opc1) bit32-24-Prefixed (f-15-1 opc2) (f-18-3 opc3)) 7076 1.1 skrll sem) 7077 1.1 skrll ) 7078 1.1 skrll ) 7079 1.1 skrll 7080 1.1 skrll (define-pmacro (bitsrc-insn op opc16-1 opc16-2 opc16-3 opc32-1 opc32-2 opc32-3 sem) 7081 1.1 skrll (begin 7082 1.1 skrll (bitsrc16-defn op opc16-1 opc16-2 opc16-3 sem) 7083 1.1 skrll (bitsrc32-defn op opc32-1 opc32-2 opc32-3 sem) 7084 1.1 skrll ) 7085 1.1 skrll ) 7086 1.1 skrll 7087 1.1 skrll (define-pmacro (bitdst16-defn op opc1 opc2 opc3 opc4 opc5 opc6 sem) 7088 1.1 skrll (begin 7089 1.1 skrll (bit-insn-defn 16 op G bit16-16-basic (+ opc1 opc2 opc3 bit16-16-basic) sem) 7090 1.1 skrll (bit-insn-defn 16 op G bit16-16-16 (+ opc1 opc2 opc3 bit16-16-16) sem) 7091 1.1 skrll (bit-insn-defn 16 op S bit16-11-S (+ opc4 opc5 opc6 bit16-11-S) sem) 7092 1.1 skrll (bit-insn-defn 16 op G bit16-16-8 (+ opc1 opc2 opc3 bit16-16-8) sem) 7093 1.1 skrll ) 7094 1.1 skrll ) 7095 1.1 skrll 7096 1.1 skrll (define-pmacro (bitdst32-defn op opc1 opc2 opc3 sem) 7097 1.1 skrll (begin 7098 1.1 skrll (bit-insn-defn 32 op X bit32-16-Unprefixed 7099 1.1 skrll (+ (f-0-4 opc1) bit32-16-Unprefixed (f-7-1 opc2) (f-10-3 opc3)) 7100 1.1 skrll sem) 7101 1.1 skrll ) 7102 1.1 skrll ) 7103 1.1 skrll 7104 1.1 skrll (define-pmacro (bitdstnos-insn op opc16-1 opc16-2 opc16-3 opc32-1 opc32-2 opc32-3 sem) 7105 1.1 skrll (begin 7106 1.1 skrll (bitsrc16-defn op opc16-1 opc16-2 opc16-3 sem) 7107 1.1 skrll (bitdst32-defn op opc32-1 opc32-2 opc32-3 sem) 7108 1.1 skrll ) 7109 1.1 skrll ) 7110 1.1 skrll 7111 1.1 skrll (define-pmacro (bitdst-insn op opc16-1 opc16-2 opc16-3 opc16-4 opc16-5 opc16-6 opc32-1 opc32-2 opc32-3 sem) 7112 1.1 skrll (begin 7113 1.1 skrll (bitdst16-defn op opc16-1 opc16-2 opc16-3 opc16-4 opc16-5 opc16-6 sem) 7114 1.1 skrll (bitdst32-defn op opc32-1 opc32-2 opc32-3 sem) 7115 1.1 skrll ) 7116 1.1 skrll ) 7117 1.1 skrll 7118 1.1 skrll ;============================================================= 7119 1.1 skrll ; Bit condition 7120 1.1 skrll ; 7121 1.1 skrll (define-pmacro (bitcond-insn-defn mach op bit-opnd cond-opnd encoding sem) 7122 1.1 skrll (dni (.sym op mach - bit-opnd - cond-opnd) 7123 1.1 skrll (.str op mach " " bit-opnd " " cond-opnd) 7124 1.1 skrll ((machine mach)) 7125 1.1 skrll (.str op "${" cond-opnd "} ${" bit-opnd "}") 7126 1.1 skrll encoding 7127 1.1 skrll (sem mach bit-opnd cond-opnd) 7128 1.1 skrll ()) 7129 1.1 skrll ) 7130 1.1 skrll 7131 1.1 skrll (define-pmacro (bitcond16-defn op opc1 opc2 opc3 sem) 7132 1.1 skrll (begin 7133 1.1 skrll (bitcond-insn-defn 16 op bit16-16-basic cond16-16 (+ opc1 opc2 opc3 bit16-16-basic cond16-16) sem) 7134 1.1 skrll (bitcond-insn-defn 16 op bit16-16-16 cond16-32 (+ opc1 opc2 opc3 bit16-16-16 cond16-32) sem) 7135 1.1 skrll (bitcond-insn-defn 16 op bit16-16-8 cond16-24 (+ opc1 opc2 opc3 bit16-16-8 cond16-24) sem) 7136 1.1 skrll ) 7137 1.1 skrll ) 7138 1.1 skrll 7139 1.1 skrll (define-pmacro (bitcond32-defn op opc1 opc2 opc3 sem) 7140 1.1 skrll (begin 7141 1.1 skrll (bitcond-insn-defn 32 op bit32-16-24-Unprefixed cond32-40 7142 1.1 skrll (+ (f-0-4 opc1) bit32-16-24-Unprefixed (f-7-1 opc2) (f-10-3 opc3) cond32-40) 7143 1.1 skrll sem) 7144 1.1 skrll (bitcond-insn-defn 32 op bit32-16-16-Unprefixed cond32-32 7145 1.1 skrll (+ (f-0-4 opc1) bit32-16-16-Unprefixed (f-7-1 opc2) (f-10-3 opc3) cond32-32) 7146 1.1 skrll sem) 7147 1.1 skrll (bitcond-insn-defn 32 op bit32-16-8-Unprefixed cond32-24 7148 1.1 skrll (+ (f-0-4 opc1) bit32-16-8-Unprefixed (f-7-1 opc2) (f-10-3 opc3) cond32-24) 7149 1.1 skrll sem) 7150 1.1 skrll (bitcond-insn-defn 32 op bit32-basic-Unprefixed cond32-16 7151 1.1 skrll (+ (f-0-4 opc1) bit32-basic-Unprefixed (f-7-1 opc2) (f-10-3 opc3) cond32-16) 7152 1.1 skrll sem) 7153 1.1 skrll ) 7154 1.1 skrll ) 7155 1.1 skrll 7156 1.1 skrll (define-pmacro (bitcond-insn op opc16-1 opc16-2 opc16-3 opc32-1 opc32-2 opc32-3 sem) 7157 1.1 skrll (begin 7158 1.1 skrll (bitcond16-defn op opc16-1 opc16-2 opc16-3 sem) 7159 1.1 skrll (bitcond32-defn op opc32-1 opc32-2 opc32-3 sem) 7160 1.1 skrll ) 7161 1.1 skrll ) 7162 1.1 skrll 7163 1.1 skrll ;============================================================= 7164 1.1 skrll ;<insn>.size #imm1,#imm2,dst -- for m32c 7165 1.1 skrll ; 7166 1.1 skrll (define-pmacro (insn-imm1-imm2-dst-defn src1 src2 dstgroup xmode wstr op encoding sem) 7167 1.1 skrll (dni (.sym op 32 wstr - src1 - src2 - dstgroup) 7168 1.1 skrll (.str op 32 wstr "-" src1 "-" src2 "-" dstgroup "-" xmode) 7169 1.1 skrll ((machine 32)) 7170 1.1 skrll (.str op wstr " #${" src1 "},#${" src2 "},${dst32-" dstgroup "-" xmode "}") 7171 1.1 skrll encoding 7172 1.1 skrll (sem xmode src1 src2 (.sym dst32- dstgroup - xmode)) 7173 1.1 skrll ()) 7174 1.1 skrll ) 7175 1.1 skrll 7176 1.1 skrll ; m32c Prefixed variants 7177 1.1 skrll (define-pmacro (insn32-imm1-imm2-dst-Prefixed-defn xmode wstr wbit base1 base2 base3 base4 op opc1 opc2 opc3 sem) 7178 1.1 skrll (begin 7179 1.1 skrll (insn-imm1-imm2-dst-defn (.sym Imm-48- xmode) (.sym Imm- base4 - xmode) 24-24-Prefixed xmode wstr op 7180 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) 7181 1.1 skrll (.sym dst32-24-24-Prefixed- xmode) (.sym Imm-48- xmode) (.sym Imm- base4 - xmode)) 7182 1.1 skrll sem) 7183 1.1 skrll (insn-imm1-imm2-dst-defn (.sym Imm-40- xmode) (.sym Imm- base3 - xmode) 24-16-Prefixed xmode wstr op 7184 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) 7185 1.1 skrll (.sym dst32-24-16-Prefixed- xmode) (.sym Imm-40- xmode) (.sym Imm- base3 - xmode)) 7186 1.1 skrll sem) 7187 1.1 skrll (insn-imm1-imm2-dst-defn (.sym Imm-32- xmode) (.sym Imm- base2 - xmode) 24-8-Prefixed xmode wstr op 7188 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) 7189 1.1 skrll (.sym dst32-24-8-Prefixed- xmode) (.sym Imm-32- xmode) (.sym Imm- base2 - xmode)) 7190 1.1 skrll sem) 7191 1.1 skrll (insn-imm1-imm2-dst-defn (.sym Imm-24- xmode) (.sym Imm- base1 - xmode) basic-Prefixed xmode wstr op 7192 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 opc1) (f-18-2 opc2) (f-15-1 wbit) (f-20-4 opc3) 7193 1.1 skrll (.sym dst32-basic-Prefixed- xmode) (.sym Imm-24- xmode) (.sym Imm- base1 - xmode)) 7194 1.1 skrll sem) 7195 1.1 skrll ) 7196 1.1 skrll ) 7197 1.1 skrll 7198 1.1 skrll ; m32c Unprefixed variants 7199 1.1 skrll (define-pmacro (insn32-imm1-imm2-dst-Unprefixed-defn xmode wstr wbit base1 base2 base3 base4 op opc1 opc2 opc3 sem) 7200 1.1 skrll (begin 7201 1.1 skrll (insn-imm1-imm2-dst-defn (.sym Imm-40- xmode) (.sym Imm- base4 - xmode) 16-24-Unprefixed xmode wstr op 7202 1.1 skrll (+ (f-0-4 opc1) (f-10-2 opc2) (f-7-1 wbit) (f-12-4 opc3) 7203 1.1 skrll (.sym dst32-16-24-Unprefixed- xmode) (.sym Imm-40- xmode) (.sym Imm- base4 - xmode)) 7204 1.1 skrll sem) 7205 1.1 skrll (insn-imm1-imm2-dst-defn (.sym Imm-32- xmode) (.sym Imm- base3 - xmode) 16-16-Unprefixed xmode wstr op 7206 1.1 skrll (+ (f-0-4 opc1) (f-10-2 opc2) (f-7-1 wbit) (f-12-4 opc3) 7207 1.1 skrll (.sym dst32-16-16-Unprefixed- xmode) (.sym Imm-32- xmode) (.sym Imm- base3 - xmode)) 7208 1.1 skrll sem) 7209 1.1 skrll (insn-imm1-imm2-dst-defn (.sym Imm-24- xmode) (.sym Imm- base2 - xmode) 16-8-Unprefixed xmode wstr op 7210 1.1 skrll (+ (f-0-4 opc1) (f-10-2 opc2) (f-7-1 wbit) (f-12-4 opc3) 7211 1.1 skrll (.sym dst32-16-8-Unprefixed- xmode) (.sym Imm-24- xmode) (.sym Imm- base2 - xmode)) 7212 1.1 skrll sem) 7213 1.1 skrll (insn-imm1-imm2-dst-defn (.sym Imm-16- xmode) (.sym Imm- base1 - xmode) basic-Unprefixed xmode wstr op 7214 1.1 skrll (+ (f-0-4 opc1) (f-10-2 opc2) (f-7-1 wbit) (f-12-4 opc3) 7215 1.1 skrll (.sym dst32-basic-Unprefixed- xmode) (.sym Imm-16- xmode) (.sym Imm- base1 - xmode)) 7216 1.1 skrll sem) 7217 1.1 skrll ) 7218 1.1 skrll ) 7219 1.1 skrll 7220 1.1 skrll (define-pmacro (insn-imm1-imm2-dst-Prefixed op opc32-1 opc32-2 opc32-3 sem) 7221 1.1 skrll (begin 7222 1.1 skrll (insn32-imm1-imm2-dst-Prefixed-defn QI .b 0 32 40 48 56 op opc32-1 opc32-2 opc32-3 sem) 7223 1.1 skrll (insn32-imm1-imm2-dst-Prefixed-defn HI .w 1 40 48 56 64 op opc32-1 opc32-2 opc32-3 sem) 7224 1.1 skrll ) 7225 1.1 skrll ) 7226 1.1 skrll (define-pmacro (insn-imm1-imm2-dst-Unprefixed op opc32-1 opc32-2 opc32-3 sem) 7227 1.1 skrll (begin 7228 1.1 skrll (insn32-imm1-imm2-dst-Unprefixed-defn QI .b 0 24 32 40 48 op opc32-1 opc32-2 opc32-3 sem) 7229 1.1 skrll (insn32-imm1-imm2-dst-Unprefixed-defn HI .w 1 32 40 48 56 op opc32-1 opc32-2 opc32-3 sem) 7230 1.1 skrll ) 7231 1.1 skrll ) 7232 1.1 skrll 7234 1.1 skrll ;============================================================= 7235 1.1 skrll ; Insn definitions 7236 1.1 skrll ;------------------------------------------------------------- 7237 1.1 skrll ; abs - absolute 7238 1.1 skrll ;------------------------------------------------------------- 7239 1.1 skrll 7240 1.1 skrll (define-pmacro (abs-sem mode dst) 7241 1.1 skrll (sequence ((mode result)) 7242 1.1 skrll (set result (abs mode dst)) 7243 1.1 skrll (set obit (eq result dst)) 7244 1.1 skrll (set-z-and-s result) 7245 1.1 skrll (set dst result)) 7246 1.1 skrll ) 7247 1.1 skrll (unary-insn abs (f-0-4 7) (f-4-3 3) (f-8-4 #xF) #xA #x1 #xF abs-sem) 7248 1.1 skrll 7249 1.1 skrll ;------------------------------------------------------------- 7250 1.1 skrll ; adcf - addition carry flag 7251 1.1 skrll ;------------------------------------------------------------- 7252 1.1 skrll 7253 1.1 skrll (define-pmacro (adcf-sem mode dst) 7254 1.1 skrll (sequence ((mode result)) 7255 1.1 skrll (set result (addc mode dst 0 cbit)) 7256 1.1 skrll (set obit (add-oflag mode dst 0 cbit)) 7257 1.1 skrll (set cbit (add-cflag mode dst 0 cbit)) 7258 1.1 skrll (set-z-and-s result) 7259 1.1 skrll (set dst result)) 7260 1.1 skrll ) 7261 1.1 skrll (unary-insn adcf (f-0-4 7) (f-4-3 3) (f-8-4 #xE) #xB #x1 #xE adcf-sem) 7262 1.1 skrll 7263 1.1 skrll ;------------------------------------------------------------- 7264 1.1 skrll ; add - binary addition 7265 1.1 skrll ;------------------------------------------------------------- 7266 1.1 skrll 7267 1.1 skrll (define-pmacro (add-sem mode src1 dst) 7268 1.1 skrll (sequence ((mode result)) 7269 1.1 skrll (set result (add mode src1 dst)) 7270 1.1 skrll (set obit (add-oflag mode src1 dst 0)) 7271 1.1 skrll (set cbit (add-cflag mode src1 dst 0)) 7272 1.1 skrll (set-z-and-s result) 7273 1.1 skrll (set dst result)) 7274 1.1 skrll ) 7275 1.1 skrll 7276 1.1 skrll ; add.L:G #imm32,dst (m32 #2) 7277 1.1 skrll (binary-arith32-imm-dst-defn SI SI .l 0 add G #x8 #x3 #x1 add-sem) 7278 1.1 skrll ; add.size:G #imm,dst (m16 #1 m32 #1) 7279 1.1 skrll (binary-arith-imm-dst add G (f-0-4 7) (f-4-3 3) (f-8-4 4) #x8 #x2 #xE add-sem) 7280 1.1 skrll ; add.size:Q #imm4,dst (m16 #2 m32 #3) 7281 1.1 skrll (binary-arith-imm4-dst add (f-0-4 #xC) (f-4-3 4) #x7 #x3 add-sem) 7282 1.1 skrll (binary-arith32-imm4-dst-defn SI .l 1 0 add #x7 #x3 add-sem) 7283 1.1 skrll ; add.b:S #imm8,dst3 (m16 #3) 7284 1.1 skrll (binary-arith16-b-S-imm8-dst3 add ".b" (f-0-4 8) (f-4-1 0) add-sem) 7285 1.1 skrll ; add.BW:Q #imm4,sp (m16 #7) 7286 1.1 skrll (binary-arith16-Q-sp add (f-0-4 7) (f-4-4 #xD) (f-8-4 #xB) add-sem) 7287 1.1 skrll (dnmi add16-bQ-sp "add16-bQ-sp" () 7288 1.1 skrll "add.b:q #${Imm-12-s4},sp" 7289 1.1 skrll (emit add16-wQ-sp Imm-12-s4)) 7290 1.1 skrll ; add.BW:G #imm,sp (m16 #6) 7291 1.1 skrll (binary-arith16-G-sp add (f-0-4 7) (f-4-3 6) (f-8-4 #xE) (f-12-4 #xB) add-sem) 7292 1.1 skrll ; add.BW:G src,dst (m16 #4 m32 #6) 7293 1.1 skrll (binary-arith-src-dst add G (f-0-4 #xA) (f-4-3 0) #x1 #x8 add-sem) 7294 1.1 skrll ; add.B.S src2,r0l/r0h (m16 #5) 7295 1.1 skrll (binary-arith16-b-S-src2 add (f-0-4 2) (f-4-1 0) add-sem) 7296 1.1 skrll ; add.L:G src,dst (m32 #7) 7297 1.1 skrll (binary-arith32-src-dst-defn SI SI .l 1 add G #x1 #x2 add-sem) 7298 1.1 skrll ; add.L:S #imm{1,2},A0/A1 (m32 #5) 7299 1.1 skrll (binary-arith32-l-s-imm1-an add (f-0-2 2) (f-3-4 6) add-sem) 7300 1.1 skrll ; add.L:Q #imm3,sp (m32 #9) 7301 1.1 skrll (binary-arith32-l-q-imm3-sp add (f-0-2 1) (f-4-3 1) add-sem) 7302 1.1 skrll ; add.L:S #imm8,sp (m32 #10) 7303 1.1 skrll (binary-arith32-l-s-imm8-sp add (f-0-4 #xb) (f-4-4 6) (f-8-4 0) (f-12-4 3) add-sem) 7304 1.1 skrll ; add.L:G #imm16,sp (m32 #8) 7305 1.1 skrll (binary-arith32-l-g-imm16-sp add (f-0-4 #xb) (f-4-4 6) (f-8-4 1) (f-12-4 3) add-sem) 7306 1.1 skrll ; add.BW:S #imm,dst2 (m32 #4) 7307 1.1 skrll (binary-arith32-s-imm-dst QI .b 0 add #x0 #x3 add-sem) 7308 1.1 skrll (binary-arith32-s-imm-dst HI .w 1 add #x0 #x3 add-sem) 7309 1.1 skrll 7310 1.1 skrll ;------------------------------------------------------------- 7311 1.1 skrll ; adc - binary add with carry 7312 1.1 skrll ;------------------------------------------------------------- 7313 1.1 skrll 7314 1.1 skrll (define-pmacro (addc-sem mode src dst) 7315 1.1 skrll (sequence ((mode result)) 7316 1.1 skrll (set result (addc mode src dst cbit)) 7317 1.1 skrll (set obit (add-oflag mode src dst cbit)) 7318 1.1 skrll (set cbit (add-cflag mode src dst cbit)) 7319 1.1 skrll (set-z-and-s result) 7320 1.1 skrll (set dst result)) 7321 1.1 skrll ) 7322 1.1 skrll 7323 1.1 skrll ; adc.size:G #imm,dst 7324 1.1 skrll (binary-arith16-imm-dst-defn QI QI .b 0 adc X (f-0-4 7) (f-4-3 3) (f-8-4 6) addc-sem) 7325 1.1 skrll (binary-arith16-imm-dst-defn HI HI .w 1 adc X (f-0-4 7) (f-4-3 3) (f-8-4 6) addc-sem) 7326 1.1 skrll (binary-arith32-imm-dst-Prefixed QI QI .b 0 adc X #x8 #x2 #xE addc-sem) 7327 1.1 skrll (binary-arith32-imm-dst-Prefixed HI HI .w 1 adc X #x8 #x2 #xE addc-sem) 7328 1.1 skrll 7329 1.1 skrll ; adc.BW:G src,dst 7330 1.1 skrll (binary-arith16-src-dst-defn QI QI .b 0 adc X (f-0-4 #xB) (f-4-3 0) addc-sem) 7331 1.1 skrll (binary-arith16-src-dst-defn HI HI .w 1 adc X (f-0-4 #xB) (f-4-3 0) addc-sem) 7332 1.1 skrll (binary-arith32-src-dst-Prefixed QI QI .b 0 adc X #x1 #x4 addc-sem) 7333 1.1 skrll (binary-arith32-src-dst-Prefixed HI HI .w 1 adc X #x1 #x4 addc-sem) 7334 1.1 skrll 7335 1.1 skrll ;------------------------------------------------------------- 7336 1.1 skrll ; dadc - decimal add with carry 7337 1.1 skrll ; dadd - decimal addition 7338 1.1 skrll ;------------------------------------------------------------- 7339 1.1 skrll 7340 1.1 skrll (define-pmacro (dadc-sem mode src dst) 7341 1.1 skrll (sequence ((mode result)) 7342 1.1 skrll (set result (subc mode dst src (not cbit))) 7343 1.1 skrll (set cbit (sub-cflag mode dst src (not cbit))) 7344 1.1 skrll (set-z-and-s result) 7345 1.1 skrll (set dst result)) 7346 1.1 skrll ) 7347 1.1 skrll 7348 1.1 skrll (define-pmacro (decimal-subtraction16-insn op opc1 opc2) 7349 1.1 skrll (begin 7350 1.1 skrll ; op.b #imm8,r0l 7351 1.1 skrll (dni (.sym op 16.b-imm8) 7352 1.1 skrll (.str op ".b #imm8") 7353 1.1 skrll ((machine 16)) 7354 1.1 skrll (.str op ".b #${Imm-16-QI},r0l") 7355 1.1 skrll (+ (f-0-4 #x7) (f-4-4 #xC) (f-8-4 #xE) (f-12-4 opc1) Imm-16-QI) 7356 1.1 skrll ((.sym op -sem) QI Imm-16-QI R0l) 7357 1.1 skrll ()) 7358 1.1 skrll ; op.w #imm16,r0 7359 1.1 skrll (dni (.sym op 16.w-imm16) 7360 1.1 skrll (.str op ".b #imm16") 7361 1.1 skrll ((machine 16)) 7362 1.1 skrll (.str op ".w #${Imm-16-HI},r0") 7363 1.1 skrll (+ (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #xE) (f-12-4 opc1) Imm-16-HI) 7364 1.1 skrll ((.sym op -sem) HI Imm-16-HI R0) 7365 1.1 skrll ()) 7366 1.1 skrll ; op.b #r0h,r0l 7367 1.1 skrll (dni (.sym op 16.b-r0h-r0l) 7368 1.1 skrll (.str op ".b r0h,r0l") 7369 1.1 skrll ((machine 16)) 7370 1.1 skrll (.str op ".b r0h,r0l") 7371 1.1 skrll (+ (f-0-4 #x7) (f-4-4 #xC) (f-8-4 #xE) (f-12-4 opc2)) 7372 1.1 skrll ((.sym op -sem) QI R0h R0l) 7373 1.1 skrll ()) 7374 1.1 skrll ; op.w #r1,r0 7375 1.1 skrll (dni (.sym op 16.w-r1-r0) 7376 1.1 skrll (.str op ".b r1,r0") 7377 1.1 skrll ((machine 16)) 7378 1.1 skrll (.str op ".w r1,r0") 7379 1.1 skrll (+ (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #xE) (f-12-4 opc2)) 7380 1.1 skrll ((.sym op -sem) HI R1 R0) 7381 1.1 skrll ()) 7382 1.1 skrll ) 7383 1.1 skrll ) 7384 1.1 skrll 7385 1.1 skrll ; dadc for m16c 7386 1.1 skrll (decimal-subtraction16-insn dadc #xE #x6 ) 7387 1.1 skrll 7388 1.1 skrll ; dadc.size #imm,dst 7389 1.1 skrll (binary-arith32-imm-dst-Prefixed QI QI .b 0 dadc X #x8 #x0 #xE dadc-sem) 7390 1.1 skrll (binary-arith32-imm-dst-Prefixed HI HI .w 1 dadc X #x8 #x0 #xE dadc-sem) 7391 1.1 skrll ; dadc.BW src,dst 7392 1.1 skrll (binary-arith32-src-dst-Prefixed QI QI .b 0 dadc X #x1 #x8 dadc-sem) 7393 1.1 skrll (binary-arith32-src-dst-Prefixed HI HI .w 1 dadc X #x1 #x8 dadc-sem) 7394 1.1 skrll 7395 1.1 skrll (define-pmacro (dadd-sem mode src dst) 7396 1.1 skrll (sequence ((mode result)) 7397 1.1 skrll (set result (subc mode dst src 0)) 7398 1.1 skrll (set cbit (sub-cflag mode dst src 0)) 7399 1.1 skrll (set-z-and-s result) 7400 1.1 skrll (set dst result)) 7401 1.1 skrll ) 7402 1.1 skrll 7403 1.1 skrll ; dadd for m16c 7404 1.1 skrll (decimal-subtraction16-insn dadd #xC #x4) 7405 1.1 skrll 7406 1.1 skrll ; dadd.size #imm,dst 7407 1.1 skrll (binary-arith32-imm-dst-Prefixed QI QI .b 0 dadd X #x8 #x1 #xE dadd-sem) 7408 1.1 skrll (binary-arith32-imm-dst-Prefixed HI HI .w 1 dadd X #x8 #x1 #xE dadd-sem) 7409 1.1 skrll ; dadd.BW src,dst 7410 1.1 skrll (binary-arith32-src-dst-Prefixed QI QI .b 0 dadd X #x1 #x0 dadd-sem) 7411 1.1 skrll (binary-arith32-src-dst-Prefixed HI HI .w 1 dadd X #x1 #x0 dadd-sem) 7412 1.1 skrll 7413 1.1 skrll ;-------------------------------------------------------------; 7414 1.1 skrll ; addx - Add extend sign with no carry 7415 1.1 skrll ;-------------------------------------------------------------; 7416 1.1 skrll 7417 1.1 skrll (define-pmacro (addx-sem mode src dst) 7418 1.1 skrll (sequence ((SI source) (SI result)) 7419 1.1 skrll (set source (zext SI (trunc QI src))) 7420 1.1 skrll (set result (add SI source dst)) 7421 1.1 skrll (set obit (add-oflag SI source dst 0)) 7422 1.1 skrll (set cbit (add-cflag SI source dst 0)) 7423 1.1 skrll (set-z-and-s result) 7424 1.1 skrll (set dst result)) 7425 1.1 skrll ) 7426 1.1 skrll 7427 1.1 skrll ; addx #imm,dst 7428 1.1 skrll (binary-arith32-imm-dst-defn QI SI "" 0 addx X #x8 #x1 #x1 addx-sem) 7429 1.1 skrll ; addx src,dst 7430 1.1 skrll (binary-arith32-src-dst-defn QI SI "" 0 addx X #x1 #x2 addx-sem) 7431 1.1 skrll 7432 1.1 skrll ;------------------------------------------------------------- 7433 1.1 skrll ; adjnz - Add/Sub and branch if not zero 7434 1.1 skrll ;------------------------------------------------------------- 7435 1.1 skrll 7436 1.1 skrll (define-pmacro (arith-jnz-sem mode src dst label) 7437 1.1 skrll (sequence ((mode result)) 7438 1.1 skrll (set result (add mode src dst)) 7439 1.1 skrll (set dst result) 7440 1.1 skrll (if (ne result 0) 7441 1.1 skrll (set pc label))) 7442 1.1 skrll ) 7443 1.1 skrll 7444 1.1 skrll ; adjnz.size #imm4,dst,label 7445 1.1 skrll (arith-jnz-imm4-dst adjnz s4 (f-0-4 #xF) (f-4-3 4) #xf #x1 arith-jnz-sem) 7446 1.1 skrll 7447 1.1 skrll ;------------------------------------------------------------- 7448 1.1 skrll ; and - binary and 7449 1.1 skrll ;------------------------------------------------------------- 7450 1.1 skrll 7451 1.1 skrll (define-pmacro (and-sem mode src1 dst) 7452 1.1 skrll (sequence ((mode result)) 7453 1.1 skrll (set result (and mode src1 dst)) 7454 1.1 skrll (set-z-and-s result) 7455 1.1 skrll (set dst result)) 7456 1.1 skrll ) 7457 1.1 skrll 7458 1.1 skrll ; and.size:G #imm,dst (m16 #1 m32 #1) 7459 1.1 skrll (binary-arith-imm-dst and G (f-0-4 7) (f-4-3 3) (f-8-4 2) #x8 #x3 #xF and-sem) 7460 1.1 skrll ; and.b:S #imm8,dst3 (m16 #2) 7461 1.1 skrll (binary-arith16-b-S-imm8-dst3 and ".b" (f-0-4 9) (f-4-1 0) and-sem) 7462 1.1 skrll ; and.BW:G src,dst (m16 #3 m32 #3) 7463 1.1 skrll (binary-arith-src-dst and G (f-0-4 #x9) (f-4-3 0) #x1 #xD and-sem) 7464 1.1 skrll ; and.B.S src2,r0l/r0h (m16 #4) 7465 1.1 skrll (binary-arith16-b-S-src2 and (f-0-4 1) (f-4-1 0) and-sem) 7466 1.1 skrll ; and.BW:S #imm,dst2 (m32 #2) 7467 1.1 skrll (binary-arith32-s-imm-dst QI .b 0 and #x1 #x6 and-sem) 7468 1.1 skrll (binary-arith32-s-imm-dst HI .w 1 and #x1 #x6 and-sem) 7469 1.1 skrll 7470 1.1 skrll ;------------------------------------------------------------- 7471 1.1 skrll ; band - bit and 7472 1.1 skrll ;------------------------------------------------------------- 7473 1.1 skrll 7474 1.1 skrll (define-pmacro (band-sem src) 7475 1.1 skrll (set cbit (and src cbit)) 7476 1.1 skrll ) 7477 1.1 skrll (bitsrc-insn band (f-0-4 7) (f-4-4 #xE) (f-8-4 4) #xD #x0 #x1 band-sem) 7478 1.1 skrll 7479 1.1 skrll ;------------------------------------------------------------- 7480 1.1 skrll ; bclr - bit clear 7481 1.1 skrll ;------------------------------------------------------------- 7482 1.1 skrll 7483 1.1 skrll (define-pmacro (bclr-sem dst) 7484 1.1 skrll (set dst 0) 7485 1.1 skrll ) 7486 1.1 skrll (bitdst-insn bclr (f-0-4 7) (f-4-4 #xE) (f-8-4 8) (f-0-2 1) (f-2-2 0) (f-4-1 0) #xD #x0 #x6 bclr-sem) 7487 1.1 skrll 7488 1.1 skrll ;------------------------------------------------------------- 7489 1.1 skrll ; bitindex - bit index 7490 1.1 skrll ;------------------------------------------------------------- 7491 1.1 skrll 7492 1.1 skrll (define-pmacro (bitindex-sem mode dst) 7493 1.1 skrll (set BitIndex dst) 7494 1.1 skrll ) 7495 1.1 skrll (unary-insn-defn 32 16-Unprefixed QI .b bitindex 7496 1.1 skrll (+ (f-0-4 #xC) (f-7-1 0) dst32-16-Unprefixed-QI (f-10-2 #x2) (f-12-4 #xE)) 7497 1.1 skrll bitindex-sem) 7498 1.1 skrll (unary-insn-defn 32 16-Unprefixed HI .w bitindex 7499 1.1 skrll (+ (f-0-4 #xC) (f-7-1 1) dst32-16-Unprefixed-HI (f-10-2 #x2) (f-12-4 #xE)) 7500 1.1 skrll bitindex-sem) 7501 1.1 skrll 7502 1.1 skrll ;------------------------------------------------------------- 7503 1.1 skrll ; bmCnd - bit move condition 7504 1.1 skrll ;------------------------------------------------------------- 7505 1.1 skrll 7506 1.1 skrll (define-pmacro (test-condition16 cond) 7507 1.1 skrll (case UQI cond 7508 1.1 skrll ((#x00) (trunc BI cbit)) 7509 1.1 skrll ((#x01) (not (or cbit zbit))) 7510 1.1 skrll ((#x02) (trunc BI zbit)) 7511 1.1 skrll ((#x03) (trunc BI sbit)) 7512 1.1 skrll ((#x04) (or zbit (xor sbit obit))) 7513 1.1 skrll ((#x05) (trunc BI obit)) 7514 1.1 skrll ((#x06) (xor sbit obit)) 7515 1.1 skrll ((#xf8) (not cbit)) 7516 1.1 skrll ((#xf9) (or cbit zbit)) 7517 1.1 skrll ((#xfa) (not zbit)) 7518 1.1 skrll ((#xfb) (not sbit)) 7519 1.1 skrll ((#xfc) (not (or zbit (xor sbit obit)))) 7520 1.1 skrll ((#xfd) (not obit)) 7521 1.1 skrll ((#xfe) (not (xor sbit obit))) 7522 1.1 skrll (else (const BI 0)) 7523 1.1 skrll ) 7524 1.1 skrll ) 7525 1.1 skrll 7526 1.1 skrll (define-pmacro (test-condition32 cond) 7527 1.1 skrll (case UQI cond 7528 1.1 skrll ((#x00) (not cbit)) 7529 1.1 skrll ((#x01) (or cbit zbit)) 7530 1.1 skrll ((#x02) (not zbit)) 7531 1.1 skrll ((#x03) (not sbit)) 7532 1.1 skrll ((#x04) (not obit)) 7533 1.1 skrll ((#x05) (not (or zbit (xor sbit obit)))) 7534 1.1 skrll ((#x06) (not (xor sbit obit))) 7535 1.1 skrll ((#x08) (trunc BI cbit)) 7536 1.1 skrll ((#x09) (not (or cbit zbit))) 7537 1.1 skrll ((#x0a) (trunc BI zbit)) 7538 1.1 skrll ((#x0b) (trunc BI sbit)) 7539 1.1 skrll ((#x0c) (trunc BI obit)) 7540 1.1 skrll ((#x0d) (or zbit (xor sbit obit))) 7541 1.1 skrll ((#x0e) (xor sbit obit)) 7542 1.1 skrll (else (const BI 0)) 7543 1.1 skrll ) 7544 1.1 skrll ) 7545 1.1 skrll 7546 1.1 skrll (define-pmacro (bitcond-sem mach op cond) 7547 1.1 skrll (if ((.sym test-condition mach) cond) 7548 1.1 skrll (set op 1) 7549 1.1 skrll (set op 0)) 7550 1.1 skrll ) 7551 1.1 skrll (bitcond-insn bm (f-0-4 7) (f-4-4 #xE) (f-8-4 2) #xD #x0 #x2 bitcond-sem) 7552 1.1 skrll 7553 1.1 skrll (dni bm16-c 7554 1.1 skrll "bm16 C" 7555 1.1 skrll ((machine 16)) 7556 1.1 skrll "bm$cond16c c" 7557 1.1 skrll (+ (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #xD) cond16c) 7558 1.1 skrll (bitcond-sem 16 cbit cond16c) 7559 1.1 skrll ()) 7560 1.1 skrll 7561 1.1 skrll (dni bm32-c 7562 1.1 skrll "bm32 C" 7563 1.1 skrll ((machine 32)) 7564 1.1 skrll "bm$cond32 c" 7565 1.1 skrll (+ (f-0-4 #xD) (f-4-4 #x9) (f-8-1 0) (f-10-3 5) cond32) 7566 1.1 skrll (bitcond-sem 32 cbit cond32) 7567 1.1 skrll ()) 7568 1.1 skrll 7569 1.1 skrll ;------------------------------------------------------------- 7570 1.1 skrll ; bnand 7571 1.1 skrll ;------------------------------------------------------------- 7572 1.1 skrll 7573 1.1 skrll (define-pmacro (bnand-sem src) 7574 1.1 skrll (set cbit (and (inv src) cbit)) 7575 1.1 skrll ) 7576 1.1 skrll (bitsrc-insn bnand (f-0-4 7) (f-4-4 #xE) (f-8-4 5) #xD #x0 #x3 bnand-sem) 7577 1.1 skrll 7578 1.1 skrll ;------------------------------------------------------------- 7579 1.1 skrll ; bnor 7580 1.1 skrll ;------------------------------------------------------------- 7581 1.1 skrll 7582 1.1 skrll (define-pmacro (bnor-sem src) 7583 1.1 skrll (set cbit (or (inv src) cbit)) 7584 1.1 skrll ) 7585 1.1 skrll (bitsrc-insn bnor (f-0-4 7) (f-4-4 #xE) (f-8-4 7) #xD #x0 #x6 bnor-sem) 7586 1.1 skrll 7587 1.1 skrll ;------------------------------------------------------------- 7588 1.1 skrll ; bnot 7589 1.1 skrll ;------------------------------------------------------------- 7590 1.1 skrll 7591 1.1 skrll (define-pmacro (bnot-sem dst) 7592 1.1 skrll (set dst (inv dst)) 7593 1.1 skrll ) 7594 1.1 skrll (bitdst-insn bnot (f-0-4 7) (f-4-4 #xE) (f-8-4 #xA) (f-0-2 1) (f-2-2 1) (f-4-1 0) #xD #x0 #x3 bnot-sem) 7595 1.1 skrll 7596 1.1 skrll ;------------------------------------------------------------- 7597 1.1 skrll ; bntst 7598 1.1 skrll ;------------------------------------------------------------- 7599 1.1 skrll 7600 1.1 skrll (define-pmacro (bntst-sem src) 7601 1.1 skrll (set cbit (inv src)) 7602 1.1 skrll (set zbit (inv src)) 7603 1.1 skrll ) 7604 1.1 skrll (bitsrc-insn bntst (f-0-4 7) (f-4-4 #xE) (f-8-4 3) #xD #x0 #x0 bntst-sem) 7605 1.1 skrll 7606 1.1 skrll ;------------------------------------------------------------- 7607 1.1 skrll ; bnxor 7608 1.1 skrll ;------------------------------------------------------------- 7609 1.1 skrll 7610 1.1 skrll (define-pmacro (bnxor-sem src) 7611 1.1 skrll (set cbit (xor (inv src) cbit)) 7612 1.1 skrll ) 7613 1.1 skrll (bitsrc-insn bnxor (f-0-4 7) (f-4-4 #xE) (f-8-4 #xD) #xD #x0 #x7 bnxor-sem) 7614 1.1 skrll 7615 1.1 skrll ;------------------------------------------------------------- 7616 1.1 skrll ; bor 7617 1.1 skrll ;------------------------------------------------------------- 7618 1.1 skrll 7619 1.1 skrll (define-pmacro (bor-sem src) 7620 1.1 skrll (set cbit (or src cbit)) 7621 1.1 skrll ) 7622 1.1 skrll (bitsrc-insn bor (f-0-4 7) (f-4-4 #xE) (f-8-4 #x6) #xD #x0 #x4 bor-sem) 7623 1.1 skrll 7624 1.1 skrll ;------------------------------------------------------------- 7625 1.1 skrll ; brk 7626 1.1 skrll ;------------------------------------------------------------- 7627 1.1 skrll 7628 1.1 skrll (dni brk16 7629 1.1 skrll "brk" 7630 1.1 skrll ((machine 16)) 7631 1.1 skrll "brk" 7632 1.1 skrll (+ (f-0-4 #x0) (f-4-4 #x0)) 7633 1.1 skrll (nop) 7634 1.1 skrll ()) 7635 1.1 skrll 7636 1.1 skrll (dni brk32 7637 1.1 skrll "brk" 7638 1.1 skrll ((machine 32)) 7639 1.1 skrll "brk" 7640 1.1 skrll (+ (f-0-4 #x0) (f-4-4 #x0)) 7641 1.1 skrll (nop) 7642 1.1 skrll ()) 7643 1.1 skrll 7644 1.1 skrll ;------------------------------------------------------------- 7645 1.1 skrll ; brk2 7646 1.1 skrll ;------------------------------------------------------------- 7647 1.1 skrll 7648 1.1 skrll (dni brk232 7649 1.1 skrll "brk2" 7650 1.1 skrll ((machine 32)) 7651 1.1 skrll "brk2" 7652 1.1 skrll (+ (f-0-4 #x0) (f-4-4 #x8)) 7653 1.1 skrll (nop) 7654 1.1 skrll ()) 7655 1.1 skrll 7656 1.1 skrll ;------------------------------------------------------------- 7657 1.1 skrll ; bset 7658 1.1 skrll ;------------------------------------------------------------- 7659 1.1 skrll 7660 1.1 skrll (define-pmacro (bset-sem dst) 7661 1.1 skrll (set dst 1) 7662 1.1 skrll ) 7663 1.1 skrll (bitdst-insn bset (f-0-4 7) (f-4-4 #xE) (f-8-4 9) (f-0-2 1) (f-2-2 0) (f-4-1 1) #xD #x0 #x7 bset-sem) 7664 1.1 skrll 7665 1.1 skrll ;------------------------------------------------------------- 7666 1.1 skrll ; btst 7667 1.1 skrll ;------------------------------------------------------------- 7668 1.1 skrll 7669 1.1 skrll (define-pmacro (btst-sem dst) 7670 1.1 skrll (set zbit (inv dst)) 7671 1.1 skrll (set cbit dst) 7672 1.1 skrll ) 7673 1.1 skrll (bitdst16-defn btst (f-0-4 7) (f-4-4 #xE) (f-8-4 #xB) (f-0-2 1) (f-2-2 1) (f-4-1 1) btst-sem) 7674 1.1 skrll 7675 1.1 skrll (bit-insn-defn 32 btst G bit32-16-Unprefixed 7676 1.1 skrll (+ (f-0-4 #xD) bit32-16-Unprefixed (f-7-1 #x0) (f-10-3 #x0)) 7677 1.1 skrll btst-sem) 7678 1.1 skrll 7679 1.1 skrll (dni btst.s "btst:s" ((machine 32)) 7680 1.1 skrll "btst:s ${Bit3-S},${Dsp-8-u16}" 7681 1.1 skrll (+ (f-0-2 #x0) (f-4-3 #x5) Bit3-S Dsp-8-u16) 7682 1.1 skrll () ()) 7683 1.1 skrll 7684 1.1 skrll ;------------------------------------------------------------- 7685 1.1 skrll ; btstc 7686 1.1 skrll ;------------------------------------------------------------- 7687 1.1 skrll 7688 1.1 skrll (define-pmacro (btstc-sem dst) 7689 1.1 skrll (set zbit (inv dst)) 7690 1.1 skrll (set cbit dst) 7691 1.1 skrll (set dst (const 0)) 7692 1.1 skrll ) 7693 1.1 skrll (bitdstnos-insn btstc (f-0-4 7) (f-4-4 #xE) (f-8-4 #x0) #xD #x0 #x4 btstc-sem) 7694 1.1 skrll 7695 1.1 skrll ;------------------------------------------------------------- 7696 1.1 skrll ; btsts 7697 1.1 skrll ;------------------------------------------------------------- 7698 1.1 skrll 7699 1.1 skrll (define-pmacro (btsts-sem dst) 7700 1.1 skrll (set zbit (inv dst)) 7701 1.1 skrll (set cbit dst) 7702 1.1 skrll (set dst (const 0)) 7703 1.1 skrll ) 7704 1.1 skrll (bitdstnos-insn btsts (f-0-4 7) (f-4-4 #xE) (f-8-4 #x1) #xD #x0 #x5 btsts-sem) 7705 1.1 skrll 7706 1.1 skrll ;------------------------------------------------------------- 7707 1.1 skrll ; bxor 7708 1.1 skrll ;------------------------------------------------------------- 7709 1.1 skrll 7710 1.1 skrll (define-pmacro (bxor-sem src) 7711 1.1 skrll (set cbit (xor src cbit)) 7712 1.1 skrll ) 7713 1.1 skrll (bitsrc-insn bxor (f-0-4 7) (f-4-4 #xE) (f-8-4 #xC) #xD #x0 #x5 bxor-sem) 7714 1.1 skrll 7715 1.1 skrll ;------------------------------------------------------------- 7716 1.1 skrll ; clip 7717 1.1 skrll ;------------------------------------------------------------- 7718 1.1 skrll 7719 1.1 skrll (define-pmacro (clip-sem mode imm1 imm2 dest) 7720 1.1 skrll (sequence () 7721 1.1 skrll (if (gt mode imm1 dest) 7722 1.1 skrll (set dest imm1)) 7723 1.1 skrll (if (lt mode imm2 dest) 7724 1.1 skrll (set dest imm2))) 7725 1.1 skrll ) 7726 1.1 skrll 7727 1.1 skrll (insn-imm1-imm2-dst-Prefixed clip #x8 #x3 #xE clip-sem) 7728 1.1 skrll 7729 1.1 skrll ;------------------------------------------------------------- 7730 1.1 skrll ; cmp - binary compare 7731 1.1 skrll ;------------------------------------------------------------- 7732 1.1 skrll 7733 1.1 skrll (define-pmacro (cmp-sem mode src1 dst) 7734 1.1 skrll (sequence ((mode result)) 7735 1.1 skrll (set result (sub mode dst src1)) 7736 1.1 skrll (set obit (sub-oflag mode dst src1 0)) 7737 1.1 skrll (set cbit (not (sub-cflag mode dst src1 0))) 7738 1.1 skrll (set-z-and-s result)) 7739 1.1 skrll ) 7740 1.1 skrll 7741 1.1 skrll ; cmp.L:G #imm32,dst (m32 #2) 7742 1.1 skrll (binary-arith32-imm-dst-defn SI SI .l 0 cmp G #xA #x3 #x1 cmp-sem) 7743 1.1 skrll ; cmp.size:G #imm,dst (m16 #1 m32 #1) 7744 1.1 skrll (binary-arith-imm-dst cmp G (f-0-4 7) (f-4-3 3) (f-8-4 8) #x9 #x2 #xE cmp-sem) 7745 1.1 skrll ; cmp.size:Q #imm4,dst (m16 #2 m32 #3) 7746 1.1 skrll (binary-arith-imm4-dst cmp (f-0-4 #xD) (f-4-3 0) #x7 #x1 cmp-sem) 7747 1.1 skrll ; cmp.b:S #imm8,dst3 (m16 #3) 7748 1.1 skrll (binary-arith16-b-S-imm8-dst3 cmp ".b" (f-0-4 #xE) (f-4-1 0) cmp-sem) 7749 1.1 skrll ; cmp.BW:G src,dst (m16 #4 m32 #5) 7750 1.1 skrll (binary-arith-src-dst cmp G (f-0-4 #xC) (f-4-3 0) #x1 #x6 cmp-sem) 7751 1.1 skrll ; cmp.B.S src2,r0l/r0h (m16 #5) 7752 1.1 skrll (binary-arith16-b-S-src2 cmp (f-0-4 3) (f-4-1 1) cmp-sem) 7753 1.1 skrll ; cmp.L:G src,dst (m32 #6) 7754 1.1 skrll (binary-arith32-src-dst-defn SI SI .l 1 cmp G #x1 #x1 cmp-sem) 7755 1.1 skrll ; cmp.BW:S #imm,dst2 (m32 #4) 7756 1.1 skrll (binary-arith32-s-imm-dst QI .b 0 cmp #x1 #x3 cmp-sem) 7757 1.1 skrll (binary-arith32-s-imm-dst HI .w 1 cmp #x1 #x3 cmp-sem) 7758 1.1 skrll ; cmp.BW:s src2,r0[l] (m32 #7) 7759 1.1 skrll (binary-arith32-S-src2 cmp QI .b 0 (f-0-2 1) (f-4-3 0) cmp-sem) 7760 1.1 skrll (binary-arith32-S-src2 cmp HI .w 1 (f-0-2 1) (f-4-3 0) cmp-sem) 7761 1.1 skrll 7762 1.1 skrll ;------------------------------------------------------------- 7763 1.1 skrll ; cmpx - binary compare extend sign 7764 1.1 skrll ;------------------------------------------------------------- 7765 1.1 skrll 7766 1.1 skrll (define-pmacro (cmpx-sem mode src1 dst) 7767 1.1 skrll (sequence ((mode result)) 7768 1.1 skrll (set result (sub mode dst (ext mode src1))) 7769 1.1 skrll (set obit (sub-oflag mode dst (ext mode src1) 0)) 7770 1.1 skrll (set cbit (sub-cflag mode dst (ext mode src1) 0)) 7771 1.1 skrll (set-z-and-s result)) 7772 1.1 skrll ) 7773 1.1 skrll 7774 1.1 skrll (binary-arith32-imm-dst-defn QI SI "" 0 cmpx X #xA #x1 #x1 cmpx-sem) 7775 1.1 skrll 7776 1.1 skrll ;------------------------------------------------------------- 7777 1.1 skrll ; dec - decrement 7778 1.1 skrll ;------------------------------------------------------------- 7779 1.1 skrll 7780 1.1 skrll (define-pmacro (dec-sem mode dest) 7781 1.1 skrll (sequence ((mode result)) 7782 1.1 skrll (set result (sub mode dest 1)) 7783 1.1 skrll (set-z-and-s result) 7784 1.1 skrll (set dest result)) 7785 1.1 skrll ) 7786 1.1 skrll 7787 1.1 skrll (dni dec16.b 7788 1.1 skrll "dec.b Dst16-3-S-8" 7789 1.1 skrll ((machine 16)) 7790 1.1 skrll "dec.b ${Dst16-3-S-8}" 7791 1.1 skrll (+ (f-0-4 #xA) (f-4-1 #x1) Dst16-3-S-8) 7792 1.1 skrll (dec-sem QI Dst16-3-S-8) 7793 1.1 skrll ()) 7794 1.1 skrll 7795 1.1 skrll (dni dec16.w 7796 1.1 skrll "dec.w Dst16An-S" 7797 1.1 skrll ((machine 16)) 7798 1.1 skrll "dec.w ${Dst16An-S}" 7799 1.1 skrll (+ (f-0-4 #xF) (f-5-3 #x2) Dst16An-S) 7800 1.1 skrll (dec-sem HI Dst16An-S) 7801 1.1 skrll ()) 7802 1.1 skrll 7803 1.1 skrll (unary32-defn QI .b 0 dec #xB #x0 #xE dec-sem) 7804 1.1 skrll (unary32-defn HI .w 1 dec #xB #x0 #xE dec-sem) 7805 1.1 skrll 7806 1.1 skrll ;------------------------------------------------------------- 7807 1.1 skrll ; div - divide 7808 1.1 skrll ; divu - divide unsigned 7809 1.1 skrll ; divx - divide extension 7810 1.1 skrll ;------------------------------------------------------------- 7811 1.1 skrll 7812 1.1 skrll ; div.BW #imm 7813 1.1 skrll (div-imm div div mod SI 127 -128 32767 -32768 (f-0-4 #x7) (f-4-3 6) (f-8-4 #xE) (f-12-4 #x1) #xB #x0 #x2 #x3 div-sem) 7814 1.1 skrll (div-imm divu udiv umod USI 255 0 65535 0 (f-0-4 #x7) (f-4-3 6) (f-8-4 #xE) (f-12-4 #x0) #xB #x0 #x0 #x3 div-sem) 7815 1.1 skrll (div-imm divx div mod SI 127 -128 32767 -32768 (f-0-4 #x7) (f-4-3 6) (f-8-4 #xE) (f-12-4 #x3) #xB #x2 #x2 #x3 div-sem) 7816 1.1 skrll ; div.BW src 7817 1.1 skrll (div-src div div mod SI 127 -128 32767 -32768 (f-0-4 #x7) (f-4-3 3) (f-8-4 #xD) #x8 #x1 #xE div-sem) 7818 1.1 skrll (div-src divu udiv umod USI 255 0 65535 0 (f-0-4 #x7) (f-4-3 3) (f-8-4 #xC) #x8 #x0 #xE div-sem) 7819 1.1 skrll (div-src divx div mod SI 127 -128 32767 -32768 (f-0-4 #x7) (f-4-3 3) (f-8-4 #x9) #x9 #x1 #xE div-sem) 7820 1.1 skrll 7821 1.1 skrll (div-src-defn 32 .l div dst32-24-Prefixed-SI 7822 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 #xA) (f-15-1 1) (f-18-2 #x1) (f-20-4 #xf) dst32-24-Prefixed-SI) 7823 1.1 skrll div mod SI R2R0 R2R0 NoRemainder #x7fffffff (neg SI #x80000000) 7824 1.1 skrll div-sem) 7825 1.1 skrll (div-src-defn 32 .l divu dst32-24-Prefixed-SI 7826 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 #xA) (f-15-1 1) (f-18-2 #x0) (f-20-4 #xf) dst32-24-Prefixed-SI) 7827 1.1 skrll udiv umod USI R2R0 R2R0 NoRemainder #x80000000 0 7828 1.1 skrll div-sem) 7829 1.1 skrll (div-src-defn 32 .l divx dst32-24-Prefixed-SI 7830 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 #xA) (f-15-1 1) (f-18-2 #x2) (f-20-4 #xf) dst32-24-Prefixed-SI) 7831 1.1 skrll div mod SI R2R0 R2R0 NoRemainder #x7fffffff (neg SI #x80000000) 7832 1.1 skrll div-sem) 7833 1.1 skrll 7834 1.1 skrll ;------------------------------------------------------------- 7835 1.1 skrll ; dsbb - decimal subtraction with borrow 7836 1.1 skrll ; dsub - decimal subtraction 7837 1.1 skrll ;------------------------------------------------------------- 7838 1.1 skrll 7839 1.1 skrll (define-pmacro (dsbb-sem mode src dst) 7840 1.1 skrll (sequence ((mode result)) 7841 1.1 skrll (set result (subc mode dst src (not cbit))) 7842 1.1 skrll (set cbit (sub-cflag mode dst src (not cbit))) 7843 1.1 skrll (set-z-and-s result) 7844 1.1 skrll (set dst result)) 7845 1.1 skrll ) 7846 1.1 skrll 7847 1.1 skrll ; dsbb for m16c 7848 1.1 skrll (decimal-subtraction16-insn dsbb #xF #x7) 7849 1.1 skrll 7850 1.1 skrll ; dsbb.size #imm,dst 7851 1.1 skrll (binary-arith32-imm-dst-Prefixed QI QI .b 0 dsbb X #x9 #x0 #xE dsbb-sem) 7852 1.1 skrll (binary-arith32-imm-dst-Prefixed HI HI .w 1 dsbb X #x9 #x0 #xE dsbb-sem) 7853 1.1 skrll ; dsbb.BW src,dst 7854 1.1 skrll (binary-arith32-src-dst-Prefixed QI QI .b 0 dsbb X #x1 #xA dsbb-sem) 7855 1.1 skrll (binary-arith32-src-dst-Prefixed HI HI .w 1 dsbb X #x1 #xA dsbb-sem) 7856 1.1 skrll 7857 1.1 skrll (define-pmacro (dsub-sem mode src dst) 7858 1.1 skrll (sequence ((mode result)) 7859 1.1 skrll (set result (subc mode dst src 0)) 7860 1.1 skrll (set cbit (sub-cflag mode dst src 0)) 7861 1.1 skrll (set-z-and-s result) 7862 1.1 skrll (set dst result)) 7863 1.1 skrll ) 7864 1.1 skrll 7865 1.1 skrll ; dsub for m16c 7866 1.1 skrll (decimal-subtraction16-insn dsub #xD #x5) 7867 1.1 skrll 7868 1.1 skrll ; dsub.size #imm,dst 7869 1.1 skrll (binary-arith32-imm-dst-Prefixed QI QI .b 0 dsub X #x9 #x1 #xE dsub-sem) 7870 1.1 skrll (binary-arith32-imm-dst-Prefixed HI HI .w 1 dsub X #x9 #x1 #xE dsub-sem) 7871 1.1 skrll ; dsub.BW src,dst 7872 1.1 skrll (binary-arith32-src-dst-Prefixed QI QI .b 0 dsub X #x1 #x2 dsub-sem) 7873 1.1 skrll (binary-arith32-src-dst-Prefixed HI HI .w 1 dsub X #x1 #x2 dsub-sem) 7874 1.1 skrll 7875 1.1 skrll ;------------------------------------------------------------- 7876 1.1 skrll ; sub - binary subtraction 7877 1.1 skrll ;------------------------------------------------------------- 7878 1.1 skrll 7879 1.1 skrll (define-pmacro (sub-sem mode src1 dst) 7880 1.1 skrll (sequence ((mode result)) 7881 1.1 skrll (set result (sub mode dst src1)) 7882 1.1 skrll (set obit (sub-oflag mode dst src1 0)) 7883 1.1 skrll (set cbit (sub-cflag mode dst src1 0)) 7884 1.1 skrll (set dst result) 7885 1.1 skrll (set-z-and-s result))) 7886 1.1 skrll 7887 1.1 skrll ; sub.size:G #imm,dst (m16 #1 m32 #1) 7888 1.1 skrll (binary-arith-imm-dst sub G (f-0-4 7) (f-4-3 3) (f-8-4 5) #x8 #x3 #xE sub-sem) 7889 1.1 skrll ; sub.b:S #imm8,dst3 (m16 #2) 7890 1.1 skrll (binary-arith16-b-S-imm8-dst3 sub ".b" (f-0-4 8) (f-4-1 1) sub-sem) 7891 1.1 skrll ; sub.BW:G src,dst (m16 #3 m32 #4) 7892 1.1 skrll (binary-arith-src-dst sub G (f-0-4 #xA) (f-4-3 4) #x1 #xA sub-sem) 7893 1.1 skrll ; sub.B.S src2,r0l/r0h (m16 #4) 7894 1.1 skrll (binary-arith16-b-S-src2 sub (f-0-4 2) (f-4-1 1) sub-sem) 7895 1.1 skrll ; sub.L:G #imm32,dst (m32 #2) 7896 1.1 skrll (binary-arith32-imm-dst-defn SI SI .l 0 sub G #x9 #x3 #x1 sub-sem) 7897 1.1 skrll ; sub.BW:S #imm,dst2 (m32 #3) 7898 1.1 skrll (binary-arith32-s-imm-dst QI .b 0 sub #x0 #x7 sub-sem) 7899 1.1 skrll (binary-arith32-s-imm-dst HI .w 1 sub #x0 #x7 sub-sem) 7900 1.1 skrll ; sub.L:G src,dst (m32 #5) 7901 1.1 skrll (binary-arith32-src-dst-defn SI SI .l 1 sub G #x1 #x0 sub-sem) 7902 1.1 skrll 7903 1.1 skrll ;------------------------------------------------------------- 7904 1.1 skrll ; enter - enter function 7905 1.1 skrll ; exitd - exit and deallocate stack frame 7906 1.1 skrll ;------------------------------------------------------------- 7907 1.1 skrll 7908 1.1 skrll (define-pmacro (enter16-sem mach amt) 7909 1.1 skrll (sequence () 7910 1.1 skrll (set (reg h-sp) (sub (reg h-sp) 2)) 7911 1.1 skrll (set (mem16 HI (reg h-sp)) (reg h-fb)) 7912 1.1 skrll (set (reg h-fb) (reg h-sp)) 7913 1.1 skrll (set (reg h-sp) (sub (reg h-sp) amt)))) 7914 1.1 skrll 7915 1.1 skrll (define-pmacro (exit16-sem mach) 7916 1.1 skrll (sequence ((SI newpc)) 7917 1.1 skrll (set (reg h-sp) (reg h-fb)) 7918 1.1 skrll (set (reg h-fb) (mem16 HI (reg h-sp))) 7919 1.1 skrll (set (reg h-sp) (add (reg h-sp) 2)) 7920 1.1 skrll (set newpc (mem16 HI (reg h-sp))) 7921 1.1 skrll (set (reg h-sp) (add (reg h-sp) 2)) 7922 1.1 skrll (set newpc (or newpc (sll (mem16 QI (reg h-sp)) (const 16)))) 7923 1.1 skrll (set (reg h-sp) (add (reg h-sp) 1)) 7924 1.1 skrll (set pc newpc))) 7925 1.1 skrll 7926 1.1 skrll (define-pmacro (enter32-sem mach amt) 7927 1.1 skrll (sequence () 7928 1.1 skrll (set (reg h-sp) (sub (reg h-sp) 4)) 7929 1.1 skrll (set (mem32 SI (reg h-sp)) (reg h-fb)) 7930 1.1 skrll (set (reg h-fb) (reg h-sp)) 7931 1.1 skrll (set (reg h-sp) (sub (reg h-sp) amt)))) 7932 1.1 skrll 7933 1.1 skrll (define-pmacro (exit32-sem mach) 7934 1.1 skrll (sequence ((SI newpc)) 7935 1.1 skrll (set (reg h-sp) (reg h-fb)) 7936 1.1 skrll (set (reg h-fb) (mem32 SI (reg h-sp))) 7937 1.1 skrll (set (reg h-sp) (add (reg h-sp) 4)) 7938 1.1 skrll (set newpc (mem32 SI (reg h-sp))) 7939 1.1 skrll (set (reg h-sp) (add (reg h-sp) 4)) 7940 1.1 skrll (set pc newpc))) 7941 1.1 skrll 7942 1.1 skrll (dni enter16 "enter #Imm-16-QI" ((machine 16)) 7943 1.1 skrll ("enter #${Dsp-16-u8}") 7944 1.1 skrll (+ (f-0-4 7) (f-4-4 #xC) (f-8-4 #xF) (f-12-4 2) Dsp-16-u8) 7945 1.1 skrll (enter16-sem 16 Dsp-16-u8) 7946 1.1 skrll ()) 7947 1.1 skrll 7948 1.1 skrll (dni exitd16 "exitd" ((machine 16)) 7949 1.1 skrll ("exitd") 7950 1.1 skrll (+ (f-0-4 7) (f-4-4 #xD) (f-8-4 #xF) (f-12-4 2)) 7951 1.1 skrll (exit16-sem 16) 7952 1.1 skrll ()) 7953 1.1 skrll 7954 1.1 skrll (dni enter32 "enter #Imm-8-QI" ((machine 32)) 7955 1.1 skrll ("enter #${Dsp-8-u8}") 7956 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xC) Dsp-8-u8) 7957 1.1 skrll (enter32-sem 32 Dsp-8-u8) 7958 1.1 skrll ()) 7959 1.1 skrll 7960 1.1 skrll (dni exitd32 "exitd" ((machine 32)) 7961 1.1 skrll ("exitd") 7962 1.1 skrll (+ (f-0-4 #xF) (f-4-4 #xC)) 7963 1.1 skrll (exit32-sem 32) 7964 1.1 skrll ()) 7965 1.1 skrll 7966 1.1 skrll ;------------------------------------------------------------- 7967 1.1 skrll ; fclr - flag register clear 7968 1.1 skrll ; fset - flag register set 7969 1.1 skrll ;------------------------------------------------------------- 7970 1.1 skrll 7971 1.1 skrll (define-pmacro (set-flags-sem flag) 7972 1.1 skrll (sequence ((SI tmp)) 7973 1.1 skrll (case DFLT flag 7974 1.1 skrll ((#x0) (set cbit 1)) 7975 1.1 skrll ((#x1) (set dbit 1)) 7976 1.1 skrll ((#x2) (set zbit 1)) 7977 1.1 skrll ((#x3) (set sbit 1)) 7978 1.1 skrll ((#x4) (set bbit 1)) 7979 1.1 skrll ((#x5) (set obit 1)) 7980 1.1 skrll ((#x6) (set ibit 1)) 7981 1.1 skrll ((#x7) (set ubit 1))) 7982 1.1 skrll ) 7983 1.1 skrll ) 7984 1.1 skrll 7985 1.1 skrll (define-pmacro (clear-flags-sem flag) 7986 1.1 skrll (sequence ((SI tmp)) 7987 1.1 skrll (case DFLT flag 7988 1.1 skrll ((#x0) (set cbit 0)) 7989 1.1 skrll ((#x1) (set dbit 0)) 7990 1.1 skrll ((#x2) (set zbit 0)) 7991 1.1 skrll ((#x3) (set sbit 0)) 7992 1.1 skrll ((#x4) (set bbit 0)) 7993 1.1 skrll ((#x5) (set obit 0)) 7994 1.1 skrll ((#x6) (set ibit 0)) 7995 1.1 skrll ((#x7) (set ubit 0))) 7996 1.1 skrll ) 7997 1.1 skrll ) 7998 1.1 skrll 7999 1.1 skrll (dni fclr16 "fclr flag" ((machine 16)) 8000 1.1 skrll ("fclr ${flags16}") 8001 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-1 0) flags16 (f-12-4 5)) 8002 1.1 skrll (clear-flags-sem flags16) 8003 1.1 skrll ()) 8004 1.1 skrll 8005 1.1 skrll (dni fset16 "fset flag" ((machine 16)) 8006 1.1 skrll ("fset ${flags16}") 8007 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-1 0) flags16 (f-12-4 4)) 8008 1.1 skrll (set-flags-sem flags16) 8009 1.1 skrll ()) 8010 1.1 skrll 8011 1.1 skrll (dni fclr "fclr" ((machine 32)) 8012 1.1 skrll ("fclr ${flags32}") 8013 1.1 skrll (+ (f-0-4 #xD) (f-4-4 3) (f-8-4 #xE) (f-12-1 1) flags32) 8014 1.1 skrll (clear-flags-sem flags32) 8015 1.1 skrll ()) 8016 1.1 skrll 8017 1.1 skrll (dni fset "fset" ((machine 32)) 8018 1.1 skrll ("fset ${flags32}") 8019 1.1 skrll (+ (f-0-4 #xD) (f-4-4 1) (f-8-4 #xE) (f-12-1 1) flags32) 8020 1.1 skrll (set-flags-sem flags32) 8021 1.1 skrll ()) 8022 1.1 skrll 8023 1.1 skrll ;------------------------------------------------------------- 8024 1.1 skrll ; inc - increment 8025 1.1 skrll ;------------------------------------------------------------- 8026 1.1 skrll 8027 1.1 skrll (define-pmacro (inc-sem mode dest) 8028 1.1 skrll (sequence ((mode result)) 8029 1.1 skrll (set result (add mode dest 1)) 8030 1.1 skrll (set-z-and-s result) 8031 1.1 skrll (set dest result)) 8032 1.1 skrll ) 8033 1.1 skrll 8034 1.1 skrll (dni inc16.b 8035 1.1 skrll "inc.b Dst16-3-S-8" 8036 1.1 skrll ((machine 16)) 8037 1.1 skrll "inc.b ${Dst16-3-S-8}" 8038 1.1 skrll (+ (f-0-4 #xA) (f-4-1 #x0) Dst16-3-S-8) 8039 1.1 skrll (inc-sem QI Dst16-3-S-8) 8040 1.1 skrll ()) 8041 1.1 skrll 8042 1.1 skrll (dni inc16.w 8043 1.1 skrll "inc.w Dst16An-S" 8044 1.1 skrll ((machine 16)) 8045 1.1 skrll "inc.w ${Dst16An-S}" 8046 1.1 skrll (+ (f-0-4 #xB) (f-5-3 #x2) Dst16An-S) 8047 1.1 skrll (inc-sem HI Dst16An-S) 8048 1.1 skrll ()) 8049 1.1 skrll 8050 1.1 skrll (unary32-defn QI .b 0 inc #xA #x0 #xE inc-sem) 8051 1.1 skrll (unary32-defn HI .w 1 inc #xA #x0 #xE inc-sem) 8052 1.1 skrll 8053 1.1 skrll ;------------------------------------------------------------- 8054 1.1 skrll ; freit - fast return from interrupt (m32) 8055 1.1 skrll ; int - interrupt 8056 1.1 skrll ; into - interrupt on overflow 8057 1.1 skrll ;------------------------------------------------------------- 8058 1.1 skrll 8059 1.1 skrll ; ??? semantics 8060 1.1 skrll (dni freit32 "FREIT" ((machine 32)) 8061 1.1 skrll ("freit") 8062 1.1 skrll (+ (f-0-4 9) (f-4-4 #xF)) 8063 1.1 skrll (nop) 8064 1.1 skrll ()) 8065 1.1 skrll 8066 1.1 skrll (dni int16 "int Dsp-10-u6" ((machine 16)) 8067 1.1 skrll ("int #${Dsp-10-u6}") 8068 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-2 3) Dsp-10-u6) 8069 1.1 skrll (c-call VOID "do_int" pc Dsp-10-u6) 8070 1.1 skrll ()) 8071 1.1 skrll 8072 1.1 skrll (dni into16 "into" ((machine 16)) 8073 1.1 skrll ("into") 8074 1.1 skrll (+ (f-0-4 #xF) (f-4-4 6)) 8075 1.1 skrll (nop) 8076 1.1 skrll ()) 8077 1.1 skrll 8078 1.1 skrll (dni int32 "int Dsp-8-u6" ((machine 32)) 8079 1.1 skrll ("int #${Dsp-8-u6}") 8080 1.1 skrll (+ (f-0-4 #xB) (f-4-4 #xE) Dsp-8-u6 (f-14-2 0)) 8081 1.1 skrll (c-call VOID "do_int" pc Dsp-8-u6) 8082 1.1 skrll ()) 8083 1.1 skrll 8084 1.1 skrll (dni into32 "into" ((machine 32)) 8085 1.1 skrll ("into") 8086 1.1 skrll (+ (f-0-4 #xB) (f-4-4 #xF)) 8087 1.1 skrll (nop) 8088 1.1 skrll ()) 8089 1.1 skrll 8090 1.1 skrll ;------------------------------------------------------------- 8091 1.1 skrll ; index (m32c) 8092 1.1 skrll ;------------------------------------------------------------- 8093 1.1 skrll 8094 1.1 skrll ; TODO add support to insns allowing index 8095 1.1 skrll (define-pmacro (indexb-sem mode d) (set SrcIndex d) (set DstIndex d)) 8096 1.1 skrll (define-pmacro (indexbd-sem mode d) (set SrcIndex (const 0)) (set DstIndex d)) 8097 1.1 skrll (define-pmacro (indexbs-sem mode d) (set SrcIndex d) (set DstIndex (const 0))) 8098 1.1 skrll (define-pmacro (indexw-sem mode d) 8099 1.1 skrll (set SrcIndex (sll d (const 2))) (set DstIndex (sll d (const 2)))) 8100 1.1 skrll (define-pmacro (indexwd-sem mode d) 8101 1.1 skrll (set SrcIndex (const 0)) (set DstIndex (sll d (const 2)))) 8102 1.1 skrll (define-pmacro (indexws-sem mode d) 8103 1.1 skrll (set SrcIndex (sll d (const 2))) (set DstIndex (const 0))) 8104 1.1 skrll (define-pmacro (indexl-sem mode d) 8105 1.1 skrll (set SrcIndex d) (set DstIndex (sll d (const 2)))) 8106 1.1 skrll (define-pmacro (indexld-sem mode d) 8107 1.1 skrll (set SrcIndex (const 0)) (set DstIndex (sll d (const 2)))) 8108 1.1 skrll (define-pmacro (indexls-sem mode d) 8109 1.1 skrll (set SrcIndex (sll d (const 2))) (set DstIndex (const 0))) 8110 1.1 skrll 8111 1.1 skrll ; Note that "wbit" not where the size bit goes here, hence, it's 8112 1.1 skrll ; always 0 in these calls but op2 differs instead. 8113 1.1 skrll 8114 1.1 skrll ; indexb src (index byte) 8115 1.1 skrll (unary32-defn QI .b 0 indexb #x8 0 #x3 indexb-sem) 8116 1.1 skrll (unary32-defn HI .w 0 indexb #x8 1 #x3 indexb-sem) 8117 1.1 skrll ; indexbd src (index byte dest) 8118 1.1 skrll (unary32-defn QI .b 0 indexbd #xA 0 3 indexbd-sem) 8119 1.1 skrll (unary32-defn HI .w 0 indexbd #xA 1 3 indexbd-sem) 8120 1.1 skrll ; indexbs src (index byte src) 8121 1.1 skrll (unary32-defn QI .b 0 indexbs #xC 0 3 indexbs-sem) 8122 1.1 skrll (unary32-defn HI .w 0 indexbs #xC 1 3 indexbs-sem) 8123 1.1 skrll ; indexl src (index long) 8124 1.1 skrll (unary32-defn QI .b 0 indexl 9 2 3 indexl-sem) 8125 1.1 skrll (unary32-defn HI .w 0 indexl 9 3 3 indexl-sem) 8126 1.1 skrll ; indexld src (index long dest) 8127 1.1 skrll (unary32-defn QI .b 0 indexld #xB 2 3 indexld-sem) 8128 1.1 skrll (unary32-defn HI .w 0 indexld #xB 3 3 indexld-sem) 8129 1.1 skrll ; indexls src (index long src) 8130 1.1 skrll (unary32-defn QI .b 0 indexls 9 0 3 indexls-sem) 8131 1.1 skrll (unary32-defn HI .w 0 indexls 9 1 3 indexls-sem) 8132 1.1 skrll ; indexw src (index word) 8133 1.1 skrll (unary32-defn QI .b 0 indexw 8 2 3 indexw-sem) 8134 1.1 skrll (unary32-defn HI .w 0 indexw 8 3 3 indexw-sem) 8135 1.1 skrll ; indexwd src (index word dest) 8136 1.1 skrll (unary32-defn QI .b 0 indexwd #xA 2 3 indexwd-sem) 8137 1.1 skrll (unary32-defn HI .w 0 indexwd #xA 3 3 indexwd-sem) 8138 1.1 skrll ; indexws (index word src) 8139 1.1 skrll (unary32-defn QI .b 0 indexws #xC 2 3 indexws-sem) 8140 1.1 skrll (unary32-defn HI .w 0 indexws #xC 3 3 indexws-sem) 8141 1.1 skrll 8142 1.1 skrll ;------------------------------------------------------------- 8143 1.1 skrll ; jcc - jump on condition 8144 1.1 skrll ;------------------------------------------------------------- 8145 1.1 skrll 8146 1.1 skrll (define-pmacro (jcnd32-sem cnd label) 8147 1.1 skrll (sequence () 8148 1.1 skrll (case DFLT cnd 8149 1.1 skrll ((#x00) (if (not cbit) (set pc label))) ;ltu nc 8150 1.1 skrll ((#x01) (if (not (and cbit (not zbit))) (set pc label))) ;leu 8151 1.1 skrll ((#x02) (if (not zbit) (set pc label))) ;ne nz 8152 1.1 skrll ((#x03) (if (not sbit) (set pc label))) ;pz 8153 1.1 skrll ((#x04) (if (not obit) (set pc label))) ;no 8154 1.1 skrll ((#x05) (if (not (or zbit (xor sbit obit))) (set pc label))) ;gt 8155 1.1 skrll ((#x06) (if (not (xor sbit obit)) (set pc label))) ;ge 8156 1.1 skrll ((#x08) (if (trunc BI cbit) (set pc label))) ;geu c 8157 1.1 skrll ((#x09) (if (and cbit (not zbit)) (set pc label))) ;gtu 8158 1.1 skrll ((#x0a) (if (trunc BI zbit) (set pc label))) ;eq z 8159 1.1 skrll ((#x0b) (if (trunc BI sbit) (set pc label))) ;n 8160 1.1 skrll ((#x0c) (if (trunc BI obit) (set pc label))) ;o 8161 1.1 skrll ((#x0d) (if (or zbit (xor sbit obit)) (set pc label))) ;le 8162 1.1 skrll ((#x0e) (if (xor sbit obit) (set pc label))) ;lt 8163 1.1 skrll ) 8164 1.1 skrll ) 8165 1.1 skrll ) 8166 1.1 skrll 8167 1.1 skrll (define-pmacro (jcnd16-sem cnd label) 8168 1.1 skrll (sequence () 8169 1.1 skrll (case DFLT cnd 8170 1.1 skrll ((#x00) (if (trunc BI cbit) (set pc label))) ;geu c 8171 1.1 skrll ((#x01) (if (and cbit (not zbit)) (set pc label))) ;gtu 8172 1.1 skrll ((#x02) (if (trunc BI zbit) (set pc label))) ;eq z 8173 1.1 skrll ((#x03) (if (trunc BI sbit) (set pc label))) ;n 8174 1.1 skrll ((#x04) (if (not cbit) (set pc label))) ;ltu nc 8175 1.1 skrll ((#x05) (if (not (and cbit (not zbit))) (set pc label))) ;leu 8176 1.1 skrll ((#x06) (if (not zbit) (set pc label))) ;ne nz 8177 1.1 skrll ((#x07) (if (not sbit) (set pc label))) ;pz 8178 1.1 skrll ((#x08) (if (or zbit (xor sbit obit)) (set pc label))) ;le 8179 1.1 skrll ((#x09) (if (trunc BI obit) (set pc label))) ;o 8180 1.1 skrll ((#x0a) (if (not (xor sbit obit)) (set pc label))) ;ge 8181 1.1 skrll ((#x0c) (if (not (or zbit (xor sbit obit))) (set pc label))) ;gt 8182 1.1 skrll ((#x0d) (if (not obit) (set pc label))) ;no 8183 1.1 skrll ((#x0e) (if (xor sbit obit) (set pc label))) ;lt 8184 1.1 skrll ) 8185 1.1 skrll ) 8186 1.1 skrll ) 8187 1.1 skrll 8188 1.1 skrll (dni jcnd16-5 8189 1.1 skrll "jCnd label" 8190 1.1 skrll (RL_JUMP RELAXABLE (machine 16)) 8191 1.1 skrll "j$cond16j5 ${Lab-8-8}" 8192 1.1 skrll (+ (f-0-4 #x6) (f-4-1 1) cond16j5 Lab-8-8) 8193 1.1 skrll (jcnd16-sem cond16j5 Lab-8-8) 8194 1.1 skrll () 8195 1.1 skrll ) 8196 1.1 skrll 8197 1.1 skrll (dni jcnd16 8198 1.1 skrll "jCnd label" 8199 1.1 skrll (RL_JUMP RELAXABLE (machine 16)) 8200 1.1 skrll "j$cond16j ${Lab-16-8}" 8201 1.1 skrll (+ (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #xC) cond16j Lab-16-8) 8202 1.1 skrll (jcnd16-sem cond16j Lab-16-8) 8203 1.1 skrll () 8204 1.1 skrll ) 8205 1.1 skrll 8206 1.1 skrll (dni jcnd32 8207 1.1 skrll "jCnd label" 8208 1.1 skrll (RL_JUMP RELAXABLE (machine 32)) 8209 1.1 skrll "j$cond32j ${Lab-8-8}" 8210 1.1 skrll (+ (f-0-1 1) (f-4-3 5) cond32j Lab-8-8) 8211 1.1 skrll (jcnd32-sem cond32j Lab-8-8) 8212 1.1 skrll () 8213 1.1 skrll ) 8214 1.1 skrll 8215 1.1 skrll ;------------------------------------------------------------- 8216 1.1 skrll ; jmp - jump 8217 1.1 skrll ;------------------------------------------------------------- 8218 1.1 skrll 8219 1.1 skrll ; jmp.s label3 (m16 #1) 8220 1.1 skrll (dni jmp16.s "jmp.s Lab-5-3" (RL_JUMP RELAXABLE (machine 16)) 8221 1.1 skrll ("jmp.s ${Lab-5-3}") 8222 1.1 skrll (+ (f-0-4 6) (f-4-1 0) Lab-5-3) 8223 1.1 skrll (sequence () (set pc Lab-5-3)) 8224 1.1 skrll ()) 8225 1.1 skrll ; jmp.b label8 (m16 #2) 8226 1.1 skrll (dni jmp16.b "jmp.b Lab-8-8" (RL_JUMP RELAXABLE (machine 16)) 8227 1.1 skrll ("jmp.b ${Lab-8-8}") 8228 1.1 skrll (+ (f-0-4 #xF) (f-4-4 #xE) Lab-8-8) 8229 1.1 skrll (sequence () (set pc Lab-8-8)) 8230 1.1 skrll ()) 8231 1.1 skrll ; jmp.w label16 (m16 #3) 8232 1.1 skrll (dni jmp16.w "jmp.w Lab-8-16" (RL_JUMP RELAXABLE (machine 16)) 8233 1.1 skrll ("jmp.w ${Lab-8-16}") 8234 1.1 skrll (+ (f-0-4 #xF) (f-4-4 4) Lab-8-16) 8235 1.1 skrll (sequence () (set pc Lab-8-16)) 8236 1.1 skrll ()) 8237 1.1 skrll ; jmp.a label24 (m16 #4) 8238 1.1 skrll (dni jmp16.a "jmp.a Lab-8-24" (RL_JUMP RELAXABLE (machine 16)) 8239 1.1 skrll ("jmp.a ${Lab-8-24}") 8240 1.1 skrll (+ (f-0-4 #xF) (f-4-4 #xC) Lab-8-24) 8241 1.1 skrll (sequence () (set pc Lab-8-24)) 8242 1.1 skrll ()) 8243 1.1 skrll 8244 1.1 skrll (define-pmacro (jmp16-sem mode dst) 8245 1.1 skrll (set pc (and dst #xfffff)) 8246 1.1 skrll ) 8247 1.1 skrll (define-pmacro (jmp32-sem mode dst) 8248 1.1 skrll (set pc dst) 8249 1.1 skrll ) 8250 1.1 skrll ; jmpi.w dst (m16 #1 m32 #2) 8251 1.1 skrll (unary-insn-defn 16 16 HI .w jmpi (+ (f-0-4 7) (f-4-4 #xD) (f-8-4 2) dst16-16-HI) jmp16-sem) 8252 1.1 skrll (unary-insn-defn 32 16-Unprefixed HI .w jmpi (+ (f-0-4 #xC) (f-7-1 1) dst32-16-Unprefixed-HI (f-10-2 #x0) (f-12-4 #xF)) jmp32-sem) 8253 1.1 skrll ; jmpi.a dst (m16 #2 m32 #2) 8254 1.1 skrll (unary-insn-defn 16 16 SI .a jmpi (+ (f-0-4 7) (f-4-4 #xD) (f-8-4 0) dst16-16-SI) jmp16-sem) 8255 1.1 skrll (unary-insn-defn 32 16-Unprefixed SI .a jmpi (+ (f-0-4 #x8) (f-7-1 0) dst32-16-Unprefixed-SI (f-10-2 #x0) (f-12-4 1)) jmp32-sem) 8256 1.1 skrll ; jmps imm8 (m16 #1) 8257 1.1 skrll (dni jmps16 "jmps Imm-8-QI" ((machine 16)) 8258 1.1 skrll ("jmps #${Imm-8-QI}") 8259 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xE) Imm-8-QI) 8260 1.1 skrll (sequence () (set pc Imm-8-QI)) 8261 1.1 skrll ()) 8262 1.1 skrll ; jmp.s label3 (m32 #1) 8263 1.1 skrll (dni jmp32.s 8264 1.1 skrll "jmp.s label" 8265 1.1 skrll (RL_JUMP RELAXABLE (machine 32)) 8266 1.1 skrll "jmp.s ${Lab32-jmp-s}" 8267 1.1 skrll (+ (f-0-2 1) (f-4-3 5) Lab32-jmp-s) 8268 1.1 skrll (set pc Lab32-jmp-s) 8269 1.1 skrll () 8270 1.1 skrll ) 8271 1.1 skrll ; jmp.b label8 (m32 #2) 8272 1.1 skrll (dni jmp32.b "jmp.b Lab-8-8" (RL_JUMP RELAXABLE (machine 32)) 8273 1.1 skrll ("jmp.b ${Lab-8-8}") 8274 1.1 skrll (+ (f-0-4 #xB) (f-4-4 #xB) Lab-8-8) 8275 1.1 skrll (set pc Lab-8-8) 8276 1.1 skrll ()) 8277 1.1 skrll ; jmp.w label16 (m32 #3) 8278 1.1 skrll (dni jmp32.w "jmp.w Lab-8-16" (RL_JUMP RELAXABLE (machine 32)) 8279 1.1 skrll ("jmp.w ${Lab-8-16}") 8280 1.1 skrll (+ (f-0-4 #xC) (f-4-4 #xE) Lab-8-16) 8281 1.1 skrll (set pc Lab-8-16) 8282 1.1 skrll ()) 8283 1.1 skrll ; jmp.a label24 (m32 #4) 8284 1.1 skrll (dni jmp32.a "jmp.a Lab-8-24" (RL_JUMP RELAXABLE (machine 32)) 8285 1.1 skrll ("jmp.a ${Lab-8-24}") 8286 1.1 skrll (+ (f-0-4 #xC) (f-4-4 #xC) Lab-8-24) 8287 1.1 skrll (set pc Lab-8-24) 8288 1.1 skrll ()) 8289 1.1 skrll ; jmp.s imm8 (m32 #1) 8290 1.1 skrll (dni jmps32 "jmps Imm-8-QI" (RL_JUMP (machine 32)) 8291 1.1 skrll ("jmps #${Imm-8-QI}") 8292 1.1 skrll (+ (f-0-4 #xD) (f-4-4 #xC) Imm-8-QI) 8293 1.1 skrll (set pc Imm-8-QI) 8294 1.1 skrll ()) 8295 1.1 skrll 8296 1.1 skrll ;------------------------------------------------------------- 8297 1.1 skrll ; jsr jump subroutine 8298 1.1 skrll ;------------------------------------------------------------- 8299 1.1 skrll 8300 1.1 skrll (define-pmacro (jsr16-sem length dst) 8301 1.1 skrll (sequence ((SI tpc)) 8302 1.1 skrll (set tpc (add pc length)) 8303 1.1 skrll (set (reg h-sp) (sub (reg h-sp) 2)) 8304 1.1 skrll (set (mem16 HI (reg h-sp)) (srl (and tpc #xffff00) 8)) 8305 1.1 skrll (set (reg h-sp) (sub (reg h-sp) 1)) 8306 1.1 skrll (set (mem16 QI (reg h-sp)) (and tpc #xff)) 8307 1.1 skrll (set pc dst) 8308 1.1 skrll ) 8309 1.1 skrll ) 8310 1.1 skrll (define-pmacro (jsr32-sem length dst) 8311 1.1 skrll (sequence ((SI tpc)) 8312 1.1 skrll (set tpc (add pc length)) 8313 1.1 skrll (set (reg h-sp) (sub (reg h-sp) 2)) 8314 1.1 skrll (set (mem32 HI (reg h-sp)) (srl (and tpc #xffff0000) 16)) 8315 1.1 skrll (set (reg h-sp) (sub (reg h-sp) 2)) 8316 1.1 skrll (set (mem32 HI (reg h-sp)) (and tpc #xffff)) 8317 1.1 skrll (set pc dst) 8318 1.1 skrll ) 8319 1.1 skrll ) 8320 1.1 skrll 8321 1.1 skrll ; jsr.w label16 (m16 #1) 8322 1.1 skrll (dni jsr16.w "jsr.w Lab-8-16" (RL_JUMP RELAXABLE (machine 16)) 8323 1.1 skrll ("jsr.w ${Lab-8-16}") 8324 1.1 skrll (+ (f-0-4 #xF) (f-4-4 5) Lab-8-16) 8325 1.1 skrll (jsr16-sem 3 Lab-8-16) 8326 1.1 skrll ()) 8327 1.1 skrll ; jsr.a label24 (m16 #2) 8328 1.1 skrll (dni jsr16.a "jsr.a Lab-8-24" (RL_JUMP RELAXABLE (machine 16)) 8329 1.1 skrll ("jsr.a ${Lab-8-24}") 8330 1.1 skrll (+ (f-0-4 #xF) (f-4-4 #xD) Lab-8-24) 8331 1.1 skrll (jsr16-sem 4 Lab-8-24) 8332 1.1 skrll ()) 8333 1.1 skrll (define-pmacro (jsri-defn mode op16 op16-1 op16-2 op16-3 op16-sem 8334 1.1 skrll op32 op32-1 op32-2 op32-3 op32-4 op32-sem len) 8335 1.1 skrll (begin 8336 1.1 skrll (dni (.sym jsri16 mode - op16) 8337 1.1 skrll (.str "jsri." mode " " op16) 8338 1.1 skrll (RL_1ADDR (machine 16)) 8339 1.1 skrll (.str "jsri." mode " ${" op16 "}") 8340 1.1 skrll (+ op16-1 op16-2 op16-3 op16) 8341 1.1 skrll (op16-sem len op16) 8342 1.1 skrll ()) 8343 1.1 skrll (dni (.sym jsri32 mode - op32) 8344 1.1 skrll (.str "jsri." mode " " op32) 8345 1.1 skrll (RL_1ADDR (machine 32)) 8346 1.1 skrll (.str "jsri." mode " ${" op32 "}") 8347 1.1 skrll (+ op32-1 op32-2 op32-3 op32-4 op32) 8348 1.1 skrll (op32-sem len op32) 8349 1.1 skrll ()) 8350 1.1 skrll ) 8351 1.1 skrll ) 8352 1.1 skrll ; jsri.w dst (m16 #1 m32 #1)) 8353 1.1 skrll (jsri-defn w dst16-16-20ar-HI (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #x3) jsr16-sem 8354 1.1 skrll dst32-16-24-Unprefixed-HI (f-0-4 #xC) (f-7-1 1) (f-10-2 #x1) (f-12-4 #xF) jsr32-sem 4) 8355 1.1 skrll (jsri-defn w dst16-16-16sa-HI (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #x3) jsr16-sem 8356 1.1 skrll dst32-16-16sa-Unprefixed-HI (f-0-4 #xC) (f-7-1 1) (f-10-2 #x1) (f-12-4 #xF) jsr32-sem 4) 8357 1.1 skrll (jsri-defn w dst16-16-8-HI (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #x3) jsr16-sem 8358 1.1 skrll dst32-16-8-Unprefixed-HI (f-0-4 #xC) (f-7-1 1) (f-10-2 #x1) (f-12-4 #xF) jsr32-sem 3) 8359 1.1 skrll (jsri-defn w dst16-basic-HI (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #x3) jsr16-sem 8360 1.1 skrll dst32-basic-Unprefixed-HI (f-0-4 #xC) (f-7-1 1) (f-10-2 #x1) (f-12-4 #xF) jsr32-sem 2) 8361 1.1 skrll 8362 1.1 skrll ; jsri.a (m16 #2 m32 #2) 8363 1.1 skrll (jsri-defn a dst16-16-20ar-SI (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #x1) jsr16-sem 8364 1.1 skrll dst32-16-24-Unprefixed-SI (f-0-4 #x9) (f-7-1 0) (f-10-2 #x0) (f-12-4 #x1) jsr32-sem 4) 8365 1.1 skrll (jsri-defn a dst16-16-8-SI (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #x1) jsr16-sem 8366 1.1 skrll dst32-16-8-Unprefixed-SI (f-0-4 #x9) (f-7-1 0) (f-10-2 #x0) (f-12-4 #x1) jsr32-sem 3) 8367 1.1 skrll (jsri-defn a dst16-16-16sa-SI (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #x1) jsr16-sem 8368 1.1 skrll dst32-16-16sa-Unprefixed-SI (f-0-4 #x9) (f-7-1 0) (f-10-2 #x0) (f-12-4 #x1) jsr32-sem 4) 8369 1.1 skrll (jsri-defn a dst16-basic-SI (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #x1) jsr16-sem 8370 1.1 skrll dst32-basic-Unprefixed-SI (f-0-4 #x9) (f-7-1 0) (f-10-2 #x0) (f-12-4 #x1) jsr32-sem 2) 8371 1.1 skrll 8372 1.1 skrll (dni jsri32.a "jsr.w dst32-16-24-Unprefixed-HI" (RL_1ADDR (machine 32)) 8373 1.1 skrll ("jsri.a ${dst32-16-24-Unprefixed-SI}") 8374 1.1 skrll (+ (f-0-4 #x9) (f-7-1 0) dst32-16-24-Unprefixed-SI (f-10-2 #x0) (f-12-4 #x1)) 8375 1.1 skrll (jsr32-sem 6 dst32-16-24-Unprefixed-SI) 8376 1.1 skrll ()) 8377 1.1 skrll ; jsr.w label16 (m32 #1) 8378 1.1 skrll (dni jsr32.w "jsr.w label" (RL_JUMP RELAXABLE (machine 32)) 8379 1.1 skrll ("jsr.w ${Lab-8-16}") 8380 1.1 skrll (+ (f-0-4 #xC) (f-4-4 #xF) Lab-8-16) 8381 1.1 skrll (jsr32-sem 3 Lab-8-16) 8382 1.1 skrll ()) 8383 1.1 skrll ; jsr.a label16 (m32 #2) 8384 1.1 skrll (dni jsr32.a "jsr.a label" (RL_JUMP (machine 32)) 8385 1.1 skrll ("jsr.a ${Lab-8-24}") 8386 1.1 skrll (+ (f-0-4 #xC) (f-4-4 #xD) Lab-8-24) 8387 1.1 skrll (jsr32-sem 4 Lab-8-24) 8388 1.1 skrll ()) 8389 1.1 skrll ; jsrs imm8 (m16 #1) 8390 1.1 skrll (dni jsrs16 "jsrs Imm-8-QI" ((machine 16)) 8391 1.1 skrll ("jsrs #${Imm-8-QI}") 8392 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xF) Imm-8-QI) 8393 1.1 skrll (jsr16-sem 2 Imm-8-QI) 8394 1.1 skrll ()) 8395 1.1 skrll ; jsrs imm8 (m32 #1) 8396 1.1 skrll (dni jsrs "jsrs #Imm-8-QI" ((machine 32)) 8397 1.1 skrll ("jsrs #${Imm-8-QI}") 8398 1.1 skrll (+ (f-0-4 #xD) (f-4-4 #xD) Imm-8-QI) 8399 1.1 skrll (jsr32-sem 2 Imm-8-QI) 8400 1.1 skrll ()) 8401 1.1 skrll 8402 1.1 skrll ;------------------------------------------------------------- 8403 1.1 skrll ; ldc - load control register 8404 1.1 skrll ; stc - store control register 8405 1.1 skrll ;------------------------------------------------------------- 8406 1.1 skrll 8407 1.1 skrll (define-pmacro (ldc32-cr1-sem src dst) 8408 1.1 skrll (sequence () 8409 1.1 skrll (case DFLT dst 8410 1.1 skrll ((#x0) (set (reg h-dct0) src)) 8411 1.1 skrll ((#x1) (set (reg h-dct1) src)) 8412 1.1 skrll ((#x2) (sequence ((HI tflag)) 8413 1.1 skrll (set tflag src) 8414 1.1 skrll (if (and tflag #x1) (set cbit 1)) 8415 1.1 skrll (if (and tflag #x2) (set dbit 1)) 8416 1.1 skrll (if (and tflag #x4) (set zbit 1)) 8417 1.1 skrll (if (and tflag #x8) (set sbit 1)) 8418 1.1 skrll (if (and tflag #x10) (set bbit 1)) 8419 1.1 skrll (if (and tflag #x20) (set obit 1)) 8420 1.1 skrll (if (and tflag #x40) (set ibit 1)) 8421 1.1 skrll (if (and tflag #x80) (set ubit 1)))) 8422 1.1 skrll ((#x3) (set (reg h-svf) src)) 8423 1.1 skrll ((#x4) (set (reg h-drc0) src)) 8424 1.1 skrll ((#x5) (set (reg h-drc1) src)) 8425 1.1 skrll ((#x6) (set (reg h-dmd0) src)) 8426 1.1 skrll ((#x7) (set (reg h-dmd1) src)) 8427 1.1 skrll ) 8428 1.1 skrll ) 8429 1.1 skrll ) 8430 1.1 skrll (define-pmacro (ldc32-cr2-sem src dst) 8431 1.1 skrll (sequence () 8432 1.1 skrll (case DFLT dst 8433 1.1 skrll ((#x0) (set (reg h-intb) src)) 8434 1.1 skrll ((#x1) (set (reg h-sp) src)) 8435 1.1 skrll ((#x2) (set (reg h-sb) src)) 8436 1.1 skrll ((#x3) (set (reg h-fb) src)) 8437 1.1 skrll ((#x4) (set (reg h-svp) src)) 8438 1.1 skrll ((#x5) (set (reg h-vct) src)) 8439 1.1 skrll ((#x7) (set (reg h-isp) src)) 8440 1.1 skrll ) 8441 1.1 skrll ) 8442 1.1 skrll ) 8443 1.1 skrll (define-pmacro (ldc32-cr3-sem src dst) 8444 1.1 skrll (sequence () 8445 1.1 skrll (case DFLT dst 8446 1.1 skrll ((#x2) (set (reg h-dma0) src)) 8447 1.1 skrll ((#x3) (set (reg h-dma1) src)) 8448 1.1 skrll ((#x4) (set (reg h-dra0) src)) 8449 1.1 skrll ((#x5) (set (reg h-dra1) src)) 8450 1.1 skrll ((#x6) (set (reg h-dsa0) src)) 8451 1.1 skrll ((#x7) (set (reg h-dsa1) src)) 8452 1.1 skrll ) 8453 1.1 skrll ) 8454 1.1 skrll ) 8455 1.1 skrll (define-pmacro (ldc16-sem src dst) 8456 1.1 skrll (sequence () 8457 1.1 skrll (case DFLT dst 8458 1.1 skrll ((#x1) (set (reg h-intb) src)) 8459 1.1 skrll ((#x2) (set (reg h-intb) (or (reg h-intb) (sll src (const 16))))) 8460 1.1 skrll ((#x3) (sequence ((HI tflag)) 8461 1.1 skrll (set tflag src) 8462 1.1 skrll (if (and tflag #x1) (set cbit 1)) 8463 1.1 skrll (if (and tflag #x2) (set dbit 1)) 8464 1.1 skrll (if (and tflag #x4) (set zbit 1)) 8465 1.1 skrll (if (and tflag #x8) (set sbit 1)) 8466 1.1 skrll (if (and tflag #x10) (set bbit 1)) 8467 1.1 skrll (if (and tflag #x20) (set obit 1)) 8468 1.1 skrll (if (and tflag #x40) (set ibit 1)) 8469 1.1 skrll (if (and tflag #x80) (set ubit 1)))) 8470 1.1 skrll ((#x4) (set (reg h-isp) src)) 8471 1.1 skrll ((#x5) (set (reg h-sp) src)) 8472 1.1 skrll ((#x6) (set (reg h-sb) src)) 8473 1.1 skrll ((#x7) (set (reg h-fb) src)) 8474 1.1 skrll ) 8475 1.1 skrll ) 8476 1.1 skrll ) 8477 1.1 skrll 8478 1.1 skrll (define-pmacro (stc32-cr1-sem src dst) 8479 1.1 skrll (sequence () 8480 1.1 skrll (case DFLT src 8481 1.1 skrll ((#x0) (set dst (reg h-dct0))) 8482 1.1 skrll ((#x1) (set dst (reg h-dct1))) 8483 1.1 skrll ((#x2) (sequence ((HI tflag)) 8484 1.1 skrll (set tflag 0) 8485 1.1 skrll (if (eq cbit 1) (set tflag (or tflag #x1))) 8486 1.1 skrll (if (eq dbit 1) (set tflag (or tflag #x2))) 8487 1.1 skrll (if (eq zbit 1) (set tflag (or tflag #x4))) 8488 1.1 skrll (if (eq sbit 1) (set tflag (or tflag #x8))) 8489 1.1 skrll (if (eq bbit 1) (set tflag (or tflag #x10))) 8490 1.1 skrll (if (eq obit 1) (set tflag (or tflag #x20))) 8491 1.1 skrll (if (eq ibit 1) (set tflag (or tflag #x40))) 8492 1.1 skrll (if (eq ubit 1) (set tflag (or tflag #x80))) 8493 1.1 skrll (set dst tflag))) 8494 1.1 skrll ((#x3) (set dst (reg h-svf))) 8495 1.1 skrll ((#x4) (set dst (reg h-drc0))) 8496 1.1 skrll ((#x5) (set dst (reg h-drc1))) 8497 1.1 skrll ((#x6) (set dst (reg h-dmd0))) 8498 1.1 skrll ((#x7) (set dst (reg h-dmd1))) 8499 1.1 skrll ) 8500 1.1 skrll ) 8501 1.1 skrll ) 8502 1.1 skrll (define-pmacro (stc32-cr2-sem src dst) 8503 1.1 skrll (sequence () 8504 1.1 skrll (case DFLT src 8505 1.1 skrll ((#x0) (set dst (reg h-intb))) 8506 1.1 skrll ((#x1) (set dst (reg h-sp))) 8507 1.1 skrll ((#x2) (set dst (reg h-sb))) 8508 1.1 skrll ((#x3) (set dst (reg h-fb))) 8509 1.1 skrll ((#x4) (set dst (reg h-svp))) 8510 1.1 skrll ((#x5) (set dst (reg h-vct))) 8511 1.1 skrll ((#x7) (set dst (reg h-isp))) 8512 1.1 skrll ) 8513 1.1 skrll ) 8514 1.1 skrll ) 8515 1.1 skrll (define-pmacro (stc32-cr3-sem src dst) 8516 1.1 skrll (sequence () 8517 1.1 skrll (case DFLT src 8518 1.1 skrll ((#x2) (set dst (reg h-dma0))) 8519 1.1 skrll ((#x3) (set dst (reg h-dma1))) 8520 1.1 skrll ((#x4) (set dst (reg h-dra0))) 8521 1.1 skrll ((#x5) (set dst (reg h-dra1))) 8522 1.1 skrll ((#x6) (set dst (reg h-dsa0))) 8523 1.1 skrll ((#x7) (set dst (reg h-dsa1))) 8524 1.1 skrll ) 8525 1.1 skrll ) 8526 1.1 skrll ) 8527 1.1 skrll (define-pmacro (stc16-sem src dst) 8528 1.1 skrll (sequence () 8529 1.1 skrll (case DFLT src 8530 1.1 skrll ((#x1) (set dst (and (reg h-intb) (const #xffff)))) 8531 1.1 skrll ((#x2) (set dst (srl (reg h-intb) (const 16)))) 8532 1.1 skrll ((#x3) (sequence ((HI tflag)) 8533 1.1 skrll (set tflag 0) 8534 1.1 skrll (if (eq cbit 1) (set tflag (or tflag #x1))) 8535 1.1 skrll (if (eq dbit 1) (set tflag (or tflag #x2))) 8536 1.1 skrll (if (eq zbit 1) (set tflag (or tflag #x4))) 8537 1.1 skrll (if (eq sbit 1) (set tflag (or tflag #x8))) 8538 1.1 skrll (if (eq bbit 1) (set tflag (or tflag #x10))) 8539 1.1 skrll (if (eq obit 1) (set tflag (or tflag #x20))) 8540 1.1 skrll (if (eq ibit 1) (set tflag (or tflag #x40))) 8541 1.1 skrll (if (eq ubit 1) (set tflag (or tflag #x80))) 8542 1.1 skrll (set dst tflag))) 8543 1.1 skrll ((#x4) (set dst (reg h-isp))) 8544 1.1 skrll ((#x5) (set dst (reg h-sp))) 8545 1.1 skrll ((#x6) (set dst (reg h-sb))) 8546 1.1 skrll ((#x7) (set dst (reg h-fb))) 8547 1.1 skrll ) 8548 1.1 skrll ) 8549 1.1 skrll ) 8550 1.1 skrll 8551 1.1 skrll (dni ldc16.imm16 "ldc #imm,dst" ((machine 16)) 8552 1.1 skrll ("ldc #${Imm-16-HI},${cr16}") 8553 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-1 0) (f-12-4 0) cr16 Imm-16-HI) 8554 1.1 skrll (ldc16-sem Imm-16-HI cr16) 8555 1.1 skrll ()) 8556 1.1 skrll 8557 1.1 skrll (dni ldc16.dst "ldc src,dest" ((machine 16)) 8558 1.1 skrll ("ldc ${dst16-16-HI},${cr16}") 8559 1.1 skrll (+ (f-0-4 7) (f-4-4 #xA) (f-8-1 1) cr16 dst16-16-HI) 8560 1.1 skrll (ldc16-sem dst16-16-HI cr16) 8561 1.1 skrll ()) 8562 1.1 skrll ; ldc src,dest (m32c #4) 8563 1.1 skrll (dni ldc32.src-cr1 "ldc src,dst" ((machine 32)) 8564 1.1 skrll ("ldc ${dst32-24-Prefixed-HI},${cr1-Prefixed-32}") 8565 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 #xD) dst32-24-Prefixed-HI (f-15-1 1) (f-18-2 0) (f-20-1 1) cr1-Prefixed-32) 8566 1.1 skrll (ldc32-cr1-sem dst32-24-Prefixed-HI cr1-Prefixed-32) 8567 1.1 skrll ()) 8568 1.1 skrll ; ldc src,dest (m32c #5) 8569 1.1 skrll (dni ldc32.src-cr2 "ldc src,dest" ((machine 32)) 8570 1.1 skrll ("ldc ${dst32-16-Unprefixed-SI},${cr2-32}") 8571 1.1 skrll (+ (f-0-4 #xD) dst32-16-Unprefixed-SI (f-7-1 1) (f-10-2 0) (f-12-1 0) cr2-32) 8572 1.1 skrll (ldc32-cr2-sem dst32-16-Unprefixed-SI cr2-32) 8573 1.1 skrll ()) 8574 1.1 skrll ; ldc src,dest (m32c #6) 8575 1.1 skrll (dni ldc32.src-cr3 "ldc src,dst" ((machine 32)) 8576 1.1 skrll ("ldc ${dst32-24-Prefixed-SI},${cr3-Prefixed-32}") 8577 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 #xD) dst32-24-Prefixed-SI (f-15-1 1) (f-18-2 0) (f-20-1 0) cr3-Prefixed-32) 8578 1.1 skrll (ldc32-cr3-sem dst32-24-Prefixed-SI cr3-Prefixed-32) 8579 1.1 skrll ()) 8580 1.1 skrll ; ldc src,dest (m32c #1) 8581 1.1 skrll (dni ldc32.imm16-cr1 "ldc #imm,dst" ((machine 32)) 8582 1.1 skrll ("ldc #${Imm-16-HI},${cr1-Unprefixed-32}") 8583 1.1 skrll (+ (f-0-4 #xD) (f-4-4 5) (f-8-4 #xA) (f-12-1 1) cr1-Unprefixed-32 Imm-16-HI) 8584 1.1 skrll (ldc32-cr1-sem Imm-16-HI cr1-Unprefixed-32) 8585 1.1 skrll ()) 8586 1.1 skrll ; ldc src,dest (m32c #2) 8587 1.1 skrll (dni ldc32.imm16-cr2 "ldc #imm,dst" ((machine 32)) 8588 1.1 skrll ("ldc #${Dsp-16-u24},${cr2-32}") 8589 1.1 skrll (+ (f-0-4 #xD) (f-4-4 5) (f-8-4 2) (f-12-1 1) cr2-32 Dsp-16-u24) 8590 1.1 skrll (ldc32-cr2-sem Dsp-16-u24 cr2-32) 8591 1.1 skrll ()) 8592 1.1 skrll ; ldc src,dest (m32c #3) 8593 1.1 skrll (dni ldc32.imm16-cr3 "ldc #imm,dst" ((machine 32)) 8594 1.1 skrll ("ldc #${Dsp-16-u24},${cr3-Unprefixed-32}") 8595 1.1 skrll (+ (f-0-4 #xD) (f-4-4 5) (f-8-4 6) (f-12-1 1) cr3-Unprefixed-32 Dsp-16-u24) 8596 1.1 skrll (ldc32-cr3-sem Dsp-16-u24 cr3-Unprefixed-32) 8597 1.1 skrll ()) 8598 1.1 skrll 8599 1.1 skrll (dni stc16.src "stc src,dest" ((machine 16)) 8600 1.1 skrll ("stc ${cr16},${dst16-16-HI}") 8601 1.1 skrll (+ (f-0-4 7) (f-4-4 #xB) (f-8-1 1) cr16 dst16-16-HI) 8602 1.1 skrll (stc16-sem cr16 dst16-16-HI ) 8603 1.1 skrll ()) 8604 1.1 skrll 8605 1.1 skrll (dni stc16.pc "stc pc,dest" ((machine 16)) 8606 1.1 skrll ("stc pc,${dst16-16-HI}") 8607 1.1 skrll (+ (f-0-4 7) (f-4-4 #xC) (f-8-4 #xC) dst16-16-HI) 8608 1.1 skrll (sequence () (set dst16-16-HI (reg h-pc))) 8609 1.1 skrll ()) 8610 1.1 skrll 8611 1.1 skrll (dni stc32.src-cr1 "stc src,dst" ((machine 32)) 8612 1.1 skrll ("stc ${cr1-Prefixed-32},${dst32-24-Prefixed-HI}") 8613 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 #xD) dst32-24-Prefixed-HI (f-15-1 1) (f-18-2 1) (f-20-1 1) cr1-Prefixed-32) 8614 1.1 skrll (stc32-cr1-sem cr1-Prefixed-32 dst32-24-Prefixed-HI ) 8615 1.1 skrll ()) 8616 1.1 skrll 8617 1.1 skrll (dni stc32.src-cr2 "stc src,dest" ((machine 32)) 8618 1.1 skrll ("stc ${cr2-32},${dst32-16-Unprefixed-SI}") 8619 1.1 skrll (+ (f-0-4 #xD) dst32-16-Unprefixed-SI (f-7-1 1) (f-10-2 0) (f-12-1 2) cr2-32) 8620 1.1 skrll (stc32-cr2-sem cr2-32 dst32-16-Unprefixed-SI ) 8621 1.1 skrll ()) 8622 1.1 skrll 8623 1.1 skrll (dni stc32.src-cr3 "stc src,dst" ((machine 32)) 8624 1.1 skrll ("stc ${cr3-Prefixed-32},${dst32-24-Prefixed-SI}") 8625 1.1 skrll (+ (f-0-4 0) (f-4-4 1) (f-8-4 #xD) dst32-24-Prefixed-SI (f-15-1 1) (f-18-2 1) (f-20-1 0) cr3-Prefixed-32) 8626 1.1 skrll (stc32-cr3-sem cr3-Prefixed-32 dst32-24-Prefixed-SI ) 8627 1.1 skrll ()) 8628 1.1 skrll 8629 1.1 skrll ;------------------------------------------------------------- 8630 1.1 skrll ; ldctx - load context 8631 1.1 skrll ; stctx - store context 8632 1.1 skrll ;------------------------------------------------------------- 8633 1.1 skrll 8634 1.1 skrll ; ??? semantics 8635 1.1 skrll (dni ldctx16 "ldctx abs16,abs24" ((machine 16)) 8636 1.1 skrll ("ldctx ${Dsp-16-u16},${Dsp-32-u24}") 8637 1.1 skrll (+ (f-0-4 #x7) (f-4-4 #xC) (f-8-4 #xF) (f-12-4 #x0) Dsp-16-u16 Dsp-32-u24) 8638 1.1 skrll (nop) 8639 1.1 skrll ()) 8640 1.1 skrll (dni ldctx32 "ldctx abs16,abs24" ((machine 32)) 8641 1.1 skrll ("ldctx ${Dsp-16-u16},${Dsp-32-u24}") 8642 1.1 skrll (+ (f-0-4 #xB) (f-4-4 #x6) (f-8-4 #xC) (f-12-4 #x3) Dsp-16-u16 Dsp-32-u24) 8643 1.1 skrll (nop) 8644 1.1 skrll ()) 8645 1.1 skrll (dni stctx16 "stctx abs16,abs24" ((machine 16)) 8646 1.1 skrll ("stctx ${Dsp-16-u16},${Dsp-32-u24}") 8647 1.1 skrll (+ (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #xF) (f-12-4 #x0) Dsp-16-u16 Dsp-32-u24) 8648 1.1 skrll (nop) 8649 1.1 skrll ()) 8650 1.1 skrll (dni stctx32 "stctx abs16,abs24" ((machine 32)) 8651 1.1 skrll ("stctx ${Dsp-16-u16},${Dsp-32-u24}") 8652 1.1 skrll (+ (f-0-4 #xB) (f-4-4 #x6) (f-8-4 #xD) (f-12-4 #x3) Dsp-16-u16 Dsp-32-u24) 8653 1.1 skrll (nop) 8654 1.1 skrll ()) 8655 1.1 skrll 8656 1.1 skrll ;------------------------------------------------------------- 8657 1.1 skrll ; lde - load from extra far data area (m16) 8658 1.1 skrll ; ste - store to extra far data area (m16) 8659 1.1 skrll ;------------------------------------------------------------- 8660 1.1 skrll 8661 1.1 skrll (lde-dst QI .b 0) 8662 1.1 skrll (lde-dst HI .w 1) 8663 1.1 skrll 8664 1.1 skrll (ste-dst QI .b 0) 8665 1.1 skrll (ste-dst HI .w 1) 8666 1.1 skrll 8667 1.1 skrll ;------------------------------------------------------------- 8668 1.1 skrll ; ldipl - load interrupt permission level 8669 1.1 skrll ;------------------------------------------------------------- 8670 1.1 skrll 8671 1.1 skrll ; ??? semantics 8672 1.1 skrll ; ldintb <==> ldc #imm,intbh ; ldc #imm,intbl 8673 1.1 skrll 8674 1.1 skrll (dni ldipl16.imm "ldipl #imm" ((machine 16)) 8675 1.1 skrll ("ldipl #${Imm-13-u3}") 8676 1.1 skrll (+ (f-0-4 #x7) (f-4-4 #xD) (f-8-4 #xA) (f-12-1 0) Imm-13-u3) 8677 1.1 skrll (nop) 8678 1.1 skrll ()) 8679 1.1 skrll (dni ldipl32.imm "ldipl #imm" ((machine 32)) 8680 1.1 skrll ("ldipl #${Imm-13-u3}") 8681 1.1 skrll (+ (f-0-4 #xD) (f-4-4 5) (f-8-4 #xE) (f-12-1 1) Imm-13-u3) 8682 1.1 skrll (nop) 8683 1.1 skrll ()) 8684 1.1 skrll 8685 1.1 skrll 8686 1.1 skrll ;------------------------------------------------------------- 8687 1.1 skrll ; max - maximum value 8688 1.1 skrll ;------------------------------------------------------------- 8689 1.1 skrll 8690 1.1 skrll ; TODO check semantics for min -1,0 8691 1.1 skrll (define-pmacro (max-sem mode src dst) 8692 1.1 skrll (sequence () 8693 1.1 skrll (if (gt mode src dst) 8694 1.1 skrll (set mode dst src))) 8695 1.1 skrll ) 8696 1.1 skrll 8697 1.1 skrll ; max.size:G #imm,dst 8698 1.1 skrll (binary-arith32-imm-dst-Prefixed QI QI .b 0 max X #x8 #x3 #xF max-sem) 8699 1.1 skrll (binary-arith32-imm-dst-Prefixed HI HI .w 1 max X #x8 #x3 #xF max-sem) 8700 1.1 skrll 8701 1.1 skrll ; max.BW:G src,dst 8702 1.1 skrll (binary-arith32-src-dst-Prefixed QI QI .b 0 max X #x1 #xD max-sem) 8703 1.1 skrll (binary-arith32-src-dst-Prefixed HI HI .w 1 max X #x1 #xD max-sem) 8704 1.1 skrll 8705 1.1 skrll ;------------------------------------------------------------- 8706 1.1 skrll ; min - minimum value 8707 1.1 skrll ;------------------------------------------------------------- 8708 1.1 skrll 8709 1.1 skrll (define-pmacro (min-sem mode src dst) 8710 1.1 skrll (sequence () 8711 1.1 skrll (if (lt mode src dst) 8712 1.1 skrll (set mode dst src))) 8713 1.1 skrll ) 8714 1.1 skrll 8715 1.1 skrll ; min.size:G #imm,dst 8716 1.1 skrll (binary-arith32-imm-dst-Prefixed QI QI .b 0 min X #x8 #x2 #xF min-sem) 8717 1.1 skrll (binary-arith32-imm-dst-Prefixed HI HI .w 1 min X #x8 #x2 #xF min-sem) 8718 1.1 skrll 8719 1.1 skrll ; min.BW:G src,dst 8720 1.1 skrll (binary-arith32-src-dst-Prefixed QI QI .b 0 min X #x1 #xC min-sem) 8721 1.1 skrll (binary-arith32-src-dst-Prefixed HI HI .w 1 min X #x1 #xC min-sem) 8722 1.1 skrll 8723 1.1 skrll ;------------------------------------------------------------- 8724 1.1 skrll ; mov - move 8725 1.1 skrll ;------------------------------------------------------------- 8726 1.1 skrll 8727 1.1 skrll (define-pmacro (mov-sem mode src1 dst) 8728 1.1 skrll (sequence ((mode result)) 8729 1.1 skrll (set result src1) 8730 1.1 skrll (set-z-and-s result) 8731 1.1 skrll (set mode dst src1)) 8732 1.1 skrll ) 8733 1.1 skrll 8734 1.1 skrll (define-pmacro (mov-dspsp-dst-sem mach mode src1 dst) 8735 1.1 skrll (set dst (mem-mach mach mode (add sp src1))) 8736 1.1 skrll ) 8737 1.1 skrll 8738 1.1 skrll (define-pmacro (mov-src-dspsp-sem mach mode src dst1) 8739 1.1 skrll (set (mem-mach mach mode (add sp dst1)) src) 8740 1.1 skrll ) 8741 1.1 skrll 8742 1.1 skrll (define-pmacro (mov16-imm-an-defn size mode imm regn op1 op2) 8743 1.1 skrll (dni (.sym mov16. size .S-imm- regn) 8744 1.1 skrll (.str "mov." size ":S " imm "," regn) 8745 1.1 skrll ((machine 16)) 8746 1.1 skrll (.str "mov." size "$S #${" imm "}," regn) 8747 1.1 skrll (+ op1 op2 imm) 8748 1.1 skrll (mov-sem mode imm (reg (.sym h- regn))) 8749 1.1 skrll ()) 8750 1.1 skrll ) 8751 1.1 skrll ; mov.size:G #imm,dst (m16 #1 m32 #1) 8752 1.1 skrll (binary-arith-imm-dst mov G (f-0-4 7) (f-4-3 2) (f-8-4 #xC) #x9 #x2 #xF mov-sem) 8753 1.1 skrll ; mov.L:G #imm32,dst (m32 #2) 8754 1.1 skrll (binary-arith32-imm-dst-defn SI SI .l 0 mov G #xB #x3 #x1 mov-sem) 8755 1.1 skrll ; mov.BW:S #imm,dst2 (m32 #4) 8756 1.1 skrll (binary-arith32-s-imm-dst QI .b 0 mov #x0 #x2 mov-sem) 8757 1.1 skrll (binary-arith32-s-imm-dst HI .w 1 mov #x0 #x2 mov-sem) 8758 1.1 skrll ; mov.b:S #imm8,dst3 (m16 #3) 8759 1.1 skrll (binary-arith16-b-S-imm8-dst3 mov ".b" (f-0-4 #xC) (f-4-1 0) mov-sem) 8760 1.1 skrll ; mov.b:S #imm8,aN (m16 #4) 8761 1.1 skrll (mov16-imm-an-defn b QI Imm-8-QI a0 (f-0-4 #xE) (f-4-4 2)) 8762 1.1 skrll (mov16-imm-an-defn b QI Imm-8-QI a1 (f-0-4 #xE) (f-4-4 #xA)) 8763 1.1 skrll (mov16-imm-an-defn w HI Imm-8-HI a0 (f-0-4 #xA) (f-4-4 2)) 8764 1.1 skrll (mov16-imm-an-defn w HI Imm-8-HI a1 (f-0-4 #xA) (f-4-4 #xA)) 8765 1.1 skrll ; mov.WL:S #imm,A0/A1 (m32 #5) 8766 1.1 skrll (define-pmacro (mov32-wl-s-defn mode sz op1 imm regn op2) 8767 1.1 skrll (dni (.sym mov32- sz - regn) 8768 1.1 skrll (.str "mov." sz ":s" imm "," regn) 8769 1.1 skrll ((machine 32)) 8770 1.1 skrll (.str "mov." sz "$S #${" imm "}," regn) 8771 1.1 skrll (+ (f-0-4 op1) (f-4-4 op2) imm) 8772 1.1 skrll (mov-sem mode imm (reg (.sym h- regn))) 8773 1.1 skrll ()) 8774 1.1 skrll ) 8775 1.1 skrll (mov32-wl-s-defn HI w #x9 Imm-8-HI a0 #xC) 8776 1.1 skrll (mov32-wl-s-defn HI w #x9 Imm-8-HI a1 #xD) 8777 1.1 skrll (mov32-wl-s-defn SI l #xB Dsp-8-s24 a0 #xC) 8778 1.1 skrll (mov32-wl-s-defn SI l #xB Dsp-8-s24 a1 #xD) 8779 1.1 skrll 8780 1.1 skrll ; mov.size:Q #imm4,dst (m16 #2 m32 #3) 8781 1.1 skrll (binary-arith16-imm4-dst-defn QI .b 0 0 mov (f-0-4 #xD) (f-4-3 4) mov-sem) 8782 1.1 skrll (binary-arith16-imm4-dst-defn HI .w 0 1 mov (f-0-4 #xD) (f-4-3 4) mov-sem) 8783 1.1 skrll (binary-arith32-imm4-dst-defn QI .b 1 0 mov #x7 #x2 mov-sem) 8784 1.1 skrll (binary-arith32-imm4-dst-defn HI .w 1 1 mov #x7 #x2 mov-sem) 8785 1.1 skrll 8786 1.1 skrll ; mov.BW:Z #0,dst (m16 #5 m32 #6) 8787 1.1 skrll (dni mov16.b-Z-imm8-dst3 8788 1.1 skrll "mov.b:Z #0,Dst16-3-S-8" 8789 1.1 skrll ((machine 16)) 8790 1.1 skrll "mov.b$Z #0,${Dst16-3-S-8}" 8791 1.1 skrll (+ (f-0-4 #xB) (f-4-1 #x0) Dst16-3-S-8) 8792 1.1 skrll (mov-sem QI (const 0) Dst16-3-S-8) 8793 1.1 skrll ()) 8794 1.1 skrll ; (binary-arith16-b-Z-imm8-dst3 mov ".b" (f-0-4 #xB) (f-4-1 0) mov-sem) 8795 1.1 skrll (binary-arith32-z-imm-dst QI .b 0 mov #x0 #x1 mov-sem) 8796 1.1 skrll (binary-arith32-z-imm-dst HI .w 1 mov #x0 #x1 mov-sem) 8797 1.1 skrll ; mov.BW:G src,dst (m16 #6 m32 #7) 8798 1.1 skrll (binary-arith-src-dst mov G (f-0-4 #x7) (f-4-3 1) #x1 #xB mov-sem) 8799 1.1 skrll ; mov.B:S src2,a0/a1 (m16 #7) 8800 1.1 skrll (dni (.sym mov 16 .b.S-An) 8801 1.1 skrll (.str mov ".b:S src2,a[01]") 8802 1.1 skrll ((machine 16)) 8803 1.1 skrll (.str mov ".b$S ${src16-2-S},${Dst16AnQI-S}") 8804 1.1 skrll (+ (f-0-4 #x3) (f-4-1 0) Dst16AnQI-S src16-2-S) 8805 1.1 skrll (mov-sem QI src16-2-S Dst16AnQI-S) 8806 1.1 skrll ()) 8807 1.1 skrll (define-pmacro (mov16-b-s-an-defn op1 op2 op2c) 8808 1.1 skrll (dni (.sym mov16.b.S- op1 - op2) 8809 1.1 skrll (.str mov ".b:S " op1 "," op2) 8810 1.1 skrll ((machine 16)) 8811 1.1 skrll (.str mov ".b$S " op1 "," op2) 8812 1.1 skrll (+ (f-0-4 #x3) op2c) 8813 1.1 skrll (mov-sem QI (reg (.sym h- op1)) (reg (.sym h- op2))) 8814 1.1 skrll ()) 8815 1.1 skrll ) 8816 1.1 skrll (mov16-b-s-an-defn r0l a1 (f-4-4 #x4)) 8817 1.1 skrll (mov16-b-s-an-defn r0h a0 (f-4-4 #x0)) 8818 1.1 skrll 8819 1.1 skrll ; mov.L:G src,dst (m32 #8) 8820 1.1 skrll (binary-arith32-src-dst-defn SI SI .l 1 mov G #x1 #x3 mov-sem) 8821 1.1 skrll ; mov.B:S r0l/r0h,dst2 (m16 #8) 8822 1.1 skrll (dni (.sym mov 16 .b.S-Rn-An) 8823 1.1 skrll (.str mov ".b:S r0[lh],src2") 8824 1.1 skrll ((machine 16)) 8825 1.1 skrll (.str mov ".b$S ${Dst16RnQI-S},${src16-2-S}") 8826 1.1 skrll (+ (f-0-4 #x0) (f-4-1 0) Dst16RnQI-S src16-2-S) 8827 1.1 skrll (mov-sem QI src16-2-S Dst16RnQI-S) 8828 1.1 skrll ()) 8829 1.1 skrll 8830 1.1 skrll ; mov.B.S src2,r0l/r0h (m16 #9) 8831 1.1 skrll (binary-arith16-b-S-src2 mov (f-0-4 0) (f-4-1 1) mov-sem) 8832 1.1 skrll 8833 1.1 skrll ; mov.BW:S src2,r0l/r0 (m32 #9) 8834 1.1 skrll ; mov.BW:S src2,r1l/r1 (m32 #10) 8835 1.1 skrll (define-pmacro (mov32-src-r sz szcode mode src dst opc1 opc2) 8836 1.1 skrll (begin 8837 1.1 skrll (dni (.sym mov32. sz - src - dst) 8838 1.1 skrll (.str "mov." sz "src," dst) 8839 1.1 skrll ((machine 32)) 8840 1.1 skrll (.str "mov." sz "$S ${" (.sym src - mode) "}," dst) 8841 1.1 skrll (+ (f-0-2 opc1) (.sym src - mode) (f-4-3 opc2) (f-7-1 szcode)) 8842 1.1 skrll (mov-sem mode (.sym src - mode) (reg (.sym h- dst))) 8843 1.1 skrll ()) 8844 1.1 skrll ) 8845 1.1 skrll ) 8846 1.1 skrll (mov32-src-r b 0 QI dst32-2-S-16 r0l 0 4) 8847 1.1 skrll (mov32-src-r w 1 HI dst32-2-S-16 r0 0 4) 8848 1.1 skrll (mov32-src-r b 0 QI dst32-2-S-8 r0l 0 4) 8849 1.1 skrll (mov32-src-r w 1 HI dst32-2-S-8 r0 0 4) 8850 1.1 skrll (mov32-src-r b 0 QI dst32-2-S-basic r1l 1 7) 8851 1.1 skrll (mov32-src-r w 1 HI dst32-2-S-basic r1 1 7) 8852 1.1 skrll (mov32-src-r b 0 QI dst32-2-S-16 r1l 1 7) 8853 1.1 skrll (mov32-src-r w 1 HI dst32-2-S-16 r1 1 7) 8854 1.1 skrll (mov32-src-r b 0 QI dst32-2-S-8 r1l 1 7) 8855 1.1 skrll (mov32-src-r w 1 HI dst32-2-S-8 r1 1 7) 8856 1.1 skrll 8857 1.1 skrll ; mov.BW:S r0l/r0,dst2 (m32 #11) 8858 1.1 skrll (define-pmacro (mov32-r-dest sz szcode mode src dst opc1 opc2) 8859 1.1 skrll (begin 8860 1.1 skrll (dni (.sym mov32. sz - src - dst) 8861 1.1 skrll (.str "mov." sz "src," dst) 8862 1.1 skrll ((machine 32)) 8863 1.1 skrll (.str "mov." sz "$S " src ",${" (.sym dst - mode) "}") 8864 1.1 skrll (+ (f-0-2 opc1) (.sym dst - mode) (f-4-3 opc2) (f-7-1 szcode)) 8865 1.1 skrll (mov-sem mode (reg (.sym h- src)) (.sym dst - mode)) 8866 1.1 skrll ()) 8867 1.1 skrll ) 8868 1.1 skrll ) 8869 1.1 skrll (mov32-r-dest b 0 QI r0l dst32-2-S-16 0 0) 8870 1.1 skrll (mov32-r-dest w 1 HI r0 dst32-2-S-16 0 0) 8871 1.1 skrll (mov32-r-dest b 0 QI r0l dst32-2-S-8 0 0) 8872 1.1 skrll (mov32-r-dest w 1 HI r0 dst32-2-S-8 0 0) 8873 1.1 skrll 8874 1.1 skrll ; mov.L:S src,A0/A1 (m32 #12) 8875 1.1 skrll (define-pmacro (mov32-src-a src dst dstcode opc1 opc2) 8876 1.1 skrll (begin 8877 1.1 skrll (dni (.sym mov32. sz - src - dst) 8878 1.1 skrll (.str "mov." sz "src," dst) 8879 1.1 skrll ((machine 32)) 8880 1.1 skrll (.str "mov.l" "$S ${" (.sym src - SI) "}," dst) 8881 1.1 skrll (+ (f-0-2 opc1) (.sym src - SI) (f-4-3 opc2) (f-7-1 dstcode)) 8882 1.1 skrll (mov-sem SI (.sym src - SI) (reg (.sym h- dst))) 8883 1.1 skrll ()) 8884 1.1 skrll ) 8885 1.1 skrll ) 8886 1.1 skrll (mov32-src-a dst32-2-S-16 a0 0 1 4) 8887 1.1 skrll (mov32-src-a dst32-2-S-16 a1 1 1 4) 8888 1.1 skrll (mov32-src-a dst32-2-S-8 a0 0 1 4) 8889 1.1 skrll (mov32-src-a dst32-2-S-8 a1 1 1 4) 8890 1.1 skrll 8891 1.1 skrll ; mov.BW:G dsp8[sp],dst (m16 #10 m32 #13) 8892 1.1 skrll ; mov.BW:G src,dsp8[sp] (m16 #11 m32 #14) 8893 1.1 skrll (mov-dspsp-dst mov (f-0-4 #x7) (f-4-3 2) (f-8-4 #xB) #xB #x0 #xF mov-dspsp-dst-sem) 8894 1.1 skrll (mov-src-dspsp mov (f-0-4 #x7) (f-4-3 2) (f-8-4 #x3) #xA #x0 #xF mov-src-dspsp-sem) 8895 1.1 skrll 8896 1.1 skrll ;------------------------------------------------------------- 8897 1.1 skrll ; mova - move effective address 8898 1.1 skrll ;------------------------------------------------------------- 8899 1.1 skrll 8900 1.1 skrll (define-pmacro (mov16a-defn dst dstop dstcode) 8901 1.1 skrll (dni (.sym mova16. src - dst) 8902 1.1 skrll (.str "mova src," dst) 8903 1.1 skrll ((machine 16)) 8904 1.1 skrll (.str "mova ${dst16-16-Mova-HI}," dst) 8905 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) dst16-16-Mova-HI (f-8-4 dstcode)) 8906 1.1 skrll (sequence () (set HI (reg dstop) dst16-16-Mova-HI)) 8907 1.1 skrll ()) 8908 1.1 skrll ) 8909 1.1 skrll (mov16a-defn r0 h-r0 0) 8910 1.1 skrll (mov16a-defn r1 h-r1 1) 8911 1.1 skrll (mov16a-defn r2 h-r2 2) 8912 1.1 skrll (mov16a-defn r3 h-r3 3) 8913 1.1 skrll (mov16a-defn a0 h-a0 4) 8914 1.1 skrll (mov16a-defn a1 h-a1 5) 8915 1.1 skrll 8916 1.1 skrll (define-pmacro (mov32a-defn dst dstop dstcode) 8917 1.1 skrll (dni (.sym mova32. src - dst) 8918 1.1 skrll (.str "mova src," dst) 8919 1.1 skrll ((machine 32)) 8920 1.1 skrll (.str "mova ${dst32-16-Unprefixed-Mova-SI}," dst) 8921 1.1 skrll (+ (f-0-4 #xD) dst32-16-Unprefixed-Mova-SI (f-7-1 1) (f-10-2 1) (f-12-1 1) (f-13-3 dstcode)) 8922 1.1 skrll (sequence () (set SI (reg dstop) dst32-16-Unprefixed-Mova-SI)) 8923 1.1 skrll ()) 8924 1.1 skrll ) 8925 1.1 skrll (mov32a-defn r2r0 h-r2r0 0) 8926 1.1 skrll (mov32a-defn r3r1 h-r3r1 1) 8927 1.1 skrll (mov32a-defn a0 h-a0 2) 8928 1.1 skrll (mov32a-defn a1 h-a1 3) 8929 1.1 skrll 8930 1.1 skrll ;------------------------------------------------------------- 8931 1.1 skrll ; movDir - move nibble 8932 1.1 skrll ;------------------------------------------------------------- 8933 1.1 skrll 8934 1.1 skrll (define-pmacro (movdir-sem nib src dst) 8935 1.1 skrll (sequence ((SI tmp)) 8936 1.1 skrll (case DFLT nib 8937 1.1 skrll ((0) (set dst (or (and dst #xf0) (and src #xf)))) 8938 1.1 skrll ((1) (set dst (or (and dst #x0f) (sll (and src #xf) 4)))) 8939 1.1 skrll ((2) (set dst (or (and dst #xf0) (srl (and src #xf0) 4)))) 8940 1.1 skrll ((3) (set dst (or (and dst #x0f) (and src #xf0)))) 8941 1.1 skrll ) 8942 1.1 skrll ) 8943 1.1 skrll ) 8944 1.1 skrll ; movDir src,dst 8945 1.1 skrll (define-pmacro (mov16dir-1-defn nib dircode dir) 8946 1.1 skrll (dni (.sym mov nib 16 ".r0l-dst") 8947 1.1 skrll (.str "mov" nib " r0l,dst") 8948 1.1 skrll ((machine 16)) 8949 1.1 skrll (.str "mov" nib " r0l,${dst16-16-QI}") 8950 1.1 skrll (+ (f-0-4 7) (f-4-4 #xC) (f-8-4 dir) dst16-16-QI) 8951 1.1 skrll (movdir-sem dircode (reg h-r0l) dst16-16-QI) 8952 1.1 skrll ()) 8953 1.1 skrll ) 8954 1.1 skrll (mov16dir-1-defn ll 0 8) 8955 1.1 skrll (mov16dir-1-defn lh 1 #xA) 8956 1.1 skrll (mov16dir-1-defn hl 2 9) 8957 1.1 skrll (mov16dir-1-defn hh 3 #xB) 8958 1.1 skrll (define-pmacro (mov16dir-2-defn nib dircode dir) 8959 1.1 skrll (dni (.sym mov nib 16 ".src-r0l") 8960 1.1 skrll (.str "mov" nib " src,r0l") 8961 1.1 skrll ((machine 16)) 8962 1.1 skrll (.str "mov" nib " ${dst16-16-QI},r0l") 8963 1.1 skrll (+ (f-0-4 7) (f-4-4 #xC) (f-8-4 dir) dst16-16-QI) 8964 1.1 skrll (movdir-sem dircode dst16-16-QI (reg h-r0l)) 8965 1.1 skrll ()) 8966 1.1 skrll ) 8967 1.1 skrll (mov16dir-2-defn ll 0 0) 8968 1.1 skrll (mov16dir-2-defn lh 1 2) 8969 1.1 skrll (mov16dir-2-defn hl 2 1) 8970 1.1 skrll (mov16dir-2-defn hh 3 3) 8971 1.1 skrll 8972 1.1 skrll (define-pmacro (mov32dir-1-defn nib o1o0) 8973 1.1 skrll (dni (.sym mov nib 32 ".r0l-dst") 8974 1.1 skrll (.str "mov" nib " r0l,dst") 8975 1.1 skrll ((machine 32)) 8976 1.1 skrll (.str "mov" nib " r0l,${dst32-24-Prefixed-QI}") 8977 1.1 skrll (+ (f-0-4 #x0) (f-4-4 #x1) (f-8-4 #xB) dst32-24-Prefixed-QI (f-15-1 0) (f-18-2 o1o0) (f-20-4 #xE)) 8978 1.1 skrll (movdir-sem o1o0 (reg h-r0l) dst32-24-Prefixed-QI) 8979 1.1 skrll ()) 8980 1.1 skrll ) 8981 1.1 skrll (mov32dir-1-defn ll 0) 8982 1.1 skrll (mov32dir-1-defn lh 1) 8983 1.1 skrll (mov32dir-1-defn hl 2) 8984 1.1 skrll (mov32dir-1-defn hh 3) 8985 1.1 skrll (define-pmacro (mov32dir-2-defn nib o1o0) 8986 1.1 skrll (dni (.sym mov nib 32 ".src-r0l") 8987 1.1 skrll (.str "mov" nib " src,r0l") 8988 1.1 skrll ((machine 32)) 8989 1.1 skrll (.str "mov" nib " ${dst32-24-Prefixed-QI},r0l") 8990 1.1 skrll (+ (f-0-4 #x0) (f-4-4 #x1) (f-8-4 #xA) dst32-24-Prefixed-QI (f-15-1 0) (f-18-2 o1o0) (f-20-4 #xE)) 8991 1.1 skrll (movdir-sem o1o0 dst32-24-Prefixed-QI (reg h-r0l)) 8992 1.1 skrll ()) 8993 1.1 skrll ) 8994 1.1 skrll (mov32dir-2-defn ll 0) 8995 1.1 skrll (mov32dir-2-defn lh 1) 8996 1.1 skrll (mov32dir-2-defn hl 2) 8997 1.1 skrll (mov32dir-2-defn hh 3) 8998 1.1 skrll 8999 1.1 skrll ;------------------------------------------------------------- 9000 1.1 skrll ; movx - move extend sign (m32) 9001 1.1 skrll ;------------------------------------------------------------- 9002 1.1 skrll 9003 1.1 skrll (define-pmacro (movx-sem mode src dst) 9004 1.1 skrll (sequence ((SI source) (SI result)) 9005 1.1 skrll (set SI result src) 9006 1.1 skrll (set-z-and-s result) 9007 1.1 skrll (set dst result)) 9008 1.1 skrll ) 9009 1.1 skrll 9010 1.1 skrll ; movx #imm,dst 9011 1.1 skrll (binary-arith32-imm-dst-defn QI SI "" 0 movx X #xB #x1 #x1 movx-sem) 9012 1.1 skrll 9013 1.1 skrll ;------------------------------------------------------------- 9014 1.1 skrll ; mul - multiply 9015 1.1 skrll ;------------------------------------------------------------- 9016 1.1 skrll 9017 1.1 skrll (define-pmacro (mul-sem mode src1 dst) 9018 1.1 skrll (sequence ((mode result)) 9019 1.1 skrll (set obit (add-oflag mode src1 dst 0)) 9020 1.1 skrll (set result (mul mode src1 dst)) 9021 1.1 skrll (set dst result)) 9022 1.1 skrll ) 9023 1.1 skrll 9024 1.1 skrll ; mul.BW #imm,dst 9025 1.1 skrll (binary-arith-imm-dst mul G (f-0-4 7) (f-4-3 6) (f-8-4 5) #x8 #x1 #xF mul-sem) 9026 1.1 skrll ; mul.BW src,dst 9027 1.1 skrll (binary-arith-src-dst mul G (f-0-4 #x7) (f-4-3 4) #x1 #xC mul-sem) 9028 1.1 skrll 9029 1.1 skrll (dni mul_l "mul.l src,r2r0" ((machine 32)) 9030 1.1 skrll ("mul.l ${dst32-24-Prefixed-SI},r2r0") 9031 1.1 skrll (+ (f-0-4 #x0) (f-4-4 #x1) (f-8-4 #x8) (f-15-1 #x1) (f-18-2 #x1) (f-20-4 #xf) 9032 1.1 skrll dst32-24-Prefixed-SI) 9033 1.1 skrll () ()) 9034 1.1 skrll 9035 1.1 skrll (dni mulu_l "mulu.l src,r2r0" ((machine 32)) 9036 1.1 skrll ("mulu.l ${dst32-24-Prefixed-SI},r2r0") 9037 1.1 skrll (+ (f-0-4 #x0) (f-4-4 #x1) (f-8-4 #x8) (f-15-1 #x1) (f-18-2 #x0) (f-20-4 #xf) 9038 1.1 skrll dst32-24-Prefixed-SI) 9039 1.1 skrll () ()) 9040 1.1 skrll ;------------------------------------------------------------- 9041 1.1 skrll ; mulex - multiple extend sign (m32) 9042 1.1 skrll ;------------------------------------------------------------- 9043 1.1 skrll 9044 1.1 skrll ; mulex src,dst 9045 1.1 skrll ; (dni mulex-absolute-indirect "mulex [src]" ((machine 32)) 9046 1.1 skrll ; ("mulex ${dst32-24-absolute-indirect-HI}") 9047 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 #xC) dst32-24-absolute-indirect-HI (f-15-1 1) (f-18-2 3) (f-20-4 #xE)) 9048 1.1 skrll ; (set R1R2R0 (mul DI (ext DI R2R0) (ext DI dst32-24-absolute-indirect-HI))) 9049 1.1 skrll ; ()) 9050 1.1 skrll (dni mulex "mulex src" ((machine 32)) 9051 1.1 skrll ("mulex ${dst32-16-Unprefixed-Mulex-HI}") 9052 1.1 skrll (+ (f-0-4 #xC) dst32-16-Unprefixed-Mulex-HI (f-7-1 1) (f-10-2 3) (f-12-4 #xE)) 9053 1.1 skrll (set R1R2R0 (mul DI (ext DI R2R0) (ext DI dst32-16-Unprefixed-Mulex-HI))) 9054 1.1 skrll ()) 9055 1.1 skrll ; (dni mulex-indirect "mulex [src]" ((machine 32)) 9056 1.1 skrll ; ("mulex ${dst32-24-indirect-HI}") 9057 1.1 skrll ; (+ (f-0-4 0) (f-4-4 9) (f-8-4 #xC) dst32-24-indirect-HI (f-15-1 1) (f-18-2 3) (f-20-4 #xE)) 9058 1.1 skrll ; (set R1R2R0 (mul DI (ext DI R2R0) (ext DI dst32-24-indirect-HI))) 9059 1.1 skrll ; ()) 9060 1.1 skrll 9061 1.1 skrll ;------------------------------------------------------------- 9062 1.1 skrll ; mulu - multiply unsigned 9063 1.1 skrll ;------------------------------------------------------------- 9064 1.1 skrll 9065 1.1 skrll (define-pmacro (mulu-sem mode src1 dst) 9066 1.1 skrll (sequence ((mode result)) 9067 1.1 skrll (set obit (add-oflag mode src1 dst 0)) 9068 1.1 skrll (set result (mul mode src1 dst)) 9069 1.1 skrll (set dst result)) 9070 1.1 skrll ) 9071 1.1 skrll 9072 1.1 skrll ; mulu.BW #imm,dst 9073 1.1 skrll (binary-arith-imm-dst mulu G (f-0-4 7) (f-4-3 6) (f-8-4 4) #x8 #x0 #xF mulu-sem) 9074 1.1 skrll ; mulu.BW src,dst 9075 1.1 skrll (binary-arith-src-dst mulu G (f-0-4 #x7) (f-4-3 0) #x1 #x4 mulu-sem) 9076 1.1 skrll 9077 1.1 skrll ;------------------------------------------------------------- 9078 1.1 skrll ; neg - twos complement 9079 1.1 skrll ;------------------------------------------------------------- 9080 1.1 skrll 9081 1.1 skrll (define-pmacro (neg-sem mode dst) 9082 1.1 skrll (sequence ((mode result)) 9083 1.1 skrll (set result (neg mode dst)) 9084 1.1 skrll (set-z-and-s result) 9085 1.1 skrll (set dst result)) 9086 1.1 skrll ) 9087 1.1 skrll 9088 1.1 skrll ; neg.BW:G 9089 1.1 skrll (unary-insn neg (f-0-4 7) (f-4-3 2) (f-8-4 #x5) #xA #x2 #xF neg-sem) 9090 1.1 skrll 9091 1.1 skrll ;------------------------------------------------------------- 9092 1.1 skrll ; not - twos complement 9093 1.1 skrll ;------------------------------------------------------------- 9094 1.1 skrll 9095 1.1 skrll (define-pmacro (not-sem mode dst) 9096 1.1 skrll (sequence ((mode result)) 9097 1.1 skrll (set result (not mode dst)) 9098 1.1 skrll (set-z-and-s result) 9099 1.1 skrll (set dst result)) 9100 1.1 skrll ) 9101 1.1 skrll 9102 1.1 skrll ; not.BW:G 9103 1.1 skrll (unary-insn-g not (f-0-4 7) (f-4-3 2) (f-8-4 #x7) #xA #x1 #xE not-sem) 9104 1.1 skrll 9105 1.1 skrll (dni not16.b.s 9106 1.1 skrll "not.b:s Dst16-3-S-8" 9107 1.1 skrll ((machine 16)) 9108 1.1 skrll "not.b:s ${Dst16-3-S-8}" 9109 1.1 skrll (+ (f-0-4 #xb) (f-4-1 #x1) Dst16-3-S-8) 9110 1.1 skrll (not-sem QI Dst16-3-S-8) 9111 1.1 skrll ()) 9112 1.1 skrll 9113 1.1 skrll ;------------------------------------------------------------- 9114 1.1 skrll ; nop 9115 1.1 skrll ;------------------------------------------------------------- 9116 1.1 skrll 9117 1.1 skrll (dni nop16 9118 1.1 skrll "nop" 9119 1.1 skrll ((machine 16)) 9120 1.1 skrll "nop" 9121 1.1 skrll (+ (f-0-4 #x0) (f-4-4 #x4)) 9122 1.1 skrll (nop) 9123 1.1 skrll ()) 9124 1.1 skrll 9125 1.1 skrll (dni nop32 9126 1.1 skrll "nop" 9127 1.1 skrll ((machine 32)) 9128 1.1 skrll "nop" 9129 1.1 skrll (+ (f-0-4 #xD) (f-4-4 #xE)) 9130 1.1 skrll (nop) 9131 1.1 skrll ()) 9132 1.1 skrll 9133 1.1 skrll ;------------------------------------------------------------- 9134 1.1 skrll ; or - logical or 9135 1.1 skrll ;------------------------------------------------------------- 9136 1.1 skrll 9137 1.1 skrll (define-pmacro (or-sem mode src1 dst) 9138 1.1 skrll (sequence ((mode result)) 9139 1.1 skrll (set result (or mode src1 dst)) 9140 1.1 skrll (set-z-and-s result) 9141 1.1 skrll (set dst result)) 9142 1.1 skrll ) 9143 1.1 skrll 9144 1.1 skrll ; or.BW #imm,dst (m16 #1 m32 #1) 9145 1.1 skrll (binary-arith-imm-dst or G (f-0-4 7) (f-4-3 3) (f-8-4 3) #x8 #x2 #xF or-sem) 9146 1.1 skrll ; or.b:S #imm8,dst3 (m16 #2 m32 #2) 9147 1.1 skrll (binary-arith16-b-S-imm8-dst3 or ".b" (f-0-4 9) (f-4-1 1) or-sem) 9148 1.1 skrll (binary-arith32-s-imm-dst QI .b 0 or #x1 #x2 or-sem) 9149 1.1 skrll (binary-arith32-s-imm-dst HI .w 1 or #x1 #x2 or-sem) 9150 1.1 skrll ; or.BW src,dst (m16 #3 m32 #3) 9151 1.1 skrll (binary-arith-src-dst or G (f-0-4 #x9) (f-4-3 4) #x1 #x5 or-sem) 9152 1.1 skrll ; or.b:S src,r0[lh] (m16) 9153 1.1 skrll (binary-arith16-b-S-src2 or (f-0-4 1) (f-4-1 1) or-sem) 9154 1.1 skrll 9155 1.1 skrll ;------------------------------------------------------------- 9156 1.1 skrll ; pop - restore register/memory 9157 1.1 skrll ;------------------------------------------------------------- 9158 1.1 skrll 9159 1.1 skrll ; TODO future: split this into .b and .w semantics 9160 1.1 skrll (define-pmacro (pop-sem-mach mach mode dst) 9161 1.1 skrll (sequence ((mode b_or_w) (SI length)) 9162 1.1 skrll (set b_or_w -1) 9163 1.1 skrll (set b_or_w (srl b_or_w #x8)) 9164 1.1 skrll (if (eq b_or_w #x0) 9165 1.1 skrll (set length 1) ; .b 9166 1.1 skrll (set length 2)) ; .w 9167 1.1 skrll 9168 1.1 skrll (case DFLT length 9169 1.1 skrll ((1) (set dst (mem-mach mach QI (reg h-sp)))) 9170 1.1 skrll ((2) (set dst (mem-mach mach HI (reg h-sp))))) 9171 1.1 skrll (set (reg h-sp) (add (reg h-sp) length)) 9172 1.1 skrll ) 9173 1.1 skrll ) 9174 1.1 skrll 9175 1.1 skrll (define-pmacro (pop-sem16 mode dest) (pop-sem-mach 16 mode dest)) 9176 1.1 skrll (define-pmacro (pop-sem32 mode dest) (pop-sem-mach 32 mode dest)) 9177 1.1 skrll 9178 1.1 skrll ; pop.BW:G (m16 #1) 9179 1.1 skrll (unary-insn-mach-g 16 pop (f-0-4 7) (f-4-3 2) (f-8-4 #xD) pop-sem16 $G) 9180 1.1 skrll ; pop.BW:G (m32 #1) 9181 1.1 skrll (unary-insn-mach 32 pop #xB #x2 #xF pop-sem32) 9182 1.1 skrll 9183 1.1 skrll ; pop.b:S r0l/r0h 9184 1.1 skrll (dni pop16.b-s-rn "pop.b:S r0[lh]" ((machine 16)) 9185 1.1 skrll "pop.b$S ${Rn16-push-S-anyof}" 9186 1.1 skrll (+ (f-0-4 #x9) Rn16-push-S-anyof (f-5-3 #x2)) 9187 1.1 skrll (pop-sem16 QI Rn16-push-S-anyof) 9188 1.1 skrll ()) 9189 1.1 skrll ; pop.w:S a0/a1 9190 1.1 skrll (dni pop16.b-s-an "pop.w:S a[01]" ((machine 16)) 9191 1.1 skrll "pop.w$S ${An16-push-S-anyof}" 9192 1.1 skrll (+ (f-0-4 #xD) An16-push-S-anyof (f-5-3 #x2)) 9193 1.1 skrll (pop-sem16 HI An16-push-S-anyof) 9194 1.1 skrll ()) 9195 1.1 skrll 9196 1.1 skrll ;------------------------------------------------------------- 9197 1.1 skrll ; popc - pop control register 9198 1.1 skrll ; pushc - push control register 9199 1.1 skrll ;------------------------------------------------------------- 9200 1.1 skrll 9201 1.1 skrll (define-pmacro (popc32-cr1-sem mode dst) 9202 1.1 skrll (sequence () 9203 1.1 skrll (case DFLT dst 9204 1.1 skrll ((#x0) (set (reg h-dct0) (mem32 mode (reg h-sp)))) 9205 1.1 skrll ((#x1) (set (reg h-dct1) (mem32 mode (reg h-sp)))) 9206 1.1 skrll ((#x2) (sequence ((HI tflag)) 9207 1.1 skrll (set tflag (mem32 mode (reg h-sp))) 9208 1.1 skrll (if (and tflag #x1) (set cbit 1)) 9209 1.1 skrll (if (and tflag #x2) (set dbit 1)) 9210 1.1 skrll (if (and tflag #x4) (set zbit 1)) 9211 1.1 skrll (if (and tflag #x8) (set sbit 1)) 9212 1.1 skrll (if (and tflag #x10) (set bbit 1)) 9213 1.1 skrll (if (and tflag #x20) (set obit 1)) 9214 1.1 skrll (if (and tflag #x40) (set ibit 1)) 9215 1.1 skrll (if (and tflag #x80) (set ubit 1)))) 9216 1.1 skrll ((#x3) (set (reg h-svf) (mem32 mode (reg h-sp)))) 9217 1.1 skrll ((#x4) (set (reg h-drc0) (mem32 mode (reg h-sp)))) 9218 1.1 skrll ((#x5) (set (reg h-drc1) (mem32 mode (reg h-sp)))) 9219 1.1 skrll ((#x6) (set (reg h-dmd0) (mem32 mode (reg h-sp)))) 9220 1.1 skrll ((#x7) (set (reg h-dmd1) (mem32 mode (reg h-sp)))) 9221 1.1 skrll ) 9222 1.1 skrll (set (reg h-sp) (add (reg h-sp) 2)) 9223 1.1 skrll ) 9224 1.1 skrll ) 9225 1.1 skrll (define-pmacro (popc32-cr2-sem mode dst) 9226 1.1 skrll (sequence () 9227 1.1 skrll (case DFLT dst 9228 1.1 skrll ((#x0) (set (reg h-intb) (mem32 mode (reg h-sp)))) 9229 1.1 skrll ((#x1) (set (reg h-sp) (mem32 mode (reg h-sp)))) 9230 1.1 skrll ((#x2) (set (reg h-sb) (mem32 mode (reg h-sp)))) 9231 1.1 skrll ((#x3) (set (reg h-fb) (mem32 mode (reg h-sp)))) 9232 1.1 skrll ((#x7) (set (reg h-isp) (mem32 mode (reg h-sp)))) 9233 1.1 skrll ) 9234 1.1 skrll (set (reg h-sp) (add (reg h-sp) 4)) 9235 1.1 skrll ) 9236 1.1 skrll ) 9237 1.1 skrll (define-pmacro (popc16-sem mode dst) 9238 1.1 skrll (sequence () 9239 1.1 skrll (case DFLT dst 9240 1.1 skrll ((#x1) (set (reg h-intb) (or (and (reg h-intb) #x0000) 9241 1.1 skrll (mem16 mode (reg h-sp))))) 9242 1.1 skrll ((#x2) (set (reg h-intb) (or (and (reg h-intb) #xffff0000) 9243 1.1 skrll (mem16 mode (reg h-sp))))) 9244 1.1 skrll ((#x3) (sequence ((HI tflag)) 9245 1.1 skrll (set tflag (mem16 mode (reg h-sp))) 9246 1.1 skrll (if (and tflag #x1) (set cbit 1)) 9247 1.1 skrll (if (and tflag #x2) (set dbit 1)) 9248 1.1 skrll (if (and tflag #x4) (set zbit 1)) 9249 1.1 skrll (if (and tflag #x8) (set sbit 1)) 9250 1.1 skrll (if (and tflag #x10) (set bbit 1)) 9251 1.1 skrll (if (and tflag #x20) (set obit 1)) 9252 1.1 skrll (if (and tflag #x40) (set ibit 1)) 9253 1.1 skrll (if (and tflag #x80) (set ubit 1)))) 9254 1.1 skrll ((#x4) (set (reg h-isp) (mem16 mode (reg h-sp)))) 9255 1.1 skrll ((#x5) (set (reg h-sp) (mem16 mode (reg h-sp)))) 9256 1.1 skrll ((#x6) (set (reg h-sb) (mem16 mode (reg h-sp)))) 9257 1.1 skrll ((#x7) (set (reg h-fb) (mem16 mode (reg h-sp)))) 9258 1.1 skrll ) 9259 1.1 skrll (set (reg h-sp) (add (reg h-sp) 2)) 9260 1.1 skrll ) 9261 1.1 skrll ) 9262 1.1 skrll ; popc dest (m16c #1) 9263 1.1 skrll (dni popc16.imm16 "popc dst" ((machine 16)) 9264 1.1 skrll ("popc ${cr16}") 9265 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-1 0) (f-12-4 3) cr16) 9266 1.1 skrll (popc16-sem HI cr16) 9267 1.1 skrll ()) 9268 1.1 skrll ; popc dest (m32c #1) 9269 1.1 skrll (dni popc32.imm16-cr1 "popc dst" ((machine 32)) 9270 1.1 skrll ("popc ${cr1-Unprefixed-32}") 9271 1.1 skrll (+ (f-0-4 #xD) (f-4-4 3) (f-8-4 #xA) (f-12-1 1) cr1-Unprefixed-32) 9272 1.1 skrll (popc32-cr1-sem HI cr1-Unprefixed-32) 9273 1.1 skrll ()) 9274 1.1 skrll ; popc dest (m32c #2) 9275 1.1 skrll (dni popc32.imm16-cr2 "popc dst" ((machine 32)) 9276 1.1 skrll ("popc ${cr2-32}") 9277 1.1 skrll (+ (f-0-4 #xD) (f-4-4 3) (f-8-4 2) (f-12-1 1) cr2-32) 9278 1.1 skrll (popc32-cr2-sem SI cr2-32) 9279 1.1 skrll ()) 9280 1.1 skrll 9281 1.1 skrll (define-pmacro (pushc32-cr1-sem mode dst) 9282 1.1 skrll (sequence () 9283 1.1 skrll (set (reg h-sp) (sub (reg h-sp) 2)) 9284 1.1 skrll (case DFLT dst 9285 1.1 skrll ((#x0) (set (mem32 mode (reg h-sp)) (reg h-dct0))) 9286 1.1 skrll ((#x1) (set (mem32 mode (reg h-sp)) (reg h-dct1))) 9287 1.1 skrll ((#x2) (sequence ((HI tflag)) 9288 1.1 skrll (set tflag 0) 9289 1.1 skrll (if (eq cbit 1) (set tflag (or tflag #x1))) 9290 1.1 skrll (if (eq dbit 1) (set tflag (or tflag #x2))) 9291 1.1 skrll (if (eq zbit 1) (set tflag (or tflag #x4))) 9292 1.1 skrll (if (eq sbit 1) (set tflag (or tflag #x8))) 9293 1.1 skrll (if (eq bbit 1) (set tflag (or tflag #x10))) 9294 1.1 skrll (if (eq obit 1) (set tflag (or tflag #x20))) 9295 1.1 skrll (if (eq ibit 1) (set tflag (or tflag #x40))) 9296 1.1 skrll (if (eq ubit 1) (set tflag (or tflag #x80))) 9297 1.1 skrll (set (mem32 mode (reg h-sp)) tflag))) 9298 1.1 skrll ((#x3) (set (mem32 mode (reg h-sp)) (reg h-svf))) 9299 1.1 skrll ((#x4) (set (mem32 mode (reg h-sp)) (reg h-drc0))) 9300 1.1 skrll ((#x5) (set (mem32 mode (reg h-sp)) (reg h-drc1))) 9301 1.1 skrll ((#x6) (set (mem32 mode (reg h-sp)) (reg h-dmd0))) 9302 1.1 skrll ((#x7) (set (mem32 mode (reg h-sp)) (reg h-dmd1))) 9303 1.1 skrll ) 9304 1.1 skrll ) 9305 1.1 skrll ) 9306 1.1 skrll (define-pmacro (pushc32-cr2-sem mode dst) 9307 1.1 skrll (sequence () 9308 1.1 skrll (set (reg h-sp) (sub (reg h-sp) 4)) 9309 1.1 skrll (case DFLT dst 9310 1.1 skrll ((#x0) (set (mem32 mode (reg h-sp)) (reg h-intb))) 9311 1.1 skrll ((#x1) (set (mem32 mode (reg h-sp)) (reg h-sp))) 9312 1.1 skrll ((#x2) (set (mem32 mode (reg h-sp)) (reg h-sb))) 9313 1.1 skrll ((#x3) (set (mem32 mode (reg h-sp)) (reg h-fb))) 9314 1.1 skrll ((#x7) (set (mem32 mode (reg h-sp)) (reg h-isp))) 9315 1.1 skrll ) 9316 1.1 skrll ) 9317 1.1 skrll ) 9318 1.1 skrll (define-pmacro (pushc16-sem mode dst) 9319 1.1 skrll (sequence () 9320 1.1 skrll (set (reg h-sp) (sub (reg h-sp) 2)) 9321 1.1 skrll (case DFLT dst 9322 1.1 skrll ((#x1) (set (mem16 mode (reg h-sp)) (and (reg h-intb) #xffff))) 9323 1.1 skrll ((#x2) (set (mem16 mode (reg h-sp)) (and (reg h-intb) #xffff0000))) 9324 1.1 skrll ((#x3) (sequence ((HI tflag)) 9325 1.1 skrll (if (eq cbit 1) (set tflag (or tflag #x1))) 9326 1.1 skrll (if (eq dbit 1) (set tflag (or tflag #x2))) 9327 1.1 skrll (if (eq zbit 1) (set tflag (or tflag #x4))) 9328 1.1 skrll (if (eq sbit 1) (set tflag (or tflag #x8))) 9329 1.1 skrll (if (eq bbit 1) (set tflag (or tflag #x10))) 9330 1.1 skrll (if (eq obit 1) (set tflag (or tflag #x20))) 9331 1.1 skrll (if (eq ibit 1) (set tflag (or tflag #x40))) 9332 1.1 skrll (if (eq ubit 1) (set tflag (or tflag #x80))) 9333 1.1 skrll (set (mem16 mode (reg h-sp)) tflag))) 9334 1.1 skrll 9335 1.1 skrll ((#x4) (set (mem16 mode (reg h-sp)) (reg h-isp))) 9336 1.1 skrll ((#x5) (set (mem16 mode (reg h-sp)) (reg h-sp))) 9337 1.1 skrll ((#x6) (set (mem16 mode (reg h-sp)) (reg h-sb))) 9338 1.1 skrll ((#x7) (set (mem16 mode (reg h-sp)) (reg h-fb))) 9339 1.1 skrll ) 9340 1.1 skrll ) 9341 1.1 skrll ) 9342 1.1 skrll ; pushc src (m16c) 9343 1.1 skrll (dni pushc16.imm16 "pushc dst" ((machine 16)) 9344 1.1 skrll ("pushc ${cr16}") 9345 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-1 0) (f-12-4 2) cr16) 9346 1.1 skrll (pushc16-sem HI cr16) 9347 1.1 skrll ()) 9348 1.1 skrll ; pushc src (m32c #1) 9349 1.1 skrll (dni pushc32.imm16-cr1 "pushc dst" ((machine 32)) 9350 1.1 skrll ("pushc ${cr1-Unprefixed-32}") 9351 1.1 skrll (+ (f-0-4 #xD) (f-4-4 1) (f-8-4 #xA) (f-12-1 1) cr1-Unprefixed-32) 9352 1.1 skrll (pushc32-cr1-sem HI cr1-Unprefixed-32) 9353 1.1 skrll ()) 9354 1.1 skrll ; pushc src (m32c #2) 9355 1.1 skrll (dni pushc32.imm16-cr2 "pushc dst" ((machine 32)) 9356 1.1 skrll ("pushc ${cr2-32}") 9357 1.1 skrll (+ (f-0-4 #xD) (f-4-4 1) (f-8-4 2) (f-12-1 1) cr2-32) 9358 1.1 skrll (pushc32-cr2-sem SI cr2-32) 9359 1.1 skrll ()) 9360 1.1 skrll 9361 1.1 skrll ;------------------------------------------------------------- 9362 1.1 skrll ; popm - pop multiple 9363 1.1 skrll ; pushm - push multiple 9364 1.1 skrll ;------------------------------------------------------------- 9365 1.1 skrll 9366 1.1 skrll (define-pmacro (popm-sem machine dst) 9367 1.1 skrll (sequence ((SI addrlen)) 9368 1.1 skrll (if (eq machine 16) 9369 1.1 skrll (set addrlen 2) 9370 1.1 skrll (set addrlen 4)) 9371 1.1 skrll (if (and dst 1) 9372 1.1 skrll (sequence () (set R0 (mem-mach machine HI (reg h-sp))) 9373 1.1 skrll (set (reg h-sp) (add (reg h-sp) 2)))) 9374 1.1 skrll (if (and dst 2) 9375 1.1 skrll (sequence () (set R1 (mem-mach machine HI (reg h-sp))) 9376 1.1 skrll (set (reg h-sp) (add (reg h-sp) 2)))) 9377 1.1 skrll (if (and dst 4) 9378 1.1 skrll (sequence () (set R2 (mem-mach machine HI (reg h-sp))) 9379 1.1 skrll (set (reg h-sp) (add (reg h-sp) 2)))) 9380 1.1 skrll (if (and dst 8) 9381 1.1 skrll (sequence () (set R3 (mem-mach machine HI (reg h-sp))) 9382 1.1 skrll (set (reg h-sp) (add (reg h-sp) 2)))) 9383 1.1 skrll (if (and dst 16) 9384 1.1 skrll (sequence () (set A0 (mem-mach machine HI (reg h-sp))) 9385 1.1 skrll (set (reg h-sp) (add (reg h-sp) addrlen)))) 9386 1.1 skrll (if (and dst 32) 9387 1.1 skrll (sequence () (set A1 (mem-mach machine HI (reg h-sp))) 9388 1.1 skrll (set (reg h-sp) (add (reg h-sp) addrlen)))) 9389 1.1 skrll (if (and dst 64) 9390 1.1 skrll (sequence () (set (reg h-sb) (mem-mach machine HI (reg h-sp))) 9391 1.1 skrll (set (reg h-sp) (add (reg h-sp) addrlen)))) 9392 1.1 skrll (if (eq dst 128) 9393 1.1 skrll (sequence () (set (reg h-fb) (mem-mach machine HI (reg h-sp))) 9394 1.1 skrll (set (reg h-sp) (add (reg h-sp) addrlen)))) 9395 1.1 skrll ) 9396 1.1 skrll ) 9397 1.1 skrll 9398 1.1 skrll (define-pmacro (pushm-sem machine dst) 9399 1.1 skrll (sequence ((SI count) (SI addrlen)) 9400 1.1 skrll (if (eq machine 16) 9401 1.1 skrll (set addrlen 2) 9402 1.1 skrll (set addrlen 4)) 9403 1.1 skrll (if (eq dst 1) 9404 1.1 skrll (sequence () (set (reg h-sp) (sub (reg h-sp) addrlen)) 9405 1.1 skrll (set (mem-mach machine HI (reg h-sp)) (reg h-fb)))) 9406 1.1 skrll (if (and dst 2) 9407 1.1 skrll (sequence () (set (reg h-sp) (sub (reg h-sp) addrlen)) 9408 1.1 skrll (set (mem-mach machine HI (reg h-sp)) (reg h-sb)))) 9409 1.1 skrll (if (and dst 4) 9410 1.1 skrll (sequence () (set (reg h-sp) (sub (reg h-sp) addrlen)) 9411 1.1 skrll (set (mem-mach machine HI (reg h-sp)) A1))) 9412 1.1 skrll (if (and dst 8) 9413 1.1 skrll (sequence () (set (reg h-sp) (sub (reg h-sp) addrlen)) 9414 1.1 skrll (set (mem-mach machine HI (reg h-sp)) A0))) 9415 1.1 skrll (if (and dst 16) 9416 1.1 skrll (sequence () (set (reg h-sp) (sub (reg h-sp) 2)) 9417 1.1 skrll (set (mem-mach machine HI (reg h-sp)) R3))) 9418 1.1 skrll (if (and dst 32) 9419 1.1 skrll (sequence () (set (reg h-sp) (sub (reg h-sp) 2)) 9420 1.1 skrll (set (mem-mach machine HI (reg h-sp)) R2))) 9421 1.1 skrll (if (and dst 64) 9422 1.1 skrll (sequence () (set (reg h-sp) (sub (reg h-sp) 2)) 9423 1.1 skrll (set (mem-mach machine HI (reg h-sp)) R1))) 9424 1.1 skrll (if (and dst 128) 9425 1.1 skrll (sequence () (set (reg h-sp) (sub (reg h-sp) 2)) 9426 1.1 skrll (set (mem-mach machine HI (reg h-sp)) R0))) 9427 1.1 skrll ) 9428 1.1 skrll ) 9429 1.1 skrll 9430 1.1 skrll (dni popm16 "popm regs" ((machine 16)) 9431 1.1 skrll ("popm ${Regsetpop}") 9432 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xD) Regsetpop) 9433 1.1 skrll (popm-sem 16 Regsetpop) 9434 1.1 skrll ()) 9435 1.1 skrll (dni pushm16 "pushm regs" ((machine 16)) 9436 1.1 skrll ("pushm ${Regsetpush}") 9437 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xC) Regsetpush) 9438 1.1 skrll (pushm-sem 16 Regsetpush) 9439 1.1 skrll ()) 9440 1.1 skrll (dni popm "popm regs" ((machine 32)) 9441 1.1 skrll ("popm ${Regsetpop}") 9442 1.1 skrll (+ (f-0-4 #x8) (f-4-4 #xE) Regsetpop) 9443 1.1 skrll (popm-sem 32 Regsetpop) 9444 1.1 skrll ()) 9445 1.1 skrll (dni pushm "pushm regs" ((machine 32)) 9446 1.1 skrll ("pushm ${Regsetpush}") 9447 1.1 skrll (+ (f-0-4 #x8) (f-4-4 #xF) Regsetpush) 9448 1.1 skrll (pushm-sem 32 Regsetpush) 9449 1.1 skrll ()) 9450 1.1 skrll 9451 1.1 skrll ;------------------------------------------------------------- 9452 1.1 skrll ; push - Save register/memory/immediate data 9453 1.1 skrll ;------------------------------------------------------------- 9454 1.1 skrll 9455 1.1 skrll ; TODO future: split this into .b and .w semantics 9456 1.1 skrll (define-pmacro (push-sem-mach mach mode dst) 9457 1.1 skrll (sequence ((mode b_or_w) (SI length)) 9458 1.1 skrll (set b_or_w -1) 9459 1.1 skrll (set b_or_w (srl b_or_w #x8)) 9460 1.1 skrll (if (eq b_or_w #x0) 9461 1.1 skrll (set length 1) ; .b 9462 1.1 skrll (if (eq b_or_w #xff) 9463 1.1 skrll (set length 2) ; .w 9464 1.1 skrll (set length 4))) ; .l 9465 1.1 skrll (set (reg h-sp) (sub (reg h-sp) length)) 9466 1.1 skrll (case DFLT length 9467 1.1 skrll ((1) (set (mem-mach mach QI (reg h-sp)) dst)) 9468 1.1 skrll ((2) (set (mem-mach mach HI (reg h-sp)) dst)) 9469 1.1 skrll ((4) (set (mem-mach mach SI (reg h-sp)) dst))) 9470 1.1 skrll ) 9471 1.1 skrll ) 9472 1.1 skrll 9473 1.1 skrll (define-pmacro (push-sem16 mode dst) (push-sem-mach 16 mode dst)) 9474 1.1 skrll (define-pmacro (push-sem32 mode dst) (push-sem-mach 32 mode dst)) 9475 1.1 skrll 9476 1.1 skrll ; push.BW:G imm (m16 #1 m32 #1) 9477 1.1 skrll (dni push16.b.G-imm "push.b:G #Imm-16-QI" ((machine 16)) 9478 1.1 skrll ("push.b$G #${Imm-16-QI}") 9479 1.1 skrll (+ (f-0-4 7) (f-4-4 #xC) (f-8-4 #xE) (f-12-4 2) Imm-16-QI) 9480 1.1 skrll (push-sem16 QI Imm-16-QI) 9481 1.1 skrll ()) 9482 1.1 skrll 9483 1.1 skrll (dni push16.w.G-imm "push.w:G #Imm-16-HI" ((machine 16)) 9484 1.1 skrll ("push.w$G #${Imm-16-HI}") 9485 1.1 skrll (+ (f-0-4 7) (f-4-4 #xD) (f-8-4 #xE) (f-12-4 2) Imm-16-HI) 9486 1.1 skrll (push-sem16 HI Imm-16-HI) 9487 1.1 skrll ()) 9488 1.1 skrll 9489 1.1 skrll (dni push32.b.imm "push.b #Imm-8-QI" ((machine 32)) 9490 1.1 skrll ("push.b #${Imm-8-QI}") 9491 1.1 skrll (+ (f-0-4 #xA) (f-4-4 #xE) Imm-8-QI) 9492 1.1 skrll (push-sem32 QI Imm-8-QI) 9493 1.1 skrll ()) 9494 1.1 skrll 9495 1.1 skrll (dni push32.w.imm "push.w #Imm-8-HI" ((machine 32)) 9496 1.1 skrll ("push.w #${Imm-8-HI}") 9497 1.1 skrll (+ (f-0-4 #xA) (f-4-4 #xF) Imm-8-HI) 9498 1.1 skrll (push-sem32 HI Imm-8-HI) 9499 1.1 skrll ()) 9500 1.1 skrll 9501 1.1 skrll ; push.BW:G src (m16 #2) 9502 1.1 skrll (unary-insn-mach-g 16 push (f-0-4 7) (f-4-3 2) (f-8-4 #x4) push-sem16 $G) 9503 1.1 skrll ; push.BW:G src (m32 #2) 9504 1.1 skrll (unary-insn-mach 32 push #xC #x0 #xE push-sem32) 9505 1.1 skrll 9506 1.1 skrll 9507 1.1 skrll ; push.b:S r0l/r0h (m16 #3) 9508 1.1 skrll (dni push16.b-s-rn "push.b:S r0[lh]" ((machine 16)) 9509 1.1 skrll "push.b$S ${Rn16-push-S-anyof}" 9510 1.1 skrll (+ (f-0-4 #x8) Rn16-push-S-anyof (f-5-3 #x2)) 9511 1.1 skrll (push-sem16 QI Rn16-push-S-anyof) 9512 1.1 skrll ()) 9513 1.1 skrll ; push.w:S a0/a1 (m16 #4) 9514 1.1 skrll (dni push16.b-s-an "push.w:S a[01]" ((machine 16)) 9515 1.1 skrll "push.w$S ${An16-push-S-anyof}" 9516 1.1 skrll (+ (f-0-4 #xC) An16-push-S-anyof (f-5-3 #x2)) 9517 1.1 skrll (push-sem16 HI An16-push-S-anyof) 9518 1.1 skrll ()) 9519 1.1 skrll 9520 1.1 skrll ; push.l imm32 (m32 #3) 9521 1.1 skrll (dni push32.l.imm "push.l #Imm-16-SI" ((machine 32)) 9522 1.1 skrll ("push.l #${Imm-16-SI}") 9523 1.1 skrll (+ (f-0-4 #xB) (f-4-4 6) (f-8-4 5) (f-12-4 3) Imm-16-SI) 9524 1.1 skrll (push-sem32 SI Imm-16-SI) 9525 1.1 skrll ()) 9526 1.1 skrll ; push.l src (m32 #4) 9527 1.1 skrll (unary-insn-defn 32 16-Unprefixed SI .l push (+ (f-0-4 #xA) (f-7-1 0) dst32-16-Unprefixed-SI (f-10-2 0) (f-12-4 1)) push-sem32) 9528 1.1 skrll 9529 1.1 skrll ;------------------------------------------------------------- 9530 1.1 skrll ; pusha - push effective address 9531 1.1 skrll ;------------------------------------------------------------ 9532 1.1 skrll 9533 1.1 skrll (define-pmacro (push16a-sem mode dst) 9534 1.1 skrll (sequence () 9535 1.1 skrll (set (reg h-sp) (sub (reg h-sp) 2)) 9536 1.1 skrll (set (mem16 HI (reg h-sp)) dst)) 9537 1.1 skrll ) 9538 1.1 skrll (define-pmacro (push32a-sem mode dst) 9539 1.1 skrll (sequence () 9540 1.1 skrll (set (reg h-sp) (sub (reg h-sp) 4)) 9541 1.1 skrll (set (mem32 SI (reg h-sp)) dst)) 9542 1.1 skrll ) 9543 1.1 skrll (unary-insn-defn 16 16-Mova HI "" pusha (+ (f-0-4 7) (f-4-4 #xD) (f-8-4 9) dst16-16-Mova-HI) push16a-sem) 9544 1.1 skrll (unary-insn-defn 32 16-Unprefixed-Mova SI "" pusha (+ (f-0-4 #xB) (f-7-1 0) dst32-16-Unprefixed-Mova-SI (f-10-2 0) (f-12-4 1)) push32a-sem) 9545 1.1 skrll 9546 1.1 skrll ;------------------------------------------------------------- 9547 1.1 skrll ; reit - return from interrupt 9548 1.1 skrll ;------------------------------------------------------------- 9549 1.1 skrll 9550 1.1 skrll ; ??? semantics 9551 1.1 skrll (dni reit16 "REIT" ((machine 16)) 9552 1.1 skrll ("reit") 9553 1.1 skrll (+ (f-0-4 #xF) (f-4-4 #xB)) 9554 1.1 skrll (nop) 9555 1.1 skrll ()) 9556 1.1 skrll (dni reit32 "REIT" ((machine 32)) 9557 1.1 skrll ("reit") 9558 1.1 skrll (+ (f-0-4 9) (f-4-4 #xE)) 9559 1.1 skrll (nop) 9560 1.1 skrll ()) 9561 1.1 skrll 9562 1.1 skrll ;------------------------------------------------------------- 9563 1.1 skrll ; rmpa - repeat multiple and addition 9564 1.1 skrll ;------------------------------------------------------------- 9565 1.1 skrll 9566 1.1 skrll ; TODO semantics 9567 1.1 skrll (dni rmpa16.b "rmpa.size" ((machine 16)) 9568 1.1 skrll ("rmpa.b") 9569 1.1 skrll (+ (f-0-4 7) (f-4-4 #xC) (f-8-4 #xF) (f-12-4 1)) 9570 1.1 skrll (nop) 9571 1.1 skrll ()) 9572 1.1 skrll (dni rmpa16.w "rmpa.size" ((machine 16)) 9573 1.1 skrll ("rmpa.w") 9574 1.1 skrll (+ (f-0-4 7) (f-4-4 #xD) (f-8-4 #xF) (f-12-4 1)) 9575 1.1 skrll (nop) 9576 1.1 skrll ()) 9577 1.1 skrll (dni rmpa32.b "rmpa.size" ((machine 32)) 9578 1.1 skrll ("rmpa.b") 9579 1.1 skrll (+ (f-0-4 #xB) (f-4-4 8) (f-8-4 4) (f-12-4 3)) 9580 1.1 skrll (nop) 9581 1.1 skrll ()) 9582 1.1 skrll 9583 1.1 skrll (dni rmpa32.w "rmpa.size" ((machine 32)) 9584 1.1 skrll ("rmpa.w") 9585 1.1 skrll (+ (f-0-4 #xB) (f-4-4 8) (f-8-4 5) (f-12-4 3)) 9586 1.1 skrll (nop) 9587 1.1 skrll ()) 9588 1.1 skrll 9589 1.1 skrll ;------------------------------------------------------------- 9590 1.1 skrll ; rolc - rotate left with carry 9591 1.1 skrll ;------------------------------------------------------------- 9592 1.1 skrll 9593 1.1 skrll ; TODO check semantics 9594 1.1 skrll ; TODO future: split this into .b and .w semantics 9595 1.1 skrll (define-pmacro (rolc-sem mode dst) 9596 1.1 skrll (sequence ((mode result) (SI ocbit) (mode b_or_w) (USI mask)) 9597 1.1 skrll (set b_or_w -1) 9598 1.1 skrll (set b_or_w (srl b_or_w #x8)) 9599 1.1 skrll (if (eq b_or_w #x0) 9600 1.1 skrll (set mask #x8000) ; .b 9601 1.1 skrll (set mask #x80000000)) ; .w 9602 1.1 skrll (set ocbit cbit) 9603 1.1 skrll (set cbit (and dst mask)) 9604 1.1 skrll (set result (sll mode dst 1)) 9605 1.1 skrll (set result (or result ocbit)) 9606 1.1 skrll (set-z-and-s result) 9607 1.1 skrll (set dst result)) 9608 1.1 skrll ) 9609 1.1 skrll ; rolc.BW src,dst 9610 1.1 skrll (unary-insn rolc (f-0-4 7) (f-4-3 3) (f-8-4 #xA) #xB #x2 #xE rolc-sem) 9611 1.1 skrll 9612 1.1 skrll ;------------------------------------------------------------- 9613 1.1 skrll ; rorc - rotate right with carry 9614 1.1 skrll ;------------------------------------------------------------- 9615 1.1 skrll 9616 1.1 skrll ; TODO check semantics 9617 1.1 skrll ; TODO future: split this into .b and .w semantics 9618 1.1 skrll (define-pmacro (rorc-sem mode dst) 9619 1.1 skrll (sequence ((mode result) (SI ocbit) (mode b_or_w) (USI mask) (SI shamt)) 9620 1.1 skrll (set b_or_w -1) 9621 1.1 skrll (set b_or_w (srl b_or_w #x8)) 9622 1.1 skrll (if (eq b_or_w #x0) 9623 1.1 skrll (sequence () (set mask #x7fff) (set shamt 15)) ; .b 9624 1.1 skrll (sequence () (set mask #x7fffffff) (set shamt 31))) ; .w 9625 1.1 skrll (set ocbit cbit) 9626 1.1 skrll (set cbit (and dst #x1)) 9627 1.1 skrll (set result (srl mode dst (const 1))) 9628 1.1 skrll (set result (or (and result mask) (sll ocbit shamt))) 9629 1.1 skrll (set-z-and-s result) 9630 1.1 skrll (set dst result)) 9631 1.1 skrll ) 9632 1.1 skrll ; rorc.BW src,dst 9633 1.1 skrll (unary-insn rorc (f-0-4 7) (f-4-3 3) (f-8-4 #xB) #xA #x2 #xE rorc-sem) 9634 1.1 skrll 9635 1.1 skrll ;------------------------------------------------------------- 9636 1.1 skrll ; rot - rotate 9637 1.1 skrll ;------------------------------------------------------------- 9638 1.1 skrll 9639 1.1 skrll ; TODO future: split this into .b and .w semantics 9640 1.1 skrll (define-pmacro (rot-1-sem mode src1 dst) 9641 1.1 skrll (sequence ((mode tmp) (mode b_or_w) (USI mask) (SI shift)) 9642 1.1 skrll (case DFLT src1 9643 1.1 skrll ((#x0) (set shift 1)) 9644 1.1 skrll ((#x1) (set shift 2)) 9645 1.1 skrll ((#x2) (set shift 3)) 9646 1.1 skrll ((#x3) (set shift 4)) 9647 1.1 skrll ((#x4) (set shift 5)) 9648 1.1 skrll ((#x5) (set shift 6)) 9649 1.1 skrll ((#x6) (set shift 7)) 9650 1.1 skrll ((#x7) (set shift 8)) 9651 1.1 skrll ((-8) (set shift -1)) 9652 1.1 skrll ((-7) (set shift -2)) 9653 1.1 skrll ((-6) (set shift -3)) 9654 1.1 skrll ((-5) (set shift -4)) 9655 1.1 skrll ((-4) (set shift -5)) 9656 1.1 skrll ((-3) (set shift -6)) 9657 1.1 skrll ((-2) (set shift -7)) 9658 1.1 skrll ((-1) (set shift -8)) 9659 1.1 skrll (else (set shift 0)) 9660 1.1 skrll ) 9661 1.1 skrll (set b_or_w -1) 9662 1.1 skrll (set b_or_w (srl b_or_w #x8)) 9663 1.1 skrll (if (eq b_or_w #x0) 9664 1.1 skrll (set mask #x7fff) ; .b 9665 1.1 skrll (set mask #x7fffffff)) ; .w 9666 1.1 skrll (set tmp dst) 9667 1.1 skrll (if (gt mode shift 0) 9668 1.1 skrll (sequence () 9669 1.1 skrll (set tmp (rol mode tmp shift)) 9670 1.1 skrll (set cbit (and tmp #x1))) 9671 1.1 skrll (sequence () 9672 1.1 skrll (set tmp (ror mode tmp (mul shift -1))) 9673 1.1 skrll (set cbit (and tmp mask)))) 9674 1.1 skrll (set-z-and-s tmp) 9675 1.1 skrll (set dst tmp)) 9676 1.1 skrll ) 9677 1.1 skrll (define-pmacro (rot-2-sem mode dst) 9678 1.1 skrll (sequence ((mode tmp) (mode b_or_w) (USI mask)) 9679 1.1 skrll (set b_or_w -1) 9680 1.1 skrll (set b_or_w (srl b_or_w #x8)) 9681 1.1 skrll (if (eq b_or_w #x0) 9682 1.1 skrll (set mask #x7fff) ; .b 9683 1.1 skrll (set mask #x7fffffff)) ; .w 9684 1.1 skrll (set tmp dst) 9685 1.1 skrll (if (gt mode (reg h-r1h) 0) 9686 1.1 skrll (sequence () 9687 1.1 skrll (set tmp (rol mode tmp (reg h-r1h))) 9688 1.1 skrll (set cbit (and tmp #x1))) 9689 1.1 skrll (sequence () 9690 1.1 skrll (set tmp (ror mode tmp (reg h-r1h))) 9691 1.1 skrll (set cbit (and tmp mask)))) 9692 1.1 skrll (set-z-and-s tmp) 9693 1.1 skrll (set dst tmp)) 9694 1.1 skrll ) 9695 1.1 skrll 9696 1.1 skrll ; rot.BW #imm4,dst 9697 1.1 skrll (binary-arith16-shimm4-dst-defn QI .b 0 0 rot (f-0-4 #xE) (f-4-3 0) rot-1-sem) 9698 1.1 skrll (binary-arith16-shimm4-dst-defn HI .w 0 1 rot (f-0-4 #xE) (f-4-3 0) rot-1-sem) 9699 1.1 skrll (binary-arith32-shimm4-dst-defn QI .b 0 0 rot #x7 #x2 rot-1-sem) 9700 1.1 skrll (binary-arith32-shimm4-dst-defn HI .w 0 1 rot #x7 #x2 rot-1-sem) 9701 1.1 skrll ; rot.BW src,dst 9702 1.1 skrll 9703 1.1 skrll (dni rot16.b-dst "rot r1h,dest" ((machine 16)) 9704 1.1 skrll ("rot.b r1h,${dst16-16-QI}") 9705 1.1 skrll (+ (f-0-4 7) (f-4-4 #x4) (f-8-4 #x6) dst16-16-QI) 9706 1.1 skrll (rot-2-sem QI dst16-16-QI) 9707 1.1 skrll ()) 9708 1.1 skrll (dni rot16.w-dst "rot r1h,dest" ((machine 16)) 9709 1.1 skrll ("rot.w r1h,${dst16-16-HI}") 9710 1.1 skrll (+ (f-0-4 7) (f-4-4 #x5) (f-8-4 #x6) dst16-16-HI) 9711 1.1 skrll (rot-2-sem HI dst16-16-HI) 9712 1.1 skrll ()) 9713 1.1 skrll 9714 1.1 skrll (dni rot32.b-dst "rot r1h,dest" ((machine 32)) 9715 1.1 skrll ("rot.b r1h,${dst32-16-Unprefixed-QI}") 9716 1.1 skrll (+ (f-0-4 #xA) dst32-16-Unprefixed-QI (f-7-1 0) (f-10-2 3) (f-12-4 #xF)) 9717 1.1 skrll (rot-2-sem QI dst32-16-Unprefixed-QI) 9718 1.1 skrll ()) 9719 1.1 skrll (dni rot32.w-dst "rot r1h,dest" ((machine 32)) 9720 1.1 skrll ("rot.w r1h,${dst32-16-Unprefixed-HI}") 9721 1.1 skrll (+ (f-0-4 #xA) dst32-16-Unprefixed-HI (f-7-1 1) (f-10-2 3) (f-12-4 #xF)) 9722 1.1 skrll (rot-2-sem HI dst32-16-Unprefixed-HI) 9723 1.1 skrll ()) 9724 1.1 skrll 9725 1.1 skrll ;------------------------------------------------------------- 9726 1.1 skrll ; rts - return from subroutine 9727 1.1 skrll ;------------------------------------------------------------- 9728 1.1 skrll 9729 1.1 skrll (define-pmacro (rts16-sem) 9730 1.1 skrll (sequence ((SI tpc)) 9731 1.1 skrll (set tpc (mem16 HI (reg h-sp))) 9732 1.1 skrll (set (reg h-sp) (add (reg h-sp) 2)) 9733 1.1 skrll (set tpc (or tpc (sll (mem16 QI (reg h-sp)) 16))) 9734 1.1 skrll (set (reg h-sp) (add (reg h-sp) 1)) 9735 1.1 skrll (set pc tpc) 9736 1.1 skrll ) 9737 1.1 skrll ) 9738 1.1 skrll (define-pmacro (rts32-sem) 9739 1.1 skrll (sequence ((SI tpc)) 9740 1.1 skrll (set tpc (mem32 HI (reg h-sp))) 9741 1.1 skrll (set (reg h-sp) (add (reg h-sp) 2)) 9742 1.1 skrll (set tpc (or tpc (sll (mem32 HI (reg h-sp)) 16))) 9743 1.1 skrll (set (reg h-sp) (add (reg h-sp) 2)) 9744 1.1 skrll (set pc tpc) 9745 1.1 skrll ) 9746 1.1 skrll ) 9747 1.1 skrll 9748 1.1 skrll (dni rts16 "rts" ((machine 16)) 9749 1.1 skrll ("rts") 9750 1.1 skrll (+ (f-0-4 #xF) (f-4-4 3)) 9751 1.1 skrll (rts16-sem) 9752 1.1 skrll ()) 9753 1.1 skrll 9754 1.1 skrll (dni rts32 "rts" ((machine 32)) 9755 1.1 skrll ("rts") 9756 1.1 skrll (+ (f-0-4 #xD) (f-4-4 #xF)) 9757 1.1 skrll (rts32-sem) 9758 1.1 skrll ()) 9759 1.1 skrll 9760 1.1 skrll ;------------------------------------------------------------- 9761 1.1 skrll ; sbb - subtract with borrow 9762 1.1 skrll ;------------------------------------------------------------- 9763 1.1 skrll 9764 1.1 skrll (define-pmacro (sbb-sem mode src dst) 9765 1.1 skrll (sequence ((mode result)) 9766 1.1 skrll (set result (subc mode dst src cbit)) 9767 1.1 skrll (set obit (add-oflag mode dst src cbit)) 9768 1.1 skrll (set cbit (add-oflag mode dst src cbit)) 9769 1.1 skrll (set-z-and-s result) 9770 1.1 skrll (set dst result)) 9771 1.1 skrll ) 9772 1.1 skrll 9773 1.1 skrll ; sbb.size:G #imm,dst 9774 1.1 skrll (binary-arith16-imm-dst-defn QI QI .b 0 sbb X (f-0-4 7) (f-4-3 3) (f-8-4 7) sbb-sem) 9775 1.1 skrll (binary-arith16-imm-dst-defn HI HI .w 1 sbb X (f-0-4 7) (f-4-3 3) (f-8-4 7) sbb-sem) 9776 1.1 skrll (binary-arith32-imm-dst-Prefixed QI QI .b 0 sbb X #x9 #x2 #xE sbb-sem) 9777 1.1 skrll (binary-arith32-imm-dst-Prefixed HI HI .w 1 sbb X #x9 #x2 #xE sbb-sem) 9778 1.1 skrll 9779 1.1 skrll ; sbb.BW:G src,dst 9780 1.1 skrll (binary-arith16-src-dst-defn QI QI .b 0 sbb X (f-0-4 #xB) (f-4-3 4) sbb-sem) 9781 1.1 skrll (binary-arith16-src-dst-defn HI HI .w 1 sbb X (f-0-4 #xB) (f-4-3 4) sbb-sem) 9782 1.1 skrll (binary-arith32-src-dst-Prefixed QI QI .b 0 sbb X #x1 #x6 sbb-sem) 9783 1.1 skrll (binary-arith32-src-dst-Prefixed HI HI .w 1 sbb X #x1 #x6 sbb-sem) 9784 1.1 skrll 9785 1.1 skrll ;------------------------------------------------------------- 9786 1.1 skrll ; sbjnz - subtract then jump on not zero 9787 1.1 skrll ;------------------------------------------------------------- 9788 1.1 skrll 9789 1.1 skrll (define-pmacro (sub-jnz-sem mode src dst label) 9790 1.1 skrll (sequence ((mode result)) 9791 1.1 skrll (set result (sub mode dst src)) 9792 1.1 skrll (set dst result) 9793 1.1 skrll (if (ne result 0) 9794 1.1 skrll (set pc label))) 9795 1.1 skrll ) 9796 1.1 skrll 9797 1.1 skrll ; sbjnz.size #imm4,dst,label 9798 1.1 skrll (arith-jnz-imm4-dst sbjnz s4n (f-0-4 #xF) (f-4-3 4) #xf #x1 sub-jnz-sem) 9799 1.1 skrll 9800 1.1 skrll ;------------------------------------------------------------- 9801 1.1 skrll ; sccnd - store condition on condition (m32) 9802 1.1 skrll ;------------------------------------------------------------- 9803 1.1 skrll 9804 1.1 skrll (define-pmacro (sccnd-sem cnd dst) 9805 1.1 skrll (sequence () 9806 1.1 skrll (set dst 0) 9807 1.1 skrll (case DFLT cnd 9808 1.1 skrll ((#x00) (if (not cbit) (set dst 1))) ;ltu nc 9809 1.1 skrll ((#x01) (if (or cbit zbit) (set dst 1))) ;leu 9810 1.1 skrll ((#x02) (if (not zbit) (set dst 1))) ;ne nz 9811 1.1 skrll ((#x03) (if (not sbit) (set dst 1))) ;pz 9812 1.1 skrll ((#x04) (if (not obit) (set dst 1))) ;no 9813 1.1 skrll ((#x05) (if (not (or zbit (xor sbit obit))) (set dst 1))) ;gt 9814 1.1 skrll ((#x06) (if (xor sbit obit) (set dst 1))) ;ge 9815 1.1 skrll ((#x08) (if (trunc BI cbit) (set dst 1))) ;geu c 9816 1.1 skrll ((#x09) (if (not (or cbit zbit)) (set dst 1))) ;gtu 9817 1.1 skrll ((#x0a) (if (trunc BI zbit) (set dst 1))) ;eq z 9818 1.1 skrll ((#x0b) (if (trunc BI sbit) (set dst 1))) ;n 9819 1.1 skrll ((#x0c) (if (trunc BI obit) (set dst 1))) ;o 9820 1.1 skrll ((#x0d) (if (or zbit (xor sbit obit)) (set dst 1))) ;le 9821 1.1 skrll ((#x0e) (if (xor sbit obit) (set dst 1))) ;lt 9822 1.1 skrll ) 9823 1.1 skrll ) 9824 1.1 skrll ) 9825 1.1 skrll 9826 1.1 skrll ; scCND dst 9827 1.1 skrll (dni sccnd 9828 1.1 skrll "sccnd dst" 9829 1.1 skrll ((machine 32)) 9830 1.1 skrll "sc$sccond32 ${dst32-16-Unprefixed-HI}" 9831 1.1 skrll (+ (f-0-4 #xD) dst32-16-Unprefixed-HI (f-7-1 1) (f-10-2 3) sccond32) 9832 1.1 skrll (sccnd-sem sccond32 dst32-16-Unprefixed-HI) 9833 1.1 skrll ()) 9834 1.1 skrll 9835 1.1 skrll ;------------------------------------------------------------- 9836 1.1 skrll ; scmpu - string compare unequal (m32) 9837 1.1 skrll ;------------------------------------------------------------- 9838 1.1 skrll 9839 1.1 skrll ; TODO semantics 9840 1.1 skrll (dni scmpu.b "scmpu.b" ((machine 32)) 9841 1.1 skrll ("scmpu.b") 9842 1.1 skrll (+ (f-0-4 #xB) (f-4-4 8) (f-8-4 #xC) (f-12-4 3)) 9843 1.1 skrll (c-call VOID "scmpu_QI_semantics") 9844 1.1 skrll ()) 9845 1.1 skrll 9846 1.1 skrll (dni scmpu.w "scmpu.w" ((machine 32)) 9847 1.1 skrll ("scmpu.w") 9848 1.1 skrll (+ (f-0-4 #xB) (f-4-4 8) (f-8-4 #xD) (f-12-4 3)) 9849 1.1 skrll (c-call VOID "scmpu_HI_semantics") 9850 1.1 skrll ()) 9851 1.1 skrll 9852 1.1 skrll ;------------------------------------------------------------- 9853 1.1 skrll ; sha - shift arithmetic 9854 1.1 skrll ;------------------------------------------------------------- 9855 1.1 skrll 9856 1.1 skrll ; TODO future: split this into .b and .w semantics 9857 1.1 skrll (define-pmacro (sha-sem mode src1 dst) 9858 1.1 skrll (sequence ((mode result)(mode shift)(mode shmode)) 9859 1.1 skrll (case DFLT src1 9860 1.1 skrll ((#x0) (set shift 1)) 9861 1.1 skrll ((#x1) (set shift 2)) 9862 1.1 skrll ((#x2) (set shift 3)) 9863 1.1 skrll ((#x3) (set shift 4)) 9864 1.1 skrll ((#x4) (set shift 5)) 9865 1.1 skrll ((#x5) (set shift 6)) 9866 1.1 skrll ((#x6) (set shift 7)) 9867 1.1 skrll ((#x7) (set shift 8)) 9868 1.1 skrll ((-8) (set shift -1)) 9869 1.1 skrll ((-7) (set shift -2)) 9870 1.1 skrll ((-6) (set shift -3)) 9871 1.1 skrll ((-5) (set shift -4)) 9872 1.1 skrll ((-4) (set shift -5)) 9873 1.1 skrll ((-3) (set shift -6)) 9874 1.1 skrll ((-2) (set shift -7)) 9875 1.1 skrll ((-1) (set shift -8)) 9876 1.1 skrll (else (set shift 0)) 9877 1.1 skrll ) 9878 1.1 skrll (set shmode -1) 9879 1.1 skrll (set shmode (srl shmode #x8)) 9880 1.1 skrll (if (lt mode shift #x0) (set result (sra mode dst (mul shift -1)))) 9881 1.1 skrll (if (gt mode shift 0) (set result (sll mode dst shift))) 9882 1.1 skrll (if (eq shmode #x0) ; QI 9883 1.1 skrll (sequence 9884 1.1 skrll ((mode cbitamt)) 9885 1.1 skrll (if (lt mode shift #x0) 9886 1.1 skrll (set cbitamt (sub #x8 shift)) ; sra 9887 1.1 skrll (set cbitamt (sub shift 1))) ; sll 9888 1.1 skrll (set cbit (srl (and (sll dst cbitamt) #x80) #x7)) 9889 1.1 skrll (set obit (ne (and dst #x80) (and result #x80))) 9890 1.1 skrll )) 9891 1.1 skrll (if (eq shmode #xff) ; HI 9892 1.1 skrll (sequence 9893 1.1 skrll ((mode cbitamt)) 9894 1.1 skrll (if (lt mode shift #x0) 9895 1.1 skrll (set cbitamt (sub 16 shift)) ; sra 9896 1.1 skrll (set cbitamt (sub shift 1))) ; sll 9897 1.1 skrll (set cbit (srl (and (sll dst cbitamt) #x8000) #xf)) 9898 1.1 skrll (set obit (ne (and dst #x8000) (and result #x8000))) 9899 1.1 skrll )) 9900 1.1 skrll (set-z-and-s result) 9901 1.1 skrll (set dst result)) 9902 1.1 skrll ) 9903 1.1 skrll (define-pmacro (shar1h-sem mode dst) 9904 1.1 skrll (sequence ((mode result)(mode shmode)) 9905 1.1 skrll (set shmode -1) 9906 1.1 skrll (set shmode (srl shmode #x8)) 9907 1.1 skrll (if (lt mode (reg h-r1h) 0) (set result (sra mode dst (reg h-r1h)))) 9908 1.1 skrll (if (gt mode (reg h-r1h) 0) (set result (sll mode dst (reg h-r1h)))) 9909 1.1 skrll (if (eq shmode #x0) ; QI 9910 1.1 skrll (sequence 9911 1.1 skrll ((mode cbitamt)) 9912 1.1 skrll (if (lt mode (reg h-r1h) #x0) 9913 1.1 skrll (set cbitamt (sub #x8 (reg h-r1h))) ; sra 9914 1.1 skrll (set cbitamt (sub (reg h-r1h) 1))) ; sll 9915 1.1 skrll (set cbit (srl (and (sll dst cbitamt) #x80) #x7)) 9916 1.1 skrll (set obit (ne (and dst #x80) (and result #x80))) 9917 1.1 skrll )) 9918 1.1 skrll (if (eq shmode #xff) ; HI 9919 1.1 skrll (sequence 9920 1.1 skrll ((mode cbitamt)) 9921 1.1 skrll (if (lt mode (reg h-r1h) #x0) 9922 1.1 skrll (set cbitamt (sub 16 (reg h-r1h))) ; sra 9923 1.1 skrll (set cbitamt (sub (reg h-r1h) 1))) ; sll 9924 1.1 skrll (set cbit (srl (and (sll dst cbitamt) #x8000) #xf)) 9925 1.1 skrll (set obit (ne (and dst #x8000) (and result #x8000))) 9926 1.1 skrll )) 9927 1.1 skrll (set-z-and-s result) 9928 1.1 skrll (set dst result)) 9929 1.1 skrll ) 9930 1.1 skrll ; sha.BW #imm4,dst (m16 #1 m32 #1) 9931 1.1 skrll (binary-arith16-shimm4-dst-defn QI .b 0 0 sha (f-0-4 #xF) (f-4-3 0) sha-sem) 9932 1.1 skrll (binary-arith16-shimm4-dst-defn HI .w 0 1 sha (f-0-4 #xF) (f-4-3 0) sha-sem) 9933 1.1 skrll (binary-arith32-shimm4-dst-defn QI .b 1 0 sha #x7 #x0 sha-sem) 9934 1.1 skrll (binary-arith32-shimm4-dst-defn HI .w 1 1 sha #x7 #x0 sha-sem) 9935 1.1 skrll ; sha.BW r1h,dst (m16 #2 m32 #3) 9936 1.1 skrll (dni sha16.b-dst "sha.b r1h,dest" ((machine 16)) 9937 1.1 skrll ("sha.b r1h,${dst16-16-QI}") 9938 1.1 skrll (+ (f-0-4 7) (f-4-4 4) (f-8-4 #xF) dst16-16-QI) 9939 1.1 skrll (shar1h-sem HI dst16-16-QI) 9940 1.1 skrll ()) 9941 1.1 skrll (dni sha16.w-dst "sha.w r1h,dest" ((machine 16)) 9942 1.1 skrll ("sha.w r1h,${dst16-16-HI}") 9943 1.1 skrll (+ (f-0-4 7) (f-4-4 5) (f-8-4 #xF) dst16-16-HI) 9944 1.1 skrll (shar1h-sem HI dst16-16-HI) 9945 1.1 skrll ()) 9946 1.1 skrll (dni sha32.b-dst "sha.b r1h,dest" ((machine 32)) 9947 1.1 skrll ("sha.b r1h,${dst32-16-Unprefixed-QI}") 9948 1.1 skrll (+ (f-0-4 #xB) dst32-16-Unprefixed-QI (f-7-1 0) (f-10-2 3) (f-12-4 #xE)) 9949 1.1 skrll (shar1h-sem QI dst32-16-Unprefixed-QI) 9950 1.1 skrll ()) 9951 1.1 skrll (dni sha32.w-dst "sha.w r1h,dest" ((machine 32)) 9952 1.1 skrll ("sha.w r1h,${dst32-16-Unprefixed-HI}") 9953 1.1 skrll (+ (f-0-4 #xB) dst32-16-Unprefixed-HI (f-7-1 1) (f-10-2 3) (f-12-4 #xE)) 9954 1.1 skrll (shar1h-sem HI dst32-16-Unprefixed-HI) 9955 1.1 skrll ()) 9956 1.1 skrll ; sha.L #imm,dst (m16 #3) 9957 1.1 skrll (dni sha16-L-imm-r2r0 "sha.L #Imm-sh-12-s4,r2r0" ((machine 16)) 9958 1.1 skrll "sha.l #${Imm-sh-12-s4},r2r0" 9959 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-4 #xA) Imm-sh-12-s4) 9960 1.1 skrll (sha-sem SI Imm-sh-12-s4 (reg h-r2r0)) 9961 1.1 skrll ()) 9962 1.1 skrll (dni sha16-L-imm-r3r1 "sha.L #Imm-sh-12-s4,r3r1" ((machine 16)) 9963 1.1 skrll "sha.l #${Imm-sh-12-s4},r3r1" 9964 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-4 #xB) Imm-sh-12-s4) 9965 1.1 skrll (sha-sem SI Imm-sh-12-s4 (reg h-r3r1)) 9966 1.1 skrll ()) 9967 1.1 skrll ; sha.L r1h,dst (m16 #4) 9968 1.1 skrll (dni sha16-L-r1h-r2r0 "sha.L r1h,r2r0" ((machine 16)) 9969 1.1 skrll "sha.l r1h,r2r0" 9970 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-4 2) (f-12-4 1)) 9971 1.1 skrll (sha-sem SI (reg h-r1h) (reg h-r2r0)) 9972 1.1 skrll ()) 9973 1.1 skrll (dni sha16-L-r1h-r3r1 "sha.L r1h,r3r1" ((machine 16)) 9974 1.1 skrll "sha.l r1h,r3r1" 9975 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-4 3) (f-12-4 1)) 9976 1.1 skrll (sha-sem SI (reg h-r1h) (reg h-r3r1)) 9977 1.1 skrll ()) 9978 1.1 skrll ; sha.L #imm8,dst (m32 #2) 9979 1.1 skrll (binary-arith32-imm-dst-defn QI SI .l 0 sha X #xA #x2 #x1 sha-sem) 9980 1.1 skrll ; sha.L r1h,dst (m32 #4) 9981 1.1 skrll (dni sha32.l-dst "sha.l r1h,dest" ((machine 32)) 9982 1.1 skrll ("sha.l r1h,${dst32-16-Unprefixed-SI}") 9983 1.1 skrll (+ (f-0-4 #xC) dst32-16-Unprefixed-SI (f-7-1 0) (f-10-2 1) (f-12-4 1)) 9984 1.1 skrll (shar1h-sem QI dst32-16-Unprefixed-SI) 9985 1.1 skrll ()) 9986 1.1 skrll 9987 1.1 skrll ;------------------------------------------------------------- 9988 1.1 skrll ; shanc - shift arithmetic non carry (m32) 9989 1.1 skrll ;------------------------------------------------------------- 9990 1.1 skrll 9991 1.1 skrll ; TODO check semantics 9992 1.1 skrll ; shanc.L #imm8,dst 9993 1.1 skrll (binary-arith32-imm-dst-defn QI SI .l 0 shanc X #xC #x2 #x1 sha-sem) 9994 1.1 skrll 9995 1.1 skrll ;------------------------------------------------------------- 9996 1.1 skrll ; shl - shift logical 9997 1.1 skrll ;------------------------------------------------------------- 9998 1.1 skrll 9999 1.1 skrll ; TODO future: split this into .b and .w semantics 10000 1.1 skrll (define-pmacro (shl-sem mode src1 dst) 10001 1.1 skrll (sequence ((mode result)(mode shift)(mode shmode)) 10002 1.1 skrll (case DFLT src1 10003 1.1 skrll ((#x0) (set shift 1)) 10004 1.1 skrll ((#x1) (set shift 2)) 10005 1.1 skrll ((#x2) (set shift 3)) 10006 1.1 skrll ((#x3) (set shift 4)) 10007 1.1 skrll ((#x4) (set shift 5)) 10008 1.1 skrll ((#x5) (set shift 6)) 10009 1.1 skrll ((#x6) (set shift 7)) 10010 1.1 skrll ((#x7) (set shift 8)) 10011 1.1 skrll ((-8) (set shift -1)) 10012 1.1 skrll ((-7) (set shift -2)) 10013 1.1 skrll ((-6) (set shift -3)) 10014 1.1 skrll ((-5) (set shift -4)) 10015 1.1 skrll ((-4) (set shift -5)) 10016 1.1 skrll ((-3) (set shift -6)) 10017 1.1 skrll ((-2) (set shift -7)) 10018 1.1 skrll ((-1) (set shift -8)) 10019 1.1 skrll (else (set shift 0)) 10020 1.1 skrll ) 10021 1.1 skrll (set shmode -1) 10022 1.1 skrll (set shmode (srl shmode #x8)) 10023 1.1 skrll (if (lt mode shift #x0) (set result (srl mode dst (mul shift -1)))) 10024 1.1 skrll (if (gt mode shift 0) (set result (sll mode dst shift))) 10025 1.1 skrll (if (eq shmode #x0) ; QI 10026 1.1 skrll (sequence 10027 1.1 skrll ((mode cbitamt)) 10028 1.1 skrll (if (lt mode shift #x0) 10029 1.1 skrll (set cbitamt (sub #x8 shift)); srl 10030 1.1 skrll (set cbitamt (sub shift 1))) ; sll 10031 1.1 skrll (set cbit (srl (and (sll dst cbitamt) #x80) #x7)) 10032 1.1 skrll (set obit (ne (and dst #x80) (and result #x80))) 10033 1.1 skrll )) 10034 1.1 skrll (if (eq shmode #xff) ; HI 10035 1.1 skrll (sequence 10036 1.1 skrll ((mode cbitamt)) 10037 1.1 skrll (if (lt mode shift #x0) 10038 1.1 skrll (set cbitamt (sub 16 shift)) ; srl 10039 1.1 skrll (set cbitamt (sub shift 1))) ; sll 10040 1.1 skrll (set cbit (srl (and (sll dst cbitamt) #x8000) #xf)) 10041 1.1 skrll (set obit (ne (and dst #x8000) (and result #x8000))) 10042 1.1 skrll )) 10043 1.1 skrll (set-z-and-s result) 10044 1.1 skrll (set dst result)) 10045 1.1 skrll ) 10046 1.1 skrll (define-pmacro (shlr1h-sem mode dst) 10047 1.1 skrll (sequence ((mode result)(mode shmode)) 10048 1.1 skrll (set shmode -1) 10049 1.1 skrll (set shmode (srl shmode #x8)) 10050 1.1 skrll (if (lt mode (reg h-r1h) 0) (set result (srl mode dst (reg h-r1h)))) 10051 1.1 skrll (if (gt mode (reg h-r1h) 0) (set result (sll mode dst (reg h-r1h)))) 10052 1.1 skrll (if (eq shmode #x0) ; QI 10053 1.1 skrll (sequence 10054 1.1 skrll ((mode cbitamt)) 10055 1.1 skrll (if (lt mode (reg h-r1h) #x0) 10056 1.1 skrll (set cbitamt (sub #x8 (reg h-r1h))) ; srl 10057 1.1 skrll (set cbitamt (sub (reg h-r1h) 1))) ; sll 10058 1.1 skrll (set cbit (srl (and (sll dst cbitamt) #x80) #x7)) 10059 1.1 skrll (set obit (ne (and dst #x80) (and result #x80))) 10060 1.1 skrll )) 10061 1.1 skrll (if (eq shmode #xff) ; HI 10062 1.1 skrll (sequence 10063 1.1 skrll ((mode cbitamt)) 10064 1.1 skrll (if (lt mode (reg h-r1h) #x0) 10065 1.1 skrll (set cbitamt (sub 16 (reg h-r1h))) ; srl 10066 1.1 skrll (set cbitamt (sub (reg h-r1h) 1))) ; sll 10067 1.1 skrll (set cbit (srl (and (sll dst cbitamt) #x8000) #xf)) 10068 1.1 skrll (set obit (ne (and dst #x8000) (and result #x8000))) 10069 1.1 skrll )) 10070 1.1 skrll (set-z-and-s result) 10071 1.1 skrll (set dst result)) 10072 1.1 skrll ) 10073 1.1 skrll ; shl.BW #imm4,dst (m16 #1 m32 #1) 10074 1.1 skrll (binary-arith16-shimm4-dst-defn QI .b 0 0 shl (f-0-4 #xE) (f-4-3 4) shl-sem) 10075 1.1 skrll (binary-arith16-shimm4-dst-defn HI .w 0 1 shl (f-0-4 #xE) (f-4-3 4) shl-sem) 10076 1.1 skrll (binary-arith32-shimm4-dst-defn QI .b 0 0 shl #x7 #x0 shl-sem) 10077 1.1 skrll (binary-arith32-shimm4-dst-defn HI .w 0 1 shl #x7 #x0 shl-sem) 10078 1.1 skrll ; shl.BW r1h,dst (m16 #2 m32 #3) 10079 1.1 skrll (dni shl16.b-dst "shl.b r1h,dest" ((machine 16)) 10080 1.1 skrll ("shl.b r1h,${dst16-16-QI}") 10081 1.1 skrll (+ (f-0-4 7) (f-4-4 4) (f-8-4 #xE) dst16-16-QI) 10082 1.1 skrll (shlr1h-sem HI dst16-16-QI) 10083 1.1 skrll ()) 10084 1.1 skrll (dni shl16.w-dst "shl.w r1h,dest" ((machine 16)) 10085 1.1 skrll ("shl.w r1h,${dst16-16-HI}") 10086 1.1 skrll (+ (f-0-4 7) (f-4-4 5) (f-8-4 #xE) dst16-16-HI) 10087 1.1 skrll (shlr1h-sem HI dst16-16-HI) 10088 1.1 skrll ()) 10089 1.1 skrll (dni shl32.b-dst "shl.b r1h,dest" ((machine 32)) 10090 1.1 skrll ("shl.b r1h,${dst32-16-Unprefixed-QI}") 10091 1.1 skrll (+ (f-0-4 #xA) dst32-16-Unprefixed-QI (f-7-1 0) (f-10-2 3) (f-12-4 #xE)) 10092 1.1 skrll (shlr1h-sem QI dst32-16-Unprefixed-QI) 10093 1.1 skrll ()) 10094 1.1 skrll (dni shl32.w-dst "shl.w r1h,dest" ((machine 32)) 10095 1.1 skrll ("shl.w r1h,${dst32-16-Unprefixed-HI}") 10096 1.1 skrll (+ (f-0-4 #xA) dst32-16-Unprefixed-HI (f-7-1 1) (f-10-2 3) (f-12-4 #xE)) 10097 1.1 skrll (shlr1h-sem HI dst32-16-Unprefixed-HI) 10098 1.1 skrll ()) 10099 1.1 skrll ; shl.L #imm,dst (m16 #3) 10100 1.1 skrll (dni shl16-L-imm-r2r0 "shl.L #Imm-sh-12-s4,r2r0" ((machine 16)) 10101 1.1 skrll "shl.l #${Imm-sh-12-s4},r2r0" 10102 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-4 #x8) Imm-sh-12-s4) 10103 1.1 skrll (shl-sem SI Imm-sh-12-s4 (reg h-r2r0)) 10104 1.1 skrll ()) 10105 1.1 skrll (dni shl16-L-imm-r3r1 "shl.L #Imm-sh-12-s4,r3r1" ((machine 16)) 10106 1.1 skrll "shl.l #${Imm-sh-12-s4},r3r1" 10107 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-4 #x9) Imm-sh-12-s4) 10108 1.1 skrll (shl-sem SI Imm-sh-12-s4 (reg h-r3r1)) 10109 1.1 skrll ()) 10110 1.1 skrll ; shl.L r1h,dst (m16 #4) 10111 1.1 skrll (dni shl16-L-r1h-r2r0 "shl.L r1h,r2r0" ((machine 16)) 10112 1.1 skrll "shl.l r1h,r2r0" 10113 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-4 0) (f-12-4 1)) 10114 1.1 skrll (shl-sem SI (reg h-r1h) (reg h-r2r0)) 10115 1.1 skrll ()) 10116 1.1 skrll (dni shl16-L-r1h-r3r1 "shl.L r1h,r3r1" ((machine 16)) 10117 1.1 skrll "shl.l r1h,r3r1" 10118 1.1 skrll (+ (f-0-4 #xE) (f-4-4 #xB) (f-8-4 1) (f-12-4 1)) 10119 1.1 skrll (shl-sem SI (reg h-r1h) (reg h-r3r1)) 10120 1.1 skrll ()) 10121 1.1 skrll ; shl.L #imm8,dst (m32 #2) 10122 1.1 skrll (binary-arith32-imm-dst-defn QI SI .l 0 shl X #x9 #x2 #x1 shl-sem) 10123 1.1 skrll ; shl.L r1h,dst (m32 #4) 10124 1.1 skrll (dni shl32.l-dst "shl.l r1h,dest" ((machine 32)) 10125 1.1 skrll ("shl.l r1h,${dst32-16-Unprefixed-SI}") 10126 1.1 skrll (+ (f-0-4 #xC) dst32-16-Unprefixed-SI (f-7-1 0) (f-10-2 0) (f-12-4 1)) 10127 1.1 skrll (shlr1h-sem QI dst32-16-Unprefixed-SI) 10128 1.1 skrll ()) 10129 1.1 skrll 10130 1.1 skrll ;------------------------------------------------------------- 10131 1.1 skrll ; shlnc - shift logical non carry 10132 1.1 skrll ;------------------------------------------------------------- 10133 1.1 skrll 10134 1.1 skrll ; TODO check semantics 10135 1.1 skrll ; shlnc.L #imm8,dst 10136 1.1 skrll (binary-arith32-imm-dst-defn QI SI .l 0 shlnc X #x8 #x2 #x1 shl-sem) 10137 1.1 skrll 10138 1.1 skrll ;------------------------------------------------------------- 10139 1.1 skrll ; sin - string input (m32) 10140 1.1 skrll ;------------------------------------------------------------- 10141 1.1 skrll 10142 1.1 skrll ; TODO semantics 10143 1.1 skrll (dni sin32.b "sin" ((machine 32)) 10144 1.1 skrll ("sin.b") 10145 1.1 skrll (+ (f-0-4 #xB) (f-4-4 2) (f-8-4 8) (f-12-4 3)) 10146 1.1 skrll (c-call VOID "sin_QI_semantics") 10147 1.1 skrll ()) 10148 1.1 skrll 10149 1.1 skrll (dni sin32.w "sin" ((machine 32)) 10150 1.1 skrll ("sin.w") 10151 1.1 skrll (+ (f-0-4 #xB) (f-4-4 2) (f-8-4 9) (f-12-4 3)) 10152 1.1 skrll (c-call VOID "sin_HI_semantics") 10153 1.1 skrll ()) 10154 1.1 skrll 10155 1.1 skrll ;------------------------------------------------------------- 10156 1.1 skrll ; smovb - string move backward 10157 1.1 skrll ;------------------------------------------------------------- 10158 1.1 skrll 10159 1.1 skrll ; TODO semantics 10160 1.1 skrll (dni smovb16.b "smovb.b" ((machine 16)) 10161 1.1 skrll ("smovb.b") 10162 1.1 skrll (+ (f-0-4 7) (f-4-4 #xC) (f-8-4 #xE) (f-12-4 9)) 10163 1.1 skrll (c-call VOID "smovb_QI_semantics") 10164 1.1 skrll ()) 10165 1.1 skrll 10166 1.1 skrll (dni smovb16.w "smovb.w" ((machine 16)) 10167 1.1 skrll ("smovb.w") 10168 1.1 skrll (+ (f-0-4 7) (f-4-4 #xD) (f-8-4 #xE) (f-12-4 9)) 10169 1.1 skrll (c-call VOID "smovb_HI_semantics") 10170 1.1 skrll ()) 10171 1.1 skrll 10172 1.1 skrll (dni smovb32.b "smovb.b" ((machine 32)) 10173 1.1 skrll ("smovb.b") 10174 1.1 skrll (+ (f-0-4 #xB) (f-4-4 6) (f-8-4 8) (f-12-4 3)) 10175 1.1 skrll (c-call VOID "smovb_QI_semantics") 10176 1.1 skrll ()) 10177 1.1 skrll 10178 1.1 skrll (dni smovb32.w "smovb.w" ((machine 32)) 10179 1.1 skrll ("smovb.w") 10180 1.1 skrll (+ (f-0-4 #xB) (f-4-4 6) (f-8-4 9) (f-12-4 3)) 10181 1.1 skrll (c-call VOID "smovb_HI_semantics") 10182 1.1 skrll ()) 10183 1.1 skrll 10184 1.1 skrll ;------------------------------------------------------------- 10185 1.1 skrll ; smovf - string move forward (m32) 10186 1.1 skrll ;------------------------------------------------------------- 10187 1.1 skrll 10188 1.1 skrll ; TODO semantics 10189 1.1 skrll (dni smovf16.b "smovf.b" ((machine 16)) 10190 1.1 skrll ("smovf.b") 10191 1.1 skrll (+ (f-0-4 7) (f-4-4 #xC) (f-8-4 #xE) (f-12-4 8)) 10192 1.1 skrll (c-call VOID "smovf_QI_semantics") 10193 1.1 skrll ()) 10194 1.1 skrll 10195 1.1 skrll (dni smovf16.w "smovf.w" ((machine 16)) 10196 1.1 skrll ("smovf.w") 10197 1.1 skrll (+ (f-0-4 7) (f-4-4 #xD) (f-8-4 #xE) (f-12-4 8)) 10198 1.1 skrll (c-call VOID "smovf_HI_semantics") 10199 1.1 skrll ()) 10200 1.1 skrll 10201 1.1 skrll (dni smovf32.b "smovf.b" ((machine 32)) 10202 1.1 skrll ("smovf.b") 10203 1.1 skrll (+ (f-0-4 #xB) (f-4-4 0) (f-8-4 8) (f-12-4 3)) 10204 1.1 skrll (c-call VOID "smovf_QI_semantics") 10205 1.1 skrll ()) 10206 1.1 skrll 10207 1.1 skrll (dni smovf32.w "smovf.w" ((machine 32)) 10208 1.1 skrll ("smovf.w") 10209 1.1 skrll (+ (f-0-4 #xB) (f-4-4 0) (f-8-4 9) (f-12-4 3)) 10210 1.1 skrll (c-call VOID "smovf_HI_semantics") 10211 1.1 skrll ()) 10212 1.1 skrll 10213 1.1 skrll ;------------------------------------------------------------- 10214 1.1 skrll ; smovu - string move unequal (m32) 10215 1.1 skrll ;------------------------------------------------------------- 10216 1.1 skrll 10217 1.1 skrll ; TODO semantics 10218 1.1 skrll (dni smovu.b "smovu.b" ((machine 32)) 10219 1.1 skrll ("smovu.b") 10220 1.1 skrll (+ (f-0-4 #xB) (f-4-4 8) (f-8-4 8) (f-12-4 3)) 10221 1.1 skrll (c-call VOID "smovu_QI_semantics") 10222 1.1 skrll ()) 10223 1.1 skrll 10224 1.1 skrll (dni smovu.w "smovu.w" ((machine 32)) 10225 1.1 skrll ("smovu.w") 10226 1.1 skrll (+ (f-0-4 #xB) (f-4-4 8) (f-8-4 9) (f-12-4 3)) 10227 1.1 skrll (c-call VOID "smovu_HI_semantics") 10228 1.1 skrll ()) 10229 1.1 skrll 10230 1.1 skrll ;------------------------------------------------------------- 10231 1.1 skrll ; sout - string output (m32) 10232 1.1 skrll ;------------------------------------------------------------- 10233 1.1 skrll 10234 1.1 skrll ; TODO semantics 10235 1.1 skrll (dni sout.b "sout.b" ((machine 32)) 10236 1.1 skrll ("sout.b") 10237 1.1 skrll (+ (f-0-4 #xB) (f-4-4 4) (f-8-4 8) (f-12-4 3)) 10238 1.1 skrll (c-call VOID "sout_QI_semantics") 10239 1.1 skrll ()) 10240 1.1 skrll 10241 1.1 skrll (dni sout.w "sout" ((machine 32)) 10242 1.1 skrll ("sout.w") 10243 1.1 skrll (+ (f-0-4 #xB) (f-4-4 4) (f-8-4 9) (f-12-4 3)) 10244 1.1 skrll (c-call VOID "sout_HI_semantics") 10245 1.1 skrll ()) 10246 1.1 skrll 10247 1.1 skrll ;------------------------------------------------------------- 10248 1.1 skrll ; sstr - string store 10249 1.1 skrll ;------------------------------------------------------------- 10250 1.1 skrll 10251 1.1 skrll ; TODO semantics 10252 1.1 skrll (dni sstr16.b "sstr.b" ((machine 16)) 10253 1.1 skrll ("sstr.b") 10254 1.1 skrll (+ (f-0-4 7) (f-4-4 #xC) (f-8-4 #xE) (f-12-4 #xA)) 10255 1.1 skrll (c-call VOID "sstr_QI_semantics") 10256 1.1 skrll ()) 10257 1.1 skrll 10258 1.1 skrll (dni sstr16.w "sstr.w" ((machine 16)) 10259 1.1 skrll ("sstr.w") 10260 1.1 skrll (+ (f-0-4 7) (f-4-4 #xD) (f-8-4 #xE) (f-12-4 #xA)) 10261 1.1 skrll (c-call VOID "sstr_HI_semantics") 10262 1.1 skrll ()) 10263 1.1 skrll 10264 1.1 skrll (dni sstr.b "sstr" ((machine 32)) 10265 1.1 skrll ("sstr.b") 10266 1.1 skrll (+ (f-0-4 #xB) (f-4-4 8) (f-8-4 0) (f-12-4 3)) 10267 1.1 skrll (c-call VOID "sstr_QI_semantics") 10268 1.1 skrll ()) 10269 1.1 skrll 10270 1.1 skrll (dni sstr.w "sstr" ((machine 32)) 10271 1.1 skrll ("sstr.w") 10272 1.1 skrll (+ (f-0-4 #xB) (f-4-4 8) (f-8-4 1) (f-12-4 3)) 10273 1.1 skrll (c-call VOID "sstr_HI_semantics") 10274 1.1 skrll ()) 10275 1.1 skrll 10276 1.1 skrll ;------------------------------------------------------------- 10277 1.1 skrll ; stnz - store on not zero 10278 1.1 skrll ;------------------------------------------------------------- 10279 1.1 skrll 10280 1.1 skrll (define-pmacro (stnz-sem mode src dst) 10281 1.1 skrll (sequence () 10282 1.1 skrll (if (ne zbit (const 1)) 10283 1.1 skrll (set dst src))) 10284 1.1 skrll ) 10285 1.1 skrll ; stnz #imm8,dst3 (m16) 10286 1.1 skrll (binary-arith16-b-S-imm8-dst3 stnz "" (f-0-4 #xD) (f-4-1 0) stnz-sem) 10287 1.1 skrll ; stnz.BW #imm,dst (m32) 10288 1.1 skrll (binary-arith32-imm-dst-defn QI QI .b 0 stnz X #x9 #x1 #xF stnz-sem) 10289 1.1 skrll (binary-arith32-imm-dst-defn HI HI .w 1 stnz X #x9 #x1 #xF stnz-sem) 10290 1.1 skrll 10291 1.1 skrll ;------------------------------------------------------------- 10292 1.1 skrll ; stz - store on zero 10293 1.1 skrll ;------------------------------------------------------------- 10294 1.1 skrll 10295 1.1 skrll (define-pmacro (stz-sem mode src dst) 10296 1.1 skrll (sequence () 10297 1.1 skrll (if (eq zbit (const 1)) 10298 1.1 skrll (set dst src))) 10299 1.1 skrll ) 10300 1.1 skrll ; stz #imm8,dst3 (m16) 10301 1.1 skrll (binary-arith16-b-S-imm8-dst3 stz "" (f-0-4 #xC) (f-4-1 1) stz-sem) 10302 1.1 skrll ; stz.BW #imm,dst (m32) 10303 1.1 skrll (binary-arith32-imm-dst-defn QI QI .b 0 stz X #x9 #x0 #xF stz-sem) 10304 1.1 skrll (binary-arith32-imm-dst-defn HI HI .w 1 stz X #x9 #x0 #xF stz-sem) 10305 1.1 skrll 10306 1.1 skrll ;------------------------------------------------------------- 10307 1.1 skrll ; stzx - store on zero extention 10308 1.1 skrll ;------------------------------------------------------------- 10309 1.1 skrll 10310 1.1 skrll (define-pmacro (stzx-sem mode src1 src2 dst) 10311 1.1 skrll (sequence () 10312 1.1 skrll (if (eq zbit (const 1)) 10313 1.1 skrll (set dst src1) 10314 1.1 skrll (set dst src2))) 10315 1.1 skrll ) 10316 1.1 skrll ; stzx #imm8,dst3 (m16) 10317 1.1 skrll (dni stzx16-imm8-imm8-r0h "stzx #Imm8,#Imm8,r0h" ((machine 16)) 10318 1.1 skrll ("stzx #${Imm-8-QI},#${Imm-16-QI},r0h") 10319 1.1 skrll (+ (f-0-4 #xD) (f-4-4 #xB) Imm-8-QI Imm-16-QI) 10320 1.1 skrll (stzx-sem QI Imm-8-QI Imm-16-QI (reg h-r0h)) 10321 1.1 skrll ()) 10322 1.1 skrll (dni stzx16-imm8-imm8-r0l "stzx #Imm8,#Imm8,r0l" ((machine 16)) 10323 1.1 skrll ("stzx #${Imm-8-QI},#${Imm-16-QI},r0l") 10324 1.1 skrll (+ (f-0-4 #xD) (f-4-4 #xC) Imm-8-QI Imm-16-QI) 10325 1.1 skrll (stzx-sem QI Imm-8-QI Imm-16-QI (reg h-r0l)) 10326 1.1 skrll ()) 10327 1.1 skrll (dni stzx16-imm8-imm8-dsp8sb "stzx #Imm8,#Imm8,dsp8[sb]" ((machine 16)) 10328 1.1 skrll ("stzx #${Imm-8-QI},#${Imm-24-QI},${Dsp-16-u8}[sb]") 10329 1.1 skrll (+ (f-0-4 #xD) (f-4-4 #xD) Imm-8-QI Dsp-16-u8 Imm-24-QI) 10330 1.1 skrll (stzx-sem QI Imm-8-QI Imm-16-QI (mem16 QI (add (reg h-sb) Dsp-24-u8))) 10331 1.1 skrll ()) 10332 1.1 skrll (dni stzx16-imm8-imm8-dsp8fb "stzx #Imm8,#Imm8,dsp8[fb]" ((machine 16)) 10333 1.1 skrll ("stzx #${Imm-8-QI},#${Imm-24-QI},${Dsp-16-s8}[fb]") 10334 1.1 skrll (+ (f-0-4 #xD) (f-4-4 #xE) Imm-8-QI Dsp-16-s8 Imm-24-QI) 10335 1.1 skrll (stzx-sem QI Imm-8-QI Imm-24-QI (mem16 QI (add (reg h-fb) Dsp-16-s8))) 10336 1.1 skrll ()) 10337 1.1 skrll (dni stzx16-imm8-imm8-abs16 "stzx #Imm8,#Imm8,abs16" ((machine 16)) 10338 1.1 skrll ("stzx #${Imm-8-QI},#${Imm-32-QI},${Dsp-16-u16}") 10339 1.1 skrll (+ (f-0-4 #xD) (f-4-4 #xF) Imm-8-QI Dsp-16-u16 Imm-32-QI) 10340 1.1 skrll (stzx-sem QI Imm-8-QI Imm-32-QI (mem16 QI Dsp-16-u16)) 10341 1.1 skrll ()) 10342 1.1 skrll ; stzx.BW #imm,dst (m32) 10343 1.1 skrll (insn-imm1-imm2-dst-Unprefixed stzx #x9 #x3 #xF stzx-sem) 10344 1.1 skrll 10345 1.1 skrll ;------------------------------------------------------------- 10346 1.1 skrll ; subx - subtract extend (m32) 10347 1.1 skrll ;------------------------------------------------------------- 10348 1.1 skrll 10349 1.1 skrll (define-pmacro (subx-sem mode src1 dst) 10350 1.1 skrll (sequence ((mode result)) 10351 1.1 skrll (set result (sub mode dst (ext mode src1))) 10352 1.1 skrll (set obit (sub-oflag mode dst (ext mode src1) 0)) 10353 1.1 skrll (set cbit (sub-cflag mode dst (ext mode src1) 0)) 10354 1.1 skrll (set dst result) 10355 1.1 skrll (set-z-and-s result))) 10356 1.1 skrll ; subx #imm8,dst 10357 1.1 skrll (binary-arith32-imm-dst-defn QI SI "" 0 subx G #x9 #x1 #x1 subx-sem) 10358 1.1 skrll ; subx src,dst 10359 1.1 skrll (binary-arith32-src-dst-defn QI SI "" 0 subx G #x1 #x0 subx-sem) 10360 1.1 skrll 10361 1.1 skrll ;------------------------------------------------------------- 10362 1.1 skrll ; tst - test 10363 1.1 skrll ;------------------------------------------------------------- 10364 1.1 skrll 10365 1.1 skrll (define-pmacro (tst-sem mode src1 dst) 10366 1.1 skrll (sequence ((mode result)) 10367 1.1 skrll (set result (and mode dst src1)) 10368 1.1 skrll (set-z-and-s result)) 10369 1.1 skrll ) 10370 1.1 skrll 10371 1.1 skrll ; tst.BW #imm,dst (m16 #1 m32 #1) 10372 1.1 skrll (binary-arith-imm-dst tst G (f-0-4 7) (f-4-3 3) (f-8-4 0) #x9 #x3 #xE tst-sem) 10373 1.1 skrll ; tst.BW src,dst (m16 #2 m32 #3) 10374 1.1 skrll (binary-arith16-src-dst-defn QI QI .b 0 tst X (f-0-4 #x8) (f-4-3 0) tst-sem) 10375 1.1 skrll (binary-arith16-src-dst-defn HI HI .w 1 tst X (f-0-4 #x8) (f-4-3 0) tst-sem) 10376 1.1 skrll (binary-arith32-src-dst-Prefixed QI QI .b 0 tst G #x1 #x9 tst-sem) 10377 1.1 skrll (binary-arith32-src-dst-Prefixed HI HI .w 1 tst G #x1 #x9 tst-sem) 10378 1.1 skrll ; tst.BW:S #imm,dst2 (m32 #2) 10379 1.1 skrll (binary-arith32-s-imm-dst QI .b 0 tst #x0 #x6 tst-sem) 10380 1.1 skrll (binary-arith32-s-imm-dst HI .w 1 tst #x0 #x6 tst-sem) 10381 1.1 skrll 10382 1.1 skrll ;------------------------------------------------------------- 10383 1.1 skrll ; und - undefined 10384 1.1 skrll ;------------------------------------------------------------- 10385 1.1 skrll 10386 1.1 skrll (dni und16 "und" ((machine 16)) 10387 1.1 skrll ("und") 10388 1.1 skrll (+ (f-0-4 #xF) (f-4-4 #xF)) 10389 1.1 skrll (nop) 10390 1.1 skrll ()) 10391 1.1 skrll 10392 1.1 skrll (dni und32 "und" ((machine 32)) 10393 1.1 skrll ("und") 10394 1.1 skrll (+ (f-0-4 #xF) (f-4-4 #xF)) 10395 1.1 skrll (nop) 10396 1.1 skrll ()) 10397 1.1 skrll 10398 1.1 skrll ;------------------------------------------------------------- 10399 1.1 skrll ; wait 10400 1.1 skrll ;------------------------------------------------------------- 10401 1.1 skrll 10402 1.1 skrll ; ??? semantics 10403 1.1 skrll (dni wait16 "wait" ((machine 16)) 10404 1.1 skrll ("wait") 10405 1.1 skrll (+ (f-0-4 7) (f-4-4 #xD) (f-8-4 #xF) (f-12-4 3)) 10406 1.1 skrll (nop) 10407 1.1 skrll ()) 10408 1.1 skrll 10409 1.1 skrll (dni wait "wait" ((machine 32)) 10410 1.1 skrll ("wait") 10411 1.1 skrll (+ (f-0-4 #xB) (f-4-4 2) (f-8-4 0) (f-12-4 3)) 10412 1.1 skrll (nop) 10413 1.1 skrll ()) 10414 1.1 skrll 10415 1.1 skrll ;------------------------------------------------------------- 10416 1.1 skrll ; xchg - exchange 10417 1.1 skrll ;------------------------------------------------------------- 10418 1.1 skrll 10419 1.1 skrll (define-pmacro (xchg-sem mode src dst) 10420 1.1 skrll (sequence ((mode result)) 10421 1.1 skrll (set result src) 10422 1.1 skrll (set src dst) 10423 1.1 skrll (set dst result)) 10424 1.1 skrll ) 10425 1.1 skrll (define-pmacro (xchg16-defn mode sz szc src srcreg) 10426 1.1 skrll (dni (.sym xchg16 sz - srcreg) 10427 1.1 skrll (.str "xchg" sz "-" srcreg ",dst16-16-" mode) 10428 1.1 skrll ((machine 16)) 10429 1.1 skrll (.str "xchg." sz " " srcreg ",${dst16-16-" mode "}") 10430 1.1 skrll (+ (f-0-4 #x7) (f-4-3 #x5) (f-7-1 szc) (f-8-2 0) (f-10-2 src) (.sym dst16-16- mode)) 10431 1.1 skrll (xchg-sem mode (reg (.sym h- srcreg)) (.sym dst16-16- mode)) 10432 1.1 skrll ()) 10433 1.1 skrll ) 10434 1.1 skrll (xchg16-defn QI b 0 0 r0l) 10435 1.1 skrll (xchg16-defn QI b 0 1 r0h) 10436 1.1 skrll (xchg16-defn QI b 0 2 r1l) 10437 1.1 skrll (xchg16-defn QI b 0 3 r1h) 10438 1.1 skrll (xchg16-defn HI w 1 0 r0) 10439 1.1 skrll (xchg16-defn HI w 1 1 r1) 10440 1.1 skrll (xchg16-defn HI w 1 2 r2) 10441 1.1 skrll (xchg16-defn HI w 1 3 r3) 10442 1.1 skrll (define-pmacro (xchg32-defn mode sz szc src srcreg) 10443 1.1 skrll (dni (.sym xchg32 sz - srcreg) 10444 1.1 skrll (.str "xchg" sz "-" srcreg ",dst32-16-Unprefixed-" mode) 10445 1.1 skrll ((machine 32)) 10446 1.1 skrll (.str "xchg." sz " " srcreg ",${dst32-16-Unprefixed-" mode "}") 10447 1.1 skrll (+ (f-0-4 #xD) (.sym dst32-16-Unprefixed- mode) (f-7-1 szc) (f-10-2 0) (f-12-1 1) (f-13-3 src)) 10448 1.1 skrll (xchg-sem mode (reg (.sym h- srcreg)) (.sym dst32-16-Unprefixed- mode)) 10449 1.1 skrll ()) 10450 1.1 skrll ) 10451 1.1 skrll (xchg32-defn QI b 0 0 r0l) 10452 1.1 skrll (xchg32-defn QI b 0 1 r1l) 10453 1.1 skrll (xchg32-defn QI b 0 2 a0) 10454 1.1 skrll (xchg32-defn QI b 0 3 a1) 10455 1.1 skrll (xchg32-defn QI b 0 4 r0h) 10456 1.1 skrll (xchg32-defn QI b 0 5 r1h) 10457 1.1 skrll (xchg32-defn HI w 1 0 r0) 10458 1.1 skrll (xchg32-defn HI w 1 1 r1) 10459 1.1 skrll (xchg32-defn HI w 1 2 a0) 10460 1.1 skrll (xchg32-defn HI w 1 3 a1) 10461 1.1 skrll (xchg32-defn HI w 1 4 r2) 10462 1.1 skrll (xchg32-defn HI w 1 5 r3) 10463 1.1 skrll 10464 1.1 skrll ;------------------------------------------------------------- 10465 1.1 skrll ; xor - exclusive or 10466 1.1 skrll ;------------------------------------------------------------- 10467 1.1 skrll 10468 1.1 skrll (define-pmacro (xor-sem mode src1 dst) 10469 1.1 skrll (sequence ((mode result)) 10470 1.1 skrll (set result (xor mode src1 dst)) 10471 1.1 skrll (set-z-and-s result) 10472 1.1 skrll (set dst result)) 10473 1.1 skrll ) 10474 1.1 skrll 10475 1.1 skrll ; xor.BW #imm,dst (m16 #1 m32 #1) 10476 1.1 skrll (binary-arith-imm-dst xor G (f-0-4 7) (f-4-3 3) (f-8-4 1) #x9 #x0 #xE xor-sem) 10477 1.1 skrll ; xor.BW src,dst (m16 #3 m32 #3) 10478 1.1 skrll (binary-arith-src-dst xor G (f-0-4 #x8) (f-4-3 4) #x1 #x9 xor-sem) 10479 1.1 skrll 10480 1.1 skrll ;------------------------------------------------------------- 10481 1.1 skrll ; Widening 10482 1.1 skrll ;------------------------------------------------------------- 10483 1.1 skrll 10484 1.1 skrll (define-pmacro (exts-sem smode dmode src dst) 10485 1.1 skrll (set dst (ext dmode (trunc smode src))) 10486 1.1 skrll ) 10487 1.1 skrll (define-pmacro (extz-sem smode dmode src dst) 10488 1.1 skrll (set dst (zext dmode (trunc smode src))) 10489 1.1 skrll ) 10490 1.1 skrll 10491 1.1 skrll ; exts.b dst for m16c 10492 1.1 skrll (ext16-defn QI HI .b 0 exts (f-0-4 7) (f-4-3 6) (f-8-4 6) exts-sem) 10493 1.1 skrll 10494 1.1 skrll ; exts.w r0 for m16c 10495 1.1 skrll (dni exts16.w-r0 10496 1.1 skrll "exts.w r0" 10497 1.1 skrll ((machine 16)) 10498 1.1 skrll "exts.w r0" 10499 1.1 skrll (+ (f-0-4 #x7) (f-4-4 #xC) (f-8-4 #xF) (f-12-4 3)) 10500 1.1 skrll (exts-sem HI SI R0 R2R0) 10501 1.1 skrll ()) 10502 1.1 skrll 10503 1.1 skrll ; exts.size dst for m32c 10504 1.1 skrll (ext32-defn QI HI .b 0 exts (f-0-4 #xC) (f-10-2 1) (f-12-4 #xE) exts-sem) 10505 1.1 skrll (ext32-defn HI SI .w 1 exts (f-0-4 #xC) (f-10-2 1) (f-12-4 #xE) exts-sem) 10506 1.1 skrll ; exts.b src,dst for m32c 10507 1.1 skrll (ext32-binary-defn exts .b #x1 #x7 exts-sem) 10508 1.1 skrll 10509 1.1 skrll ; extz.b src,dst for m32c 10510 1.1 skrll (ext32-binary-defn extz "" #x1 #xB extz-sem) 10511 1.1 skrll 10512 1.1 skrll ;------------------------------------------------------------- 10513 1.1 skrll ; Indirect 10514 1.1 skrll ;------------------------------------------------------------- 10515 1.1 skrll 10516 1.1 skrll ; TODO semantics 10517 1.1 skrll (dni srcind "SRC-INDIRECT" ((machine 32)) 10518 1.1 skrll ("src-indirect") 10519 1.1 skrll (+ (f-0-4 4) (f-4-4 1)) 10520 1.1 skrll (set (reg h-src-indirect) 1) 10521 1.1 skrll ()) 10522 1.1 skrll 10523 1.1 skrll (dni destind "DEST-INDIRECT" ((machine 32)) 10524 1.1 skrll ("dest-indirect") 10525 1.1 skrll (+ (f-0-4 0) (f-4-4 9)) 10526 1.1 skrll (set (reg h-dst-indirect) 1) 10527 1.1 skrll ()) 10528 10529 (dni srcdestind "SRC-DEST-INDIRECT" ((machine 32)) 10530 ("src-dest-indirect") 10531 (+ (f-0-4 4) (f-4-4 9)) 10532 (sequence () (set (reg h-src-indirect) 1) (set (reg h-dst-indirect) 1)) 10533 ()) 10534