1/* Simulator instruction semantics for crisv10f. 2 3THIS FILE IS MACHINE GENERATED WITH CGEN. 4 5Copyright 1996-2023 Free Software Foundation, Inc. 6 7This file is part of the GNU simulators. 8 9 This file is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 3, or (at your option) 12 any later version. 13 14 It is distributed in the hope that it will be useful, but WITHOUT 15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 17 License for more details. 18 19 You should have received a copy of the GNU General Public License along 20 with this program; if not, see <http://www.gnu.org/licenses/>. 21 22*/ 23 24#ifdef DEFINE_LABELS 25 26 /* The labels have the case they have because the enum of insn types 27 is all uppercase and in the non-stdc case the insn symbol is built 28 into the enum name. */ 29 30 static struct { 31 int index; 32 void *label; 33 } labels[] = { 34 { CRISV10F_INSN_X_INVALID, && case_sem_INSN_X_INVALID }, 35 { CRISV10F_INSN_X_AFTER, && case_sem_INSN_X_AFTER }, 36 { CRISV10F_INSN_X_BEFORE, && case_sem_INSN_X_BEFORE }, 37 { CRISV10F_INSN_X_CTI_CHAIN, && case_sem_INSN_X_CTI_CHAIN }, 38 { CRISV10F_INSN_X_CHAIN, && case_sem_INSN_X_CHAIN }, 39 { CRISV10F_INSN_X_BEGIN, && case_sem_INSN_X_BEGIN }, 40 { CRISV10F_INSN_NOP, && case_sem_INSN_NOP }, 41 { CRISV10F_INSN_MOVE_B_R, && case_sem_INSN_MOVE_B_R }, 42 { CRISV10F_INSN_MOVE_W_R, && case_sem_INSN_MOVE_W_R }, 43 { CRISV10F_INSN_MOVE_D_R, && case_sem_INSN_MOVE_D_R }, 44 { CRISV10F_INSN_MOVEPCR, && case_sem_INSN_MOVEPCR }, 45 { CRISV10F_INSN_MOVEQ, && case_sem_INSN_MOVEQ }, 46 { CRISV10F_INSN_MOVS_B_R, && case_sem_INSN_MOVS_B_R }, 47 { CRISV10F_INSN_MOVS_W_R, && case_sem_INSN_MOVS_W_R }, 48 { CRISV10F_INSN_MOVU_B_R, && case_sem_INSN_MOVU_B_R }, 49 { CRISV10F_INSN_MOVU_W_R, && case_sem_INSN_MOVU_W_R }, 50 { CRISV10F_INSN_MOVECBR, && case_sem_INSN_MOVECBR }, 51 { CRISV10F_INSN_MOVECWR, && case_sem_INSN_MOVECWR }, 52 { CRISV10F_INSN_MOVECDR, && case_sem_INSN_MOVECDR }, 53 { CRISV10F_INSN_MOVSCBR, && case_sem_INSN_MOVSCBR }, 54 { CRISV10F_INSN_MOVSCWR, && case_sem_INSN_MOVSCWR }, 55 { CRISV10F_INSN_MOVUCBR, && case_sem_INSN_MOVUCBR }, 56 { CRISV10F_INSN_MOVUCWR, && case_sem_INSN_MOVUCWR }, 57 { CRISV10F_INSN_ADDQ, && case_sem_INSN_ADDQ }, 58 { CRISV10F_INSN_SUBQ, && case_sem_INSN_SUBQ }, 59 { CRISV10F_INSN_CMP_R_B_R, && case_sem_INSN_CMP_R_B_R }, 60 { CRISV10F_INSN_CMP_R_W_R, && case_sem_INSN_CMP_R_W_R }, 61 { CRISV10F_INSN_CMP_R_D_R, && case_sem_INSN_CMP_R_D_R }, 62 { CRISV10F_INSN_CMP_M_B_M, && case_sem_INSN_CMP_M_B_M }, 63 { CRISV10F_INSN_CMP_M_W_M, && case_sem_INSN_CMP_M_W_M }, 64 { CRISV10F_INSN_CMP_M_D_M, && case_sem_INSN_CMP_M_D_M }, 65 { CRISV10F_INSN_CMPCBR, && case_sem_INSN_CMPCBR }, 66 { CRISV10F_INSN_CMPCWR, && case_sem_INSN_CMPCWR }, 67 { CRISV10F_INSN_CMPCDR, && case_sem_INSN_CMPCDR }, 68 { CRISV10F_INSN_CMPQ, && case_sem_INSN_CMPQ }, 69 { CRISV10F_INSN_CMPS_M_B_M, && case_sem_INSN_CMPS_M_B_M }, 70 { CRISV10F_INSN_CMPS_M_W_M, && case_sem_INSN_CMPS_M_W_M }, 71 { CRISV10F_INSN_CMPSCBR, && case_sem_INSN_CMPSCBR }, 72 { CRISV10F_INSN_CMPSCWR, && case_sem_INSN_CMPSCWR }, 73 { CRISV10F_INSN_CMPU_M_B_M, && case_sem_INSN_CMPU_M_B_M }, 74 { CRISV10F_INSN_CMPU_M_W_M, && case_sem_INSN_CMPU_M_W_M }, 75 { CRISV10F_INSN_CMPUCBR, && case_sem_INSN_CMPUCBR }, 76 { CRISV10F_INSN_CMPUCWR, && case_sem_INSN_CMPUCWR }, 77 { CRISV10F_INSN_MOVE_M_B_M, && case_sem_INSN_MOVE_M_B_M }, 78 { CRISV10F_INSN_MOVE_M_W_M, && case_sem_INSN_MOVE_M_W_M }, 79 { CRISV10F_INSN_MOVE_M_D_M, && case_sem_INSN_MOVE_M_D_M }, 80 { CRISV10F_INSN_MOVS_M_B_M, && case_sem_INSN_MOVS_M_B_M }, 81 { CRISV10F_INSN_MOVS_M_W_M, && case_sem_INSN_MOVS_M_W_M }, 82 { CRISV10F_INSN_MOVU_M_B_M, && case_sem_INSN_MOVU_M_B_M }, 83 { CRISV10F_INSN_MOVU_M_W_M, && case_sem_INSN_MOVU_M_W_M }, 84 { CRISV10F_INSN_MOVE_R_SPRV10, && case_sem_INSN_MOVE_R_SPRV10 }, 85 { CRISV10F_INSN_MOVE_SPR_RV10, && case_sem_INSN_MOVE_SPR_RV10 }, 86 { CRISV10F_INSN_RET_TYPE, && case_sem_INSN_RET_TYPE }, 87 { CRISV10F_INSN_MOVE_M_SPRV10, && case_sem_INSN_MOVE_M_SPRV10 }, 88 { CRISV10F_INSN_MOVE_C_SPRV10_P5, && case_sem_INSN_MOVE_C_SPRV10_P5 }, 89 { CRISV10F_INSN_MOVE_C_SPRV10_P9, && case_sem_INSN_MOVE_C_SPRV10_P9 }, 90 { CRISV10F_INSN_MOVE_C_SPRV10_P10, && case_sem_INSN_MOVE_C_SPRV10_P10 }, 91 { CRISV10F_INSN_MOVE_C_SPRV10_P11, && case_sem_INSN_MOVE_C_SPRV10_P11 }, 92 { CRISV10F_INSN_MOVE_C_SPRV10_P12, && case_sem_INSN_MOVE_C_SPRV10_P12 }, 93 { CRISV10F_INSN_MOVE_C_SPRV10_P13, && case_sem_INSN_MOVE_C_SPRV10_P13 }, 94 { CRISV10F_INSN_MOVE_C_SPRV10_P7, && case_sem_INSN_MOVE_C_SPRV10_P7 }, 95 { CRISV10F_INSN_MOVE_C_SPRV10_P14, && case_sem_INSN_MOVE_C_SPRV10_P14 }, 96 { CRISV10F_INSN_MOVE_C_SPRV10_P15, && case_sem_INSN_MOVE_C_SPRV10_P15 }, 97 { CRISV10F_INSN_MOVE_SPR_MV10, && case_sem_INSN_MOVE_SPR_MV10 }, 98 { CRISV10F_INSN_SBFS, && case_sem_INSN_SBFS }, 99 { CRISV10F_INSN_MOVEM_R_M, && case_sem_INSN_MOVEM_R_M }, 100 { CRISV10F_INSN_MOVEM_M_R, && case_sem_INSN_MOVEM_M_R }, 101 { CRISV10F_INSN_MOVEM_M_PC, && case_sem_INSN_MOVEM_M_PC }, 102 { CRISV10F_INSN_ADD_B_R, && case_sem_INSN_ADD_B_R }, 103 { CRISV10F_INSN_ADD_W_R, && case_sem_INSN_ADD_W_R }, 104 { CRISV10F_INSN_ADD_D_R, && case_sem_INSN_ADD_D_R }, 105 { CRISV10F_INSN_ADD_M_B_M, && case_sem_INSN_ADD_M_B_M }, 106 { CRISV10F_INSN_ADD_M_W_M, && case_sem_INSN_ADD_M_W_M }, 107 { CRISV10F_INSN_ADD_M_D_M, && case_sem_INSN_ADD_M_D_M }, 108 { CRISV10F_INSN_ADDCBR, && case_sem_INSN_ADDCBR }, 109 { CRISV10F_INSN_ADDCWR, && case_sem_INSN_ADDCWR }, 110 { CRISV10F_INSN_ADDCDR, && case_sem_INSN_ADDCDR }, 111 { CRISV10F_INSN_ADDCPC, && case_sem_INSN_ADDCPC }, 112 { CRISV10F_INSN_ADDS_B_R, && case_sem_INSN_ADDS_B_R }, 113 { CRISV10F_INSN_ADDS_W_R, && case_sem_INSN_ADDS_W_R }, 114 { CRISV10F_INSN_ADDS_M_B_M, && case_sem_INSN_ADDS_M_B_M }, 115 { CRISV10F_INSN_ADDS_M_W_M, && case_sem_INSN_ADDS_M_W_M }, 116 { CRISV10F_INSN_ADDSCBR, && case_sem_INSN_ADDSCBR }, 117 { CRISV10F_INSN_ADDSCWR, && case_sem_INSN_ADDSCWR }, 118 { CRISV10F_INSN_ADDSPCPC, && case_sem_INSN_ADDSPCPC }, 119 { CRISV10F_INSN_ADDU_B_R, && case_sem_INSN_ADDU_B_R }, 120 { CRISV10F_INSN_ADDU_W_R, && case_sem_INSN_ADDU_W_R }, 121 { CRISV10F_INSN_ADDU_M_B_M, && case_sem_INSN_ADDU_M_B_M }, 122 { CRISV10F_INSN_ADDU_M_W_M, && case_sem_INSN_ADDU_M_W_M }, 123 { CRISV10F_INSN_ADDUCBR, && case_sem_INSN_ADDUCBR }, 124 { CRISV10F_INSN_ADDUCWR, && case_sem_INSN_ADDUCWR }, 125 { CRISV10F_INSN_SUB_B_R, && case_sem_INSN_SUB_B_R }, 126 { CRISV10F_INSN_SUB_W_R, && case_sem_INSN_SUB_W_R }, 127 { CRISV10F_INSN_SUB_D_R, && case_sem_INSN_SUB_D_R }, 128 { CRISV10F_INSN_SUB_M_B_M, && case_sem_INSN_SUB_M_B_M }, 129 { CRISV10F_INSN_SUB_M_W_M, && case_sem_INSN_SUB_M_W_M }, 130 { CRISV10F_INSN_SUB_M_D_M, && case_sem_INSN_SUB_M_D_M }, 131 { CRISV10F_INSN_SUBCBR, && case_sem_INSN_SUBCBR }, 132 { CRISV10F_INSN_SUBCWR, && case_sem_INSN_SUBCWR }, 133 { CRISV10F_INSN_SUBCDR, && case_sem_INSN_SUBCDR }, 134 { CRISV10F_INSN_SUBS_B_R, && case_sem_INSN_SUBS_B_R }, 135 { CRISV10F_INSN_SUBS_W_R, && case_sem_INSN_SUBS_W_R }, 136 { CRISV10F_INSN_SUBS_M_B_M, && case_sem_INSN_SUBS_M_B_M }, 137 { CRISV10F_INSN_SUBS_M_W_M, && case_sem_INSN_SUBS_M_W_M }, 138 { CRISV10F_INSN_SUBSCBR, && case_sem_INSN_SUBSCBR }, 139 { CRISV10F_INSN_SUBSCWR, && case_sem_INSN_SUBSCWR }, 140 { CRISV10F_INSN_SUBU_B_R, && case_sem_INSN_SUBU_B_R }, 141 { CRISV10F_INSN_SUBU_W_R, && case_sem_INSN_SUBU_W_R }, 142 { CRISV10F_INSN_SUBU_M_B_M, && case_sem_INSN_SUBU_M_B_M }, 143 { CRISV10F_INSN_SUBU_M_W_M, && case_sem_INSN_SUBU_M_W_M }, 144 { CRISV10F_INSN_SUBUCBR, && case_sem_INSN_SUBUCBR }, 145 { CRISV10F_INSN_SUBUCWR, && case_sem_INSN_SUBUCWR }, 146 { CRISV10F_INSN_ADDI_B_R, && case_sem_INSN_ADDI_B_R }, 147 { CRISV10F_INSN_ADDI_W_R, && case_sem_INSN_ADDI_W_R }, 148 { CRISV10F_INSN_ADDI_D_R, && case_sem_INSN_ADDI_D_R }, 149 { CRISV10F_INSN_NEG_B_R, && case_sem_INSN_NEG_B_R }, 150 { CRISV10F_INSN_NEG_W_R, && case_sem_INSN_NEG_W_R }, 151 { CRISV10F_INSN_NEG_D_R, && case_sem_INSN_NEG_D_R }, 152 { CRISV10F_INSN_TEST_M_B_M, && case_sem_INSN_TEST_M_B_M }, 153 { CRISV10F_INSN_TEST_M_W_M, && case_sem_INSN_TEST_M_W_M }, 154 { CRISV10F_INSN_TEST_M_D_M, && case_sem_INSN_TEST_M_D_M }, 155 { CRISV10F_INSN_MOVE_R_M_B_M, && case_sem_INSN_MOVE_R_M_B_M }, 156 { CRISV10F_INSN_MOVE_R_M_W_M, && case_sem_INSN_MOVE_R_M_W_M }, 157 { CRISV10F_INSN_MOVE_R_M_D_M, && case_sem_INSN_MOVE_R_M_D_M }, 158 { CRISV10F_INSN_MULS_B, && case_sem_INSN_MULS_B }, 159 { CRISV10F_INSN_MULS_W, && case_sem_INSN_MULS_W }, 160 { CRISV10F_INSN_MULS_D, && case_sem_INSN_MULS_D }, 161 { CRISV10F_INSN_MULU_B, && case_sem_INSN_MULU_B }, 162 { CRISV10F_INSN_MULU_W, && case_sem_INSN_MULU_W }, 163 { CRISV10F_INSN_MULU_D, && case_sem_INSN_MULU_D }, 164 { CRISV10F_INSN_MSTEP, && case_sem_INSN_MSTEP }, 165 { CRISV10F_INSN_DSTEP, && case_sem_INSN_DSTEP }, 166 { CRISV10F_INSN_ABS, && case_sem_INSN_ABS }, 167 { CRISV10F_INSN_AND_B_R, && case_sem_INSN_AND_B_R }, 168 { CRISV10F_INSN_AND_W_R, && case_sem_INSN_AND_W_R }, 169 { CRISV10F_INSN_AND_D_R, && case_sem_INSN_AND_D_R }, 170 { CRISV10F_INSN_AND_M_B_M, && case_sem_INSN_AND_M_B_M }, 171 { CRISV10F_INSN_AND_M_W_M, && case_sem_INSN_AND_M_W_M }, 172 { CRISV10F_INSN_AND_M_D_M, && case_sem_INSN_AND_M_D_M }, 173 { CRISV10F_INSN_ANDCBR, && case_sem_INSN_ANDCBR }, 174 { CRISV10F_INSN_ANDCWR, && case_sem_INSN_ANDCWR }, 175 { CRISV10F_INSN_ANDCDR, && case_sem_INSN_ANDCDR }, 176 { CRISV10F_INSN_ANDQ, && case_sem_INSN_ANDQ }, 177 { CRISV10F_INSN_ORR_B_R, && case_sem_INSN_ORR_B_R }, 178 { CRISV10F_INSN_ORR_W_R, && case_sem_INSN_ORR_W_R }, 179 { CRISV10F_INSN_ORR_D_R, && case_sem_INSN_ORR_D_R }, 180 { CRISV10F_INSN_OR_M_B_M, && case_sem_INSN_OR_M_B_M }, 181 { CRISV10F_INSN_OR_M_W_M, && case_sem_INSN_OR_M_W_M }, 182 { CRISV10F_INSN_OR_M_D_M, && case_sem_INSN_OR_M_D_M }, 183 { CRISV10F_INSN_ORCBR, && case_sem_INSN_ORCBR }, 184 { CRISV10F_INSN_ORCWR, && case_sem_INSN_ORCWR }, 185 { CRISV10F_INSN_ORCDR, && case_sem_INSN_ORCDR }, 186 { CRISV10F_INSN_ORQ, && case_sem_INSN_ORQ }, 187 { CRISV10F_INSN_XOR, && case_sem_INSN_XOR }, 188 { CRISV10F_INSN_SWAP, && case_sem_INSN_SWAP }, 189 { CRISV10F_INSN_ASRR_B_R, && case_sem_INSN_ASRR_B_R }, 190 { CRISV10F_INSN_ASRR_W_R, && case_sem_INSN_ASRR_W_R }, 191 { CRISV10F_INSN_ASRR_D_R, && case_sem_INSN_ASRR_D_R }, 192 { CRISV10F_INSN_ASRQ, && case_sem_INSN_ASRQ }, 193 { CRISV10F_INSN_LSRR_B_R, && case_sem_INSN_LSRR_B_R }, 194 { CRISV10F_INSN_LSRR_W_R, && case_sem_INSN_LSRR_W_R }, 195 { CRISV10F_INSN_LSRR_D_R, && case_sem_INSN_LSRR_D_R }, 196 { CRISV10F_INSN_LSRQ, && case_sem_INSN_LSRQ }, 197 { CRISV10F_INSN_LSLR_B_R, && case_sem_INSN_LSLR_B_R }, 198 { CRISV10F_INSN_LSLR_W_R, && case_sem_INSN_LSLR_W_R }, 199 { CRISV10F_INSN_LSLR_D_R, && case_sem_INSN_LSLR_D_R }, 200 { CRISV10F_INSN_LSLQ, && case_sem_INSN_LSLQ }, 201 { CRISV10F_INSN_BTST, && case_sem_INSN_BTST }, 202 { CRISV10F_INSN_BTSTQ, && case_sem_INSN_BTSTQ }, 203 { CRISV10F_INSN_SETF, && case_sem_INSN_SETF }, 204 { CRISV10F_INSN_CLEARF, && case_sem_INSN_CLEARF }, 205 { CRISV10F_INSN_BCC_B, && case_sem_INSN_BCC_B }, 206 { CRISV10F_INSN_BA_B, && case_sem_INSN_BA_B }, 207 { CRISV10F_INSN_BCC_W, && case_sem_INSN_BCC_W }, 208 { CRISV10F_INSN_BA_W, && case_sem_INSN_BA_W }, 209 { CRISV10F_INSN_JUMP_R, && case_sem_INSN_JUMP_R }, 210 { CRISV10F_INSN_JUMP_M, && case_sem_INSN_JUMP_M }, 211 { CRISV10F_INSN_JUMP_C, && case_sem_INSN_JUMP_C }, 212 { CRISV10F_INSN_BREAK, && case_sem_INSN_BREAK }, 213 { CRISV10F_INSN_BOUND_R_B_R, && case_sem_INSN_BOUND_R_B_R }, 214 { CRISV10F_INSN_BOUND_R_W_R, && case_sem_INSN_BOUND_R_W_R }, 215 { CRISV10F_INSN_BOUND_R_D_R, && case_sem_INSN_BOUND_R_D_R }, 216 { CRISV10F_INSN_BOUND_M_B_M, && case_sem_INSN_BOUND_M_B_M }, 217 { CRISV10F_INSN_BOUND_M_W_M, && case_sem_INSN_BOUND_M_W_M }, 218 { CRISV10F_INSN_BOUND_M_D_M, && case_sem_INSN_BOUND_M_D_M }, 219 { CRISV10F_INSN_BOUND_CB, && case_sem_INSN_BOUND_CB }, 220 { CRISV10F_INSN_BOUND_CW, && case_sem_INSN_BOUND_CW }, 221 { CRISV10F_INSN_BOUND_CD, && case_sem_INSN_BOUND_CD }, 222 { CRISV10F_INSN_SCC, && case_sem_INSN_SCC }, 223 { CRISV10F_INSN_LZ, && case_sem_INSN_LZ }, 224 { CRISV10F_INSN_ADDOQ, && case_sem_INSN_ADDOQ }, 225 { CRISV10F_INSN_BDAPQPC, && case_sem_INSN_BDAPQPC }, 226 { CRISV10F_INSN_BDAP_32_PC, && case_sem_INSN_BDAP_32_PC }, 227 { CRISV10F_INSN_MOVE_M_PCPLUS_P0, && case_sem_INSN_MOVE_M_PCPLUS_P0 }, 228 { CRISV10F_INSN_MOVE_M_SPPLUS_P8, && case_sem_INSN_MOVE_M_SPPLUS_P8 }, 229 { CRISV10F_INSN_ADDO_M_B_M, && case_sem_INSN_ADDO_M_B_M }, 230 { CRISV10F_INSN_ADDO_M_W_M, && case_sem_INSN_ADDO_M_W_M }, 231 { CRISV10F_INSN_ADDO_M_D_M, && case_sem_INSN_ADDO_M_D_M }, 232 { CRISV10F_INSN_ADDO_CB, && case_sem_INSN_ADDO_CB }, 233 { CRISV10F_INSN_ADDO_CW, && case_sem_INSN_ADDO_CW }, 234 { CRISV10F_INSN_ADDO_CD, && case_sem_INSN_ADDO_CD }, 235 { CRISV10F_INSN_DIP_M, && case_sem_INSN_DIP_M }, 236 { CRISV10F_INSN_DIP_C, && case_sem_INSN_DIP_C }, 237 { CRISV10F_INSN_ADDI_ACR_B_R, && case_sem_INSN_ADDI_ACR_B_R }, 238 { CRISV10F_INSN_ADDI_ACR_W_R, && case_sem_INSN_ADDI_ACR_W_R }, 239 { CRISV10F_INSN_ADDI_ACR_D_R, && case_sem_INSN_ADDI_ACR_D_R }, 240 { CRISV10F_INSN_BIAP_PC_B_R, && case_sem_INSN_BIAP_PC_B_R }, 241 { CRISV10F_INSN_BIAP_PC_W_R, && case_sem_INSN_BIAP_PC_W_R }, 242 { CRISV10F_INSN_BIAP_PC_D_R, && case_sem_INSN_BIAP_PC_D_R }, 243 { 0, 0 } 244 }; 245 int i; 246 247 for (i = 0; labels[i].label != 0; ++i) 248 { 249#if FAST_P 250 CPU_IDESC (current_cpu) [labels[i].index].sem_fast_lab = labels[i].label; 251#else 252 CPU_IDESC (current_cpu) [labels[i].index].sem_full_lab = labels[i].label; 253#endif 254 } 255 256#undef DEFINE_LABELS 257#endif /* DEFINE_LABELS */ 258 259#ifdef DEFINE_SWITCH 260 261/* If hyper-fast [well not unnecessarily slow] execution is selected, turn 262 off frills like tracing and profiling. */ 263/* FIXME: A better way would be to have CGEN_TRACE_RESULT check for something 264 that can cause it to be optimized out. Another way would be to emit 265 special handlers into the instruction "stream". */ 266 267#if FAST_P 268#undef CGEN_TRACE_RESULT 269#define CGEN_TRACE_RESULT(cpu, abuf, name, type, val) 270#endif 271 272#undef GET_ATTR 273#define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr) 274 275{ 276 277#if WITH_SCACHE_PBB 278 279/* Branch to next handler without going around main loop. */ 280#define NEXT(vpc) goto * SEM_ARGBUF (vpc) -> semantic.sem_case 281SWITCH (sem, SEM_ARGBUF (vpc) -> semantic.sem_case) 282 283#else /* ! WITH_SCACHE_PBB */ 284 285#define NEXT(vpc) BREAK (sem) 286#ifdef __GNUC__ 287#if FAST_P 288 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_fast_lab) 289#else 290 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_full_lab) 291#endif 292#else 293 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->num) 294#endif 295 296#endif /* ! WITH_SCACHE_PBB */ 297 298 { 299 300 CASE (sem, INSN_X_INVALID) : /* --invalid-- */ 301{ 302 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 303 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 304#define FLD(f) abuf->fields.sfmt_empty.f 305 int UNUSED written = 0; 306 IADDR UNUSED pc = abuf->addr; 307 vpc = SEM_NEXT_VPC (sem_arg, pc, 0); 308 309 { 310 /* Update the recorded pc in the cpu state struct. 311 Only necessary for WITH_SCACHE case, but to avoid the 312 conditional compilation .... */ 313 SET_H_PC (pc); 314 /* Virtual insns have zero size. Overwrite vpc with address of next insn 315 using the default-insn-bitsize spec. When executing insns in parallel 316 we may want to queue the fault and continue execution. */ 317 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 318 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc); 319 } 320 321#undef FLD 322} 323 NEXT (vpc); 324 325 CASE (sem, INSN_X_AFTER) : /* --after-- */ 326{ 327 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 328 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 329#define FLD(f) abuf->fields.sfmt_empty.f 330 int UNUSED written = 0; 331 IADDR UNUSED pc = abuf->addr; 332 vpc = SEM_NEXT_VPC (sem_arg, pc, 0); 333 334 { 335#if WITH_SCACHE_PBB_CRISV10F 336 crisv10f_pbb_after (current_cpu, sem_arg); 337#endif 338 } 339 340#undef FLD 341} 342 NEXT (vpc); 343 344 CASE (sem, INSN_X_BEFORE) : /* --before-- */ 345{ 346 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 347 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 348#define FLD(f) abuf->fields.sfmt_empty.f 349 int UNUSED written = 0; 350 IADDR UNUSED pc = abuf->addr; 351 vpc = SEM_NEXT_VPC (sem_arg, pc, 0); 352 353 { 354#if WITH_SCACHE_PBB_CRISV10F 355 crisv10f_pbb_before (current_cpu, sem_arg); 356#endif 357 } 358 359#undef FLD 360} 361 NEXT (vpc); 362 363 CASE (sem, INSN_X_CTI_CHAIN) : /* --cti-chain-- */ 364{ 365 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 366 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 367#define FLD(f) abuf->fields.sfmt_empty.f 368 int UNUSED written = 0; 369 IADDR UNUSED pc = abuf->addr; 370 vpc = SEM_NEXT_VPC (sem_arg, pc, 0); 371 372 { 373#if WITH_SCACHE_PBB_CRISV10F 374#ifdef DEFINE_SWITCH 375 vpc = crisv10f_pbb_cti_chain (current_cpu, sem_arg, 376 pbb_br_type, pbb_br_npc); 377 BREAK (sem); 378#else 379 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */ 380 vpc = crisv10f_pbb_cti_chain (current_cpu, sem_arg, 381 CPU_PBB_BR_TYPE (current_cpu), 382 CPU_PBB_BR_NPC (current_cpu)); 383#endif 384#endif 385 } 386 387#undef FLD 388} 389 NEXT (vpc); 390 391 CASE (sem, INSN_X_CHAIN) : /* --chain-- */ 392{ 393 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 394 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 395#define FLD(f) abuf->fields.sfmt_empty.f 396 int UNUSED written = 0; 397 IADDR UNUSED pc = abuf->addr; 398 vpc = SEM_NEXT_VPC (sem_arg, pc, 0); 399 400 { 401#if WITH_SCACHE_PBB_CRISV10F 402 vpc = crisv10f_pbb_chain (current_cpu, sem_arg); 403#ifdef DEFINE_SWITCH 404 BREAK (sem); 405#endif 406#endif 407 } 408 409#undef FLD 410} 411 NEXT (vpc); 412 413 CASE (sem, INSN_X_BEGIN) : /* --begin-- */ 414{ 415 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 416 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 417#define FLD(f) abuf->fields.sfmt_empty.f 418 int UNUSED written = 0; 419 IADDR UNUSED pc = abuf->addr; 420 vpc = SEM_NEXT_VPC (sem_arg, pc, 0); 421 422 { 423#if WITH_SCACHE_PBB_CRISV10F 424#if defined DEFINE_SWITCH || defined FAST_P 425 /* In the switch case FAST_P is a constant, allowing several optimizations 426 in any called inline functions. */ 427 vpc = crisv10f_pbb_begin (current_cpu, FAST_P); 428#else 429#if 0 /* cgen engine can't handle dynamic fast/full switching yet. */ 430 vpc = crisv10f_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu))); 431#else 432 vpc = crisv10f_pbb_begin (current_cpu, 0); 433#endif 434#endif 435#endif 436 } 437 438#undef FLD 439} 440 NEXT (vpc); 441 442 CASE (sem, INSN_NOP) : /* nop */ 443{ 444 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 445 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 446#define FLD(f) abuf->fields.sfmt_empty.f 447 int UNUSED written = 0; 448 IADDR UNUSED pc = abuf->addr; 449 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 450 451{ 452 { 453 BI opval = 0; 454 CPU (h_xbit) = opval; 455 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 456 } 457 { 458 BI opval = 0; 459 SET_H_INSN_PREFIXED_P (opval); 460 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 461 } 462} 463 464#undef FLD 465} 466 NEXT (vpc); 467 468 CASE (sem, INSN_MOVE_B_R) : /* move.b move.m ${Rs},${Rd} */ 469{ 470 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 471 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 472#define FLD(f) abuf->fields.sfmt_add_b_r.f 473 int UNUSED written = 0; 474 IADDR UNUSED pc = abuf->addr; 475 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 476 477{ 478 QI tmp_newval; 479 tmp_newval = GET_H_GR (FLD (f_operand1)); 480{ 481 SI tmp_oldregval; 482 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 483 { 484 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00)); 485 SET_H_GR (FLD (f_operand2), opval); 486 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 487 } 488} 489{ 490 { 491 BI opval = LTQI (tmp_newval, 0); 492 CPU (h_nbit) = opval; 493 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 494 } 495 { 496 BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 497 CPU (h_zbit) = opval; 498 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 499 } 500SET_H_CBIT_MOVE (0); 501SET_H_VBIT_MOVE (0); 502{ 503 { 504 BI opval = 0; 505 CPU (h_xbit) = opval; 506 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 507 } 508 { 509 BI opval = 0; 510 SET_H_INSN_PREFIXED_P (opval); 511 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 512 } 513} 514} 515} 516 517#undef FLD 518} 519 NEXT (vpc); 520 521 CASE (sem, INSN_MOVE_W_R) : /* move.w move.m ${Rs},${Rd} */ 522{ 523 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 524 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 525#define FLD(f) abuf->fields.sfmt_add_b_r.f 526 int UNUSED written = 0; 527 IADDR UNUSED pc = abuf->addr; 528 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 529 530{ 531 HI tmp_newval; 532 tmp_newval = GET_H_GR (FLD (f_operand1)); 533{ 534 SI tmp_oldregval; 535 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 536 { 537 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 538 SET_H_GR (FLD (f_operand2), opval); 539 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 540 } 541} 542{ 543 { 544 BI opval = LTHI (tmp_newval, 0); 545 CPU (h_nbit) = opval; 546 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 547 } 548 { 549 BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 550 CPU (h_zbit) = opval; 551 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 552 } 553SET_H_CBIT_MOVE (0); 554SET_H_VBIT_MOVE (0); 555{ 556 { 557 BI opval = 0; 558 CPU (h_xbit) = opval; 559 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 560 } 561 { 562 BI opval = 0; 563 SET_H_INSN_PREFIXED_P (opval); 564 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 565 } 566} 567} 568} 569 570#undef FLD 571} 572 NEXT (vpc); 573 574 CASE (sem, INSN_MOVE_D_R) : /* move.d move.m ${Rs},${Rd} */ 575{ 576 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 577 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 578#define FLD(f) abuf->fields.sfmt_add_b_r.f 579 int UNUSED written = 0; 580 IADDR UNUSED pc = abuf->addr; 581 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 582 583{ 584 SI tmp_newval; 585 tmp_newval = GET_H_GR (FLD (f_operand1)); 586 { 587 SI opval = tmp_newval; 588 SET_H_GR (FLD (f_operand2), opval); 589 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 590 } 591{ 592 { 593 BI opval = LTSI (tmp_newval, 0); 594 CPU (h_nbit) = opval; 595 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 596 } 597 { 598 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 599 CPU (h_zbit) = opval; 600 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 601 } 602SET_H_CBIT_MOVE (0); 603SET_H_VBIT_MOVE (0); 604{ 605 { 606 BI opval = 0; 607 CPU (h_xbit) = opval; 608 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 609 } 610 { 611 BI opval = 0; 612 SET_H_INSN_PREFIXED_P (opval); 613 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 614 } 615} 616} 617} 618 619#undef FLD 620} 621 NEXT (vpc); 622 623 CASE (sem, INSN_MOVEPCR) : /* move.d PC,${Rd} */ 624{ 625 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 626 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 627#define FLD(f) abuf->fields.sfmt_moveq.f 628 int UNUSED written = 0; 629 IADDR UNUSED pc = abuf->addr; 630 SEM_BRANCH_INIT 631 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 632 633{ 634 SI tmp_pcval; 635 tmp_pcval = ADDSI (pc, 2); 636 { 637 SI opval = tmp_pcval; 638 SET_H_GR (FLD (f_operand2), opval); 639 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 640 } 641{ 642 { 643 BI opval = LTSI (tmp_pcval, 0); 644 CPU (h_nbit) = opval; 645 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 646 } 647 { 648 BI opval = ANDIF (EQSI (tmp_pcval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 649 CPU (h_zbit) = opval; 650 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 651 } 652SET_H_CBIT_MOVE (0); 653SET_H_VBIT_MOVE (0); 654{ 655 { 656 BI opval = 0; 657 CPU (h_xbit) = opval; 658 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 659 } 660 { 661 BI opval = 0; 662 SET_H_INSN_PREFIXED_P (opval); 663 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 664 } 665} 666} 667} 668 669 SEM_BRANCH_FINI (vpc); 670#undef FLD 671} 672 NEXT (vpc); 673 674 CASE (sem, INSN_MOVEQ) : /* moveq $i,$Rd */ 675{ 676 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 677 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 678#define FLD(f) abuf->fields.sfmt_moveq.f 679 int UNUSED written = 0; 680 IADDR UNUSED pc = abuf->addr; 681 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 682 683{ 684 SI tmp_newval; 685 tmp_newval = FLD (f_s6); 686 { 687 SI opval = tmp_newval; 688 SET_H_GR (FLD (f_operand2), opval); 689 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 690 } 691{ 692SET_H_NBIT_MOVE (LTSI (tmp_newval, 0)); 693SET_H_ZBIT_MOVE (ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)))); 694SET_H_CBIT_MOVE (0); 695SET_H_VBIT_MOVE (0); 696{ 697 { 698 BI opval = 0; 699 CPU (h_xbit) = opval; 700 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 701 } 702 { 703 BI opval = 0; 704 SET_H_INSN_PREFIXED_P (opval); 705 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 706 } 707} 708} 709} 710 711#undef FLD 712} 713 NEXT (vpc); 714 715 CASE (sem, INSN_MOVS_B_R) : /* movs.b movs.m ${Rs},${Rd} */ 716{ 717 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 718 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 719#define FLD(f) abuf->fields.sfmt_muls_b.f 720 int UNUSED written = 0; 721 IADDR UNUSED pc = abuf->addr; 722 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 723 724{ 725 QI tmp_tmpops; 726 SI tmp_newval; 727 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 728 tmp_newval = EXTQISI (tmp_tmpops); 729 { 730 SI opval = tmp_newval; 731 SET_H_GR (FLD (f_operand2), opval); 732 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 733 } 734{ 735 { 736 BI opval = LTSI (tmp_newval, 0); 737 CPU (h_nbit) = opval; 738 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 739 } 740 { 741 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 742 CPU (h_zbit) = opval; 743 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 744 } 745SET_H_CBIT_MOVE (0); 746SET_H_VBIT_MOVE (0); 747{ 748 { 749 BI opval = 0; 750 CPU (h_xbit) = opval; 751 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 752 } 753 { 754 BI opval = 0; 755 SET_H_INSN_PREFIXED_P (opval); 756 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 757 } 758} 759} 760} 761 762#undef FLD 763} 764 NEXT (vpc); 765 766 CASE (sem, INSN_MOVS_W_R) : /* movs.w movs.m ${Rs},${Rd} */ 767{ 768 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 769 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 770#define FLD(f) abuf->fields.sfmt_muls_b.f 771 int UNUSED written = 0; 772 IADDR UNUSED pc = abuf->addr; 773 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 774 775{ 776 HI tmp_tmpops; 777 SI tmp_newval; 778 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 779 tmp_newval = EXTHISI (tmp_tmpops); 780 { 781 SI opval = tmp_newval; 782 SET_H_GR (FLD (f_operand2), opval); 783 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 784 } 785{ 786 { 787 BI opval = LTSI (tmp_newval, 0); 788 CPU (h_nbit) = opval; 789 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 790 } 791 { 792 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 793 CPU (h_zbit) = opval; 794 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 795 } 796SET_H_CBIT_MOVE (0); 797SET_H_VBIT_MOVE (0); 798{ 799 { 800 BI opval = 0; 801 CPU (h_xbit) = opval; 802 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 803 } 804 { 805 BI opval = 0; 806 SET_H_INSN_PREFIXED_P (opval); 807 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 808 } 809} 810} 811} 812 813#undef FLD 814} 815 NEXT (vpc); 816 817 CASE (sem, INSN_MOVU_B_R) : /* movu.b movu.m ${Rs},${Rd} */ 818{ 819 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 820 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 821#define FLD(f) abuf->fields.sfmt_muls_b.f 822 int UNUSED written = 0; 823 IADDR UNUSED pc = abuf->addr; 824 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 825 826{ 827 QI tmp_tmpops; 828 SI tmp_newval; 829 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 830 tmp_newval = ZEXTQISI (tmp_tmpops); 831 { 832 SI opval = tmp_newval; 833 SET_H_GR (FLD (f_operand2), opval); 834 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 835 } 836{ 837 { 838 BI opval = LTSI (tmp_newval, 0); 839 CPU (h_nbit) = opval; 840 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 841 } 842 { 843 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 844 CPU (h_zbit) = opval; 845 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 846 } 847SET_H_CBIT_MOVE (0); 848SET_H_VBIT_MOVE (0); 849{ 850 { 851 BI opval = 0; 852 CPU (h_xbit) = opval; 853 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 854 } 855 { 856 BI opval = 0; 857 SET_H_INSN_PREFIXED_P (opval); 858 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 859 } 860} 861} 862} 863 864#undef FLD 865} 866 NEXT (vpc); 867 868 CASE (sem, INSN_MOVU_W_R) : /* movu.w movu.m ${Rs},${Rd} */ 869{ 870 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 871 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 872#define FLD(f) abuf->fields.sfmt_muls_b.f 873 int UNUSED written = 0; 874 IADDR UNUSED pc = abuf->addr; 875 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 876 877{ 878 HI tmp_tmpops; 879 SI tmp_newval; 880 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 881 tmp_newval = ZEXTHISI (tmp_tmpops); 882 { 883 SI opval = tmp_newval; 884 SET_H_GR (FLD (f_operand2), opval); 885 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 886 } 887{ 888 { 889 BI opval = LTSI (tmp_newval, 0); 890 CPU (h_nbit) = opval; 891 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 892 } 893 { 894 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 895 CPU (h_zbit) = opval; 896 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 897 } 898SET_H_CBIT_MOVE (0); 899SET_H_VBIT_MOVE (0); 900{ 901 { 902 BI opval = 0; 903 CPU (h_xbit) = opval; 904 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 905 } 906 { 907 BI opval = 0; 908 SET_H_INSN_PREFIXED_P (opval); 909 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 910 } 911} 912} 913} 914 915#undef FLD 916} 917 NEXT (vpc); 918 919 CASE (sem, INSN_MOVECBR) : /* move.b ${sconst8},${Rd} */ 920{ 921 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 922 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 923#define FLD(f) abuf->fields.sfmt_addcbr.f 924 int UNUSED written = 0; 925 IADDR UNUSED pc = abuf->addr; 926 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 927 928{ 929 QI tmp_newval; 930 tmp_newval = FLD (f_indir_pc__byte); 931{ 932 SI tmp_oldregval; 933 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 934 { 935 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00)); 936 SET_H_GR (FLD (f_operand2), opval); 937 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 938 } 939} 940{ 941 { 942 BI opval = LTQI (tmp_newval, 0); 943 CPU (h_nbit) = opval; 944 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 945 } 946 { 947 BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 948 CPU (h_zbit) = opval; 949 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 950 } 951SET_H_CBIT_MOVE (0); 952SET_H_VBIT_MOVE (0); 953{ 954 { 955 BI opval = 0; 956 CPU (h_xbit) = opval; 957 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 958 } 959 { 960 BI opval = 0; 961 SET_H_INSN_PREFIXED_P (opval); 962 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 963 } 964} 965} 966} 967 968#undef FLD 969} 970 NEXT (vpc); 971 972 CASE (sem, INSN_MOVECWR) : /* move.w ${sconst16},${Rd} */ 973{ 974 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 975 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 976#define FLD(f) abuf->fields.sfmt_addcwr.f 977 int UNUSED written = 0; 978 IADDR UNUSED pc = abuf->addr; 979 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 980 981{ 982 HI tmp_newval; 983 tmp_newval = FLD (f_indir_pc__word); 984{ 985 SI tmp_oldregval; 986 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 987 { 988 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 989 SET_H_GR (FLD (f_operand2), opval); 990 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 991 } 992} 993{ 994 { 995 BI opval = LTHI (tmp_newval, 0); 996 CPU (h_nbit) = opval; 997 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 998 } 999 { 1000 BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 1001 CPU (h_zbit) = opval; 1002 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1003 } 1004SET_H_CBIT_MOVE (0); 1005SET_H_VBIT_MOVE (0); 1006{ 1007 { 1008 BI opval = 0; 1009 CPU (h_xbit) = opval; 1010 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1011 } 1012 { 1013 BI opval = 0; 1014 SET_H_INSN_PREFIXED_P (opval); 1015 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1016 } 1017} 1018} 1019} 1020 1021#undef FLD 1022} 1023 NEXT (vpc); 1024 1025 CASE (sem, INSN_MOVECDR) : /* move.d ${const32},${Rd} */ 1026{ 1027 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1028 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1029#define FLD(f) abuf->fields.sfmt_bound_cd.f 1030 int UNUSED written = 0; 1031 IADDR UNUSED pc = abuf->addr; 1032 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 1033 1034{ 1035 SI tmp_newval; 1036 tmp_newval = FLD (f_indir_pc__dword); 1037 { 1038 SI opval = tmp_newval; 1039 SET_H_GR (FLD (f_operand2), opval); 1040 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 1041 } 1042{ 1043 { 1044 BI opval = LTSI (tmp_newval, 0); 1045 CPU (h_nbit) = opval; 1046 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1047 } 1048 { 1049 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 1050 CPU (h_zbit) = opval; 1051 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1052 } 1053SET_H_CBIT_MOVE (0); 1054SET_H_VBIT_MOVE (0); 1055{ 1056 { 1057 BI opval = 0; 1058 CPU (h_xbit) = opval; 1059 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1060 } 1061 { 1062 BI opval = 0; 1063 SET_H_INSN_PREFIXED_P (opval); 1064 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1065 } 1066} 1067} 1068} 1069 1070#undef FLD 1071} 1072 NEXT (vpc); 1073 1074 CASE (sem, INSN_MOVSCBR) : /* movs.b ${sconst8},${Rd} */ 1075{ 1076 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1077 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1078#define FLD(f) abuf->fields.sfmt_bound_cb.f 1079 int UNUSED written = 0; 1080 IADDR UNUSED pc = abuf->addr; 1081 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 1082 1083{ 1084 SI tmp_newval; 1085 tmp_newval = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))); 1086 { 1087 SI opval = tmp_newval; 1088 SET_H_GR (FLD (f_operand2), opval); 1089 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 1090 } 1091{ 1092 { 1093 BI opval = LTSI (tmp_newval, 0); 1094 CPU (h_nbit) = opval; 1095 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1096 } 1097 { 1098 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 1099 CPU (h_zbit) = opval; 1100 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1101 } 1102SET_H_CBIT_MOVE (0); 1103SET_H_VBIT_MOVE (0); 1104{ 1105 { 1106 BI opval = 0; 1107 CPU (h_xbit) = opval; 1108 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1109 } 1110 { 1111 BI opval = 0; 1112 SET_H_INSN_PREFIXED_P (opval); 1113 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1114 } 1115} 1116} 1117} 1118 1119#undef FLD 1120} 1121 NEXT (vpc); 1122 1123 CASE (sem, INSN_MOVSCWR) : /* movs.w ${sconst16},${Rd} */ 1124{ 1125 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1126 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1127#define FLD(f) abuf->fields.sfmt_bound_cw.f 1128 int UNUSED written = 0; 1129 IADDR UNUSED pc = abuf->addr; 1130 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 1131 1132{ 1133 SI tmp_newval; 1134 tmp_newval = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))); 1135 { 1136 SI opval = tmp_newval; 1137 SET_H_GR (FLD (f_operand2), opval); 1138 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 1139 } 1140{ 1141 { 1142 BI opval = LTSI (tmp_newval, 0); 1143 CPU (h_nbit) = opval; 1144 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1145 } 1146 { 1147 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 1148 CPU (h_zbit) = opval; 1149 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1150 } 1151SET_H_CBIT_MOVE (0); 1152SET_H_VBIT_MOVE (0); 1153{ 1154 { 1155 BI opval = 0; 1156 CPU (h_xbit) = opval; 1157 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1158 } 1159 { 1160 BI opval = 0; 1161 SET_H_INSN_PREFIXED_P (opval); 1162 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1163 } 1164} 1165} 1166} 1167 1168#undef FLD 1169} 1170 NEXT (vpc); 1171 1172 CASE (sem, INSN_MOVUCBR) : /* movu.b ${uconst8},${Rd} */ 1173{ 1174 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1175 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1176#define FLD(f) abuf->fields.sfmt_bound_cb.f 1177 int UNUSED written = 0; 1178 IADDR UNUSED pc = abuf->addr; 1179 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 1180 1181{ 1182 SI tmp_newval; 1183 tmp_newval = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))); 1184 { 1185 SI opval = tmp_newval; 1186 SET_H_GR (FLD (f_operand2), opval); 1187 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 1188 } 1189{ 1190 { 1191 BI opval = LTSI (tmp_newval, 0); 1192 CPU (h_nbit) = opval; 1193 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1194 } 1195 { 1196 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 1197 CPU (h_zbit) = opval; 1198 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1199 } 1200SET_H_CBIT_MOVE (0); 1201SET_H_VBIT_MOVE (0); 1202{ 1203 { 1204 BI opval = 0; 1205 CPU (h_xbit) = opval; 1206 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1207 } 1208 { 1209 BI opval = 0; 1210 SET_H_INSN_PREFIXED_P (opval); 1211 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1212 } 1213} 1214} 1215} 1216 1217#undef FLD 1218} 1219 NEXT (vpc); 1220 1221 CASE (sem, INSN_MOVUCWR) : /* movu.w ${uconst16},${Rd} */ 1222{ 1223 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1224 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1225#define FLD(f) abuf->fields.sfmt_bound_cw.f 1226 int UNUSED written = 0; 1227 IADDR UNUSED pc = abuf->addr; 1228 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 1229 1230{ 1231 SI tmp_newval; 1232 tmp_newval = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))); 1233 { 1234 SI opval = tmp_newval; 1235 SET_H_GR (FLD (f_operand2), opval); 1236 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 1237 } 1238{ 1239 { 1240 BI opval = LTSI (tmp_newval, 0); 1241 CPU (h_nbit) = opval; 1242 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1243 } 1244 { 1245 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 1246 CPU (h_zbit) = opval; 1247 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1248 } 1249SET_H_CBIT_MOVE (0); 1250SET_H_VBIT_MOVE (0); 1251{ 1252 { 1253 BI opval = 0; 1254 CPU (h_xbit) = opval; 1255 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1256 } 1257 { 1258 BI opval = 0; 1259 SET_H_INSN_PREFIXED_P (opval); 1260 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1261 } 1262} 1263} 1264} 1265 1266#undef FLD 1267} 1268 NEXT (vpc); 1269 1270 CASE (sem, INSN_ADDQ) : /* addq $j,$Rd */ 1271{ 1272 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1273 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1274#define FLD(f) abuf->fields.sfmt_addq.f 1275 int UNUSED written = 0; 1276 IADDR UNUSED pc = abuf->addr; 1277 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 1278 1279{ 1280 SI tmp_tmpopd; 1281 SI tmp_tmpops; 1282 BI tmp_carry; 1283 SI tmp_newval; 1284 tmp_tmpops = FLD (f_u6); 1285 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 1286 tmp_carry = CPU (h_cbit); 1287 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 1288 { 1289 SI opval = tmp_newval; 1290 SET_H_GR (FLD (f_operand2), opval); 1291 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 1292 } 1293{ 1294 { 1295 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 1296 CPU (h_cbit) = opval; 1297 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 1298 } 1299 { 1300 BI opval = LTSI (tmp_newval, 0); 1301 CPU (h_nbit) = opval; 1302 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1303 } 1304 { 1305 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 1306 CPU (h_zbit) = opval; 1307 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1308 } 1309 { 1310 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 1311 CPU (h_vbit) = opval; 1312 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 1313 } 1314{ 1315 { 1316 BI opval = 0; 1317 CPU (h_xbit) = opval; 1318 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1319 } 1320 { 1321 BI opval = 0; 1322 SET_H_INSN_PREFIXED_P (opval); 1323 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1324 } 1325} 1326} 1327} 1328 1329#undef FLD 1330} 1331 NEXT (vpc); 1332 1333 CASE (sem, INSN_SUBQ) : /* subq $j,$Rd */ 1334{ 1335 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1336 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1337#define FLD(f) abuf->fields.sfmt_addq.f 1338 int UNUSED written = 0; 1339 IADDR UNUSED pc = abuf->addr; 1340 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 1341 1342{ 1343 SI tmp_tmpopd; 1344 SI tmp_tmpops; 1345 BI tmp_carry; 1346 SI tmp_newval; 1347 tmp_tmpops = FLD (f_u6); 1348 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 1349 tmp_carry = CPU (h_cbit); 1350 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 1351 { 1352 SI opval = tmp_newval; 1353 SET_H_GR (FLD (f_operand2), opval); 1354 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 1355 } 1356{ 1357 { 1358 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 1359 CPU (h_cbit) = opval; 1360 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 1361 } 1362 { 1363 BI opval = LTSI (tmp_newval, 0); 1364 CPU (h_nbit) = opval; 1365 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1366 } 1367 { 1368 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 1369 CPU (h_zbit) = opval; 1370 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1371 } 1372 { 1373 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 1374 CPU (h_vbit) = opval; 1375 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 1376 } 1377{ 1378 { 1379 BI opval = 0; 1380 CPU (h_xbit) = opval; 1381 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1382 } 1383 { 1384 BI opval = 0; 1385 SET_H_INSN_PREFIXED_P (opval); 1386 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1387 } 1388} 1389} 1390} 1391 1392#undef FLD 1393} 1394 NEXT (vpc); 1395 1396 CASE (sem, INSN_CMP_R_B_R) : /* cmp-r.b $Rs,$Rd */ 1397{ 1398 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1399 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1400#define FLD(f) abuf->fields.sfmt_add_b_r.f 1401 int UNUSED written = 0; 1402 IADDR UNUSED pc = abuf->addr; 1403 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 1404 1405{ 1406 QI tmp_tmpopd; 1407 QI tmp_tmpops; 1408 BI tmp_carry; 1409 QI tmp_newval; 1410 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 1411 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 1412 tmp_carry = CPU (h_cbit); 1413 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 1414((void) 0); /*nop*/ 1415{ 1416 { 1417 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0)))); 1418 CPU (h_cbit) = opval; 1419 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 1420 } 1421 { 1422 BI opval = LTQI (tmp_newval, 0); 1423 CPU (h_nbit) = opval; 1424 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1425 } 1426 { 1427 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 1428 CPU (h_zbit) = opval; 1429 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1430 } 1431 { 1432 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0))); 1433 CPU (h_vbit) = opval; 1434 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 1435 } 1436{ 1437 { 1438 BI opval = 0; 1439 CPU (h_xbit) = opval; 1440 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1441 } 1442 { 1443 BI opval = 0; 1444 SET_H_INSN_PREFIXED_P (opval); 1445 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1446 } 1447} 1448} 1449} 1450 1451#undef FLD 1452} 1453 NEXT (vpc); 1454 1455 CASE (sem, INSN_CMP_R_W_R) : /* cmp-r.w $Rs,$Rd */ 1456{ 1457 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1458 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1459#define FLD(f) abuf->fields.sfmt_add_b_r.f 1460 int UNUSED written = 0; 1461 IADDR UNUSED pc = abuf->addr; 1462 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 1463 1464{ 1465 HI tmp_tmpopd; 1466 HI tmp_tmpops; 1467 BI tmp_carry; 1468 HI tmp_newval; 1469 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 1470 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 1471 tmp_carry = CPU (h_cbit); 1472 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 1473((void) 0); /*nop*/ 1474{ 1475 { 1476 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0)))); 1477 CPU (h_cbit) = opval; 1478 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 1479 } 1480 { 1481 BI opval = LTHI (tmp_newval, 0); 1482 CPU (h_nbit) = opval; 1483 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1484 } 1485 { 1486 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 1487 CPU (h_zbit) = opval; 1488 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1489 } 1490 { 1491 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0))); 1492 CPU (h_vbit) = opval; 1493 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 1494 } 1495{ 1496 { 1497 BI opval = 0; 1498 CPU (h_xbit) = opval; 1499 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1500 } 1501 { 1502 BI opval = 0; 1503 SET_H_INSN_PREFIXED_P (opval); 1504 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1505 } 1506} 1507} 1508} 1509 1510#undef FLD 1511} 1512 NEXT (vpc); 1513 1514 CASE (sem, INSN_CMP_R_D_R) : /* cmp-r.d $Rs,$Rd */ 1515{ 1516 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1517 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1518#define FLD(f) abuf->fields.sfmt_add_b_r.f 1519 int UNUSED written = 0; 1520 IADDR UNUSED pc = abuf->addr; 1521 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 1522 1523{ 1524 SI tmp_tmpopd; 1525 SI tmp_tmpops; 1526 BI tmp_carry; 1527 SI tmp_newval; 1528 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 1529 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 1530 tmp_carry = CPU (h_cbit); 1531 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 1532((void) 0); /*nop*/ 1533{ 1534 { 1535 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 1536 CPU (h_cbit) = opval; 1537 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 1538 } 1539 { 1540 BI opval = LTSI (tmp_newval, 0); 1541 CPU (h_nbit) = opval; 1542 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1543 } 1544 { 1545 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 1546 CPU (h_zbit) = opval; 1547 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1548 } 1549 { 1550 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 1551 CPU (h_vbit) = opval; 1552 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 1553 } 1554{ 1555 { 1556 BI opval = 0; 1557 CPU (h_xbit) = opval; 1558 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1559 } 1560 { 1561 BI opval = 0; 1562 SET_H_INSN_PREFIXED_P (opval); 1563 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1564 } 1565} 1566} 1567} 1568 1569#undef FLD 1570} 1571 NEXT (vpc); 1572 1573 CASE (sem, INSN_CMP_M_B_M) : /* cmp-m.b [${Rs}${inc}],${Rd} */ 1574{ 1575 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1576 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1577#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 1578 int UNUSED written = 0; 1579 IADDR UNUSED pc = abuf->addr; 1580 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 1581 1582{ 1583 QI tmp_tmpopd; 1584 QI tmp_tmpops; 1585 BI tmp_carry; 1586 QI tmp_newval; 1587 tmp_tmpops = ({ SI tmp_addr; 1588 QI tmp_tmp_mem; 1589 BI tmp_postinc; 1590 tmp_postinc = FLD (f_memmode); 1591; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 1592; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 1593; if (NEBI (tmp_postinc, 0)) { 1594{ 1595if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 1596 tmp_addr = ADDSI (tmp_addr, 1); 1597} 1598 { 1599 SI opval = tmp_addr; 1600 SET_H_GR (FLD (f_operand1), opval); 1601 written |= (1 << 9); 1602 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 1603 } 1604} 1605} 1606; tmp_tmp_mem; }); 1607 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 1608 tmp_carry = CPU (h_cbit); 1609 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 1610((void) 0); /*nop*/ 1611{ 1612 { 1613 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0)))); 1614 CPU (h_cbit) = opval; 1615 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 1616 } 1617 { 1618 BI opval = LTQI (tmp_newval, 0); 1619 CPU (h_nbit) = opval; 1620 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1621 } 1622 { 1623 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 1624 CPU (h_zbit) = opval; 1625 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1626 } 1627 { 1628 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0))); 1629 CPU (h_vbit) = opval; 1630 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 1631 } 1632{ 1633 { 1634 BI opval = 0; 1635 CPU (h_xbit) = opval; 1636 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1637 } 1638 { 1639 BI opval = 0; 1640 SET_H_INSN_PREFIXED_P (opval); 1641 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1642 } 1643} 1644} 1645} 1646 1647 abuf->written = written; 1648#undef FLD 1649} 1650 NEXT (vpc); 1651 1652 CASE (sem, INSN_CMP_M_W_M) : /* cmp-m.w [${Rs}${inc}],${Rd} */ 1653{ 1654 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1655 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1656#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 1657 int UNUSED written = 0; 1658 IADDR UNUSED pc = abuf->addr; 1659 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 1660 1661{ 1662 HI tmp_tmpopd; 1663 HI tmp_tmpops; 1664 BI tmp_carry; 1665 HI tmp_newval; 1666 tmp_tmpops = ({ SI tmp_addr; 1667 HI tmp_tmp_mem; 1668 BI tmp_postinc; 1669 tmp_postinc = FLD (f_memmode); 1670; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 1671; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 1672; if (NEBI (tmp_postinc, 0)) { 1673{ 1674if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 1675 tmp_addr = ADDSI (tmp_addr, 2); 1676} 1677 { 1678 SI opval = tmp_addr; 1679 SET_H_GR (FLD (f_operand1), opval); 1680 written |= (1 << 9); 1681 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 1682 } 1683} 1684} 1685; tmp_tmp_mem; }); 1686 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 1687 tmp_carry = CPU (h_cbit); 1688 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 1689((void) 0); /*nop*/ 1690{ 1691 { 1692 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0)))); 1693 CPU (h_cbit) = opval; 1694 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 1695 } 1696 { 1697 BI opval = LTHI (tmp_newval, 0); 1698 CPU (h_nbit) = opval; 1699 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1700 } 1701 { 1702 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 1703 CPU (h_zbit) = opval; 1704 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1705 } 1706 { 1707 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0))); 1708 CPU (h_vbit) = opval; 1709 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 1710 } 1711{ 1712 { 1713 BI opval = 0; 1714 CPU (h_xbit) = opval; 1715 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1716 } 1717 { 1718 BI opval = 0; 1719 SET_H_INSN_PREFIXED_P (opval); 1720 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1721 } 1722} 1723} 1724} 1725 1726 abuf->written = written; 1727#undef FLD 1728} 1729 NEXT (vpc); 1730 1731 CASE (sem, INSN_CMP_M_D_M) : /* cmp-m.d [${Rs}${inc}],${Rd} */ 1732{ 1733 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1734 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1735#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 1736 int UNUSED written = 0; 1737 IADDR UNUSED pc = abuf->addr; 1738 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 1739 1740{ 1741 SI tmp_tmpopd; 1742 SI tmp_tmpops; 1743 BI tmp_carry; 1744 SI tmp_newval; 1745 tmp_tmpops = ({ SI tmp_addr; 1746 SI tmp_tmp_mem; 1747 BI tmp_postinc; 1748 tmp_postinc = FLD (f_memmode); 1749; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 1750; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 1751; if (NEBI (tmp_postinc, 0)) { 1752{ 1753if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 1754 tmp_addr = ADDSI (tmp_addr, 4); 1755} 1756 { 1757 SI opval = tmp_addr; 1758 SET_H_GR (FLD (f_operand1), opval); 1759 written |= (1 << 9); 1760 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 1761 } 1762} 1763} 1764; tmp_tmp_mem; }); 1765 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 1766 tmp_carry = CPU (h_cbit); 1767 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 1768((void) 0); /*nop*/ 1769{ 1770 { 1771 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 1772 CPU (h_cbit) = opval; 1773 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 1774 } 1775 { 1776 BI opval = LTSI (tmp_newval, 0); 1777 CPU (h_nbit) = opval; 1778 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1779 } 1780 { 1781 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 1782 CPU (h_zbit) = opval; 1783 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1784 } 1785 { 1786 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 1787 CPU (h_vbit) = opval; 1788 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 1789 } 1790{ 1791 { 1792 BI opval = 0; 1793 CPU (h_xbit) = opval; 1794 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1795 } 1796 { 1797 BI opval = 0; 1798 SET_H_INSN_PREFIXED_P (opval); 1799 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1800 } 1801} 1802} 1803} 1804 1805 abuf->written = written; 1806#undef FLD 1807} 1808 NEXT (vpc); 1809 1810 CASE (sem, INSN_CMPCBR) : /* cmp.b $sconst8,$Rd */ 1811{ 1812 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1813 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1814#define FLD(f) abuf->fields.sfmt_bound_cb.f 1815 int UNUSED written = 0; 1816 IADDR UNUSED pc = abuf->addr; 1817 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 1818 1819{ 1820 QI tmp_tmpopd; 1821 QI tmp_tmpops; 1822 BI tmp_carry; 1823 QI tmp_newval; 1824 tmp_tmpops = TRUNCSIQI (FLD (f_indir_pc__byte)); 1825 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 1826 tmp_carry = CPU (h_cbit); 1827 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 1828((void) 0); /*nop*/ 1829{ 1830 { 1831 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0)))); 1832 CPU (h_cbit) = opval; 1833 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 1834 } 1835 { 1836 BI opval = LTQI (tmp_newval, 0); 1837 CPU (h_nbit) = opval; 1838 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1839 } 1840 { 1841 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 1842 CPU (h_zbit) = opval; 1843 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1844 } 1845 { 1846 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0))); 1847 CPU (h_vbit) = opval; 1848 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 1849 } 1850{ 1851 { 1852 BI opval = 0; 1853 CPU (h_xbit) = opval; 1854 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1855 } 1856 { 1857 BI opval = 0; 1858 SET_H_INSN_PREFIXED_P (opval); 1859 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1860 } 1861} 1862} 1863} 1864 1865#undef FLD 1866} 1867 NEXT (vpc); 1868 1869 CASE (sem, INSN_CMPCWR) : /* cmp.w $sconst16,$Rd */ 1870{ 1871 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1872 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1873#define FLD(f) abuf->fields.sfmt_bound_cw.f 1874 int UNUSED written = 0; 1875 IADDR UNUSED pc = abuf->addr; 1876 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 1877 1878{ 1879 HI tmp_tmpopd; 1880 HI tmp_tmpops; 1881 BI tmp_carry; 1882 HI tmp_newval; 1883 tmp_tmpops = TRUNCSIHI (FLD (f_indir_pc__word)); 1884 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 1885 tmp_carry = CPU (h_cbit); 1886 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 1887((void) 0); /*nop*/ 1888{ 1889 { 1890 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0)))); 1891 CPU (h_cbit) = opval; 1892 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 1893 } 1894 { 1895 BI opval = LTHI (tmp_newval, 0); 1896 CPU (h_nbit) = opval; 1897 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1898 } 1899 { 1900 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 1901 CPU (h_zbit) = opval; 1902 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1903 } 1904 { 1905 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0))); 1906 CPU (h_vbit) = opval; 1907 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 1908 } 1909{ 1910 { 1911 BI opval = 0; 1912 CPU (h_xbit) = opval; 1913 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1914 } 1915 { 1916 BI opval = 0; 1917 SET_H_INSN_PREFIXED_P (opval); 1918 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1919 } 1920} 1921} 1922} 1923 1924#undef FLD 1925} 1926 NEXT (vpc); 1927 1928 CASE (sem, INSN_CMPCDR) : /* cmp.d $const32,$Rd */ 1929{ 1930 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1931 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1932#define FLD(f) abuf->fields.sfmt_bound_cd.f 1933 int UNUSED written = 0; 1934 IADDR UNUSED pc = abuf->addr; 1935 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 1936 1937{ 1938 SI tmp_tmpopd; 1939 SI tmp_tmpops; 1940 BI tmp_carry; 1941 SI tmp_newval; 1942 tmp_tmpops = FLD (f_indir_pc__dword); 1943 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 1944 tmp_carry = CPU (h_cbit); 1945 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 1946((void) 0); /*nop*/ 1947{ 1948 { 1949 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 1950 CPU (h_cbit) = opval; 1951 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 1952 } 1953 { 1954 BI opval = LTSI (tmp_newval, 0); 1955 CPU (h_nbit) = opval; 1956 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 1957 } 1958 { 1959 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 1960 CPU (h_zbit) = opval; 1961 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 1962 } 1963 { 1964 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 1965 CPU (h_vbit) = opval; 1966 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 1967 } 1968{ 1969 { 1970 BI opval = 0; 1971 CPU (h_xbit) = opval; 1972 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 1973 } 1974 { 1975 BI opval = 0; 1976 SET_H_INSN_PREFIXED_P (opval); 1977 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 1978 } 1979} 1980} 1981} 1982 1983#undef FLD 1984} 1985 NEXT (vpc); 1986 1987 CASE (sem, INSN_CMPQ) : /* cmpq $i,$Rd */ 1988{ 1989 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 1990 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 1991#define FLD(f) abuf->fields.sfmt_andq.f 1992 int UNUSED written = 0; 1993 IADDR UNUSED pc = abuf->addr; 1994 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 1995 1996{ 1997 SI tmp_tmpopd; 1998 SI tmp_tmpops; 1999 BI tmp_carry; 2000 SI tmp_newval; 2001 tmp_tmpops = FLD (f_s6); 2002 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 2003 tmp_carry = CPU (h_cbit); 2004 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 2005((void) 0); /*nop*/ 2006{ 2007 { 2008 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 2009 CPU (h_cbit) = opval; 2010 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 2011 } 2012 { 2013 BI opval = LTSI (tmp_newval, 0); 2014 CPU (h_nbit) = opval; 2015 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2016 } 2017 { 2018 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 2019 CPU (h_zbit) = opval; 2020 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2021 } 2022 { 2023 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 2024 CPU (h_vbit) = opval; 2025 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 2026 } 2027{ 2028 { 2029 BI opval = 0; 2030 CPU (h_xbit) = opval; 2031 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2032 } 2033 { 2034 BI opval = 0; 2035 SET_H_INSN_PREFIXED_P (opval); 2036 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2037 } 2038} 2039} 2040} 2041 2042#undef FLD 2043} 2044 NEXT (vpc); 2045 2046 CASE (sem, INSN_CMPS_M_B_M) : /* cmps-m.b [${Rs}${inc}],$Rd */ 2047{ 2048 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2049 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2050#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 2051 int UNUSED written = 0; 2052 IADDR UNUSED pc = abuf->addr; 2053 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 2054 2055{ 2056 SI tmp_tmpopd; 2057 SI tmp_tmpops; 2058 BI tmp_carry; 2059 SI tmp_newval; 2060 tmp_tmpops = EXTQISI (({ SI tmp_addr; 2061 QI tmp_tmp_mem; 2062 BI tmp_postinc; 2063 tmp_postinc = FLD (f_memmode); 2064; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 2065; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 2066; if (NEBI (tmp_postinc, 0)) { 2067{ 2068if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 2069 tmp_addr = ADDSI (tmp_addr, 1); 2070} 2071 { 2072 SI opval = tmp_addr; 2073 SET_H_GR (FLD (f_operand1), opval); 2074 written |= (1 << 9); 2075 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2076 } 2077} 2078} 2079; tmp_tmp_mem; })); 2080 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 2081 tmp_carry = CPU (h_cbit); 2082 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 2083((void) 0); /*nop*/ 2084{ 2085 { 2086 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 2087 CPU (h_cbit) = opval; 2088 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 2089 } 2090 { 2091 BI opval = LTSI (tmp_newval, 0); 2092 CPU (h_nbit) = opval; 2093 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2094 } 2095 { 2096 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 2097 CPU (h_zbit) = opval; 2098 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2099 } 2100 { 2101 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 2102 CPU (h_vbit) = opval; 2103 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 2104 } 2105{ 2106 { 2107 BI opval = 0; 2108 CPU (h_xbit) = opval; 2109 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2110 } 2111 { 2112 BI opval = 0; 2113 SET_H_INSN_PREFIXED_P (opval); 2114 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2115 } 2116} 2117} 2118} 2119 2120 abuf->written = written; 2121#undef FLD 2122} 2123 NEXT (vpc); 2124 2125 CASE (sem, INSN_CMPS_M_W_M) : /* cmps-m.w [${Rs}${inc}],$Rd */ 2126{ 2127 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2128 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2129#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 2130 int UNUSED written = 0; 2131 IADDR UNUSED pc = abuf->addr; 2132 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 2133 2134{ 2135 SI tmp_tmpopd; 2136 SI tmp_tmpops; 2137 BI tmp_carry; 2138 SI tmp_newval; 2139 tmp_tmpops = EXTHISI (({ SI tmp_addr; 2140 HI tmp_tmp_mem; 2141 BI tmp_postinc; 2142 tmp_postinc = FLD (f_memmode); 2143; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 2144; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 2145; if (NEBI (tmp_postinc, 0)) { 2146{ 2147if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 2148 tmp_addr = ADDSI (tmp_addr, 2); 2149} 2150 { 2151 SI opval = tmp_addr; 2152 SET_H_GR (FLD (f_operand1), opval); 2153 written |= (1 << 9); 2154 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2155 } 2156} 2157} 2158; tmp_tmp_mem; })); 2159 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 2160 tmp_carry = CPU (h_cbit); 2161 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 2162((void) 0); /*nop*/ 2163{ 2164 { 2165 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 2166 CPU (h_cbit) = opval; 2167 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 2168 } 2169 { 2170 BI opval = LTSI (tmp_newval, 0); 2171 CPU (h_nbit) = opval; 2172 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2173 } 2174 { 2175 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 2176 CPU (h_zbit) = opval; 2177 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2178 } 2179 { 2180 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 2181 CPU (h_vbit) = opval; 2182 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 2183 } 2184{ 2185 { 2186 BI opval = 0; 2187 CPU (h_xbit) = opval; 2188 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2189 } 2190 { 2191 BI opval = 0; 2192 SET_H_INSN_PREFIXED_P (opval); 2193 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2194 } 2195} 2196} 2197} 2198 2199 abuf->written = written; 2200#undef FLD 2201} 2202 NEXT (vpc); 2203 2204 CASE (sem, INSN_CMPSCBR) : /* [${Rs}${inc}],$Rd */ 2205{ 2206 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2207 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2208#define FLD(f) abuf->fields.sfmt_bound_cb.f 2209 int UNUSED written = 0; 2210 IADDR UNUSED pc = abuf->addr; 2211 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 2212 2213{ 2214 SI tmp_tmpopd; 2215 SI tmp_tmpops; 2216 BI tmp_carry; 2217 SI tmp_newval; 2218 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))); 2219 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 2220 tmp_carry = CPU (h_cbit); 2221 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 2222((void) 0); /*nop*/ 2223{ 2224 { 2225 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 2226 CPU (h_cbit) = opval; 2227 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 2228 } 2229 { 2230 BI opval = LTSI (tmp_newval, 0); 2231 CPU (h_nbit) = opval; 2232 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2233 } 2234 { 2235 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 2236 CPU (h_zbit) = opval; 2237 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2238 } 2239 { 2240 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 2241 CPU (h_vbit) = opval; 2242 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 2243 } 2244{ 2245 { 2246 BI opval = 0; 2247 CPU (h_xbit) = opval; 2248 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2249 } 2250 { 2251 BI opval = 0; 2252 SET_H_INSN_PREFIXED_P (opval); 2253 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2254 } 2255} 2256} 2257} 2258 2259#undef FLD 2260} 2261 NEXT (vpc); 2262 2263 CASE (sem, INSN_CMPSCWR) : /* [${Rs}${inc}],$Rd */ 2264{ 2265 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2266 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2267#define FLD(f) abuf->fields.sfmt_bound_cw.f 2268 int UNUSED written = 0; 2269 IADDR UNUSED pc = abuf->addr; 2270 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 2271 2272{ 2273 SI tmp_tmpopd; 2274 SI tmp_tmpops; 2275 BI tmp_carry; 2276 SI tmp_newval; 2277 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))); 2278 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 2279 tmp_carry = CPU (h_cbit); 2280 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 2281((void) 0); /*nop*/ 2282{ 2283 { 2284 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 2285 CPU (h_cbit) = opval; 2286 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 2287 } 2288 { 2289 BI opval = LTSI (tmp_newval, 0); 2290 CPU (h_nbit) = opval; 2291 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2292 } 2293 { 2294 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 2295 CPU (h_zbit) = opval; 2296 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2297 } 2298 { 2299 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 2300 CPU (h_vbit) = opval; 2301 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 2302 } 2303{ 2304 { 2305 BI opval = 0; 2306 CPU (h_xbit) = opval; 2307 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2308 } 2309 { 2310 BI opval = 0; 2311 SET_H_INSN_PREFIXED_P (opval); 2312 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2313 } 2314} 2315} 2316} 2317 2318#undef FLD 2319} 2320 NEXT (vpc); 2321 2322 CASE (sem, INSN_CMPU_M_B_M) : /* cmpu-m.b [${Rs}${inc}],$Rd */ 2323{ 2324 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2325 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2326#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 2327 int UNUSED written = 0; 2328 IADDR UNUSED pc = abuf->addr; 2329 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 2330 2331{ 2332 SI tmp_tmpopd; 2333 SI tmp_tmpops; 2334 BI tmp_carry; 2335 SI tmp_newval; 2336 tmp_tmpops = ZEXTQISI (({ SI tmp_addr; 2337 QI tmp_tmp_mem; 2338 BI tmp_postinc; 2339 tmp_postinc = FLD (f_memmode); 2340; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 2341; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 2342; if (NEBI (tmp_postinc, 0)) { 2343{ 2344if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 2345 tmp_addr = ADDSI (tmp_addr, 1); 2346} 2347 { 2348 SI opval = tmp_addr; 2349 SET_H_GR (FLD (f_operand1), opval); 2350 written |= (1 << 9); 2351 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2352 } 2353} 2354} 2355; tmp_tmp_mem; })); 2356 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 2357 tmp_carry = CPU (h_cbit); 2358 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 2359((void) 0); /*nop*/ 2360{ 2361 { 2362 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 2363 CPU (h_cbit) = opval; 2364 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 2365 } 2366 { 2367 BI opval = LTSI (tmp_newval, 0); 2368 CPU (h_nbit) = opval; 2369 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2370 } 2371 { 2372 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 2373 CPU (h_zbit) = opval; 2374 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2375 } 2376 { 2377 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 2378 CPU (h_vbit) = opval; 2379 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 2380 } 2381{ 2382 { 2383 BI opval = 0; 2384 CPU (h_xbit) = opval; 2385 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2386 } 2387 { 2388 BI opval = 0; 2389 SET_H_INSN_PREFIXED_P (opval); 2390 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2391 } 2392} 2393} 2394} 2395 2396 abuf->written = written; 2397#undef FLD 2398} 2399 NEXT (vpc); 2400 2401 CASE (sem, INSN_CMPU_M_W_M) : /* cmpu-m.w [${Rs}${inc}],$Rd */ 2402{ 2403 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2404 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2405#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 2406 int UNUSED written = 0; 2407 IADDR UNUSED pc = abuf->addr; 2408 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 2409 2410{ 2411 SI tmp_tmpopd; 2412 SI tmp_tmpops; 2413 BI tmp_carry; 2414 SI tmp_newval; 2415 tmp_tmpops = ZEXTHISI (({ SI tmp_addr; 2416 HI tmp_tmp_mem; 2417 BI tmp_postinc; 2418 tmp_postinc = FLD (f_memmode); 2419; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 2420; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 2421; if (NEBI (tmp_postinc, 0)) { 2422{ 2423if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 2424 tmp_addr = ADDSI (tmp_addr, 2); 2425} 2426 { 2427 SI opval = tmp_addr; 2428 SET_H_GR (FLD (f_operand1), opval); 2429 written |= (1 << 9); 2430 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2431 } 2432} 2433} 2434; tmp_tmp_mem; })); 2435 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 2436 tmp_carry = CPU (h_cbit); 2437 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 2438((void) 0); /*nop*/ 2439{ 2440 { 2441 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 2442 CPU (h_cbit) = opval; 2443 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 2444 } 2445 { 2446 BI opval = LTSI (tmp_newval, 0); 2447 CPU (h_nbit) = opval; 2448 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2449 } 2450 { 2451 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 2452 CPU (h_zbit) = opval; 2453 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2454 } 2455 { 2456 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 2457 CPU (h_vbit) = opval; 2458 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 2459 } 2460{ 2461 { 2462 BI opval = 0; 2463 CPU (h_xbit) = opval; 2464 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2465 } 2466 { 2467 BI opval = 0; 2468 SET_H_INSN_PREFIXED_P (opval); 2469 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2470 } 2471} 2472} 2473} 2474 2475 abuf->written = written; 2476#undef FLD 2477} 2478 NEXT (vpc); 2479 2480 CASE (sem, INSN_CMPUCBR) : /* [${Rs}${inc}],$Rd */ 2481{ 2482 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2483 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2484#define FLD(f) abuf->fields.sfmt_bound_cb.f 2485 int UNUSED written = 0; 2486 IADDR UNUSED pc = abuf->addr; 2487 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 2488 2489{ 2490 SI tmp_tmpopd; 2491 SI tmp_tmpops; 2492 BI tmp_carry; 2493 SI tmp_newval; 2494 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))); 2495 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 2496 tmp_carry = CPU (h_cbit); 2497 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 2498((void) 0); /*nop*/ 2499{ 2500 { 2501 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 2502 CPU (h_cbit) = opval; 2503 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 2504 } 2505 { 2506 BI opval = LTSI (tmp_newval, 0); 2507 CPU (h_nbit) = opval; 2508 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2509 } 2510 { 2511 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 2512 CPU (h_zbit) = opval; 2513 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2514 } 2515 { 2516 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 2517 CPU (h_vbit) = opval; 2518 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 2519 } 2520{ 2521 { 2522 BI opval = 0; 2523 CPU (h_xbit) = opval; 2524 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2525 } 2526 { 2527 BI opval = 0; 2528 SET_H_INSN_PREFIXED_P (opval); 2529 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2530 } 2531} 2532} 2533} 2534 2535#undef FLD 2536} 2537 NEXT (vpc); 2538 2539 CASE (sem, INSN_CMPUCWR) : /* [${Rs}${inc}],$Rd */ 2540{ 2541 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2542 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2543#define FLD(f) abuf->fields.sfmt_bound_cw.f 2544 int UNUSED written = 0; 2545 IADDR UNUSED pc = abuf->addr; 2546 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 2547 2548{ 2549 SI tmp_tmpopd; 2550 SI tmp_tmpops; 2551 BI tmp_carry; 2552 SI tmp_newval; 2553 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))); 2554 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 2555 tmp_carry = CPU (h_cbit); 2556 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 2557((void) 0); /*nop*/ 2558{ 2559 { 2560 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 2561 CPU (h_cbit) = opval; 2562 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 2563 } 2564 { 2565 BI opval = LTSI (tmp_newval, 0); 2566 CPU (h_nbit) = opval; 2567 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2568 } 2569 { 2570 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 2571 CPU (h_zbit) = opval; 2572 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2573 } 2574 { 2575 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 2576 CPU (h_vbit) = opval; 2577 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 2578 } 2579{ 2580 { 2581 BI opval = 0; 2582 CPU (h_xbit) = opval; 2583 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2584 } 2585 { 2586 BI opval = 0; 2587 SET_H_INSN_PREFIXED_P (opval); 2588 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2589 } 2590} 2591} 2592} 2593 2594#undef FLD 2595} 2596 NEXT (vpc); 2597 2598 CASE (sem, INSN_MOVE_M_B_M) : /* move-m.b [${Rs}${inc}],${Rd} */ 2599{ 2600 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2601 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2602#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2603 int UNUSED written = 0; 2604 IADDR UNUSED pc = abuf->addr; 2605 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 2606 2607{ 2608 SI tmp_tmp; 2609 tmp_tmp = ({ SI tmp_addr; 2610 QI tmp_tmp_mem; 2611 BI tmp_postinc; 2612 tmp_postinc = FLD (f_memmode); 2613; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 2614; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 2615; if (NEBI (tmp_postinc, 0)) { 2616{ 2617if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 2618 tmp_addr = ADDSI (tmp_addr, 1); 2619} 2620 { 2621 SI opval = tmp_addr; 2622 SET_H_GR (FLD (f_operand1), opval); 2623 written |= (1 << 10); 2624 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2625 } 2626} 2627} 2628; tmp_tmp_mem; }); 2629{ 2630 SI tmp_oldregval; 2631 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2)))); 2632 { 2633 SI opval = ORSI (ANDSI (tmp_tmp, 255), ANDSI (tmp_oldregval, 0xffffff00)); 2634 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 2635 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2636 } 2637} 2638{ 2639 { 2640 BI opval = LTQI (tmp_tmp, 0); 2641 CPU (h_nbit) = opval; 2642 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2643 } 2644 { 2645 BI opval = ANDIF (EQQI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 2646 CPU (h_zbit) = opval; 2647 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2648 } 2649SET_H_CBIT_MOVE (0); 2650SET_H_VBIT_MOVE (0); 2651{ 2652 { 2653 BI opval = 0; 2654 CPU (h_xbit) = opval; 2655 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2656 } 2657 { 2658 BI opval = 0; 2659 SET_H_INSN_PREFIXED_P (opval); 2660 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2661 } 2662} 2663} 2664} 2665 2666 abuf->written = written; 2667#undef FLD 2668} 2669 NEXT (vpc); 2670 2671 CASE (sem, INSN_MOVE_M_W_M) : /* move-m.w [${Rs}${inc}],${Rd} */ 2672{ 2673 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2674 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2675#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2676 int UNUSED written = 0; 2677 IADDR UNUSED pc = abuf->addr; 2678 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 2679 2680{ 2681 SI tmp_tmp; 2682 tmp_tmp = ({ SI tmp_addr; 2683 HI tmp_tmp_mem; 2684 BI tmp_postinc; 2685 tmp_postinc = FLD (f_memmode); 2686; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 2687; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 2688; if (NEBI (tmp_postinc, 0)) { 2689{ 2690if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 2691 tmp_addr = ADDSI (tmp_addr, 2); 2692} 2693 { 2694 SI opval = tmp_addr; 2695 SET_H_GR (FLD (f_operand1), opval); 2696 written |= (1 << 10); 2697 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2698 } 2699} 2700} 2701; tmp_tmp_mem; }); 2702{ 2703 SI tmp_oldregval; 2704 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2)))); 2705 { 2706 SI opval = ORSI (ANDSI (tmp_tmp, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 2707 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 2708 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2709 } 2710} 2711{ 2712 { 2713 BI opval = LTHI (tmp_tmp, 0); 2714 CPU (h_nbit) = opval; 2715 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2716 } 2717 { 2718 BI opval = ANDIF (EQHI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 2719 CPU (h_zbit) = opval; 2720 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2721 } 2722SET_H_CBIT_MOVE (0); 2723SET_H_VBIT_MOVE (0); 2724{ 2725 { 2726 BI opval = 0; 2727 CPU (h_xbit) = opval; 2728 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2729 } 2730 { 2731 BI opval = 0; 2732 SET_H_INSN_PREFIXED_P (opval); 2733 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2734 } 2735} 2736} 2737} 2738 2739 abuf->written = written; 2740#undef FLD 2741} 2742 NEXT (vpc); 2743 2744 CASE (sem, INSN_MOVE_M_D_M) : /* move-m.d [${Rs}${inc}],${Rd} */ 2745{ 2746 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2747 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2748#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2749 int UNUSED written = 0; 2750 IADDR UNUSED pc = abuf->addr; 2751 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 2752 2753{ 2754 SI tmp_tmp; 2755 tmp_tmp = ({ SI tmp_addr; 2756 SI tmp_tmp_mem; 2757 BI tmp_postinc; 2758 tmp_postinc = FLD (f_memmode); 2759; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 2760; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 2761; if (NEBI (tmp_postinc, 0)) { 2762{ 2763if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 2764 tmp_addr = ADDSI (tmp_addr, 4); 2765} 2766 { 2767 SI opval = tmp_addr; 2768 SET_H_GR (FLD (f_operand1), opval); 2769 written |= (1 << 9); 2770 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2771 } 2772} 2773} 2774; tmp_tmp_mem; }); 2775 { 2776 SI opval = tmp_tmp; 2777 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 2778 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2779 } 2780{ 2781 { 2782 BI opval = LTSI (tmp_tmp, 0); 2783 CPU (h_nbit) = opval; 2784 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2785 } 2786 { 2787 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 2788 CPU (h_zbit) = opval; 2789 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2790 } 2791SET_H_CBIT_MOVE (0); 2792SET_H_VBIT_MOVE (0); 2793{ 2794 { 2795 BI opval = 0; 2796 CPU (h_xbit) = opval; 2797 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2798 } 2799 { 2800 BI opval = 0; 2801 SET_H_INSN_PREFIXED_P (opval); 2802 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2803 } 2804} 2805} 2806} 2807 2808 abuf->written = written; 2809#undef FLD 2810} 2811 NEXT (vpc); 2812 2813 CASE (sem, INSN_MOVS_M_B_M) : /* movs-m.b [${Rs}${inc}],${Rd} */ 2814{ 2815 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2816 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2817#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 2818 int UNUSED written = 0; 2819 IADDR UNUSED pc = abuf->addr; 2820 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 2821 2822{ 2823 SI tmp_tmp; 2824 tmp_tmp = EXTQISI (({ SI tmp_addr; 2825 QI tmp_tmp_mem; 2826 BI tmp_postinc; 2827 tmp_postinc = FLD (f_memmode); 2828; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 2829; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 2830; if (NEBI (tmp_postinc, 0)) { 2831{ 2832if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 2833 tmp_addr = ADDSI (tmp_addr, 1); 2834} 2835 { 2836 SI opval = tmp_addr; 2837 SET_H_GR (FLD (f_operand1), opval); 2838 written |= (1 << 8); 2839 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2840 } 2841} 2842} 2843; tmp_tmp_mem; })); 2844if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) { 2845 { 2846 SI opval = tmp_tmp; 2847 SET_H_GR (FLD (f_operand1), opval); 2848 written |= (1 << 8); 2849 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2850 } 2851} else { 2852 { 2853 SI opval = tmp_tmp; 2854 SET_H_GR (FLD (f_operand2), opval); 2855 written |= (1 << 7); 2856 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2857 } 2858} 2859{ 2860 { 2861 BI opval = LTSI (tmp_tmp, 0); 2862 CPU (h_nbit) = opval; 2863 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2864 } 2865 { 2866 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 2867 CPU (h_zbit) = opval; 2868 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2869 } 2870SET_H_CBIT_MOVE (0); 2871SET_H_VBIT_MOVE (0); 2872{ 2873 { 2874 BI opval = 0; 2875 CPU (h_xbit) = opval; 2876 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2877 } 2878 { 2879 BI opval = 0; 2880 SET_H_INSN_PREFIXED_P (opval); 2881 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2882 } 2883} 2884} 2885} 2886 2887 abuf->written = written; 2888#undef FLD 2889} 2890 NEXT (vpc); 2891 2892 CASE (sem, INSN_MOVS_M_W_M) : /* movs-m.w [${Rs}${inc}],${Rd} */ 2893{ 2894 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2895 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2896#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 2897 int UNUSED written = 0; 2898 IADDR UNUSED pc = abuf->addr; 2899 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 2900 2901{ 2902 SI tmp_tmp; 2903 tmp_tmp = EXTHISI (({ SI tmp_addr; 2904 HI tmp_tmp_mem; 2905 BI tmp_postinc; 2906 tmp_postinc = FLD (f_memmode); 2907; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 2908; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 2909; if (NEBI (tmp_postinc, 0)) { 2910{ 2911if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 2912 tmp_addr = ADDSI (tmp_addr, 2); 2913} 2914 { 2915 SI opval = tmp_addr; 2916 SET_H_GR (FLD (f_operand1), opval); 2917 written |= (1 << 8); 2918 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2919 } 2920} 2921} 2922; tmp_tmp_mem; })); 2923if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) { 2924 { 2925 SI opval = tmp_tmp; 2926 SET_H_GR (FLD (f_operand1), opval); 2927 written |= (1 << 8); 2928 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2929 } 2930} else { 2931 { 2932 SI opval = tmp_tmp; 2933 SET_H_GR (FLD (f_operand2), opval); 2934 written |= (1 << 7); 2935 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2936 } 2937} 2938{ 2939 { 2940 BI opval = LTSI (tmp_tmp, 0); 2941 CPU (h_nbit) = opval; 2942 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 2943 } 2944 { 2945 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 2946 CPU (h_zbit) = opval; 2947 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 2948 } 2949SET_H_CBIT_MOVE (0); 2950SET_H_VBIT_MOVE (0); 2951{ 2952 { 2953 BI opval = 0; 2954 CPU (h_xbit) = opval; 2955 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 2956 } 2957 { 2958 BI opval = 0; 2959 SET_H_INSN_PREFIXED_P (opval); 2960 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 2961 } 2962} 2963} 2964} 2965 2966 abuf->written = written; 2967#undef FLD 2968} 2969 NEXT (vpc); 2970 2971 CASE (sem, INSN_MOVU_M_B_M) : /* movu-m.b [${Rs}${inc}],${Rd} */ 2972{ 2973 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 2974 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 2975#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 2976 int UNUSED written = 0; 2977 IADDR UNUSED pc = abuf->addr; 2978 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 2979 2980{ 2981 SI tmp_tmp; 2982 tmp_tmp = ZEXTQISI (({ SI tmp_addr; 2983 QI tmp_tmp_mem; 2984 BI tmp_postinc; 2985 tmp_postinc = FLD (f_memmode); 2986; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 2987; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 2988; if (NEBI (tmp_postinc, 0)) { 2989{ 2990if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 2991 tmp_addr = ADDSI (tmp_addr, 1); 2992} 2993 { 2994 SI opval = tmp_addr; 2995 SET_H_GR (FLD (f_operand1), opval); 2996 written |= (1 << 8); 2997 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 2998 } 2999} 3000} 3001; tmp_tmp_mem; })); 3002if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) { 3003 { 3004 SI opval = tmp_tmp; 3005 SET_H_GR (FLD (f_operand1), opval); 3006 written |= (1 << 8); 3007 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3008 } 3009} else { 3010 { 3011 SI opval = tmp_tmp; 3012 SET_H_GR (FLD (f_operand2), opval); 3013 written |= (1 << 7); 3014 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3015 } 3016} 3017{ 3018 { 3019 BI opval = LTSI (tmp_tmp, 0); 3020 CPU (h_nbit) = opval; 3021 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 3022 } 3023 { 3024 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 3025 CPU (h_zbit) = opval; 3026 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 3027 } 3028SET_H_CBIT_MOVE (0); 3029SET_H_VBIT_MOVE (0); 3030{ 3031 { 3032 BI opval = 0; 3033 CPU (h_xbit) = opval; 3034 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3035 } 3036 { 3037 BI opval = 0; 3038 SET_H_INSN_PREFIXED_P (opval); 3039 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3040 } 3041} 3042} 3043} 3044 3045 abuf->written = written; 3046#undef FLD 3047} 3048 NEXT (vpc); 3049 3050 CASE (sem, INSN_MOVU_M_W_M) : /* movu-m.w [${Rs}${inc}],${Rd} */ 3051{ 3052 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3053 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3054#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 3055 int UNUSED written = 0; 3056 IADDR UNUSED pc = abuf->addr; 3057 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 3058 3059{ 3060 SI tmp_tmp; 3061 tmp_tmp = ZEXTHISI (({ SI tmp_addr; 3062 HI tmp_tmp_mem; 3063 BI tmp_postinc; 3064 tmp_postinc = FLD (f_memmode); 3065; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3066; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 3067; if (NEBI (tmp_postinc, 0)) { 3068{ 3069if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 3070 tmp_addr = ADDSI (tmp_addr, 2); 3071} 3072 { 3073 SI opval = tmp_addr; 3074 SET_H_GR (FLD (f_operand1), opval); 3075 written |= (1 << 8); 3076 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3077 } 3078} 3079} 3080; tmp_tmp_mem; })); 3081if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) { 3082 { 3083 SI opval = tmp_tmp; 3084 SET_H_GR (FLD (f_operand1), opval); 3085 written |= (1 << 8); 3086 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3087 } 3088} else { 3089 { 3090 SI opval = tmp_tmp; 3091 SET_H_GR (FLD (f_operand2), opval); 3092 written |= (1 << 7); 3093 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3094 } 3095} 3096{ 3097 { 3098 BI opval = LTSI (tmp_tmp, 0); 3099 CPU (h_nbit) = opval; 3100 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 3101 } 3102 { 3103 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 3104 CPU (h_zbit) = opval; 3105 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 3106 } 3107SET_H_CBIT_MOVE (0); 3108SET_H_VBIT_MOVE (0); 3109{ 3110 { 3111 BI opval = 0; 3112 CPU (h_xbit) = opval; 3113 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3114 } 3115 { 3116 BI opval = 0; 3117 SET_H_INSN_PREFIXED_P (opval); 3118 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3119 } 3120} 3121} 3122} 3123 3124 abuf->written = written; 3125#undef FLD 3126} 3127 NEXT (vpc); 3128 3129 CASE (sem, INSN_MOVE_R_SPRV10) : /* move ${Rs},${Pd} */ 3130{ 3131 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3132 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3133#define FLD(f) abuf->fields.sfmt_move_m_sprv10.f 3134 int UNUSED written = 0; 3135 IADDR UNUSED pc = abuf->addr; 3136 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 3137 3138{ 3139 SI tmp_tmp; 3140 SI tmp_rno; 3141 tmp_tmp = GET_H_GR (FLD (f_operand1)); 3142 tmp_rno = FLD (f_operand2); 3143if (ORIF (ORIF (EQSI (tmp_rno, 0), EQSI (tmp_rno, 1)), ORIF (EQSI (tmp_rno, 4), EQSI (tmp_rno, 8)))) { 3144cgen_rtx_error (current_cpu, "move-r-spr: trying to set a read-only special register"); 3145} 3146 else { 3147 { 3148 SI opval = tmp_tmp; 3149 SET_H_SR (FLD (f_operand2), opval); 3150 written |= (1 << 2); 3151 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 3152 } 3153} 3154{ 3155 { 3156 BI opval = 0; 3157 CPU (h_xbit) = opval; 3158 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3159 } 3160 { 3161 BI opval = 0; 3162 SET_H_INSN_PREFIXED_P (opval); 3163 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3164 } 3165} 3166} 3167 3168 abuf->written = written; 3169#undef FLD 3170} 3171 NEXT (vpc); 3172 3173 CASE (sem, INSN_MOVE_SPR_RV10) : /* move ${Ps},${Rd-sfield} */ 3174{ 3175 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3176 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3177#define FLD(f) abuf->fields.sfmt_move_spr_rv10.f 3178 int UNUSED written = 0; 3179 IADDR UNUSED pc = abuf->addr; 3180 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 3181 3182{ 3183 SI tmp_grno; 3184 SI tmp_prno; 3185 SI tmp_newval; 3186 tmp_prno = FLD (f_operand2); 3187 tmp_newval = GET_H_SR (FLD (f_operand2)); 3188if (EQSI (tmp_prno, 5)) { 3189{ 3190 SI tmp_oldregval; 3191 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1)); 3192 { 3193 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 3194 SET_H_GR (FLD (f_operand1), opval); 3195 written |= (1 << 4); 3196 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3197 } 3198} 3199} 3200 else if (EQSI (tmp_prno, 9)) { 3201 { 3202 SI opval = tmp_newval; 3203 SET_H_GR (FLD (f_operand1), opval); 3204 written |= (1 << 4); 3205 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3206 } 3207} 3208 else if (EQSI (tmp_prno, 10)) { 3209 { 3210 SI opval = tmp_newval; 3211 SET_H_GR (FLD (f_operand1), opval); 3212 written |= (1 << 4); 3213 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3214 } 3215} 3216 else if (EQSI (tmp_prno, 11)) { 3217 { 3218 SI opval = tmp_newval; 3219 SET_H_GR (FLD (f_operand1), opval); 3220 written |= (1 << 4); 3221 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3222 } 3223} 3224 else if (EQSI (tmp_prno, 12)) { 3225 { 3226 SI opval = tmp_newval; 3227 SET_H_GR (FLD (f_operand1), opval); 3228 written |= (1 << 4); 3229 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3230 } 3231} 3232 else if (EQSI (tmp_prno, 13)) { 3233 { 3234 SI opval = tmp_newval; 3235 SET_H_GR (FLD (f_operand1), opval); 3236 written |= (1 << 4); 3237 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3238 } 3239} 3240 else if (EQSI (tmp_prno, 0)) { 3241{ 3242 SI tmp_oldregval; 3243 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1)); 3244 { 3245 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00)); 3246 SET_H_GR (FLD (f_operand1), opval); 3247 written |= (1 << 4); 3248 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3249 } 3250} 3251} 3252 else if (EQSI (tmp_prno, 1)) { 3253{ 3254 SI tmp_oldregval; 3255 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1)); 3256 { 3257 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00)); 3258 SET_H_GR (FLD (f_operand1), opval); 3259 written |= (1 << 4); 3260 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3261 } 3262} 3263} 3264 else if (EQSI (tmp_prno, 4)) { 3265{ 3266 SI tmp_oldregval; 3267 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1)); 3268 { 3269 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 3270 SET_H_GR (FLD (f_operand1), opval); 3271 written |= (1 << 4); 3272 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3273 } 3274} 3275} 3276 else if (EQSI (tmp_prno, 8)) { 3277 { 3278 SI opval = tmp_newval; 3279 SET_H_GR (FLD (f_operand1), opval); 3280 written |= (1 << 4); 3281 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3282 } 3283} 3284 else if (EQSI (tmp_prno, 7)) { 3285 { 3286 SI opval = tmp_newval; 3287 SET_H_GR (FLD (f_operand1), opval); 3288 written |= (1 << 4); 3289 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3290 } 3291} 3292 else if (EQSI (tmp_prno, 14)) { 3293 { 3294 SI opval = tmp_newval; 3295 SET_H_GR (FLD (f_operand1), opval); 3296 written |= (1 << 4); 3297 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3298 } 3299} 3300 else if (EQSI (tmp_prno, 15)) { 3301 { 3302 SI opval = tmp_newval; 3303 SET_H_GR (FLD (f_operand1), opval); 3304 written |= (1 << 4); 3305 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3306 } 3307} 3308 else { 3309cgen_rtx_error (current_cpu, "move-spr-r from unimplemented register"); 3310} 3311{ 3312 { 3313 BI opval = 0; 3314 CPU (h_xbit) = opval; 3315 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3316 } 3317 { 3318 BI opval = 0; 3319 SET_H_INSN_PREFIXED_P (opval); 3320 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3321 } 3322} 3323} 3324 3325 abuf->written = written; 3326#undef FLD 3327} 3328 NEXT (vpc); 3329 3330 CASE (sem, INSN_RET_TYPE) : /* ret/reti/retb */ 3331{ 3332 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3333 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3334#define FLD(f) abuf->fields.sfmt_move_spr_rv10.f 3335 int UNUSED written = 0; 3336 IADDR UNUSED pc = abuf->addr; 3337 SEM_BRANCH_INIT 3338 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 3339 3340{ 3341 SI tmp_retaddr; 3342 tmp_retaddr = GET_H_SR (FLD (f_operand2)); 3343{ 3344 { 3345 BI opval = 0; 3346 CPU (h_xbit) = opval; 3347 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3348 } 3349 { 3350 BI opval = 0; 3351 SET_H_INSN_PREFIXED_P (opval); 3352 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3353 } 3354} 3355{ 3356 { 3357 USI opval = tmp_retaddr; 3358 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc); 3359 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 3360 } 3361} 3362} 3363 3364 SEM_BRANCH_FINI (vpc); 3365#undef FLD 3366} 3367 NEXT (vpc); 3368 3369 CASE (sem, INSN_MOVE_M_SPRV10) : /* move [${Rs}${inc}],${Pd} */ 3370{ 3371 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3372 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3373#define FLD(f) abuf->fields.sfmt_move_m_sprv10.f 3374 int UNUSED written = 0; 3375 IADDR UNUSED pc = abuf->addr; 3376 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 3377 3378{ 3379 SI tmp_rno; 3380 SI tmp_newval; 3381 tmp_rno = FLD (f_operand2); 3382if (EQSI (tmp_rno, 5)) { 3383 tmp_newval = EXTHISI (({ SI tmp_addr; 3384 HI tmp_tmp_mem; 3385 BI tmp_postinc; 3386 tmp_postinc = FLD (f_memmode); 3387; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3388; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 3389; if (NEBI (tmp_postinc, 0)) { 3390{ 3391if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 3392 tmp_addr = ADDSI (tmp_addr, 2); 3393} 3394 { 3395 SI opval = tmp_addr; 3396 SET_H_GR (FLD (f_operand1), opval); 3397 written |= (1 << 8); 3398 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3399 } 3400} 3401} 3402; tmp_tmp_mem; })); 3403} 3404 else if (EQSI (tmp_rno, 9)) { 3405 tmp_newval = ({ SI tmp_addr; 3406 SI tmp_tmp_mem; 3407 BI tmp_postinc; 3408 tmp_postinc = FLD (f_memmode); 3409; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3410; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 3411; if (NEBI (tmp_postinc, 0)) { 3412{ 3413if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 3414 tmp_addr = ADDSI (tmp_addr, 4); 3415} 3416 { 3417 SI opval = tmp_addr; 3418 SET_H_GR (FLD (f_operand1), opval); 3419 written |= (1 << 8); 3420 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3421 } 3422} 3423} 3424; tmp_tmp_mem; }); 3425} 3426 else if (EQSI (tmp_rno, 10)) { 3427 tmp_newval = ({ SI tmp_addr; 3428 SI tmp_tmp_mem; 3429 BI tmp_postinc; 3430 tmp_postinc = FLD (f_memmode); 3431; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3432; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 3433; if (NEBI (tmp_postinc, 0)) { 3434{ 3435if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 3436 tmp_addr = ADDSI (tmp_addr, 4); 3437} 3438 { 3439 SI opval = tmp_addr; 3440 SET_H_GR (FLD (f_operand1), opval); 3441 written |= (1 << 8); 3442 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3443 } 3444} 3445} 3446; tmp_tmp_mem; }); 3447} 3448 else if (EQSI (tmp_rno, 11)) { 3449 tmp_newval = ({ SI tmp_addr; 3450 SI tmp_tmp_mem; 3451 BI tmp_postinc; 3452 tmp_postinc = FLD (f_memmode); 3453; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3454; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 3455; if (NEBI (tmp_postinc, 0)) { 3456{ 3457if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 3458 tmp_addr = ADDSI (tmp_addr, 4); 3459} 3460 { 3461 SI opval = tmp_addr; 3462 SET_H_GR (FLD (f_operand1), opval); 3463 written |= (1 << 8); 3464 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3465 } 3466} 3467} 3468; tmp_tmp_mem; }); 3469} 3470 else if (EQSI (tmp_rno, 12)) { 3471 tmp_newval = ({ SI tmp_addr; 3472 SI tmp_tmp_mem; 3473 BI tmp_postinc; 3474 tmp_postinc = FLD (f_memmode); 3475; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3476; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 3477; if (NEBI (tmp_postinc, 0)) { 3478{ 3479if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 3480 tmp_addr = ADDSI (tmp_addr, 4); 3481} 3482 { 3483 SI opval = tmp_addr; 3484 SET_H_GR (FLD (f_operand1), opval); 3485 written |= (1 << 8); 3486 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3487 } 3488} 3489} 3490; tmp_tmp_mem; }); 3491} 3492 else if (EQSI (tmp_rno, 13)) { 3493 tmp_newval = ({ SI tmp_addr; 3494 SI tmp_tmp_mem; 3495 BI tmp_postinc; 3496 tmp_postinc = FLD (f_memmode); 3497; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3498; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 3499; if (NEBI (tmp_postinc, 0)) { 3500{ 3501if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 3502 tmp_addr = ADDSI (tmp_addr, 4); 3503} 3504 { 3505 SI opval = tmp_addr; 3506 SET_H_GR (FLD (f_operand1), opval); 3507 written |= (1 << 8); 3508 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3509 } 3510} 3511} 3512; tmp_tmp_mem; }); 3513} 3514 else if (EQSI (tmp_rno, 7)) { 3515 tmp_newval = ({ SI tmp_addr; 3516 SI tmp_tmp_mem; 3517 BI tmp_postinc; 3518 tmp_postinc = FLD (f_memmode); 3519; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3520; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 3521; if (NEBI (tmp_postinc, 0)) { 3522{ 3523if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 3524 tmp_addr = ADDSI (tmp_addr, 4); 3525} 3526 { 3527 SI opval = tmp_addr; 3528 SET_H_GR (FLD (f_operand1), opval); 3529 written |= (1 << 8); 3530 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3531 } 3532} 3533} 3534; tmp_tmp_mem; }); 3535} 3536 else if (EQSI (tmp_rno, 14)) { 3537 tmp_newval = ({ SI tmp_addr; 3538 SI tmp_tmp_mem; 3539 BI tmp_postinc; 3540 tmp_postinc = FLD (f_memmode); 3541; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3542; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 3543; if (NEBI (tmp_postinc, 0)) { 3544{ 3545if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 3546 tmp_addr = ADDSI (tmp_addr, 4); 3547} 3548 { 3549 SI opval = tmp_addr; 3550 SET_H_GR (FLD (f_operand1), opval); 3551 written |= (1 << 8); 3552 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3553 } 3554} 3555} 3556; tmp_tmp_mem; }); 3557} 3558 else if (EQSI (tmp_rno, 15)) { 3559 tmp_newval = ({ SI tmp_addr; 3560 SI tmp_tmp_mem; 3561 BI tmp_postinc; 3562 tmp_postinc = FLD (f_memmode); 3563; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3564; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 3565; if (NEBI (tmp_postinc, 0)) { 3566{ 3567if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 3568 tmp_addr = ADDSI (tmp_addr, 4); 3569} 3570 { 3571 SI opval = tmp_addr; 3572 SET_H_GR (FLD (f_operand1), opval); 3573 written |= (1 << 8); 3574 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3575 } 3576} 3577} 3578; tmp_tmp_mem; }); 3579} 3580 else { 3581cgen_rtx_error (current_cpu, "Trying to set unimplemented special register"); 3582} 3583 { 3584 SI opval = tmp_newval; 3585 SET_H_SR (FLD (f_operand2), opval); 3586 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 3587 } 3588{ 3589 { 3590 BI opval = 0; 3591 CPU (h_xbit) = opval; 3592 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3593 } 3594 { 3595 BI opval = 0; 3596 SET_H_INSN_PREFIXED_P (opval); 3597 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3598 } 3599} 3600} 3601 3602 abuf->written = written; 3603#undef FLD 3604} 3605 NEXT (vpc); 3606 3607 CASE (sem, INSN_MOVE_C_SPRV10_P5) : /* move ${sconst16},${Pd} */ 3608{ 3609 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3610 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3611#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p5.f 3612 int UNUSED written = 0; 3613 IADDR UNUSED pc = abuf->addr; 3614 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 3615 3616{ 3617 { 3618 SI opval = FLD (f_indir_pc__word); 3619 SET_H_SR (FLD (f_operand2), opval); 3620 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 3621 } 3622{ 3623 { 3624 BI opval = 0; 3625 CPU (h_xbit) = opval; 3626 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3627 } 3628 { 3629 BI opval = 0; 3630 SET_H_INSN_PREFIXED_P (opval); 3631 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3632 } 3633} 3634} 3635 3636#undef FLD 3637} 3638 NEXT (vpc); 3639 3640 CASE (sem, INSN_MOVE_C_SPRV10_P9) : /* move ${const32},${Pd} */ 3641{ 3642 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3643 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3644#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 3645 int UNUSED written = 0; 3646 IADDR UNUSED pc = abuf->addr; 3647 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 3648 3649{ 3650 { 3651 SI opval = FLD (f_indir_pc__dword); 3652 SET_H_SR (FLD (f_operand2), opval); 3653 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 3654 } 3655{ 3656 { 3657 BI opval = 0; 3658 CPU (h_xbit) = opval; 3659 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3660 } 3661 { 3662 BI opval = 0; 3663 SET_H_INSN_PREFIXED_P (opval); 3664 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3665 } 3666} 3667} 3668 3669#undef FLD 3670} 3671 NEXT (vpc); 3672 3673 CASE (sem, INSN_MOVE_C_SPRV10_P10) : /* move ${const32},${Pd} */ 3674{ 3675 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3676 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3677#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 3678 int UNUSED written = 0; 3679 IADDR UNUSED pc = abuf->addr; 3680 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 3681 3682{ 3683 { 3684 SI opval = FLD (f_indir_pc__dword); 3685 SET_H_SR (FLD (f_operand2), opval); 3686 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 3687 } 3688{ 3689 { 3690 BI opval = 0; 3691 CPU (h_xbit) = opval; 3692 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3693 } 3694 { 3695 BI opval = 0; 3696 SET_H_INSN_PREFIXED_P (opval); 3697 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3698 } 3699} 3700} 3701 3702#undef FLD 3703} 3704 NEXT (vpc); 3705 3706 CASE (sem, INSN_MOVE_C_SPRV10_P11) : /* move ${const32},${Pd} */ 3707{ 3708 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3709 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3710#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 3711 int UNUSED written = 0; 3712 IADDR UNUSED pc = abuf->addr; 3713 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 3714 3715{ 3716 { 3717 SI opval = FLD (f_indir_pc__dword); 3718 SET_H_SR (FLD (f_operand2), opval); 3719 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 3720 } 3721{ 3722 { 3723 BI opval = 0; 3724 CPU (h_xbit) = opval; 3725 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3726 } 3727 { 3728 BI opval = 0; 3729 SET_H_INSN_PREFIXED_P (opval); 3730 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3731 } 3732} 3733} 3734 3735#undef FLD 3736} 3737 NEXT (vpc); 3738 3739 CASE (sem, INSN_MOVE_C_SPRV10_P12) : /* move ${const32},${Pd} */ 3740{ 3741 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3742 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3743#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 3744 int UNUSED written = 0; 3745 IADDR UNUSED pc = abuf->addr; 3746 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 3747 3748{ 3749 { 3750 SI opval = FLD (f_indir_pc__dword); 3751 SET_H_SR (FLD (f_operand2), opval); 3752 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 3753 } 3754{ 3755 { 3756 BI opval = 0; 3757 CPU (h_xbit) = opval; 3758 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3759 } 3760 { 3761 BI opval = 0; 3762 SET_H_INSN_PREFIXED_P (opval); 3763 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3764 } 3765} 3766} 3767 3768#undef FLD 3769} 3770 NEXT (vpc); 3771 3772 CASE (sem, INSN_MOVE_C_SPRV10_P13) : /* move ${const32},${Pd} */ 3773{ 3774 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3775 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3776#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 3777 int UNUSED written = 0; 3778 IADDR UNUSED pc = abuf->addr; 3779 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 3780 3781{ 3782 { 3783 SI opval = FLD (f_indir_pc__dword); 3784 SET_H_SR (FLD (f_operand2), opval); 3785 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 3786 } 3787{ 3788 { 3789 BI opval = 0; 3790 CPU (h_xbit) = opval; 3791 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3792 } 3793 { 3794 BI opval = 0; 3795 SET_H_INSN_PREFIXED_P (opval); 3796 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3797 } 3798} 3799} 3800 3801#undef FLD 3802} 3803 NEXT (vpc); 3804 3805 CASE (sem, INSN_MOVE_C_SPRV10_P7) : /* move ${const32},${Pd} */ 3806{ 3807 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3808 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3809#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 3810 int UNUSED written = 0; 3811 IADDR UNUSED pc = abuf->addr; 3812 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 3813 3814{ 3815 { 3816 SI opval = FLD (f_indir_pc__dword); 3817 SET_H_SR (FLD (f_operand2), opval); 3818 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 3819 } 3820{ 3821 { 3822 BI opval = 0; 3823 CPU (h_xbit) = opval; 3824 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3825 } 3826 { 3827 BI opval = 0; 3828 SET_H_INSN_PREFIXED_P (opval); 3829 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3830 } 3831} 3832} 3833 3834#undef FLD 3835} 3836 NEXT (vpc); 3837 3838 CASE (sem, INSN_MOVE_C_SPRV10_P14) : /* move ${const32},${Pd} */ 3839{ 3840 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3841 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3842#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 3843 int UNUSED written = 0; 3844 IADDR UNUSED pc = abuf->addr; 3845 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 3846 3847{ 3848 { 3849 SI opval = FLD (f_indir_pc__dword); 3850 SET_H_SR (FLD (f_operand2), opval); 3851 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 3852 } 3853{ 3854 { 3855 BI opval = 0; 3856 CPU (h_xbit) = opval; 3857 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3858 } 3859 { 3860 BI opval = 0; 3861 SET_H_INSN_PREFIXED_P (opval); 3862 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3863 } 3864} 3865} 3866 3867#undef FLD 3868} 3869 NEXT (vpc); 3870 3871 CASE (sem, INSN_MOVE_C_SPRV10_P15) : /* move ${const32},${Pd} */ 3872{ 3873 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3874 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3875#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 3876 int UNUSED written = 0; 3877 IADDR UNUSED pc = abuf->addr; 3878 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 3879 3880{ 3881 { 3882 SI opval = FLD (f_indir_pc__dword); 3883 SET_H_SR (FLD (f_operand2), opval); 3884 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 3885 } 3886{ 3887 { 3888 BI opval = 0; 3889 CPU (h_xbit) = opval; 3890 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 3891 } 3892 { 3893 BI opval = 0; 3894 SET_H_INSN_PREFIXED_P (opval); 3895 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 3896 } 3897} 3898} 3899 3900#undef FLD 3901} 3902 NEXT (vpc); 3903 3904 CASE (sem, INSN_MOVE_SPR_MV10) : /* move ${Ps},[${Rd-sfield}${inc}] */ 3905{ 3906 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 3907 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 3908#define FLD(f) abuf->fields.sfmt_move_spr_mv10.f 3909 int UNUSED written = 0; 3910 IADDR UNUSED pc = abuf->addr; 3911 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 3912 3913{ 3914 SI tmp_rno; 3915 tmp_rno = FLD (f_operand2); 3916if (EQSI (tmp_rno, 5)) { 3917{ 3918 SI tmp_addr; 3919 BI tmp_postinc; 3920 tmp_postinc = FLD (f_memmode); 3921 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3922if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 3923if (EQBI (CPU (h_pbit), 0)) { 3924{ 3925 { 3926 HI opval = GET_H_SR (FLD (f_operand2)); 3927 SETMEMHI (current_cpu, pc, tmp_addr, opval); 3928 written |= (1 << 11); 3929 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 3930 } 3931 { 3932 BI opval = CPU (h_pbit); 3933 CPU (h_cbit) = opval; 3934 written |= (1 << 10); 3935 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 3936 } 3937} 3938} else { 3939 { 3940 BI opval = 1; 3941 CPU (h_cbit) = opval; 3942 written |= (1 << 10); 3943 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 3944 } 3945} 3946} else { 3947 { 3948 HI opval = GET_H_SR (FLD (f_operand2)); 3949 SETMEMHI (current_cpu, pc, tmp_addr, opval); 3950 written |= (1 << 11); 3951 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 3952 } 3953} 3954if (NEBI (tmp_postinc, 0)) { 3955{ 3956if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 3957 tmp_addr = ADDSI (tmp_addr, 2); 3958} 3959 { 3960 SI opval = tmp_addr; 3961 SET_H_GR (FLD (f_operand1), opval); 3962 written |= (1 << 9); 3963 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 3964 } 3965} 3966} 3967} 3968} 3969 else if (EQSI (tmp_rno, 9)) { 3970{ 3971 SI tmp_addr; 3972 BI tmp_postinc; 3973 tmp_postinc = FLD (f_memmode); 3974 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 3975if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 3976if (EQBI (CPU (h_pbit), 0)) { 3977{ 3978 { 3979 SI opval = GET_H_SR (FLD (f_operand2)); 3980 SETMEMSI (current_cpu, pc, tmp_addr, opval); 3981 written |= (1 << 13); 3982 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 3983 } 3984 { 3985 BI opval = CPU (h_pbit); 3986 CPU (h_cbit) = opval; 3987 written |= (1 << 10); 3988 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 3989 } 3990} 3991} else { 3992 { 3993 BI opval = 1; 3994 CPU (h_cbit) = opval; 3995 written |= (1 << 10); 3996 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 3997 } 3998} 3999} else { 4000 { 4001 SI opval = GET_H_SR (FLD (f_operand2)); 4002 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4003 written |= (1 << 13); 4004 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4005 } 4006} 4007if (NEBI (tmp_postinc, 0)) { 4008{ 4009if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4010 tmp_addr = ADDSI (tmp_addr, 4); 4011} 4012 { 4013 SI opval = tmp_addr; 4014 SET_H_GR (FLD (f_operand1), opval); 4015 written |= (1 << 9); 4016 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4017 } 4018} 4019} 4020} 4021} 4022 else if (EQSI (tmp_rno, 10)) { 4023{ 4024 SI tmp_addr; 4025 BI tmp_postinc; 4026 tmp_postinc = FLD (f_memmode); 4027 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4028if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 4029if (EQBI (CPU (h_pbit), 0)) { 4030{ 4031 { 4032 SI opval = GET_H_SR (FLD (f_operand2)); 4033 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4034 written |= (1 << 13); 4035 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4036 } 4037 { 4038 BI opval = CPU (h_pbit); 4039 CPU (h_cbit) = opval; 4040 written |= (1 << 10); 4041 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4042 } 4043} 4044} else { 4045 { 4046 BI opval = 1; 4047 CPU (h_cbit) = opval; 4048 written |= (1 << 10); 4049 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4050 } 4051} 4052} else { 4053 { 4054 SI opval = GET_H_SR (FLD (f_operand2)); 4055 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4056 written |= (1 << 13); 4057 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4058 } 4059} 4060if (NEBI (tmp_postinc, 0)) { 4061{ 4062if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4063 tmp_addr = ADDSI (tmp_addr, 4); 4064} 4065 { 4066 SI opval = tmp_addr; 4067 SET_H_GR (FLD (f_operand1), opval); 4068 written |= (1 << 9); 4069 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4070 } 4071} 4072} 4073} 4074} 4075 else if (EQSI (tmp_rno, 11)) { 4076{ 4077 SI tmp_addr; 4078 BI tmp_postinc; 4079 tmp_postinc = FLD (f_memmode); 4080 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4081if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 4082if (EQBI (CPU (h_pbit), 0)) { 4083{ 4084 { 4085 SI opval = GET_H_SR (FLD (f_operand2)); 4086 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4087 written |= (1 << 13); 4088 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4089 } 4090 { 4091 BI opval = CPU (h_pbit); 4092 CPU (h_cbit) = opval; 4093 written |= (1 << 10); 4094 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4095 } 4096} 4097} else { 4098 { 4099 BI opval = 1; 4100 CPU (h_cbit) = opval; 4101 written |= (1 << 10); 4102 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4103 } 4104} 4105} else { 4106 { 4107 SI opval = GET_H_SR (FLD (f_operand2)); 4108 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4109 written |= (1 << 13); 4110 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4111 } 4112} 4113if (NEBI (tmp_postinc, 0)) { 4114{ 4115if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4116 tmp_addr = ADDSI (tmp_addr, 4); 4117} 4118 { 4119 SI opval = tmp_addr; 4120 SET_H_GR (FLD (f_operand1), opval); 4121 written |= (1 << 9); 4122 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4123 } 4124} 4125} 4126} 4127} 4128 else if (EQSI (tmp_rno, 12)) { 4129{ 4130 SI tmp_addr; 4131 BI tmp_postinc; 4132 tmp_postinc = FLD (f_memmode); 4133 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4134if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 4135if (EQBI (CPU (h_pbit), 0)) { 4136{ 4137 { 4138 SI opval = GET_H_SR (FLD (f_operand2)); 4139 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4140 written |= (1 << 13); 4141 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4142 } 4143 { 4144 BI opval = CPU (h_pbit); 4145 CPU (h_cbit) = opval; 4146 written |= (1 << 10); 4147 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4148 } 4149} 4150} else { 4151 { 4152 BI opval = 1; 4153 CPU (h_cbit) = opval; 4154 written |= (1 << 10); 4155 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4156 } 4157} 4158} else { 4159 { 4160 SI opval = GET_H_SR (FLD (f_operand2)); 4161 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4162 written |= (1 << 13); 4163 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4164 } 4165} 4166if (NEBI (tmp_postinc, 0)) { 4167{ 4168if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4169 tmp_addr = ADDSI (tmp_addr, 4); 4170} 4171 { 4172 SI opval = tmp_addr; 4173 SET_H_GR (FLD (f_operand1), opval); 4174 written |= (1 << 9); 4175 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4176 } 4177} 4178} 4179} 4180} 4181 else if (EQSI (tmp_rno, 13)) { 4182{ 4183 SI tmp_addr; 4184 BI tmp_postinc; 4185 tmp_postinc = FLD (f_memmode); 4186 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4187if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 4188if (EQBI (CPU (h_pbit), 0)) { 4189{ 4190 { 4191 SI opval = GET_H_SR (FLD (f_operand2)); 4192 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4193 written |= (1 << 13); 4194 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4195 } 4196 { 4197 BI opval = CPU (h_pbit); 4198 CPU (h_cbit) = opval; 4199 written |= (1 << 10); 4200 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4201 } 4202} 4203} else { 4204 { 4205 BI opval = 1; 4206 CPU (h_cbit) = opval; 4207 written |= (1 << 10); 4208 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4209 } 4210} 4211} else { 4212 { 4213 SI opval = GET_H_SR (FLD (f_operand2)); 4214 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4215 written |= (1 << 13); 4216 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4217 } 4218} 4219if (NEBI (tmp_postinc, 0)) { 4220{ 4221if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4222 tmp_addr = ADDSI (tmp_addr, 4); 4223} 4224 { 4225 SI opval = tmp_addr; 4226 SET_H_GR (FLD (f_operand1), opval); 4227 written |= (1 << 9); 4228 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4229 } 4230} 4231} 4232} 4233} 4234 else if (EQSI (tmp_rno, 0)) { 4235{ 4236 SI tmp_addr; 4237 BI tmp_postinc; 4238 tmp_postinc = FLD (f_memmode); 4239 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4240if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 4241if (EQBI (CPU (h_pbit), 0)) { 4242{ 4243 { 4244 QI opval = GET_H_SR (FLD (f_operand2)); 4245 SETMEMQI (current_cpu, pc, tmp_addr, opval); 4246 written |= (1 << 12); 4247 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4248 } 4249 { 4250 BI opval = CPU (h_pbit); 4251 CPU (h_cbit) = opval; 4252 written |= (1 << 10); 4253 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4254 } 4255} 4256} else { 4257 { 4258 BI opval = 1; 4259 CPU (h_cbit) = opval; 4260 written |= (1 << 10); 4261 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4262 } 4263} 4264} else { 4265 { 4266 QI opval = GET_H_SR (FLD (f_operand2)); 4267 SETMEMQI (current_cpu, pc, tmp_addr, opval); 4268 written |= (1 << 12); 4269 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4270 } 4271} 4272if (NEBI (tmp_postinc, 0)) { 4273{ 4274if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4275 tmp_addr = ADDSI (tmp_addr, 1); 4276} 4277 { 4278 SI opval = tmp_addr; 4279 SET_H_GR (FLD (f_operand1), opval); 4280 written |= (1 << 9); 4281 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4282 } 4283} 4284} 4285} 4286} 4287 else if (EQSI (tmp_rno, 1)) { 4288{ 4289 SI tmp_addr; 4290 BI tmp_postinc; 4291 tmp_postinc = FLD (f_memmode); 4292 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4293if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 4294if (EQBI (CPU (h_pbit), 0)) { 4295{ 4296 { 4297 QI opval = GET_H_SR (FLD (f_operand2)); 4298 SETMEMQI (current_cpu, pc, tmp_addr, opval); 4299 written |= (1 << 12); 4300 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4301 } 4302 { 4303 BI opval = CPU (h_pbit); 4304 CPU (h_cbit) = opval; 4305 written |= (1 << 10); 4306 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4307 } 4308} 4309} else { 4310 { 4311 BI opval = 1; 4312 CPU (h_cbit) = opval; 4313 written |= (1 << 10); 4314 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4315 } 4316} 4317} else { 4318 { 4319 QI opval = GET_H_SR (FLD (f_operand2)); 4320 SETMEMQI (current_cpu, pc, tmp_addr, opval); 4321 written |= (1 << 12); 4322 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4323 } 4324} 4325if (NEBI (tmp_postinc, 0)) { 4326{ 4327if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4328 tmp_addr = ADDSI (tmp_addr, 1); 4329} 4330 { 4331 SI opval = tmp_addr; 4332 SET_H_GR (FLD (f_operand1), opval); 4333 written |= (1 << 9); 4334 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4335 } 4336} 4337} 4338} 4339} 4340 else if (EQSI (tmp_rno, 4)) { 4341{ 4342 SI tmp_addr; 4343 BI tmp_postinc; 4344 tmp_postinc = FLD (f_memmode); 4345 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4346if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 4347if (EQBI (CPU (h_pbit), 0)) { 4348{ 4349 { 4350 HI opval = GET_H_SR (FLD (f_operand2)); 4351 SETMEMHI (current_cpu, pc, tmp_addr, opval); 4352 written |= (1 << 11); 4353 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4354 } 4355 { 4356 BI opval = CPU (h_pbit); 4357 CPU (h_cbit) = opval; 4358 written |= (1 << 10); 4359 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4360 } 4361} 4362} else { 4363 { 4364 BI opval = 1; 4365 CPU (h_cbit) = opval; 4366 written |= (1 << 10); 4367 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4368 } 4369} 4370} else { 4371 { 4372 HI opval = GET_H_SR (FLD (f_operand2)); 4373 SETMEMHI (current_cpu, pc, tmp_addr, opval); 4374 written |= (1 << 11); 4375 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4376 } 4377} 4378if (NEBI (tmp_postinc, 0)) { 4379{ 4380if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4381 tmp_addr = ADDSI (tmp_addr, 2); 4382} 4383 { 4384 SI opval = tmp_addr; 4385 SET_H_GR (FLD (f_operand1), opval); 4386 written |= (1 << 9); 4387 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4388 } 4389} 4390} 4391} 4392} 4393 else if (EQSI (tmp_rno, 8)) { 4394{ 4395 SI tmp_addr; 4396 BI tmp_postinc; 4397 tmp_postinc = FLD (f_memmode); 4398 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4399if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 4400if (EQBI (CPU (h_pbit), 0)) { 4401{ 4402 { 4403 SI opval = GET_H_SR (FLD (f_operand2)); 4404 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4405 written |= (1 << 13); 4406 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4407 } 4408 { 4409 BI opval = CPU (h_pbit); 4410 CPU (h_cbit) = opval; 4411 written |= (1 << 10); 4412 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4413 } 4414} 4415} else { 4416 { 4417 BI opval = 1; 4418 CPU (h_cbit) = opval; 4419 written |= (1 << 10); 4420 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4421 } 4422} 4423} else { 4424 { 4425 SI opval = GET_H_SR (FLD (f_operand2)); 4426 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4427 written |= (1 << 13); 4428 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4429 } 4430} 4431if (NEBI (tmp_postinc, 0)) { 4432{ 4433if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4434 tmp_addr = ADDSI (tmp_addr, 4); 4435} 4436 { 4437 SI opval = tmp_addr; 4438 SET_H_GR (FLD (f_operand1), opval); 4439 written |= (1 << 9); 4440 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4441 } 4442} 4443} 4444} 4445} 4446 else if (EQSI (tmp_rno, 7)) { 4447{ 4448 SI tmp_addr; 4449 BI tmp_postinc; 4450 tmp_postinc = FLD (f_memmode); 4451 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4452if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 4453if (EQBI (CPU (h_pbit), 0)) { 4454{ 4455 { 4456 SI opval = GET_H_SR (FLD (f_operand2)); 4457 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4458 written |= (1 << 13); 4459 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4460 } 4461 { 4462 BI opval = CPU (h_pbit); 4463 CPU (h_cbit) = opval; 4464 written |= (1 << 10); 4465 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4466 } 4467} 4468} else { 4469 { 4470 BI opval = 1; 4471 CPU (h_cbit) = opval; 4472 written |= (1 << 10); 4473 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4474 } 4475} 4476} else { 4477 { 4478 SI opval = GET_H_SR (FLD (f_operand2)); 4479 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4480 written |= (1 << 13); 4481 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4482 } 4483} 4484if (NEBI (tmp_postinc, 0)) { 4485{ 4486if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4487 tmp_addr = ADDSI (tmp_addr, 4); 4488} 4489 { 4490 SI opval = tmp_addr; 4491 SET_H_GR (FLD (f_operand1), opval); 4492 written |= (1 << 9); 4493 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4494 } 4495} 4496} 4497} 4498} 4499 else if (EQSI (tmp_rno, 14)) { 4500{ 4501 SI tmp_addr; 4502 BI tmp_postinc; 4503 tmp_postinc = FLD (f_memmode); 4504 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4505if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 4506if (EQBI (CPU (h_pbit), 0)) { 4507{ 4508 { 4509 SI opval = GET_H_SR (FLD (f_operand2)); 4510 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4511 written |= (1 << 13); 4512 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4513 } 4514 { 4515 BI opval = CPU (h_pbit); 4516 CPU (h_cbit) = opval; 4517 written |= (1 << 10); 4518 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4519 } 4520} 4521} else { 4522 { 4523 BI opval = 1; 4524 CPU (h_cbit) = opval; 4525 written |= (1 << 10); 4526 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4527 } 4528} 4529} else { 4530 { 4531 SI opval = GET_H_SR (FLD (f_operand2)); 4532 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4533 written |= (1 << 13); 4534 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4535 } 4536} 4537if (NEBI (tmp_postinc, 0)) { 4538{ 4539if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4540 tmp_addr = ADDSI (tmp_addr, 4); 4541} 4542 { 4543 SI opval = tmp_addr; 4544 SET_H_GR (FLD (f_operand1), opval); 4545 written |= (1 << 9); 4546 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4547 } 4548} 4549} 4550} 4551} 4552 else if (EQSI (tmp_rno, 15)) { 4553{ 4554 SI tmp_addr; 4555 BI tmp_postinc; 4556 tmp_postinc = FLD (f_memmode); 4557 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4558if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 4559if (EQBI (CPU (h_pbit), 0)) { 4560{ 4561 { 4562 SI opval = GET_H_SR (FLD (f_operand2)); 4563 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4564 written |= (1 << 13); 4565 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4566 } 4567 { 4568 BI opval = CPU (h_pbit); 4569 CPU (h_cbit) = opval; 4570 written |= (1 << 10); 4571 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4572 } 4573} 4574} else { 4575 { 4576 BI opval = 1; 4577 CPU (h_cbit) = opval; 4578 written |= (1 << 10); 4579 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 4580 } 4581} 4582} else { 4583 { 4584 SI opval = GET_H_SR (FLD (f_operand2)); 4585 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4586 written |= (1 << 13); 4587 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4588 } 4589} 4590if (NEBI (tmp_postinc, 0)) { 4591{ 4592if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 4593 tmp_addr = ADDSI (tmp_addr, 4); 4594} 4595 { 4596 SI opval = tmp_addr; 4597 SET_H_GR (FLD (f_operand1), opval); 4598 written |= (1 << 9); 4599 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4600 } 4601} 4602} 4603} 4604} 4605 else { 4606cgen_rtx_error (current_cpu, "write from unimplemented special register"); 4607} 4608{ 4609 { 4610 BI opval = 0; 4611 CPU (h_xbit) = opval; 4612 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 4613 } 4614 { 4615 BI opval = 0; 4616 SET_H_INSN_PREFIXED_P (opval); 4617 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 4618 } 4619} 4620} 4621 4622 abuf->written = written; 4623#undef FLD 4624} 4625 NEXT (vpc); 4626 4627 CASE (sem, INSN_SBFS) : /* sbfs [${Rd-sfield}${inc}] */ 4628{ 4629 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 4630 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 4631#define FLD(f) abuf->fields.sfmt_empty.f 4632 int UNUSED written = 0; 4633 IADDR UNUSED pc = abuf->addr; 4634 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 4635 4636cgen_rtx_error (current_cpu, "SBFS isn't implemented"); 4637 4638#undef FLD 4639} 4640 NEXT (vpc); 4641 4642 CASE (sem, INSN_MOVEM_R_M) : /* movem ${Rs-dfield},[${Rd-sfield}${inc}] */ 4643{ 4644 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 4645 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 4646#define FLD(f) abuf->fields.sfmt_movem_r_m.f 4647 int UNUSED written = 0; 4648 IADDR UNUSED pc = abuf->addr; 4649 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 4650 4651{ 4652 SI tmp_addr; 4653 BI tmp_postinc; 4654 tmp_postinc = FLD (f_memmode); 4655{ 4656 SI tmp_dummy; 4657 tmp_dummy = GET_H_GR (FLD (f_operand2)); 4658} 4659 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4660{ 4661if (GESI (FLD (f_operand2), 15)) { 4662{ 4663 SI tmp_tmp; 4664 tmp_tmp = GET_H_GR (((UINT) 15)); 4665 { 4666 SI opval = tmp_tmp; 4667 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4668 written |= (1 << 23); 4669 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4670 } 4671 tmp_addr = ADDSI (tmp_addr, 4); 4672} 4673} 4674if (GESI (FLD (f_operand2), 14)) { 4675{ 4676 SI tmp_tmp; 4677 tmp_tmp = GET_H_GR (((UINT) 14)); 4678 { 4679 SI opval = tmp_tmp; 4680 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4681 written |= (1 << 23); 4682 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4683 } 4684 tmp_addr = ADDSI (tmp_addr, 4); 4685} 4686} 4687if (GESI (FLD (f_operand2), 13)) { 4688{ 4689 SI tmp_tmp; 4690 tmp_tmp = GET_H_GR (((UINT) 13)); 4691 { 4692 SI opval = tmp_tmp; 4693 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4694 written |= (1 << 23); 4695 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4696 } 4697 tmp_addr = ADDSI (tmp_addr, 4); 4698} 4699} 4700if (GESI (FLD (f_operand2), 12)) { 4701{ 4702 SI tmp_tmp; 4703 tmp_tmp = GET_H_GR (((UINT) 12)); 4704 { 4705 SI opval = tmp_tmp; 4706 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4707 written |= (1 << 23); 4708 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4709 } 4710 tmp_addr = ADDSI (tmp_addr, 4); 4711} 4712} 4713if (GESI (FLD (f_operand2), 11)) { 4714{ 4715 SI tmp_tmp; 4716 tmp_tmp = GET_H_GR (((UINT) 11)); 4717 { 4718 SI opval = tmp_tmp; 4719 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4720 written |= (1 << 23); 4721 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4722 } 4723 tmp_addr = ADDSI (tmp_addr, 4); 4724} 4725} 4726if (GESI (FLD (f_operand2), 10)) { 4727{ 4728 SI tmp_tmp; 4729 tmp_tmp = GET_H_GR (((UINT) 10)); 4730 { 4731 SI opval = tmp_tmp; 4732 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4733 written |= (1 << 23); 4734 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4735 } 4736 tmp_addr = ADDSI (tmp_addr, 4); 4737} 4738} 4739if (GESI (FLD (f_operand2), 9)) { 4740{ 4741 SI tmp_tmp; 4742 tmp_tmp = GET_H_GR (((UINT) 9)); 4743 { 4744 SI opval = tmp_tmp; 4745 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4746 written |= (1 << 23); 4747 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4748 } 4749 tmp_addr = ADDSI (tmp_addr, 4); 4750} 4751} 4752if (GESI (FLD (f_operand2), 8)) { 4753{ 4754 SI tmp_tmp; 4755 tmp_tmp = GET_H_GR (((UINT) 8)); 4756 { 4757 SI opval = tmp_tmp; 4758 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4759 written |= (1 << 23); 4760 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4761 } 4762 tmp_addr = ADDSI (tmp_addr, 4); 4763} 4764} 4765if (GESI (FLD (f_operand2), 7)) { 4766{ 4767 SI tmp_tmp; 4768 tmp_tmp = GET_H_GR (((UINT) 7)); 4769 { 4770 SI opval = tmp_tmp; 4771 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4772 written |= (1 << 23); 4773 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4774 } 4775 tmp_addr = ADDSI (tmp_addr, 4); 4776} 4777} 4778if (GESI (FLD (f_operand2), 6)) { 4779{ 4780 SI tmp_tmp; 4781 tmp_tmp = GET_H_GR (((UINT) 6)); 4782 { 4783 SI opval = tmp_tmp; 4784 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4785 written |= (1 << 23); 4786 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4787 } 4788 tmp_addr = ADDSI (tmp_addr, 4); 4789} 4790} 4791if (GESI (FLD (f_operand2), 5)) { 4792{ 4793 SI tmp_tmp; 4794 tmp_tmp = GET_H_GR (((UINT) 5)); 4795 { 4796 SI opval = tmp_tmp; 4797 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4798 written |= (1 << 23); 4799 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4800 } 4801 tmp_addr = ADDSI (tmp_addr, 4); 4802} 4803} 4804if (GESI (FLD (f_operand2), 4)) { 4805{ 4806 SI tmp_tmp; 4807 tmp_tmp = GET_H_GR (((UINT) 4)); 4808 { 4809 SI opval = tmp_tmp; 4810 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4811 written |= (1 << 23); 4812 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4813 } 4814 tmp_addr = ADDSI (tmp_addr, 4); 4815} 4816} 4817if (GESI (FLD (f_operand2), 3)) { 4818{ 4819 SI tmp_tmp; 4820 tmp_tmp = GET_H_GR (((UINT) 3)); 4821 { 4822 SI opval = tmp_tmp; 4823 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4824 written |= (1 << 23); 4825 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4826 } 4827 tmp_addr = ADDSI (tmp_addr, 4); 4828} 4829} 4830if (GESI (FLD (f_operand2), 2)) { 4831{ 4832 SI tmp_tmp; 4833 tmp_tmp = GET_H_GR (((UINT) 2)); 4834 { 4835 SI opval = tmp_tmp; 4836 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4837 written |= (1 << 23); 4838 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4839 } 4840 tmp_addr = ADDSI (tmp_addr, 4); 4841} 4842} 4843if (GESI (FLD (f_operand2), 1)) { 4844{ 4845 SI tmp_tmp; 4846 tmp_tmp = GET_H_GR (((UINT) 1)); 4847 { 4848 SI opval = tmp_tmp; 4849 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4850 written |= (1 << 23); 4851 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4852 } 4853 tmp_addr = ADDSI (tmp_addr, 4); 4854} 4855} 4856if (GESI (FLD (f_operand2), 0)) { 4857{ 4858 SI tmp_tmp; 4859 tmp_tmp = GET_H_GR (((UINT) 0)); 4860 { 4861 SI opval = tmp_tmp; 4862 SETMEMSI (current_cpu, pc, tmp_addr, opval); 4863 written |= (1 << 23); 4864 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 4865 } 4866 tmp_addr = ADDSI (tmp_addr, 4); 4867} 4868} 4869} 4870if (NEBI (tmp_postinc, 0)) { 4871 { 4872 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32))); 4873 SET_H_GR (FLD (f_operand1), opval); 4874 written |= (1 << 22); 4875 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4876 } 4877} 4878{ 4879 { 4880 BI opval = 0; 4881 CPU (h_xbit) = opval; 4882 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 4883 } 4884 { 4885 BI opval = 0; 4886 SET_H_INSN_PREFIXED_P (opval); 4887 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 4888 } 4889} 4890} 4891 4892 abuf->written = written; 4893#undef FLD 4894} 4895 NEXT (vpc); 4896 4897 CASE (sem, INSN_MOVEM_M_R) : /* movem [${Rs}${inc}],${Rd} */ 4898{ 4899 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 4900 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 4901#define FLD(f) abuf->fields.sfmt_movem_m_r.f 4902 int UNUSED written = 0; 4903 IADDR UNUSED pc = abuf->addr; 4904 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 4905 4906{ 4907 SI tmp_addr; 4908 BI tmp_postinc; 4909 tmp_postinc = FLD (f_memmode); 4910 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 4911{ 4912 SI tmp_dummy; 4913 tmp_dummy = GET_H_GR (FLD (f_operand2)); 4914} 4915{ 4916if (GESI (FLD (f_operand2), 14)) { 4917{ 4918 SI tmp_tmp; 4919 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 4920 { 4921 SI opval = tmp_tmp; 4922 SET_H_GR (((UINT) 14), opval); 4923 written |= (1 << 14); 4924 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4925 } 4926 tmp_addr = ADDSI (tmp_addr, 4); 4927} 4928} 4929if (GESI (FLD (f_operand2), 13)) { 4930{ 4931 SI tmp_tmp; 4932 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 4933 { 4934 SI opval = tmp_tmp; 4935 SET_H_GR (((UINT) 13), opval); 4936 written |= (1 << 13); 4937 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4938 } 4939 tmp_addr = ADDSI (tmp_addr, 4); 4940} 4941} 4942if (GESI (FLD (f_operand2), 12)) { 4943{ 4944 SI tmp_tmp; 4945 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 4946 { 4947 SI opval = tmp_tmp; 4948 SET_H_GR (((UINT) 12), opval); 4949 written |= (1 << 12); 4950 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4951 } 4952 tmp_addr = ADDSI (tmp_addr, 4); 4953} 4954} 4955if (GESI (FLD (f_operand2), 11)) { 4956{ 4957 SI tmp_tmp; 4958 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 4959 { 4960 SI opval = tmp_tmp; 4961 SET_H_GR (((UINT) 11), opval); 4962 written |= (1 << 11); 4963 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4964 } 4965 tmp_addr = ADDSI (tmp_addr, 4); 4966} 4967} 4968if (GESI (FLD (f_operand2), 10)) { 4969{ 4970 SI tmp_tmp; 4971 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 4972 { 4973 SI opval = tmp_tmp; 4974 SET_H_GR (((UINT) 10), opval); 4975 written |= (1 << 10); 4976 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4977 } 4978 tmp_addr = ADDSI (tmp_addr, 4); 4979} 4980} 4981if (GESI (FLD (f_operand2), 9)) { 4982{ 4983 SI tmp_tmp; 4984 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 4985 { 4986 SI opval = tmp_tmp; 4987 SET_H_GR (((UINT) 9), opval); 4988 written |= (1 << 22); 4989 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 4990 } 4991 tmp_addr = ADDSI (tmp_addr, 4); 4992} 4993} 4994if (GESI (FLD (f_operand2), 8)) { 4995{ 4996 SI tmp_tmp; 4997 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 4998 { 4999 SI opval = tmp_tmp; 5000 SET_H_GR (((UINT) 8), opval); 5001 written |= (1 << 21); 5002 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5003 } 5004 tmp_addr = ADDSI (tmp_addr, 4); 5005} 5006} 5007if (GESI (FLD (f_operand2), 7)) { 5008{ 5009 SI tmp_tmp; 5010 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5011 { 5012 SI opval = tmp_tmp; 5013 SET_H_GR (((UINT) 7), opval); 5014 written |= (1 << 20); 5015 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5016 } 5017 tmp_addr = ADDSI (tmp_addr, 4); 5018} 5019} 5020if (GESI (FLD (f_operand2), 6)) { 5021{ 5022 SI tmp_tmp; 5023 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5024 { 5025 SI opval = tmp_tmp; 5026 SET_H_GR (((UINT) 6), opval); 5027 written |= (1 << 19); 5028 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5029 } 5030 tmp_addr = ADDSI (tmp_addr, 4); 5031} 5032} 5033if (GESI (FLD (f_operand2), 5)) { 5034{ 5035 SI tmp_tmp; 5036 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5037 { 5038 SI opval = tmp_tmp; 5039 SET_H_GR (((UINT) 5), opval); 5040 written |= (1 << 18); 5041 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5042 } 5043 tmp_addr = ADDSI (tmp_addr, 4); 5044} 5045} 5046if (GESI (FLD (f_operand2), 4)) { 5047{ 5048 SI tmp_tmp; 5049 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5050 { 5051 SI opval = tmp_tmp; 5052 SET_H_GR (((UINT) 4), opval); 5053 written |= (1 << 17); 5054 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5055 } 5056 tmp_addr = ADDSI (tmp_addr, 4); 5057} 5058} 5059if (GESI (FLD (f_operand2), 3)) { 5060{ 5061 SI tmp_tmp; 5062 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5063 { 5064 SI opval = tmp_tmp; 5065 SET_H_GR (((UINT) 3), opval); 5066 written |= (1 << 16); 5067 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5068 } 5069 tmp_addr = ADDSI (tmp_addr, 4); 5070} 5071} 5072if (GESI (FLD (f_operand2), 2)) { 5073{ 5074 SI tmp_tmp; 5075 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5076 { 5077 SI opval = tmp_tmp; 5078 SET_H_GR (((UINT) 2), opval); 5079 written |= (1 << 15); 5080 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5081 } 5082 tmp_addr = ADDSI (tmp_addr, 4); 5083} 5084} 5085if (GESI (FLD (f_operand2), 1)) { 5086{ 5087 SI tmp_tmp; 5088 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5089 { 5090 SI opval = tmp_tmp; 5091 SET_H_GR (((UINT) 1), opval); 5092 written |= (1 << 9); 5093 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5094 } 5095 tmp_addr = ADDSI (tmp_addr, 4); 5096} 5097} 5098if (GESI (FLD (f_operand2), 0)) { 5099{ 5100 SI tmp_tmp; 5101 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5102 { 5103 SI opval = tmp_tmp; 5104 SET_H_GR (((UINT) 0), opval); 5105 written |= (1 << 8); 5106 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5107 } 5108 tmp_addr = ADDSI (tmp_addr, 4); 5109} 5110} 5111} 5112if (NEBI (tmp_postinc, 0)) { 5113 { 5114 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32))); 5115 SET_H_GR (FLD (f_operand1), opval); 5116 written |= (1 << 7); 5117 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5118 } 5119} 5120{ 5121 { 5122 BI opval = 0; 5123 CPU (h_xbit) = opval; 5124 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 5125 } 5126 { 5127 BI opval = 0; 5128 SET_H_INSN_PREFIXED_P (opval); 5129 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 5130 } 5131} 5132} 5133 5134 abuf->written = written; 5135#undef FLD 5136} 5137 NEXT (vpc); 5138 5139 CASE (sem, INSN_MOVEM_M_PC) : /* movem [${Rs}${inc}],${Rd} */ 5140{ 5141 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 5142 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 5143#define FLD(f) abuf->fields.sfmt_movem_m_r.f 5144 int UNUSED written = 0; 5145 IADDR UNUSED pc = abuf->addr; 5146 SEM_BRANCH_INIT 5147 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 5148 5149{ 5150 SI tmp_addr; 5151 BI tmp_postinc; 5152 tmp_postinc = FLD (f_memmode); 5153 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 5154{ 5155 { 5156 USI opval = GETMEMSI (current_cpu, pc, tmp_addr); 5157 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc); 5158 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 5159 } 5160 tmp_addr = ADDSI (tmp_addr, 4); 5161{ 5162 SI tmp_tmp; 5163 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5164 { 5165 SI opval = tmp_tmp; 5166 SET_H_GR (((UINT) 14), opval); 5167 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5168 } 5169 tmp_addr = ADDSI (tmp_addr, 4); 5170} 5171{ 5172 SI tmp_tmp; 5173 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5174 { 5175 SI opval = tmp_tmp; 5176 SET_H_GR (((UINT) 13), opval); 5177 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5178 } 5179 tmp_addr = ADDSI (tmp_addr, 4); 5180} 5181{ 5182 SI tmp_tmp; 5183 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5184 { 5185 SI opval = tmp_tmp; 5186 SET_H_GR (((UINT) 12), opval); 5187 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5188 } 5189 tmp_addr = ADDSI (tmp_addr, 4); 5190} 5191{ 5192 SI tmp_tmp; 5193 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5194 { 5195 SI opval = tmp_tmp; 5196 SET_H_GR (((UINT) 11), opval); 5197 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5198 } 5199 tmp_addr = ADDSI (tmp_addr, 4); 5200} 5201{ 5202 SI tmp_tmp; 5203 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5204 { 5205 SI opval = tmp_tmp; 5206 SET_H_GR (((UINT) 10), opval); 5207 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5208 } 5209 tmp_addr = ADDSI (tmp_addr, 4); 5210} 5211{ 5212 SI tmp_tmp; 5213 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5214 { 5215 SI opval = tmp_tmp; 5216 SET_H_GR (((UINT) 9), opval); 5217 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5218 } 5219 tmp_addr = ADDSI (tmp_addr, 4); 5220} 5221{ 5222 SI tmp_tmp; 5223 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5224 { 5225 SI opval = tmp_tmp; 5226 SET_H_GR (((UINT) 8), opval); 5227 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5228 } 5229 tmp_addr = ADDSI (tmp_addr, 4); 5230} 5231{ 5232 SI tmp_tmp; 5233 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5234 { 5235 SI opval = tmp_tmp; 5236 SET_H_GR (((UINT) 7), opval); 5237 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5238 } 5239 tmp_addr = ADDSI (tmp_addr, 4); 5240} 5241{ 5242 SI tmp_tmp; 5243 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5244 { 5245 SI opval = tmp_tmp; 5246 SET_H_GR (((UINT) 6), opval); 5247 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5248 } 5249 tmp_addr = ADDSI (tmp_addr, 4); 5250} 5251{ 5252 SI tmp_tmp; 5253 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5254 { 5255 SI opval = tmp_tmp; 5256 SET_H_GR (((UINT) 5), opval); 5257 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5258 } 5259 tmp_addr = ADDSI (tmp_addr, 4); 5260} 5261{ 5262 SI tmp_tmp; 5263 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5264 { 5265 SI opval = tmp_tmp; 5266 SET_H_GR (((UINT) 4), opval); 5267 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5268 } 5269 tmp_addr = ADDSI (tmp_addr, 4); 5270} 5271{ 5272 SI tmp_tmp; 5273 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5274 { 5275 SI opval = tmp_tmp; 5276 SET_H_GR (((UINT) 3), opval); 5277 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5278 } 5279 tmp_addr = ADDSI (tmp_addr, 4); 5280} 5281{ 5282 SI tmp_tmp; 5283 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5284 { 5285 SI opval = tmp_tmp; 5286 SET_H_GR (((UINT) 2), opval); 5287 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5288 } 5289 tmp_addr = ADDSI (tmp_addr, 4); 5290} 5291{ 5292 SI tmp_tmp; 5293 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5294 { 5295 SI opval = tmp_tmp; 5296 SET_H_GR (((UINT) 1), opval); 5297 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5298 } 5299 tmp_addr = ADDSI (tmp_addr, 4); 5300} 5301{ 5302 SI tmp_tmp; 5303 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr); 5304 { 5305 SI opval = tmp_tmp; 5306 SET_H_GR (((UINT) 0), opval); 5307 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5308 } 5309 tmp_addr = ADDSI (tmp_addr, 4); 5310} 5311} 5312if (NEBI (tmp_postinc, 0)) { 5313 { 5314 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32))); 5315 SET_H_GR (FLD (f_operand1), opval); 5316 written |= (1 << 5); 5317 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5318 } 5319} 5320{ 5321 { 5322 BI opval = 0; 5323 CPU (h_xbit) = opval; 5324 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 5325 } 5326 { 5327 BI opval = 0; 5328 SET_H_INSN_PREFIXED_P (opval); 5329 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 5330 } 5331} 5332} 5333 5334 abuf->written = written; 5335 SEM_BRANCH_FINI (vpc); 5336#undef FLD 5337} 5338 NEXT (vpc); 5339 5340 CASE (sem, INSN_ADD_B_R) : /* add.b $Rs,$Rd */ 5341{ 5342 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 5343 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 5344#define FLD(f) abuf->fields.sfmt_add_b_r.f 5345 int UNUSED written = 0; 5346 IADDR UNUSED pc = abuf->addr; 5347 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 5348 5349{ 5350 QI tmp_tmpopd; 5351 QI tmp_tmpops; 5352 BI tmp_carry; 5353 QI tmp_newval; 5354 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 5355 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 5356 tmp_carry = CPU (h_cbit); 5357 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 5358{ 5359 SI tmp_oldregval; 5360 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 5361 { 5362 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00)); 5363 SET_H_GR (FLD (f_operand2), opval); 5364 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5365 } 5366} 5367{ 5368 { 5369 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0)))); 5370 CPU (h_cbit) = opval; 5371 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 5372 } 5373 { 5374 BI opval = LTQI (tmp_newval, 0); 5375 CPU (h_nbit) = opval; 5376 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 5377 } 5378 { 5379 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 5380 CPU (h_zbit) = opval; 5381 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 5382 } 5383 { 5384 BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0))); 5385 CPU (h_vbit) = opval; 5386 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 5387 } 5388{ 5389 { 5390 BI opval = 0; 5391 CPU (h_xbit) = opval; 5392 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 5393 } 5394 { 5395 BI opval = 0; 5396 SET_H_INSN_PREFIXED_P (opval); 5397 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 5398 } 5399} 5400} 5401} 5402 5403#undef FLD 5404} 5405 NEXT (vpc); 5406 5407 CASE (sem, INSN_ADD_W_R) : /* add.w $Rs,$Rd */ 5408{ 5409 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 5410 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 5411#define FLD(f) abuf->fields.sfmt_add_b_r.f 5412 int UNUSED written = 0; 5413 IADDR UNUSED pc = abuf->addr; 5414 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 5415 5416{ 5417 HI tmp_tmpopd; 5418 HI tmp_tmpops; 5419 BI tmp_carry; 5420 HI tmp_newval; 5421 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 5422 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 5423 tmp_carry = CPU (h_cbit); 5424 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 5425{ 5426 SI tmp_oldregval; 5427 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 5428 { 5429 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 5430 SET_H_GR (FLD (f_operand2), opval); 5431 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5432 } 5433} 5434{ 5435 { 5436 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0)))); 5437 CPU (h_cbit) = opval; 5438 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 5439 } 5440 { 5441 BI opval = LTHI (tmp_newval, 0); 5442 CPU (h_nbit) = opval; 5443 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 5444 } 5445 { 5446 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 5447 CPU (h_zbit) = opval; 5448 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 5449 } 5450 { 5451 BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0))); 5452 CPU (h_vbit) = opval; 5453 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 5454 } 5455{ 5456 { 5457 BI opval = 0; 5458 CPU (h_xbit) = opval; 5459 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 5460 } 5461 { 5462 BI opval = 0; 5463 SET_H_INSN_PREFIXED_P (opval); 5464 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 5465 } 5466} 5467} 5468} 5469 5470#undef FLD 5471} 5472 NEXT (vpc); 5473 5474 CASE (sem, INSN_ADD_D_R) : /* add.d $Rs,$Rd */ 5475{ 5476 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 5477 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 5478#define FLD(f) abuf->fields.sfmt_add_b_r.f 5479 int UNUSED written = 0; 5480 IADDR UNUSED pc = abuf->addr; 5481 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 5482 5483{ 5484 SI tmp_tmpopd; 5485 SI tmp_tmpops; 5486 BI tmp_carry; 5487 SI tmp_newval; 5488 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 5489 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 5490 tmp_carry = CPU (h_cbit); 5491 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 5492 { 5493 SI opval = tmp_newval; 5494 SET_H_GR (FLD (f_operand2), opval); 5495 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5496 } 5497{ 5498 { 5499 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 5500 CPU (h_cbit) = opval; 5501 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 5502 } 5503 { 5504 BI opval = LTSI (tmp_newval, 0); 5505 CPU (h_nbit) = opval; 5506 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 5507 } 5508 { 5509 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 5510 CPU (h_zbit) = opval; 5511 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 5512 } 5513 { 5514 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 5515 CPU (h_vbit) = opval; 5516 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 5517 } 5518{ 5519 { 5520 BI opval = 0; 5521 CPU (h_xbit) = opval; 5522 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 5523 } 5524 { 5525 BI opval = 0; 5526 SET_H_INSN_PREFIXED_P (opval); 5527 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 5528 } 5529} 5530} 5531} 5532 5533#undef FLD 5534} 5535 NEXT (vpc); 5536 5537 CASE (sem, INSN_ADD_M_B_M) : /* add-m.b [${Rs}${inc}],${Rd} */ 5538{ 5539 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 5540 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 5541#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 5542 int UNUSED written = 0; 5543 IADDR UNUSED pc = abuf->addr; 5544 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 5545 5546{ 5547 QI tmp_tmpopd; 5548 QI tmp_tmpops; 5549 BI tmp_carry; 5550 QI tmp_newval; 5551 tmp_tmpops = ({ SI tmp_addr; 5552 QI tmp_tmp_mem; 5553 BI tmp_postinc; 5554 tmp_postinc = FLD (f_memmode); 5555; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 5556; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 5557; if (NEBI (tmp_postinc, 0)) { 5558{ 5559if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 5560 tmp_addr = ADDSI (tmp_addr, 1); 5561} 5562 { 5563 SI opval = tmp_addr; 5564 SET_H_GR (FLD (f_operand1), opval); 5565 written |= (1 << 12); 5566 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5567 } 5568} 5569} 5570; tmp_tmp_mem; }); 5571 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 5572 tmp_carry = CPU (h_cbit); 5573 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 5574{ 5575 SI tmp_oldregval; 5576 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2)))); 5577 { 5578 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00)); 5579 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 5580 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5581 } 5582} 5583{ 5584 { 5585 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0)))); 5586 CPU (h_cbit) = opval; 5587 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 5588 } 5589 { 5590 BI opval = LTQI (tmp_newval, 0); 5591 CPU (h_nbit) = opval; 5592 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 5593 } 5594 { 5595 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 5596 CPU (h_zbit) = opval; 5597 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 5598 } 5599 { 5600 BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0))); 5601 CPU (h_vbit) = opval; 5602 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 5603 } 5604{ 5605 { 5606 BI opval = 0; 5607 CPU (h_xbit) = opval; 5608 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 5609 } 5610 { 5611 BI opval = 0; 5612 SET_H_INSN_PREFIXED_P (opval); 5613 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 5614 } 5615} 5616} 5617} 5618 5619 abuf->written = written; 5620#undef FLD 5621} 5622 NEXT (vpc); 5623 5624 CASE (sem, INSN_ADD_M_W_M) : /* add-m.w [${Rs}${inc}],${Rd} */ 5625{ 5626 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 5627 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 5628#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 5629 int UNUSED written = 0; 5630 IADDR UNUSED pc = abuf->addr; 5631 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 5632 5633{ 5634 HI tmp_tmpopd; 5635 HI tmp_tmpops; 5636 BI tmp_carry; 5637 HI tmp_newval; 5638 tmp_tmpops = ({ SI tmp_addr; 5639 HI tmp_tmp_mem; 5640 BI tmp_postinc; 5641 tmp_postinc = FLD (f_memmode); 5642; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 5643; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 5644; if (NEBI (tmp_postinc, 0)) { 5645{ 5646if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 5647 tmp_addr = ADDSI (tmp_addr, 2); 5648} 5649 { 5650 SI opval = tmp_addr; 5651 SET_H_GR (FLD (f_operand1), opval); 5652 written |= (1 << 12); 5653 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5654 } 5655} 5656} 5657; tmp_tmp_mem; }); 5658 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 5659 tmp_carry = CPU (h_cbit); 5660 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 5661{ 5662 SI tmp_oldregval; 5663 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2)))); 5664 { 5665 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 5666 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 5667 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5668 } 5669} 5670{ 5671 { 5672 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0)))); 5673 CPU (h_cbit) = opval; 5674 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 5675 } 5676 { 5677 BI opval = LTHI (tmp_newval, 0); 5678 CPU (h_nbit) = opval; 5679 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 5680 } 5681 { 5682 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 5683 CPU (h_zbit) = opval; 5684 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 5685 } 5686 { 5687 BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0))); 5688 CPU (h_vbit) = opval; 5689 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 5690 } 5691{ 5692 { 5693 BI opval = 0; 5694 CPU (h_xbit) = opval; 5695 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 5696 } 5697 { 5698 BI opval = 0; 5699 SET_H_INSN_PREFIXED_P (opval); 5700 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 5701 } 5702} 5703} 5704} 5705 5706 abuf->written = written; 5707#undef FLD 5708} 5709 NEXT (vpc); 5710 5711 CASE (sem, INSN_ADD_M_D_M) : /* add-m.d [${Rs}${inc}],${Rd} */ 5712{ 5713 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 5714 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 5715#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 5716 int UNUSED written = 0; 5717 IADDR UNUSED pc = abuf->addr; 5718 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 5719 5720{ 5721 SI tmp_tmpopd; 5722 SI tmp_tmpops; 5723 BI tmp_carry; 5724 SI tmp_newval; 5725 tmp_tmpops = ({ SI tmp_addr; 5726 SI tmp_tmp_mem; 5727 BI tmp_postinc; 5728 tmp_postinc = FLD (f_memmode); 5729; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 5730; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 5731; if (NEBI (tmp_postinc, 0)) { 5732{ 5733if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 5734 tmp_addr = ADDSI (tmp_addr, 4); 5735} 5736 { 5737 SI opval = tmp_addr; 5738 SET_H_GR (FLD (f_operand1), opval); 5739 written |= (1 << 11); 5740 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5741 } 5742} 5743} 5744; tmp_tmp_mem; }); 5745 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 5746 tmp_carry = CPU (h_cbit); 5747 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 5748 { 5749 SI opval = tmp_newval; 5750 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 5751 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5752 } 5753{ 5754 { 5755 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 5756 CPU (h_cbit) = opval; 5757 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 5758 } 5759 { 5760 BI opval = LTSI (tmp_newval, 0); 5761 CPU (h_nbit) = opval; 5762 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 5763 } 5764 { 5765 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 5766 CPU (h_zbit) = opval; 5767 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 5768 } 5769 { 5770 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 5771 CPU (h_vbit) = opval; 5772 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 5773 } 5774{ 5775 { 5776 BI opval = 0; 5777 CPU (h_xbit) = opval; 5778 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 5779 } 5780 { 5781 BI opval = 0; 5782 SET_H_INSN_PREFIXED_P (opval); 5783 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 5784 } 5785} 5786} 5787} 5788 5789 abuf->written = written; 5790#undef FLD 5791} 5792 NEXT (vpc); 5793 5794 CASE (sem, INSN_ADDCBR) : /* add.b ${sconst8}],${Rd} */ 5795{ 5796 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 5797 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 5798#define FLD(f) abuf->fields.sfmt_addcbr.f 5799 int UNUSED written = 0; 5800 IADDR UNUSED pc = abuf->addr; 5801 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 5802 5803{ 5804 QI tmp_tmpopd; 5805 QI tmp_tmpops; 5806 BI tmp_carry; 5807 QI tmp_newval; 5808 tmp_tmpops = FLD (f_indir_pc__byte); 5809 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 5810 tmp_carry = CPU (h_cbit); 5811 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 5812{ 5813 SI tmp_oldregval; 5814 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 5815 { 5816 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00)); 5817 SET_H_GR (FLD (f_operand2), opval); 5818 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5819 } 5820} 5821{ 5822 { 5823 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0)))); 5824 CPU (h_cbit) = opval; 5825 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 5826 } 5827 { 5828 BI opval = LTQI (tmp_newval, 0); 5829 CPU (h_nbit) = opval; 5830 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 5831 } 5832 { 5833 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 5834 CPU (h_zbit) = opval; 5835 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 5836 } 5837 { 5838 BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0))); 5839 CPU (h_vbit) = opval; 5840 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 5841 } 5842{ 5843 { 5844 BI opval = 0; 5845 CPU (h_xbit) = opval; 5846 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 5847 } 5848 { 5849 BI opval = 0; 5850 SET_H_INSN_PREFIXED_P (opval); 5851 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 5852 } 5853} 5854} 5855} 5856 5857#undef FLD 5858} 5859 NEXT (vpc); 5860 5861 CASE (sem, INSN_ADDCWR) : /* add.w ${sconst16}],${Rd} */ 5862{ 5863 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 5864 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 5865#define FLD(f) abuf->fields.sfmt_addcwr.f 5866 int UNUSED written = 0; 5867 IADDR UNUSED pc = abuf->addr; 5868 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 5869 5870{ 5871 HI tmp_tmpopd; 5872 HI tmp_tmpops; 5873 BI tmp_carry; 5874 HI tmp_newval; 5875 tmp_tmpops = FLD (f_indir_pc__word); 5876 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 5877 tmp_carry = CPU (h_cbit); 5878 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 5879{ 5880 SI tmp_oldregval; 5881 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 5882 { 5883 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 5884 SET_H_GR (FLD (f_operand2), opval); 5885 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5886 } 5887} 5888{ 5889 { 5890 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0)))); 5891 CPU (h_cbit) = opval; 5892 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 5893 } 5894 { 5895 BI opval = LTHI (tmp_newval, 0); 5896 CPU (h_nbit) = opval; 5897 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 5898 } 5899 { 5900 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 5901 CPU (h_zbit) = opval; 5902 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 5903 } 5904 { 5905 BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0))); 5906 CPU (h_vbit) = opval; 5907 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 5908 } 5909{ 5910 { 5911 BI opval = 0; 5912 CPU (h_xbit) = opval; 5913 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 5914 } 5915 { 5916 BI opval = 0; 5917 SET_H_INSN_PREFIXED_P (opval); 5918 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 5919 } 5920} 5921} 5922} 5923 5924#undef FLD 5925} 5926 NEXT (vpc); 5927 5928 CASE (sem, INSN_ADDCDR) : /* add.d ${const32}],${Rd} */ 5929{ 5930 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 5931 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 5932#define FLD(f) abuf->fields.sfmt_addcdr.f 5933 int UNUSED written = 0; 5934 IADDR UNUSED pc = abuf->addr; 5935 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 5936 5937{ 5938 SI tmp_tmpopd; 5939 SI tmp_tmpops; 5940 BI tmp_carry; 5941 SI tmp_newval; 5942 tmp_tmpops = FLD (f_indir_pc__dword); 5943 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 5944 tmp_carry = CPU (h_cbit); 5945 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 5946 { 5947 SI opval = tmp_newval; 5948 SET_H_GR (FLD (f_operand2), opval); 5949 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 5950 } 5951{ 5952 { 5953 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 5954 CPU (h_cbit) = opval; 5955 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 5956 } 5957 { 5958 BI opval = LTSI (tmp_newval, 0); 5959 CPU (h_nbit) = opval; 5960 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 5961 } 5962 { 5963 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 5964 CPU (h_zbit) = opval; 5965 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 5966 } 5967 { 5968 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 5969 CPU (h_vbit) = opval; 5970 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 5971 } 5972{ 5973 { 5974 BI opval = 0; 5975 CPU (h_xbit) = opval; 5976 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 5977 } 5978 { 5979 BI opval = 0; 5980 SET_H_INSN_PREFIXED_P (opval); 5981 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 5982 } 5983} 5984} 5985} 5986 5987#undef FLD 5988} 5989 NEXT (vpc); 5990 5991 CASE (sem, INSN_ADDCPC) : /* add.d ${sconst32},PC */ 5992{ 5993 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 5994 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 5995#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 5996 int UNUSED written = 0; 5997 IADDR UNUSED pc = abuf->addr; 5998 SEM_BRANCH_INIT 5999 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 6000 6001{ 6002 SI tmp_newpc; 6003 SI tmp_oldpc; 6004 SI tmp_offs; 6005 tmp_offs = FLD (f_indir_pc__dword); 6006 tmp_oldpc = ADDSI (pc, 6); 6007 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs); 6008 { 6009 USI opval = tmp_newpc; 6010 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc); 6011 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 6012 } 6013{ 6014 { 6015 BI opval = ORIF (ANDIF (LTSI (tmp_offs, 0), LTSI (tmp_oldpc, 0)), ORIF (ANDIF (LTSI (tmp_oldpc, 0), GESI (tmp_newpc, 0)), ANDIF (LTSI (tmp_offs, 0), GESI (tmp_newpc, 0)))); 6016 CPU (h_cbit) = opval; 6017 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6018 } 6019 { 6020 BI opval = LTSI (tmp_newpc, 0); 6021 CPU (h_nbit) = opval; 6022 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6023 } 6024 { 6025 BI opval = ANDIF (EQSI (tmp_newpc, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6026 CPU (h_zbit) = opval; 6027 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6028 } 6029 { 6030 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_offs, 0), LTSI (tmp_oldpc, 0)), GESI (tmp_newpc, 0)), ANDIF (ANDIF (GESI (tmp_offs, 0), GESI (tmp_oldpc, 0)), LTSI (tmp_newpc, 0))); 6031 CPU (h_vbit) = opval; 6032 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6033 } 6034{ 6035 { 6036 BI opval = 0; 6037 CPU (h_xbit) = opval; 6038 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6039 } 6040 { 6041 BI opval = 0; 6042 SET_H_INSN_PREFIXED_P (opval); 6043 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6044 } 6045} 6046} 6047} 6048 6049 SEM_BRANCH_FINI (vpc); 6050#undef FLD 6051} 6052 NEXT (vpc); 6053 6054 CASE (sem, INSN_ADDS_B_R) : /* adds.b $Rs,$Rd */ 6055{ 6056 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6057 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6058#define FLD(f) abuf->fields.sfmt_add_b_r.f 6059 int UNUSED written = 0; 6060 IADDR UNUSED pc = abuf->addr; 6061 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 6062 6063{ 6064 SI tmp_tmpopd; 6065 SI tmp_tmpops; 6066 BI tmp_carry; 6067 SI tmp_newval; 6068 tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1)))); 6069 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6070 tmp_carry = CPU (h_cbit); 6071 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6072 { 6073 SI opval = tmp_newval; 6074 SET_H_GR (FLD (f_operand2), opval); 6075 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6076 } 6077{ 6078 { 6079 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6080 CPU (h_cbit) = opval; 6081 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6082 } 6083 { 6084 BI opval = LTSI (tmp_newval, 0); 6085 CPU (h_nbit) = opval; 6086 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6087 } 6088 { 6089 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6090 CPU (h_zbit) = opval; 6091 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6092 } 6093 { 6094 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6095 CPU (h_vbit) = opval; 6096 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6097 } 6098{ 6099 { 6100 BI opval = 0; 6101 CPU (h_xbit) = opval; 6102 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6103 } 6104 { 6105 BI opval = 0; 6106 SET_H_INSN_PREFIXED_P (opval); 6107 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6108 } 6109} 6110} 6111} 6112 6113#undef FLD 6114} 6115 NEXT (vpc); 6116 6117 CASE (sem, INSN_ADDS_W_R) : /* adds.w $Rs,$Rd */ 6118{ 6119 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6120 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6121#define FLD(f) abuf->fields.sfmt_add_b_r.f 6122 int UNUSED written = 0; 6123 IADDR UNUSED pc = abuf->addr; 6124 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 6125 6126{ 6127 SI tmp_tmpopd; 6128 SI tmp_tmpops; 6129 BI tmp_carry; 6130 SI tmp_newval; 6131 tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1)))); 6132 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6133 tmp_carry = CPU (h_cbit); 6134 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6135 { 6136 SI opval = tmp_newval; 6137 SET_H_GR (FLD (f_operand2), opval); 6138 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6139 } 6140{ 6141 { 6142 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6143 CPU (h_cbit) = opval; 6144 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6145 } 6146 { 6147 BI opval = LTSI (tmp_newval, 0); 6148 CPU (h_nbit) = opval; 6149 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6150 } 6151 { 6152 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6153 CPU (h_zbit) = opval; 6154 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6155 } 6156 { 6157 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6158 CPU (h_vbit) = opval; 6159 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6160 } 6161{ 6162 { 6163 BI opval = 0; 6164 CPU (h_xbit) = opval; 6165 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6166 } 6167 { 6168 BI opval = 0; 6169 SET_H_INSN_PREFIXED_P (opval); 6170 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6171 } 6172} 6173} 6174} 6175 6176#undef FLD 6177} 6178 NEXT (vpc); 6179 6180 CASE (sem, INSN_ADDS_M_B_M) : /* adds-m.b [${Rs}${inc}],$Rd */ 6181{ 6182 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6183 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6184#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 6185 int UNUSED written = 0; 6186 IADDR UNUSED pc = abuf->addr; 6187 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 6188 6189{ 6190 SI tmp_tmpopd; 6191 SI tmp_tmpops; 6192 BI tmp_carry; 6193 SI tmp_newval; 6194 tmp_tmpops = EXTQISI (({ SI tmp_addr; 6195 QI tmp_tmp_mem; 6196 BI tmp_postinc; 6197 tmp_postinc = FLD (f_memmode); 6198; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 6199; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 6200; if (NEBI (tmp_postinc, 0)) { 6201{ 6202if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 6203 tmp_addr = ADDSI (tmp_addr, 1); 6204} 6205 { 6206 SI opval = tmp_addr; 6207 SET_H_GR (FLD (f_operand1), opval); 6208 written |= (1 << 11); 6209 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6210 } 6211} 6212} 6213; tmp_tmp_mem; })); 6214 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6215 tmp_carry = CPU (h_cbit); 6216 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6217 { 6218 SI opval = tmp_newval; 6219 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 6220 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6221 } 6222{ 6223 { 6224 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6225 CPU (h_cbit) = opval; 6226 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6227 } 6228 { 6229 BI opval = LTSI (tmp_newval, 0); 6230 CPU (h_nbit) = opval; 6231 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6232 } 6233 { 6234 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6235 CPU (h_zbit) = opval; 6236 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6237 } 6238 { 6239 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6240 CPU (h_vbit) = opval; 6241 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6242 } 6243{ 6244 { 6245 BI opval = 0; 6246 CPU (h_xbit) = opval; 6247 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6248 } 6249 { 6250 BI opval = 0; 6251 SET_H_INSN_PREFIXED_P (opval); 6252 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6253 } 6254} 6255} 6256} 6257 6258 abuf->written = written; 6259#undef FLD 6260} 6261 NEXT (vpc); 6262 6263 CASE (sem, INSN_ADDS_M_W_M) : /* adds-m.w [${Rs}${inc}],$Rd */ 6264{ 6265 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6266 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6267#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 6268 int UNUSED written = 0; 6269 IADDR UNUSED pc = abuf->addr; 6270 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 6271 6272{ 6273 SI tmp_tmpopd; 6274 SI tmp_tmpops; 6275 BI tmp_carry; 6276 SI tmp_newval; 6277 tmp_tmpops = EXTHISI (({ SI tmp_addr; 6278 HI tmp_tmp_mem; 6279 BI tmp_postinc; 6280 tmp_postinc = FLD (f_memmode); 6281; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 6282; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 6283; if (NEBI (tmp_postinc, 0)) { 6284{ 6285if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 6286 tmp_addr = ADDSI (tmp_addr, 2); 6287} 6288 { 6289 SI opval = tmp_addr; 6290 SET_H_GR (FLD (f_operand1), opval); 6291 written |= (1 << 11); 6292 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6293 } 6294} 6295} 6296; tmp_tmp_mem; })); 6297 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6298 tmp_carry = CPU (h_cbit); 6299 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6300 { 6301 SI opval = tmp_newval; 6302 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 6303 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6304 } 6305{ 6306 { 6307 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6308 CPU (h_cbit) = opval; 6309 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6310 } 6311 { 6312 BI opval = LTSI (tmp_newval, 0); 6313 CPU (h_nbit) = opval; 6314 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6315 } 6316 { 6317 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6318 CPU (h_zbit) = opval; 6319 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6320 } 6321 { 6322 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6323 CPU (h_vbit) = opval; 6324 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6325 } 6326{ 6327 { 6328 BI opval = 0; 6329 CPU (h_xbit) = opval; 6330 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6331 } 6332 { 6333 BI opval = 0; 6334 SET_H_INSN_PREFIXED_P (opval); 6335 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6336 } 6337} 6338} 6339} 6340 6341 abuf->written = written; 6342#undef FLD 6343} 6344 NEXT (vpc); 6345 6346 CASE (sem, INSN_ADDSCBR) : /* [${Rs}${inc}],$Rd */ 6347{ 6348 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6349 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6350#define FLD(f) abuf->fields.sfmt_addcbr.f 6351 int UNUSED written = 0; 6352 IADDR UNUSED pc = abuf->addr; 6353 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 6354 6355{ 6356 SI tmp_tmpopd; 6357 SI tmp_tmpops; 6358 BI tmp_carry; 6359 SI tmp_newval; 6360 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))); 6361 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6362 tmp_carry = CPU (h_cbit); 6363 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6364 { 6365 SI opval = tmp_newval; 6366 SET_H_GR (FLD (f_operand2), opval); 6367 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6368 } 6369{ 6370 { 6371 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6372 CPU (h_cbit) = opval; 6373 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6374 } 6375 { 6376 BI opval = LTSI (tmp_newval, 0); 6377 CPU (h_nbit) = opval; 6378 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6379 } 6380 { 6381 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6382 CPU (h_zbit) = opval; 6383 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6384 } 6385 { 6386 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6387 CPU (h_vbit) = opval; 6388 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6389 } 6390{ 6391 { 6392 BI opval = 0; 6393 CPU (h_xbit) = opval; 6394 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6395 } 6396 { 6397 BI opval = 0; 6398 SET_H_INSN_PREFIXED_P (opval); 6399 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6400 } 6401} 6402} 6403} 6404 6405#undef FLD 6406} 6407 NEXT (vpc); 6408 6409 CASE (sem, INSN_ADDSCWR) : /* [${Rs}${inc}],$Rd */ 6410{ 6411 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6412 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6413#define FLD(f) abuf->fields.sfmt_addcwr.f 6414 int UNUSED written = 0; 6415 IADDR UNUSED pc = abuf->addr; 6416 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 6417 6418{ 6419 SI tmp_tmpopd; 6420 SI tmp_tmpops; 6421 BI tmp_carry; 6422 SI tmp_newval; 6423 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))); 6424 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6425 tmp_carry = CPU (h_cbit); 6426 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6427 { 6428 SI opval = tmp_newval; 6429 SET_H_GR (FLD (f_operand2), opval); 6430 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6431 } 6432{ 6433 { 6434 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6435 CPU (h_cbit) = opval; 6436 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6437 } 6438 { 6439 BI opval = LTSI (tmp_newval, 0); 6440 CPU (h_nbit) = opval; 6441 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6442 } 6443 { 6444 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6445 CPU (h_zbit) = opval; 6446 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6447 } 6448 { 6449 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6450 CPU (h_vbit) = opval; 6451 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6452 } 6453{ 6454 { 6455 BI opval = 0; 6456 CPU (h_xbit) = opval; 6457 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6458 } 6459 { 6460 BI opval = 0; 6461 SET_H_INSN_PREFIXED_P (opval); 6462 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6463 } 6464} 6465} 6466} 6467 6468#undef FLD 6469} 6470 NEXT (vpc); 6471 6472 CASE (sem, INSN_ADDSPCPC) : /* adds.w [PC],PC */ 6473{ 6474 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6475 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6476#define FLD(f) abuf->fields.sfmt_empty.f 6477 int UNUSED written = 0; 6478 IADDR UNUSED pc = abuf->addr; 6479 SEM_BRANCH_INIT 6480 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 6481 6482{ 6483 SI tmp_newpc; 6484 SI tmp_oldpc; 6485 HI tmp_offs; 6486if (NOTBI (GET_H_INSN_PREFIXED_P ())) { 6487cgen_rtx_error (current_cpu, "Unexpected adds.w [PC],PC without prefix"); 6488} 6489 tmp_offs = GETMEMHI (current_cpu, pc, CPU (h_prefixreg_pre_v32)); 6490 tmp_oldpc = ADDSI (pc, 2); 6491 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs); 6492 { 6493 USI opval = tmp_newpc; 6494 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc); 6495 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 6496 } 6497{ 6498 { 6499 BI opval = ORIF (ANDIF (LTSI (EXTHISI (tmp_offs), 0), LTSI (tmp_oldpc, 0)), ORIF (ANDIF (LTSI (tmp_oldpc, 0), GESI (tmp_newpc, 0)), ANDIF (LTSI (EXTHISI (tmp_offs), 0), GESI (tmp_newpc, 0)))); 6500 CPU (h_cbit) = opval; 6501 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6502 } 6503 { 6504 BI opval = LTSI (tmp_newpc, 0); 6505 CPU (h_nbit) = opval; 6506 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6507 } 6508 { 6509 BI opval = ANDIF (EQSI (tmp_newpc, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6510 CPU (h_zbit) = opval; 6511 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6512 } 6513 { 6514 BI opval = ORIF (ANDIF (ANDIF (LTSI (EXTHISI (tmp_offs), 0), LTSI (tmp_oldpc, 0)), GESI (tmp_newpc, 0)), ANDIF (ANDIF (GESI (EXTHISI (tmp_offs), 0), GESI (tmp_oldpc, 0)), LTSI (tmp_newpc, 0))); 6515 CPU (h_vbit) = opval; 6516 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6517 } 6518{ 6519 { 6520 BI opval = 0; 6521 CPU (h_xbit) = opval; 6522 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6523 } 6524 { 6525 BI opval = 0; 6526 SET_H_INSN_PREFIXED_P (opval); 6527 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6528 } 6529} 6530} 6531} 6532 6533 SEM_BRANCH_FINI (vpc); 6534#undef FLD 6535} 6536 NEXT (vpc); 6537 6538 CASE (sem, INSN_ADDU_B_R) : /* addu.b $Rs,$Rd */ 6539{ 6540 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6541 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6542#define FLD(f) abuf->fields.sfmt_add_b_r.f 6543 int UNUSED written = 0; 6544 IADDR UNUSED pc = abuf->addr; 6545 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 6546 6547{ 6548 SI tmp_tmpopd; 6549 SI tmp_tmpops; 6550 BI tmp_carry; 6551 SI tmp_newval; 6552 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1)))); 6553 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6554 tmp_carry = CPU (h_cbit); 6555 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6556 { 6557 SI opval = tmp_newval; 6558 SET_H_GR (FLD (f_operand2), opval); 6559 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6560 } 6561{ 6562 { 6563 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6564 CPU (h_cbit) = opval; 6565 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6566 } 6567 { 6568 BI opval = LTSI (tmp_newval, 0); 6569 CPU (h_nbit) = opval; 6570 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6571 } 6572 { 6573 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6574 CPU (h_zbit) = opval; 6575 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6576 } 6577 { 6578 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6579 CPU (h_vbit) = opval; 6580 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6581 } 6582{ 6583 { 6584 BI opval = 0; 6585 CPU (h_xbit) = opval; 6586 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6587 } 6588 { 6589 BI opval = 0; 6590 SET_H_INSN_PREFIXED_P (opval); 6591 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6592 } 6593} 6594} 6595} 6596 6597#undef FLD 6598} 6599 NEXT (vpc); 6600 6601 CASE (sem, INSN_ADDU_W_R) : /* addu.w $Rs,$Rd */ 6602{ 6603 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6604 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6605#define FLD(f) abuf->fields.sfmt_add_b_r.f 6606 int UNUSED written = 0; 6607 IADDR UNUSED pc = abuf->addr; 6608 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 6609 6610{ 6611 SI tmp_tmpopd; 6612 SI tmp_tmpops; 6613 BI tmp_carry; 6614 SI tmp_newval; 6615 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1)))); 6616 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6617 tmp_carry = CPU (h_cbit); 6618 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6619 { 6620 SI opval = tmp_newval; 6621 SET_H_GR (FLD (f_operand2), opval); 6622 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6623 } 6624{ 6625 { 6626 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6627 CPU (h_cbit) = opval; 6628 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6629 } 6630 { 6631 BI opval = LTSI (tmp_newval, 0); 6632 CPU (h_nbit) = opval; 6633 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6634 } 6635 { 6636 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6637 CPU (h_zbit) = opval; 6638 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6639 } 6640 { 6641 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6642 CPU (h_vbit) = opval; 6643 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6644 } 6645{ 6646 { 6647 BI opval = 0; 6648 CPU (h_xbit) = opval; 6649 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6650 } 6651 { 6652 BI opval = 0; 6653 SET_H_INSN_PREFIXED_P (opval); 6654 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6655 } 6656} 6657} 6658} 6659 6660#undef FLD 6661} 6662 NEXT (vpc); 6663 6664 CASE (sem, INSN_ADDU_M_B_M) : /* addu-m.b [${Rs}${inc}],$Rd */ 6665{ 6666 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6667 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6668#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 6669 int UNUSED written = 0; 6670 IADDR UNUSED pc = abuf->addr; 6671 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 6672 6673{ 6674 SI tmp_tmpopd; 6675 SI tmp_tmpops; 6676 BI tmp_carry; 6677 SI tmp_newval; 6678 tmp_tmpops = ZEXTQISI (({ SI tmp_addr; 6679 QI tmp_tmp_mem; 6680 BI tmp_postinc; 6681 tmp_postinc = FLD (f_memmode); 6682; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 6683; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 6684; if (NEBI (tmp_postinc, 0)) { 6685{ 6686if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 6687 tmp_addr = ADDSI (tmp_addr, 1); 6688} 6689 { 6690 SI opval = tmp_addr; 6691 SET_H_GR (FLD (f_operand1), opval); 6692 written |= (1 << 11); 6693 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6694 } 6695} 6696} 6697; tmp_tmp_mem; })); 6698 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6699 tmp_carry = CPU (h_cbit); 6700 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6701 { 6702 SI opval = tmp_newval; 6703 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 6704 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6705 } 6706{ 6707 { 6708 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6709 CPU (h_cbit) = opval; 6710 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6711 } 6712 { 6713 BI opval = LTSI (tmp_newval, 0); 6714 CPU (h_nbit) = opval; 6715 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6716 } 6717 { 6718 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6719 CPU (h_zbit) = opval; 6720 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6721 } 6722 { 6723 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6724 CPU (h_vbit) = opval; 6725 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6726 } 6727{ 6728 { 6729 BI opval = 0; 6730 CPU (h_xbit) = opval; 6731 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6732 } 6733 { 6734 BI opval = 0; 6735 SET_H_INSN_PREFIXED_P (opval); 6736 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6737 } 6738} 6739} 6740} 6741 6742 abuf->written = written; 6743#undef FLD 6744} 6745 NEXT (vpc); 6746 6747 CASE (sem, INSN_ADDU_M_W_M) : /* addu-m.w [${Rs}${inc}],$Rd */ 6748{ 6749 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6750 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6751#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 6752 int UNUSED written = 0; 6753 IADDR UNUSED pc = abuf->addr; 6754 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 6755 6756{ 6757 SI tmp_tmpopd; 6758 SI tmp_tmpops; 6759 BI tmp_carry; 6760 SI tmp_newval; 6761 tmp_tmpops = ZEXTHISI (({ SI tmp_addr; 6762 HI tmp_tmp_mem; 6763 BI tmp_postinc; 6764 tmp_postinc = FLD (f_memmode); 6765; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 6766; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 6767; if (NEBI (tmp_postinc, 0)) { 6768{ 6769if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 6770 tmp_addr = ADDSI (tmp_addr, 2); 6771} 6772 { 6773 SI opval = tmp_addr; 6774 SET_H_GR (FLD (f_operand1), opval); 6775 written |= (1 << 11); 6776 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6777 } 6778} 6779} 6780; tmp_tmp_mem; })); 6781 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6782 tmp_carry = CPU (h_cbit); 6783 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6784 { 6785 SI opval = tmp_newval; 6786 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 6787 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6788 } 6789{ 6790 { 6791 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6792 CPU (h_cbit) = opval; 6793 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6794 } 6795 { 6796 BI opval = LTSI (tmp_newval, 0); 6797 CPU (h_nbit) = opval; 6798 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6799 } 6800 { 6801 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6802 CPU (h_zbit) = opval; 6803 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6804 } 6805 { 6806 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6807 CPU (h_vbit) = opval; 6808 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6809 } 6810{ 6811 { 6812 BI opval = 0; 6813 CPU (h_xbit) = opval; 6814 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6815 } 6816 { 6817 BI opval = 0; 6818 SET_H_INSN_PREFIXED_P (opval); 6819 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6820 } 6821} 6822} 6823} 6824 6825 abuf->written = written; 6826#undef FLD 6827} 6828 NEXT (vpc); 6829 6830 CASE (sem, INSN_ADDUCBR) : /* [${Rs}${inc}],$Rd */ 6831{ 6832 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6833 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6834#define FLD(f) abuf->fields.sfmt_addcbr.f 6835 int UNUSED written = 0; 6836 IADDR UNUSED pc = abuf->addr; 6837 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 6838 6839{ 6840 SI tmp_tmpopd; 6841 SI tmp_tmpops; 6842 BI tmp_carry; 6843 SI tmp_newval; 6844 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))); 6845 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6846 tmp_carry = CPU (h_cbit); 6847 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6848 { 6849 SI opval = tmp_newval; 6850 SET_H_GR (FLD (f_operand2), opval); 6851 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6852 } 6853{ 6854 { 6855 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6856 CPU (h_cbit) = opval; 6857 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6858 } 6859 { 6860 BI opval = LTSI (tmp_newval, 0); 6861 CPU (h_nbit) = opval; 6862 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6863 } 6864 { 6865 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6866 CPU (h_zbit) = opval; 6867 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6868 } 6869 { 6870 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6871 CPU (h_vbit) = opval; 6872 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6873 } 6874{ 6875 { 6876 BI opval = 0; 6877 CPU (h_xbit) = opval; 6878 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6879 } 6880 { 6881 BI opval = 0; 6882 SET_H_INSN_PREFIXED_P (opval); 6883 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6884 } 6885} 6886} 6887} 6888 6889#undef FLD 6890} 6891 NEXT (vpc); 6892 6893 CASE (sem, INSN_ADDUCWR) : /* [${Rs}${inc}],$Rd */ 6894{ 6895 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6896 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6897#define FLD(f) abuf->fields.sfmt_addcwr.f 6898 int UNUSED written = 0; 6899 IADDR UNUSED pc = abuf->addr; 6900 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 6901 6902{ 6903 SI tmp_tmpopd; 6904 SI tmp_tmpops; 6905 BI tmp_carry; 6906 SI tmp_newval; 6907 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))); 6908 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6909 tmp_carry = CPU (h_cbit); 6910 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6911 { 6912 SI opval = tmp_newval; 6913 SET_H_GR (FLD (f_operand2), opval); 6914 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6915 } 6916{ 6917 { 6918 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0)))); 6919 CPU (h_cbit) = opval; 6920 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6921 } 6922 { 6923 BI opval = LTSI (tmp_newval, 0); 6924 CPU (h_nbit) = opval; 6925 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6926 } 6927 { 6928 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6929 CPU (h_zbit) = opval; 6930 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6931 } 6932 { 6933 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 6934 CPU (h_vbit) = opval; 6935 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 6936 } 6937{ 6938 { 6939 BI opval = 0; 6940 CPU (h_xbit) = opval; 6941 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 6942 } 6943 { 6944 BI opval = 0; 6945 SET_H_INSN_PREFIXED_P (opval); 6946 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 6947 } 6948} 6949} 6950} 6951 6952#undef FLD 6953} 6954 NEXT (vpc); 6955 6956 CASE (sem, INSN_SUB_B_R) : /* sub.b $Rs,$Rd */ 6957{ 6958 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 6959 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 6960#define FLD(f) abuf->fields.sfmt_add_b_r.f 6961 int UNUSED written = 0; 6962 IADDR UNUSED pc = abuf->addr; 6963 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 6964 6965{ 6966 QI tmp_tmpopd; 6967 QI tmp_tmpops; 6968 BI tmp_carry; 6969 QI tmp_newval; 6970 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 6971 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 6972 tmp_carry = CPU (h_cbit); 6973 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 6974{ 6975 SI tmp_oldregval; 6976 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 6977 { 6978 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00)); 6979 SET_H_GR (FLD (f_operand2), opval); 6980 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 6981 } 6982} 6983{ 6984 { 6985 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0)))); 6986 CPU (h_cbit) = opval; 6987 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 6988 } 6989 { 6990 BI opval = LTQI (tmp_newval, 0); 6991 CPU (h_nbit) = opval; 6992 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 6993 } 6994 { 6995 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 6996 CPU (h_zbit) = opval; 6997 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 6998 } 6999 { 7000 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0))); 7001 CPU (h_vbit) = opval; 7002 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7003 } 7004{ 7005 { 7006 BI opval = 0; 7007 CPU (h_xbit) = opval; 7008 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7009 } 7010 { 7011 BI opval = 0; 7012 SET_H_INSN_PREFIXED_P (opval); 7013 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7014 } 7015} 7016} 7017} 7018 7019#undef FLD 7020} 7021 NEXT (vpc); 7022 7023 CASE (sem, INSN_SUB_W_R) : /* sub.w $Rs,$Rd */ 7024{ 7025 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7026 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7027#define FLD(f) abuf->fields.sfmt_add_b_r.f 7028 int UNUSED written = 0; 7029 IADDR UNUSED pc = abuf->addr; 7030 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 7031 7032{ 7033 HI tmp_tmpopd; 7034 HI tmp_tmpops; 7035 BI tmp_carry; 7036 HI tmp_newval; 7037 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 7038 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7039 tmp_carry = CPU (h_cbit); 7040 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7041{ 7042 SI tmp_oldregval; 7043 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 7044 { 7045 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 7046 SET_H_GR (FLD (f_operand2), opval); 7047 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7048 } 7049} 7050{ 7051 { 7052 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0)))); 7053 CPU (h_cbit) = opval; 7054 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7055 } 7056 { 7057 BI opval = LTHI (tmp_newval, 0); 7058 CPU (h_nbit) = opval; 7059 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7060 } 7061 { 7062 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7063 CPU (h_zbit) = opval; 7064 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7065 } 7066 { 7067 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0))); 7068 CPU (h_vbit) = opval; 7069 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7070 } 7071{ 7072 { 7073 BI opval = 0; 7074 CPU (h_xbit) = opval; 7075 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7076 } 7077 { 7078 BI opval = 0; 7079 SET_H_INSN_PREFIXED_P (opval); 7080 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7081 } 7082} 7083} 7084} 7085 7086#undef FLD 7087} 7088 NEXT (vpc); 7089 7090 CASE (sem, INSN_SUB_D_R) : /* sub.d $Rs,$Rd */ 7091{ 7092 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7093 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7094#define FLD(f) abuf->fields.sfmt_add_b_r.f 7095 int UNUSED written = 0; 7096 IADDR UNUSED pc = abuf->addr; 7097 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 7098 7099{ 7100 SI tmp_tmpopd; 7101 SI tmp_tmpops; 7102 BI tmp_carry; 7103 SI tmp_newval; 7104 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 7105 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7106 tmp_carry = CPU (h_cbit); 7107 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7108 { 7109 SI opval = tmp_newval; 7110 SET_H_GR (FLD (f_operand2), opval); 7111 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7112 } 7113{ 7114 { 7115 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 7116 CPU (h_cbit) = opval; 7117 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7118 } 7119 { 7120 BI opval = LTSI (tmp_newval, 0); 7121 CPU (h_nbit) = opval; 7122 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7123 } 7124 { 7125 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7126 CPU (h_zbit) = opval; 7127 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7128 } 7129 { 7130 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 7131 CPU (h_vbit) = opval; 7132 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7133 } 7134{ 7135 { 7136 BI opval = 0; 7137 CPU (h_xbit) = opval; 7138 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7139 } 7140 { 7141 BI opval = 0; 7142 SET_H_INSN_PREFIXED_P (opval); 7143 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7144 } 7145} 7146} 7147} 7148 7149#undef FLD 7150} 7151 NEXT (vpc); 7152 7153 CASE (sem, INSN_SUB_M_B_M) : /* sub-m.b [${Rs}${inc}],${Rd} */ 7154{ 7155 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7156 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7157#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 7158 int UNUSED written = 0; 7159 IADDR UNUSED pc = abuf->addr; 7160 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 7161 7162{ 7163 QI tmp_tmpopd; 7164 QI tmp_tmpops; 7165 BI tmp_carry; 7166 QI tmp_newval; 7167 tmp_tmpops = ({ SI tmp_addr; 7168 QI tmp_tmp_mem; 7169 BI tmp_postinc; 7170 tmp_postinc = FLD (f_memmode); 7171; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 7172; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 7173; if (NEBI (tmp_postinc, 0)) { 7174{ 7175if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 7176 tmp_addr = ADDSI (tmp_addr, 1); 7177} 7178 { 7179 SI opval = tmp_addr; 7180 SET_H_GR (FLD (f_operand1), opval); 7181 written |= (1 << 12); 7182 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7183 } 7184} 7185} 7186; tmp_tmp_mem; }); 7187 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7188 tmp_carry = CPU (h_cbit); 7189 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7190{ 7191 SI tmp_oldregval; 7192 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2)))); 7193 { 7194 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00)); 7195 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 7196 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7197 } 7198} 7199{ 7200 { 7201 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0)))); 7202 CPU (h_cbit) = opval; 7203 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7204 } 7205 { 7206 BI opval = LTQI (tmp_newval, 0); 7207 CPU (h_nbit) = opval; 7208 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7209 } 7210 { 7211 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7212 CPU (h_zbit) = opval; 7213 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7214 } 7215 { 7216 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0))); 7217 CPU (h_vbit) = opval; 7218 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7219 } 7220{ 7221 { 7222 BI opval = 0; 7223 CPU (h_xbit) = opval; 7224 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7225 } 7226 { 7227 BI opval = 0; 7228 SET_H_INSN_PREFIXED_P (opval); 7229 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7230 } 7231} 7232} 7233} 7234 7235 abuf->written = written; 7236#undef FLD 7237} 7238 NEXT (vpc); 7239 7240 CASE (sem, INSN_SUB_M_W_M) : /* sub-m.w [${Rs}${inc}],${Rd} */ 7241{ 7242 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7243 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7244#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 7245 int UNUSED written = 0; 7246 IADDR UNUSED pc = abuf->addr; 7247 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 7248 7249{ 7250 HI tmp_tmpopd; 7251 HI tmp_tmpops; 7252 BI tmp_carry; 7253 HI tmp_newval; 7254 tmp_tmpops = ({ SI tmp_addr; 7255 HI tmp_tmp_mem; 7256 BI tmp_postinc; 7257 tmp_postinc = FLD (f_memmode); 7258; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 7259; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 7260; if (NEBI (tmp_postinc, 0)) { 7261{ 7262if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 7263 tmp_addr = ADDSI (tmp_addr, 2); 7264} 7265 { 7266 SI opval = tmp_addr; 7267 SET_H_GR (FLD (f_operand1), opval); 7268 written |= (1 << 12); 7269 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7270 } 7271} 7272} 7273; tmp_tmp_mem; }); 7274 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7275 tmp_carry = CPU (h_cbit); 7276 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7277{ 7278 SI tmp_oldregval; 7279 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2)))); 7280 { 7281 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 7282 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 7283 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7284 } 7285} 7286{ 7287 { 7288 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0)))); 7289 CPU (h_cbit) = opval; 7290 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7291 } 7292 { 7293 BI opval = LTHI (tmp_newval, 0); 7294 CPU (h_nbit) = opval; 7295 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7296 } 7297 { 7298 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7299 CPU (h_zbit) = opval; 7300 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7301 } 7302 { 7303 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0))); 7304 CPU (h_vbit) = opval; 7305 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7306 } 7307{ 7308 { 7309 BI opval = 0; 7310 CPU (h_xbit) = opval; 7311 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7312 } 7313 { 7314 BI opval = 0; 7315 SET_H_INSN_PREFIXED_P (opval); 7316 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7317 } 7318} 7319} 7320} 7321 7322 abuf->written = written; 7323#undef FLD 7324} 7325 NEXT (vpc); 7326 7327 CASE (sem, INSN_SUB_M_D_M) : /* sub-m.d [${Rs}${inc}],${Rd} */ 7328{ 7329 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7330 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7331#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 7332 int UNUSED written = 0; 7333 IADDR UNUSED pc = abuf->addr; 7334 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 7335 7336{ 7337 SI tmp_tmpopd; 7338 SI tmp_tmpops; 7339 BI tmp_carry; 7340 SI tmp_newval; 7341 tmp_tmpops = ({ SI tmp_addr; 7342 SI tmp_tmp_mem; 7343 BI tmp_postinc; 7344 tmp_postinc = FLD (f_memmode); 7345; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 7346; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 7347; if (NEBI (tmp_postinc, 0)) { 7348{ 7349if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 7350 tmp_addr = ADDSI (tmp_addr, 4); 7351} 7352 { 7353 SI opval = tmp_addr; 7354 SET_H_GR (FLD (f_operand1), opval); 7355 written |= (1 << 11); 7356 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7357 } 7358} 7359} 7360; tmp_tmp_mem; }); 7361 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7362 tmp_carry = CPU (h_cbit); 7363 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7364 { 7365 SI opval = tmp_newval; 7366 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 7367 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7368 } 7369{ 7370 { 7371 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 7372 CPU (h_cbit) = opval; 7373 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7374 } 7375 { 7376 BI opval = LTSI (tmp_newval, 0); 7377 CPU (h_nbit) = opval; 7378 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7379 } 7380 { 7381 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7382 CPU (h_zbit) = opval; 7383 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7384 } 7385 { 7386 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 7387 CPU (h_vbit) = opval; 7388 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7389 } 7390{ 7391 { 7392 BI opval = 0; 7393 CPU (h_xbit) = opval; 7394 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7395 } 7396 { 7397 BI opval = 0; 7398 SET_H_INSN_PREFIXED_P (opval); 7399 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7400 } 7401} 7402} 7403} 7404 7405 abuf->written = written; 7406#undef FLD 7407} 7408 NEXT (vpc); 7409 7410 CASE (sem, INSN_SUBCBR) : /* sub.b ${sconst8}],${Rd} */ 7411{ 7412 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7413 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7414#define FLD(f) abuf->fields.sfmt_addcbr.f 7415 int UNUSED written = 0; 7416 IADDR UNUSED pc = abuf->addr; 7417 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 7418 7419{ 7420 QI tmp_tmpopd; 7421 QI tmp_tmpops; 7422 BI tmp_carry; 7423 QI tmp_newval; 7424 tmp_tmpops = FLD (f_indir_pc__byte); 7425 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7426 tmp_carry = CPU (h_cbit); 7427 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7428{ 7429 SI tmp_oldregval; 7430 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 7431 { 7432 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00)); 7433 SET_H_GR (FLD (f_operand2), opval); 7434 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7435 } 7436} 7437{ 7438 { 7439 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0)))); 7440 CPU (h_cbit) = opval; 7441 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7442 } 7443 { 7444 BI opval = LTQI (tmp_newval, 0); 7445 CPU (h_nbit) = opval; 7446 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7447 } 7448 { 7449 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7450 CPU (h_zbit) = opval; 7451 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7452 } 7453 { 7454 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0))); 7455 CPU (h_vbit) = opval; 7456 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7457 } 7458{ 7459 { 7460 BI opval = 0; 7461 CPU (h_xbit) = opval; 7462 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7463 } 7464 { 7465 BI opval = 0; 7466 SET_H_INSN_PREFIXED_P (opval); 7467 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7468 } 7469} 7470} 7471} 7472 7473#undef FLD 7474} 7475 NEXT (vpc); 7476 7477 CASE (sem, INSN_SUBCWR) : /* sub.w ${sconst16}],${Rd} */ 7478{ 7479 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7480 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7481#define FLD(f) abuf->fields.sfmt_addcwr.f 7482 int UNUSED written = 0; 7483 IADDR UNUSED pc = abuf->addr; 7484 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 7485 7486{ 7487 HI tmp_tmpopd; 7488 HI tmp_tmpops; 7489 BI tmp_carry; 7490 HI tmp_newval; 7491 tmp_tmpops = FLD (f_indir_pc__word); 7492 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7493 tmp_carry = CPU (h_cbit); 7494 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7495{ 7496 SI tmp_oldregval; 7497 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 7498 { 7499 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 7500 SET_H_GR (FLD (f_operand2), opval); 7501 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7502 } 7503} 7504{ 7505 { 7506 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0)))); 7507 CPU (h_cbit) = opval; 7508 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7509 } 7510 { 7511 BI opval = LTHI (tmp_newval, 0); 7512 CPU (h_nbit) = opval; 7513 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7514 } 7515 { 7516 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7517 CPU (h_zbit) = opval; 7518 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7519 } 7520 { 7521 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0))); 7522 CPU (h_vbit) = opval; 7523 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7524 } 7525{ 7526 { 7527 BI opval = 0; 7528 CPU (h_xbit) = opval; 7529 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7530 } 7531 { 7532 BI opval = 0; 7533 SET_H_INSN_PREFIXED_P (opval); 7534 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7535 } 7536} 7537} 7538} 7539 7540#undef FLD 7541} 7542 NEXT (vpc); 7543 7544 CASE (sem, INSN_SUBCDR) : /* sub.d ${const32}],${Rd} */ 7545{ 7546 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7547 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7548#define FLD(f) abuf->fields.sfmt_addcdr.f 7549 int UNUSED written = 0; 7550 IADDR UNUSED pc = abuf->addr; 7551 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 7552 7553{ 7554 SI tmp_tmpopd; 7555 SI tmp_tmpops; 7556 BI tmp_carry; 7557 SI tmp_newval; 7558 tmp_tmpops = FLD (f_indir_pc__dword); 7559 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7560 tmp_carry = CPU (h_cbit); 7561 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7562 { 7563 SI opval = tmp_newval; 7564 SET_H_GR (FLD (f_operand2), opval); 7565 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7566 } 7567{ 7568 { 7569 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 7570 CPU (h_cbit) = opval; 7571 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7572 } 7573 { 7574 BI opval = LTSI (tmp_newval, 0); 7575 CPU (h_nbit) = opval; 7576 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7577 } 7578 { 7579 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7580 CPU (h_zbit) = opval; 7581 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7582 } 7583 { 7584 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 7585 CPU (h_vbit) = opval; 7586 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7587 } 7588{ 7589 { 7590 BI opval = 0; 7591 CPU (h_xbit) = opval; 7592 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7593 } 7594 { 7595 BI opval = 0; 7596 SET_H_INSN_PREFIXED_P (opval); 7597 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7598 } 7599} 7600} 7601} 7602 7603#undef FLD 7604} 7605 NEXT (vpc); 7606 7607 CASE (sem, INSN_SUBS_B_R) : /* subs.b $Rs,$Rd */ 7608{ 7609 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7610 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7611#define FLD(f) abuf->fields.sfmt_add_b_r.f 7612 int UNUSED written = 0; 7613 IADDR UNUSED pc = abuf->addr; 7614 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 7615 7616{ 7617 SI tmp_tmpopd; 7618 SI tmp_tmpops; 7619 BI tmp_carry; 7620 SI tmp_newval; 7621 tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1)))); 7622 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7623 tmp_carry = CPU (h_cbit); 7624 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7625 { 7626 SI opval = tmp_newval; 7627 SET_H_GR (FLD (f_operand2), opval); 7628 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7629 } 7630{ 7631 { 7632 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 7633 CPU (h_cbit) = opval; 7634 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7635 } 7636 { 7637 BI opval = LTSI (tmp_newval, 0); 7638 CPU (h_nbit) = opval; 7639 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7640 } 7641 { 7642 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7643 CPU (h_zbit) = opval; 7644 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7645 } 7646 { 7647 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 7648 CPU (h_vbit) = opval; 7649 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7650 } 7651{ 7652 { 7653 BI opval = 0; 7654 CPU (h_xbit) = opval; 7655 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7656 } 7657 { 7658 BI opval = 0; 7659 SET_H_INSN_PREFIXED_P (opval); 7660 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7661 } 7662} 7663} 7664} 7665 7666#undef FLD 7667} 7668 NEXT (vpc); 7669 7670 CASE (sem, INSN_SUBS_W_R) : /* subs.w $Rs,$Rd */ 7671{ 7672 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7673 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7674#define FLD(f) abuf->fields.sfmt_add_b_r.f 7675 int UNUSED written = 0; 7676 IADDR UNUSED pc = abuf->addr; 7677 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 7678 7679{ 7680 SI tmp_tmpopd; 7681 SI tmp_tmpops; 7682 BI tmp_carry; 7683 SI tmp_newval; 7684 tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1)))); 7685 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7686 tmp_carry = CPU (h_cbit); 7687 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7688 { 7689 SI opval = tmp_newval; 7690 SET_H_GR (FLD (f_operand2), opval); 7691 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7692 } 7693{ 7694 { 7695 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 7696 CPU (h_cbit) = opval; 7697 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7698 } 7699 { 7700 BI opval = LTSI (tmp_newval, 0); 7701 CPU (h_nbit) = opval; 7702 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7703 } 7704 { 7705 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7706 CPU (h_zbit) = opval; 7707 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7708 } 7709 { 7710 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 7711 CPU (h_vbit) = opval; 7712 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7713 } 7714{ 7715 { 7716 BI opval = 0; 7717 CPU (h_xbit) = opval; 7718 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7719 } 7720 { 7721 BI opval = 0; 7722 SET_H_INSN_PREFIXED_P (opval); 7723 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7724 } 7725} 7726} 7727} 7728 7729#undef FLD 7730} 7731 NEXT (vpc); 7732 7733 CASE (sem, INSN_SUBS_M_B_M) : /* subs-m.b [${Rs}${inc}],$Rd */ 7734{ 7735 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7736 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7737#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 7738 int UNUSED written = 0; 7739 IADDR UNUSED pc = abuf->addr; 7740 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 7741 7742{ 7743 SI tmp_tmpopd; 7744 SI tmp_tmpops; 7745 BI tmp_carry; 7746 SI tmp_newval; 7747 tmp_tmpops = EXTQISI (({ SI tmp_addr; 7748 QI tmp_tmp_mem; 7749 BI tmp_postinc; 7750 tmp_postinc = FLD (f_memmode); 7751; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 7752; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 7753; if (NEBI (tmp_postinc, 0)) { 7754{ 7755if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 7756 tmp_addr = ADDSI (tmp_addr, 1); 7757} 7758 { 7759 SI opval = tmp_addr; 7760 SET_H_GR (FLD (f_operand1), opval); 7761 written |= (1 << 11); 7762 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7763 } 7764} 7765} 7766; tmp_tmp_mem; })); 7767 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7768 tmp_carry = CPU (h_cbit); 7769 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7770 { 7771 SI opval = tmp_newval; 7772 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 7773 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7774 } 7775{ 7776 { 7777 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 7778 CPU (h_cbit) = opval; 7779 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7780 } 7781 { 7782 BI opval = LTSI (tmp_newval, 0); 7783 CPU (h_nbit) = opval; 7784 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7785 } 7786 { 7787 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7788 CPU (h_zbit) = opval; 7789 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7790 } 7791 { 7792 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 7793 CPU (h_vbit) = opval; 7794 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7795 } 7796{ 7797 { 7798 BI opval = 0; 7799 CPU (h_xbit) = opval; 7800 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7801 } 7802 { 7803 BI opval = 0; 7804 SET_H_INSN_PREFIXED_P (opval); 7805 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7806 } 7807} 7808} 7809} 7810 7811 abuf->written = written; 7812#undef FLD 7813} 7814 NEXT (vpc); 7815 7816 CASE (sem, INSN_SUBS_M_W_M) : /* subs-m.w [${Rs}${inc}],$Rd */ 7817{ 7818 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7819 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7820#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 7821 int UNUSED written = 0; 7822 IADDR UNUSED pc = abuf->addr; 7823 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 7824 7825{ 7826 SI tmp_tmpopd; 7827 SI tmp_tmpops; 7828 BI tmp_carry; 7829 SI tmp_newval; 7830 tmp_tmpops = EXTHISI (({ SI tmp_addr; 7831 HI tmp_tmp_mem; 7832 BI tmp_postinc; 7833 tmp_postinc = FLD (f_memmode); 7834; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 7835; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 7836; if (NEBI (tmp_postinc, 0)) { 7837{ 7838if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 7839 tmp_addr = ADDSI (tmp_addr, 2); 7840} 7841 { 7842 SI opval = tmp_addr; 7843 SET_H_GR (FLD (f_operand1), opval); 7844 written |= (1 << 11); 7845 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7846 } 7847} 7848} 7849; tmp_tmp_mem; })); 7850 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7851 tmp_carry = CPU (h_cbit); 7852 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7853 { 7854 SI opval = tmp_newval; 7855 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 7856 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7857 } 7858{ 7859 { 7860 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 7861 CPU (h_cbit) = opval; 7862 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7863 } 7864 { 7865 BI opval = LTSI (tmp_newval, 0); 7866 CPU (h_nbit) = opval; 7867 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7868 } 7869 { 7870 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7871 CPU (h_zbit) = opval; 7872 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7873 } 7874 { 7875 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 7876 CPU (h_vbit) = opval; 7877 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7878 } 7879{ 7880 { 7881 BI opval = 0; 7882 CPU (h_xbit) = opval; 7883 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7884 } 7885 { 7886 BI opval = 0; 7887 SET_H_INSN_PREFIXED_P (opval); 7888 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7889 } 7890} 7891} 7892} 7893 7894 abuf->written = written; 7895#undef FLD 7896} 7897 NEXT (vpc); 7898 7899 CASE (sem, INSN_SUBSCBR) : /* [${Rs}${inc}],$Rd */ 7900{ 7901 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7902 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7903#define FLD(f) abuf->fields.sfmt_addcbr.f 7904 int UNUSED written = 0; 7905 IADDR UNUSED pc = abuf->addr; 7906 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 7907 7908{ 7909 SI tmp_tmpopd; 7910 SI tmp_tmpops; 7911 BI tmp_carry; 7912 SI tmp_newval; 7913 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))); 7914 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7915 tmp_carry = CPU (h_cbit); 7916 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7917 { 7918 SI opval = tmp_newval; 7919 SET_H_GR (FLD (f_operand2), opval); 7920 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7921 } 7922{ 7923 { 7924 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 7925 CPU (h_cbit) = opval; 7926 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7927 } 7928 { 7929 BI opval = LTSI (tmp_newval, 0); 7930 CPU (h_nbit) = opval; 7931 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7932 } 7933 { 7934 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7935 CPU (h_zbit) = opval; 7936 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 7937 } 7938 { 7939 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 7940 CPU (h_vbit) = opval; 7941 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 7942 } 7943{ 7944 { 7945 BI opval = 0; 7946 CPU (h_xbit) = opval; 7947 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 7948 } 7949 { 7950 BI opval = 0; 7951 SET_H_INSN_PREFIXED_P (opval); 7952 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 7953 } 7954} 7955} 7956} 7957 7958#undef FLD 7959} 7960 NEXT (vpc); 7961 7962 CASE (sem, INSN_SUBSCWR) : /* [${Rs}${inc}],$Rd */ 7963{ 7964 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 7965 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 7966#define FLD(f) abuf->fields.sfmt_addcwr.f 7967 int UNUSED written = 0; 7968 IADDR UNUSED pc = abuf->addr; 7969 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 7970 7971{ 7972 SI tmp_tmpopd; 7973 SI tmp_tmpops; 7974 BI tmp_carry; 7975 SI tmp_newval; 7976 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))); 7977 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 7978 tmp_carry = CPU (h_cbit); 7979 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 7980 { 7981 SI opval = tmp_newval; 7982 SET_H_GR (FLD (f_operand2), opval); 7983 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 7984 } 7985{ 7986 { 7987 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 7988 CPU (h_cbit) = opval; 7989 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 7990 } 7991 { 7992 BI opval = LTSI (tmp_newval, 0); 7993 CPU (h_nbit) = opval; 7994 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 7995 } 7996 { 7997 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 7998 CPU (h_zbit) = opval; 7999 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8000 } 8001 { 8002 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 8003 CPU (h_vbit) = opval; 8004 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8005 } 8006{ 8007 { 8008 BI opval = 0; 8009 CPU (h_xbit) = opval; 8010 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8011 } 8012 { 8013 BI opval = 0; 8014 SET_H_INSN_PREFIXED_P (opval); 8015 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8016 } 8017} 8018} 8019} 8020 8021#undef FLD 8022} 8023 NEXT (vpc); 8024 8025 CASE (sem, INSN_SUBU_B_R) : /* subu.b $Rs,$Rd */ 8026{ 8027 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8028 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8029#define FLD(f) abuf->fields.sfmt_add_b_r.f 8030 int UNUSED written = 0; 8031 IADDR UNUSED pc = abuf->addr; 8032 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8033 8034{ 8035 SI tmp_tmpopd; 8036 SI tmp_tmpops; 8037 BI tmp_carry; 8038 SI tmp_newval; 8039 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1)))); 8040 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 8041 tmp_carry = CPU (h_cbit); 8042 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8043 { 8044 SI opval = tmp_newval; 8045 SET_H_GR (FLD (f_operand2), opval); 8046 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8047 } 8048{ 8049 { 8050 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 8051 CPU (h_cbit) = opval; 8052 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8053 } 8054 { 8055 BI opval = LTSI (tmp_newval, 0); 8056 CPU (h_nbit) = opval; 8057 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8058 } 8059 { 8060 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8061 CPU (h_zbit) = opval; 8062 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8063 } 8064 { 8065 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 8066 CPU (h_vbit) = opval; 8067 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8068 } 8069{ 8070 { 8071 BI opval = 0; 8072 CPU (h_xbit) = opval; 8073 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8074 } 8075 { 8076 BI opval = 0; 8077 SET_H_INSN_PREFIXED_P (opval); 8078 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8079 } 8080} 8081} 8082} 8083 8084#undef FLD 8085} 8086 NEXT (vpc); 8087 8088 CASE (sem, INSN_SUBU_W_R) : /* subu.w $Rs,$Rd */ 8089{ 8090 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8091 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8092#define FLD(f) abuf->fields.sfmt_add_b_r.f 8093 int UNUSED written = 0; 8094 IADDR UNUSED pc = abuf->addr; 8095 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8096 8097{ 8098 SI tmp_tmpopd; 8099 SI tmp_tmpops; 8100 BI tmp_carry; 8101 SI tmp_newval; 8102 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1)))); 8103 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 8104 tmp_carry = CPU (h_cbit); 8105 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8106 { 8107 SI opval = tmp_newval; 8108 SET_H_GR (FLD (f_operand2), opval); 8109 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8110 } 8111{ 8112 { 8113 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 8114 CPU (h_cbit) = opval; 8115 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8116 } 8117 { 8118 BI opval = LTSI (tmp_newval, 0); 8119 CPU (h_nbit) = opval; 8120 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8121 } 8122 { 8123 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8124 CPU (h_zbit) = opval; 8125 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8126 } 8127 { 8128 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 8129 CPU (h_vbit) = opval; 8130 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8131 } 8132{ 8133 { 8134 BI opval = 0; 8135 CPU (h_xbit) = opval; 8136 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8137 } 8138 { 8139 BI opval = 0; 8140 SET_H_INSN_PREFIXED_P (opval); 8141 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8142 } 8143} 8144} 8145} 8146 8147#undef FLD 8148} 8149 NEXT (vpc); 8150 8151 CASE (sem, INSN_SUBU_M_B_M) : /* subu-m.b [${Rs}${inc}],$Rd */ 8152{ 8153 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8154 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8155#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 8156 int UNUSED written = 0; 8157 IADDR UNUSED pc = abuf->addr; 8158 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8159 8160{ 8161 SI tmp_tmpopd; 8162 SI tmp_tmpops; 8163 BI tmp_carry; 8164 SI tmp_newval; 8165 tmp_tmpops = ZEXTQISI (({ SI tmp_addr; 8166 QI tmp_tmp_mem; 8167 BI tmp_postinc; 8168 tmp_postinc = FLD (f_memmode); 8169; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 8170; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 8171; if (NEBI (tmp_postinc, 0)) { 8172{ 8173if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 8174 tmp_addr = ADDSI (tmp_addr, 1); 8175} 8176 { 8177 SI opval = tmp_addr; 8178 SET_H_GR (FLD (f_operand1), opval); 8179 written |= (1 << 11); 8180 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8181 } 8182} 8183} 8184; tmp_tmp_mem; })); 8185 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 8186 tmp_carry = CPU (h_cbit); 8187 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8188 { 8189 SI opval = tmp_newval; 8190 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 8191 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8192 } 8193{ 8194 { 8195 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 8196 CPU (h_cbit) = opval; 8197 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8198 } 8199 { 8200 BI opval = LTSI (tmp_newval, 0); 8201 CPU (h_nbit) = opval; 8202 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8203 } 8204 { 8205 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8206 CPU (h_zbit) = opval; 8207 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8208 } 8209 { 8210 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 8211 CPU (h_vbit) = opval; 8212 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8213 } 8214{ 8215 { 8216 BI opval = 0; 8217 CPU (h_xbit) = opval; 8218 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8219 } 8220 { 8221 BI opval = 0; 8222 SET_H_INSN_PREFIXED_P (opval); 8223 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8224 } 8225} 8226} 8227} 8228 8229 abuf->written = written; 8230#undef FLD 8231} 8232 NEXT (vpc); 8233 8234 CASE (sem, INSN_SUBU_M_W_M) : /* subu-m.w [${Rs}${inc}],$Rd */ 8235{ 8236 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8237 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8238#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 8239 int UNUSED written = 0; 8240 IADDR UNUSED pc = abuf->addr; 8241 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8242 8243{ 8244 SI tmp_tmpopd; 8245 SI tmp_tmpops; 8246 BI tmp_carry; 8247 SI tmp_newval; 8248 tmp_tmpops = ZEXTHISI (({ SI tmp_addr; 8249 HI tmp_tmp_mem; 8250 BI tmp_postinc; 8251 tmp_postinc = FLD (f_memmode); 8252; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 8253; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 8254; if (NEBI (tmp_postinc, 0)) { 8255{ 8256if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 8257 tmp_addr = ADDSI (tmp_addr, 2); 8258} 8259 { 8260 SI opval = tmp_addr; 8261 SET_H_GR (FLD (f_operand1), opval); 8262 written |= (1 << 11); 8263 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8264 } 8265} 8266} 8267; tmp_tmp_mem; })); 8268 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 8269 tmp_carry = CPU (h_cbit); 8270 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8271 { 8272 SI opval = tmp_newval; 8273 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 8274 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8275 } 8276{ 8277 { 8278 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 8279 CPU (h_cbit) = opval; 8280 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8281 } 8282 { 8283 BI opval = LTSI (tmp_newval, 0); 8284 CPU (h_nbit) = opval; 8285 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8286 } 8287 { 8288 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8289 CPU (h_zbit) = opval; 8290 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8291 } 8292 { 8293 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 8294 CPU (h_vbit) = opval; 8295 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8296 } 8297{ 8298 { 8299 BI opval = 0; 8300 CPU (h_xbit) = opval; 8301 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8302 } 8303 { 8304 BI opval = 0; 8305 SET_H_INSN_PREFIXED_P (opval); 8306 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8307 } 8308} 8309} 8310} 8311 8312 abuf->written = written; 8313#undef FLD 8314} 8315 NEXT (vpc); 8316 8317 CASE (sem, INSN_SUBUCBR) : /* [${Rs}${inc}],$Rd */ 8318{ 8319 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8320 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8321#define FLD(f) abuf->fields.sfmt_addcbr.f 8322 int UNUSED written = 0; 8323 IADDR UNUSED pc = abuf->addr; 8324 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 8325 8326{ 8327 SI tmp_tmpopd; 8328 SI tmp_tmpops; 8329 BI tmp_carry; 8330 SI tmp_newval; 8331 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))); 8332 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 8333 tmp_carry = CPU (h_cbit); 8334 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8335 { 8336 SI opval = tmp_newval; 8337 SET_H_GR (FLD (f_operand2), opval); 8338 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8339 } 8340{ 8341 { 8342 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 8343 CPU (h_cbit) = opval; 8344 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8345 } 8346 { 8347 BI opval = LTSI (tmp_newval, 0); 8348 CPU (h_nbit) = opval; 8349 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8350 } 8351 { 8352 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8353 CPU (h_zbit) = opval; 8354 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8355 } 8356 { 8357 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 8358 CPU (h_vbit) = opval; 8359 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8360 } 8361{ 8362 { 8363 BI opval = 0; 8364 CPU (h_xbit) = opval; 8365 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8366 } 8367 { 8368 BI opval = 0; 8369 SET_H_INSN_PREFIXED_P (opval); 8370 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8371 } 8372} 8373} 8374} 8375 8376#undef FLD 8377} 8378 NEXT (vpc); 8379 8380 CASE (sem, INSN_SUBUCWR) : /* [${Rs}${inc}],$Rd */ 8381{ 8382 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8383 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8384#define FLD(f) abuf->fields.sfmt_addcwr.f 8385 int UNUSED written = 0; 8386 IADDR UNUSED pc = abuf->addr; 8387 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 8388 8389{ 8390 SI tmp_tmpopd; 8391 SI tmp_tmpops; 8392 BI tmp_carry; 8393 SI tmp_newval; 8394 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))); 8395 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 8396 tmp_carry = CPU (h_cbit); 8397 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8398 { 8399 SI opval = tmp_newval; 8400 SET_H_GR (FLD (f_operand2), opval); 8401 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8402 } 8403{ 8404 { 8405 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 8406 CPU (h_cbit) = opval; 8407 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8408 } 8409 { 8410 BI opval = LTSI (tmp_newval, 0); 8411 CPU (h_nbit) = opval; 8412 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8413 } 8414 { 8415 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8416 CPU (h_zbit) = opval; 8417 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8418 } 8419 { 8420 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 8421 CPU (h_vbit) = opval; 8422 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8423 } 8424{ 8425 { 8426 BI opval = 0; 8427 CPU (h_xbit) = opval; 8428 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8429 } 8430 { 8431 BI opval = 0; 8432 SET_H_INSN_PREFIXED_P (opval); 8433 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8434 } 8435} 8436} 8437} 8438 8439#undef FLD 8440} 8441 NEXT (vpc); 8442 8443 CASE (sem, INSN_ADDI_B_R) : /* addi.b ${Rs-dfield}.m,${Rd-sfield} */ 8444{ 8445 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8446 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8447#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 8448 int UNUSED written = 0; 8449 IADDR UNUSED pc = abuf->addr; 8450 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8451 8452{ 8453 { 8454 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1)); 8455 SET_H_GR (FLD (f_operand1), opval); 8456 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8457 } 8458{ 8459 { 8460 BI opval = 0; 8461 CPU (h_xbit) = opval; 8462 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8463 } 8464 { 8465 BI opval = 0; 8466 SET_H_INSN_PREFIXED_P (opval); 8467 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8468 } 8469} 8470} 8471 8472#undef FLD 8473} 8474 NEXT (vpc); 8475 8476 CASE (sem, INSN_ADDI_W_R) : /* addi.w ${Rs-dfield}.m,${Rd-sfield} */ 8477{ 8478 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8479 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8480#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 8481 int UNUSED written = 0; 8482 IADDR UNUSED pc = abuf->addr; 8483 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8484 8485{ 8486 { 8487 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2)); 8488 SET_H_GR (FLD (f_operand1), opval); 8489 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8490 } 8491{ 8492 { 8493 BI opval = 0; 8494 CPU (h_xbit) = opval; 8495 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8496 } 8497 { 8498 BI opval = 0; 8499 SET_H_INSN_PREFIXED_P (opval); 8500 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8501 } 8502} 8503} 8504 8505#undef FLD 8506} 8507 NEXT (vpc); 8508 8509 CASE (sem, INSN_ADDI_D_R) : /* addi.d ${Rs-dfield}.m,${Rd-sfield} */ 8510{ 8511 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8512 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8513#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 8514 int UNUSED written = 0; 8515 IADDR UNUSED pc = abuf->addr; 8516 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8517 8518{ 8519 { 8520 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4)); 8521 SET_H_GR (FLD (f_operand1), opval); 8522 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8523 } 8524{ 8525 { 8526 BI opval = 0; 8527 CPU (h_xbit) = opval; 8528 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8529 } 8530 { 8531 BI opval = 0; 8532 SET_H_INSN_PREFIXED_P (opval); 8533 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8534 } 8535} 8536} 8537 8538#undef FLD 8539} 8540 NEXT (vpc); 8541 8542 CASE (sem, INSN_NEG_B_R) : /* neg.b $Rs,$Rd */ 8543{ 8544 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8545 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8546#define FLD(f) abuf->fields.sfmt_add_b_r.f 8547 int UNUSED written = 0; 8548 IADDR UNUSED pc = abuf->addr; 8549 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8550 8551{ 8552 QI tmp_tmpopd; 8553 QI tmp_tmpops; 8554 BI tmp_carry; 8555 QI tmp_newval; 8556 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 8557 tmp_tmpopd = 0; 8558 tmp_carry = CPU (h_cbit); 8559 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8560{ 8561 SI tmp_oldregval; 8562 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 8563 { 8564 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00)); 8565 SET_H_GR (FLD (f_operand2), opval); 8566 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8567 } 8568} 8569{ 8570 { 8571 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0)))); 8572 CPU (h_cbit) = opval; 8573 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8574 } 8575 { 8576 BI opval = LTQI (tmp_newval, 0); 8577 CPU (h_nbit) = opval; 8578 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8579 } 8580 { 8581 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8582 CPU (h_zbit) = opval; 8583 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8584 } 8585 { 8586 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0))); 8587 CPU (h_vbit) = opval; 8588 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8589 } 8590{ 8591 { 8592 BI opval = 0; 8593 CPU (h_xbit) = opval; 8594 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8595 } 8596 { 8597 BI opval = 0; 8598 SET_H_INSN_PREFIXED_P (opval); 8599 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8600 } 8601} 8602} 8603} 8604 8605#undef FLD 8606} 8607 NEXT (vpc); 8608 8609 CASE (sem, INSN_NEG_W_R) : /* neg.w $Rs,$Rd */ 8610{ 8611 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8612 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8613#define FLD(f) abuf->fields.sfmt_add_b_r.f 8614 int UNUSED written = 0; 8615 IADDR UNUSED pc = abuf->addr; 8616 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8617 8618{ 8619 HI tmp_tmpopd; 8620 HI tmp_tmpops; 8621 BI tmp_carry; 8622 HI tmp_newval; 8623 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 8624 tmp_tmpopd = 0; 8625 tmp_carry = CPU (h_cbit); 8626 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8627{ 8628 SI tmp_oldregval; 8629 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 8630 { 8631 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 8632 SET_H_GR (FLD (f_operand2), opval); 8633 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8634 } 8635} 8636{ 8637 { 8638 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0)))); 8639 CPU (h_cbit) = opval; 8640 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8641 } 8642 { 8643 BI opval = LTHI (tmp_newval, 0); 8644 CPU (h_nbit) = opval; 8645 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8646 } 8647 { 8648 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8649 CPU (h_zbit) = opval; 8650 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8651 } 8652 { 8653 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0))); 8654 CPU (h_vbit) = opval; 8655 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8656 } 8657{ 8658 { 8659 BI opval = 0; 8660 CPU (h_xbit) = opval; 8661 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8662 } 8663 { 8664 BI opval = 0; 8665 SET_H_INSN_PREFIXED_P (opval); 8666 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8667 } 8668} 8669} 8670} 8671 8672#undef FLD 8673} 8674 NEXT (vpc); 8675 8676 CASE (sem, INSN_NEG_D_R) : /* neg.d $Rs,$Rd */ 8677{ 8678 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8679 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8680#define FLD(f) abuf->fields.sfmt_add_b_r.f 8681 int UNUSED written = 0; 8682 IADDR UNUSED pc = abuf->addr; 8683 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8684 8685{ 8686 SI tmp_tmpopd; 8687 SI tmp_tmpops; 8688 BI tmp_carry; 8689 SI tmp_newval; 8690 tmp_tmpops = GET_H_GR (FLD (f_operand1)); 8691 tmp_tmpopd = 0; 8692 tmp_carry = CPU (h_cbit); 8693 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8694 { 8695 SI opval = tmp_newval; 8696 SET_H_GR (FLD (f_operand2), opval); 8697 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8698 } 8699{ 8700 { 8701 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 8702 CPU (h_cbit) = opval; 8703 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8704 } 8705 { 8706 BI opval = LTSI (tmp_newval, 0); 8707 CPU (h_nbit) = opval; 8708 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8709 } 8710 { 8711 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8712 CPU (h_zbit) = opval; 8713 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8714 } 8715 { 8716 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 8717 CPU (h_vbit) = opval; 8718 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8719 } 8720{ 8721 { 8722 BI opval = 0; 8723 CPU (h_xbit) = opval; 8724 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8725 } 8726 { 8727 BI opval = 0; 8728 SET_H_INSN_PREFIXED_P (opval); 8729 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8730 } 8731} 8732} 8733} 8734 8735#undef FLD 8736} 8737 NEXT (vpc); 8738 8739 CASE (sem, INSN_TEST_M_B_M) : /* test-m.b [${Rs}${inc}] */ 8740{ 8741 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8742 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8743#define FLD(f) abuf->fields.sfmt_move_spr_mv10.f 8744 int UNUSED written = 0; 8745 IADDR UNUSED pc = abuf->addr; 8746 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8747 8748{ 8749 QI tmp_tmpd; 8750 tmp_tmpd = ({ SI tmp_addr; 8751 QI tmp_tmp_mem; 8752 BI tmp_postinc; 8753 tmp_postinc = FLD (f_memmode); 8754; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 8755; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 8756; if (NEBI (tmp_postinc, 0)) { 8757{ 8758if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 8759 tmp_addr = ADDSI (tmp_addr, 1); 8760} 8761 { 8762 SI opval = tmp_addr; 8763 SET_H_GR (FLD (f_operand1), opval); 8764 written |= (1 << 8); 8765 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8766 } 8767} 8768} 8769; tmp_tmp_mem; }); 8770{ 8771 QI tmp_tmpopd; 8772 QI tmp_tmpops; 8773 BI tmp_carry; 8774 QI tmp_newval; 8775 tmp_tmpops = 0; 8776 tmp_tmpopd = tmp_tmpd; 8777 tmp_carry = CPU (h_cbit); 8778 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8779((void) 0); /*nop*/ 8780{ 8781 { 8782 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0)))); 8783 CPU (h_cbit) = opval; 8784 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8785 } 8786 { 8787 BI opval = LTQI (tmp_newval, 0); 8788 CPU (h_nbit) = opval; 8789 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8790 } 8791 { 8792 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8793 CPU (h_zbit) = opval; 8794 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8795 } 8796 { 8797 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0))); 8798 CPU (h_vbit) = opval; 8799 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8800 } 8801{ 8802 { 8803 BI opval = 0; 8804 CPU (h_xbit) = opval; 8805 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8806 } 8807 { 8808 BI opval = 0; 8809 SET_H_INSN_PREFIXED_P (opval); 8810 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8811 } 8812} 8813} 8814} 8815} 8816 8817 abuf->written = written; 8818#undef FLD 8819} 8820 NEXT (vpc); 8821 8822 CASE (sem, INSN_TEST_M_W_M) : /* test-m.w [${Rs}${inc}] */ 8823{ 8824 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8825 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8826#define FLD(f) abuf->fields.sfmt_move_spr_mv10.f 8827 int UNUSED written = 0; 8828 IADDR UNUSED pc = abuf->addr; 8829 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8830 8831{ 8832 HI tmp_tmpd; 8833 tmp_tmpd = ({ SI tmp_addr; 8834 HI tmp_tmp_mem; 8835 BI tmp_postinc; 8836 tmp_postinc = FLD (f_memmode); 8837; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 8838; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 8839; if (NEBI (tmp_postinc, 0)) { 8840{ 8841if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 8842 tmp_addr = ADDSI (tmp_addr, 2); 8843} 8844 { 8845 SI opval = tmp_addr; 8846 SET_H_GR (FLD (f_operand1), opval); 8847 written |= (1 << 8); 8848 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8849 } 8850} 8851} 8852; tmp_tmp_mem; }); 8853{ 8854 HI tmp_tmpopd; 8855 HI tmp_tmpops; 8856 BI tmp_carry; 8857 HI tmp_newval; 8858 tmp_tmpops = 0; 8859 tmp_tmpopd = tmp_tmpd; 8860 tmp_carry = CPU (h_cbit); 8861 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8862((void) 0); /*nop*/ 8863{ 8864 { 8865 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0)))); 8866 CPU (h_cbit) = opval; 8867 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8868 } 8869 { 8870 BI opval = LTHI (tmp_newval, 0); 8871 CPU (h_nbit) = opval; 8872 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8873 } 8874 { 8875 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8876 CPU (h_zbit) = opval; 8877 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8878 } 8879 { 8880 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0))); 8881 CPU (h_vbit) = opval; 8882 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8883 } 8884{ 8885 { 8886 BI opval = 0; 8887 CPU (h_xbit) = opval; 8888 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8889 } 8890 { 8891 BI opval = 0; 8892 SET_H_INSN_PREFIXED_P (opval); 8893 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8894 } 8895} 8896} 8897} 8898} 8899 8900 abuf->written = written; 8901#undef FLD 8902} 8903 NEXT (vpc); 8904 8905 CASE (sem, INSN_TEST_M_D_M) : /* test-m.d [${Rs}${inc}] */ 8906{ 8907 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8908 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8909#define FLD(f) abuf->fields.sfmt_move_spr_mv10.f 8910 int UNUSED written = 0; 8911 IADDR UNUSED pc = abuf->addr; 8912 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8913 8914{ 8915 SI tmp_tmpd; 8916 tmp_tmpd = ({ SI tmp_addr; 8917 SI tmp_tmp_mem; 8918 BI tmp_postinc; 8919 tmp_postinc = FLD (f_memmode); 8920; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 8921; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 8922; if (NEBI (tmp_postinc, 0)) { 8923{ 8924if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 8925 tmp_addr = ADDSI (tmp_addr, 4); 8926} 8927 { 8928 SI opval = tmp_addr; 8929 SET_H_GR (FLD (f_operand1), opval); 8930 written |= (1 << 8); 8931 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 8932 } 8933} 8934} 8935; tmp_tmp_mem; }); 8936{ 8937 SI tmp_tmpopd; 8938 SI tmp_tmpops; 8939 BI tmp_carry; 8940 SI tmp_newval; 8941 tmp_tmpops = 0; 8942 tmp_tmpopd = tmp_tmpd; 8943 tmp_carry = CPU (h_cbit); 8944 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry))); 8945((void) 0); /*nop*/ 8946{ 8947 { 8948 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0)))); 8949 CPU (h_cbit) = opval; 8950 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 8951 } 8952 { 8953 BI opval = LTSI (tmp_newval, 0); 8954 CPU (h_nbit) = opval; 8955 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 8956 } 8957 { 8958 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 8959 CPU (h_zbit) = opval; 8960 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 8961 } 8962 { 8963 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0))); 8964 CPU (h_vbit) = opval; 8965 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 8966 } 8967{ 8968 { 8969 BI opval = 0; 8970 CPU (h_xbit) = opval; 8971 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 8972 } 8973 { 8974 BI opval = 0; 8975 SET_H_INSN_PREFIXED_P (opval); 8976 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 8977 } 8978} 8979} 8980} 8981} 8982 8983 abuf->written = written; 8984#undef FLD 8985} 8986 NEXT (vpc); 8987 8988 CASE (sem, INSN_MOVE_R_M_B_M) : /* move-r-m.b ${Rs-dfield},[${Rd-sfield}${inc}] */ 8989{ 8990 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 8991 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 8992#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 8993 int UNUSED written = 0; 8994 IADDR UNUSED pc = abuf->addr; 8995 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 8996 8997{ 8998 QI tmp_tmpd; 8999 tmp_tmpd = GET_H_GR (FLD (f_operand2)); 9000{ 9001 SI tmp_addr; 9002 BI tmp_postinc; 9003 tmp_postinc = FLD (f_memmode); 9004 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 9005if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 9006if (EQBI (CPU (h_pbit), 0)) { 9007{ 9008 { 9009 QI opval = tmp_tmpd; 9010 SETMEMQI (current_cpu, pc, tmp_addr, opval); 9011 written |= (1 << 10); 9012 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 9013 } 9014 { 9015 BI opval = CPU (h_pbit); 9016 CPU (h_cbit) = opval; 9017 written |= (1 << 9); 9018 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9019 } 9020} 9021} else { 9022 { 9023 BI opval = 1; 9024 CPU (h_cbit) = opval; 9025 written |= (1 << 9); 9026 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9027 } 9028} 9029} else { 9030 { 9031 QI opval = tmp_tmpd; 9032 SETMEMQI (current_cpu, pc, tmp_addr, opval); 9033 written |= (1 << 10); 9034 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 9035 } 9036} 9037if (NEBI (tmp_postinc, 0)) { 9038{ 9039if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 9040 tmp_addr = ADDSI (tmp_addr, 1); 9041} 9042 { 9043 SI opval = tmp_addr; 9044 SET_H_GR (FLD (f_operand1), opval); 9045 written |= (1 << 8); 9046 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9047 } 9048} 9049} 9050} 9051{ 9052 { 9053 BI opval = 0; 9054 CPU (h_xbit) = opval; 9055 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9056 } 9057 { 9058 BI opval = 0; 9059 SET_H_INSN_PREFIXED_P (opval); 9060 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9061 } 9062} 9063} 9064 9065 abuf->written = written; 9066#undef FLD 9067} 9068 NEXT (vpc); 9069 9070 CASE (sem, INSN_MOVE_R_M_W_M) : /* move-r-m.w ${Rs-dfield},[${Rd-sfield}${inc}] */ 9071{ 9072 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9073 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9074#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 9075 int UNUSED written = 0; 9076 IADDR UNUSED pc = abuf->addr; 9077 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9078 9079{ 9080 HI tmp_tmpd; 9081 tmp_tmpd = GET_H_GR (FLD (f_operand2)); 9082{ 9083 SI tmp_addr; 9084 BI tmp_postinc; 9085 tmp_postinc = FLD (f_memmode); 9086 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 9087if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 9088if (EQBI (CPU (h_pbit), 0)) { 9089{ 9090 { 9091 HI opval = tmp_tmpd; 9092 SETMEMHI (current_cpu, pc, tmp_addr, opval); 9093 written |= (1 << 10); 9094 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 9095 } 9096 { 9097 BI opval = CPU (h_pbit); 9098 CPU (h_cbit) = opval; 9099 written |= (1 << 9); 9100 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9101 } 9102} 9103} else { 9104 { 9105 BI opval = 1; 9106 CPU (h_cbit) = opval; 9107 written |= (1 << 9); 9108 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9109 } 9110} 9111} else { 9112 { 9113 HI opval = tmp_tmpd; 9114 SETMEMHI (current_cpu, pc, tmp_addr, opval); 9115 written |= (1 << 10); 9116 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 9117 } 9118} 9119if (NEBI (tmp_postinc, 0)) { 9120{ 9121if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 9122 tmp_addr = ADDSI (tmp_addr, 2); 9123} 9124 { 9125 SI opval = tmp_addr; 9126 SET_H_GR (FLD (f_operand1), opval); 9127 written |= (1 << 8); 9128 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9129 } 9130} 9131} 9132} 9133{ 9134 { 9135 BI opval = 0; 9136 CPU (h_xbit) = opval; 9137 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9138 } 9139 { 9140 BI opval = 0; 9141 SET_H_INSN_PREFIXED_P (opval); 9142 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9143 } 9144} 9145} 9146 9147 abuf->written = written; 9148#undef FLD 9149} 9150 NEXT (vpc); 9151 9152 CASE (sem, INSN_MOVE_R_M_D_M) : /* move-r-m.d ${Rs-dfield},[${Rd-sfield}${inc}] */ 9153{ 9154 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9155 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9156#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 9157 int UNUSED written = 0; 9158 IADDR UNUSED pc = abuf->addr; 9159 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9160 9161{ 9162 SI tmp_tmpd; 9163 tmp_tmpd = GET_H_GR (FLD (f_operand2)); 9164{ 9165 SI tmp_addr; 9166 BI tmp_postinc; 9167 tmp_postinc = FLD (f_memmode); 9168 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 9169if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) { 9170if (EQBI (CPU (h_pbit), 0)) { 9171{ 9172 { 9173 SI opval = tmp_tmpd; 9174 SETMEMSI (current_cpu, pc, tmp_addr, opval); 9175 written |= (1 << 10); 9176 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 9177 } 9178 { 9179 BI opval = CPU (h_pbit); 9180 CPU (h_cbit) = opval; 9181 written |= (1 << 9); 9182 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9183 } 9184} 9185} else { 9186 { 9187 BI opval = 1; 9188 CPU (h_cbit) = opval; 9189 written |= (1 << 9); 9190 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9191 } 9192} 9193} else { 9194 { 9195 SI opval = tmp_tmpd; 9196 SETMEMSI (current_cpu, pc, tmp_addr, opval); 9197 written |= (1 << 10); 9198 CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval); 9199 } 9200} 9201if (NEBI (tmp_postinc, 0)) { 9202{ 9203if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 9204 tmp_addr = ADDSI (tmp_addr, 4); 9205} 9206 { 9207 SI opval = tmp_addr; 9208 SET_H_GR (FLD (f_operand1), opval); 9209 written |= (1 << 8); 9210 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9211 } 9212} 9213} 9214} 9215{ 9216 { 9217 BI opval = 0; 9218 CPU (h_xbit) = opval; 9219 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9220 } 9221 { 9222 BI opval = 0; 9223 SET_H_INSN_PREFIXED_P (opval); 9224 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9225 } 9226} 9227} 9228 9229 abuf->written = written; 9230#undef FLD 9231} 9232 NEXT (vpc); 9233 9234 CASE (sem, INSN_MULS_B) : /* muls.b $Rs,$Rd */ 9235{ 9236 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9237 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9238#define FLD(f) abuf->fields.sfmt_muls_b.f 9239 int UNUSED written = 0; 9240 IADDR UNUSED pc = abuf->addr; 9241 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9242 9243{ 9244 DI tmp_src1; 9245 DI tmp_src2; 9246 DI tmp_tmpr; 9247 tmp_src1 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1)))); 9248 tmp_src2 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))); 9249 tmp_tmpr = MULDI (tmp_src1, tmp_src2); 9250 { 9251 SI opval = TRUNCDISI (tmp_tmpr); 9252 SET_H_GR (FLD (f_operand2), opval); 9253 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9254 } 9255 { 9256 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32)); 9257 SET_H_SR (((UINT) 7), opval); 9258 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 9259 } 9260{ 9261 { 9262 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit)); 9263 CPU (h_cbit) = opval; 9264 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9265 } 9266 { 9267 BI opval = LTDI (tmp_tmpr, 0); 9268 CPU (h_nbit) = opval; 9269 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9270 } 9271 { 9272 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 9273 CPU (h_zbit) = opval; 9274 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9275 } 9276 { 9277 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr))); 9278 CPU (h_vbit) = opval; 9279 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 9280 } 9281{ 9282 { 9283 BI opval = 0; 9284 CPU (h_xbit) = opval; 9285 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9286 } 9287 { 9288 BI opval = 0; 9289 SET_H_INSN_PREFIXED_P (opval); 9290 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9291 } 9292} 9293} 9294} 9295 9296#undef FLD 9297} 9298 NEXT (vpc); 9299 9300 CASE (sem, INSN_MULS_W) : /* muls.w $Rs,$Rd */ 9301{ 9302 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9303 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9304#define FLD(f) abuf->fields.sfmt_muls_b.f 9305 int UNUSED written = 0; 9306 IADDR UNUSED pc = abuf->addr; 9307 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9308 9309{ 9310 DI tmp_src1; 9311 DI tmp_src2; 9312 DI tmp_tmpr; 9313 tmp_src1 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1)))); 9314 tmp_src2 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))); 9315 tmp_tmpr = MULDI (tmp_src1, tmp_src2); 9316 { 9317 SI opval = TRUNCDISI (tmp_tmpr); 9318 SET_H_GR (FLD (f_operand2), opval); 9319 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9320 } 9321 { 9322 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32)); 9323 SET_H_SR (((UINT) 7), opval); 9324 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 9325 } 9326{ 9327 { 9328 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit)); 9329 CPU (h_cbit) = opval; 9330 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9331 } 9332 { 9333 BI opval = LTDI (tmp_tmpr, 0); 9334 CPU (h_nbit) = opval; 9335 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9336 } 9337 { 9338 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 9339 CPU (h_zbit) = opval; 9340 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9341 } 9342 { 9343 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr))); 9344 CPU (h_vbit) = opval; 9345 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 9346 } 9347{ 9348 { 9349 BI opval = 0; 9350 CPU (h_xbit) = opval; 9351 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9352 } 9353 { 9354 BI opval = 0; 9355 SET_H_INSN_PREFIXED_P (opval); 9356 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9357 } 9358} 9359} 9360} 9361 9362#undef FLD 9363} 9364 NEXT (vpc); 9365 9366 CASE (sem, INSN_MULS_D) : /* muls.d $Rs,$Rd */ 9367{ 9368 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9369 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9370#define FLD(f) abuf->fields.sfmt_muls_b.f 9371 int UNUSED written = 0; 9372 IADDR UNUSED pc = abuf->addr; 9373 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9374 9375{ 9376 DI tmp_src1; 9377 DI tmp_src2; 9378 DI tmp_tmpr; 9379 tmp_src1 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1)))); 9380 tmp_src2 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))); 9381 tmp_tmpr = MULDI (tmp_src1, tmp_src2); 9382 { 9383 SI opval = TRUNCDISI (tmp_tmpr); 9384 SET_H_GR (FLD (f_operand2), opval); 9385 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9386 } 9387 { 9388 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32)); 9389 SET_H_SR (((UINT) 7), opval); 9390 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 9391 } 9392{ 9393 { 9394 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit)); 9395 CPU (h_cbit) = opval; 9396 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9397 } 9398 { 9399 BI opval = LTDI (tmp_tmpr, 0); 9400 CPU (h_nbit) = opval; 9401 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9402 } 9403 { 9404 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 9405 CPU (h_zbit) = opval; 9406 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9407 } 9408 { 9409 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr))); 9410 CPU (h_vbit) = opval; 9411 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 9412 } 9413{ 9414 { 9415 BI opval = 0; 9416 CPU (h_xbit) = opval; 9417 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9418 } 9419 { 9420 BI opval = 0; 9421 SET_H_INSN_PREFIXED_P (opval); 9422 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9423 } 9424} 9425} 9426} 9427 9428#undef FLD 9429} 9430 NEXT (vpc); 9431 9432 CASE (sem, INSN_MULU_B) : /* mulu.b $Rs,$Rd */ 9433{ 9434 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9435 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9436#define FLD(f) abuf->fields.sfmt_muls_b.f 9437 int UNUSED written = 0; 9438 IADDR UNUSED pc = abuf->addr; 9439 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9440 9441{ 9442 DI tmp_src1; 9443 DI tmp_src2; 9444 DI tmp_tmpr; 9445 tmp_src1 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1)))); 9446 tmp_src2 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))); 9447 tmp_tmpr = MULDI (tmp_src1, tmp_src2); 9448 { 9449 SI opval = TRUNCDISI (tmp_tmpr); 9450 SET_H_GR (FLD (f_operand2), opval); 9451 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9452 } 9453 { 9454 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32)); 9455 SET_H_SR (((UINT) 7), opval); 9456 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 9457 } 9458{ 9459 { 9460 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit)); 9461 CPU (h_cbit) = opval; 9462 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9463 } 9464 { 9465 BI opval = LTDI (tmp_tmpr, 0); 9466 CPU (h_nbit) = opval; 9467 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9468 } 9469 { 9470 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 9471 CPU (h_zbit) = opval; 9472 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9473 } 9474 { 9475 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr))); 9476 CPU (h_vbit) = opval; 9477 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 9478 } 9479{ 9480 { 9481 BI opval = 0; 9482 CPU (h_xbit) = opval; 9483 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9484 } 9485 { 9486 BI opval = 0; 9487 SET_H_INSN_PREFIXED_P (opval); 9488 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9489 } 9490} 9491} 9492} 9493 9494#undef FLD 9495} 9496 NEXT (vpc); 9497 9498 CASE (sem, INSN_MULU_W) : /* mulu.w $Rs,$Rd */ 9499{ 9500 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9501 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9502#define FLD(f) abuf->fields.sfmt_muls_b.f 9503 int UNUSED written = 0; 9504 IADDR UNUSED pc = abuf->addr; 9505 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9506 9507{ 9508 DI tmp_src1; 9509 DI tmp_src2; 9510 DI tmp_tmpr; 9511 tmp_src1 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1)))); 9512 tmp_src2 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))); 9513 tmp_tmpr = MULDI (tmp_src1, tmp_src2); 9514 { 9515 SI opval = TRUNCDISI (tmp_tmpr); 9516 SET_H_GR (FLD (f_operand2), opval); 9517 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9518 } 9519 { 9520 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32)); 9521 SET_H_SR (((UINT) 7), opval); 9522 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 9523 } 9524{ 9525 { 9526 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit)); 9527 CPU (h_cbit) = opval; 9528 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9529 } 9530 { 9531 BI opval = LTDI (tmp_tmpr, 0); 9532 CPU (h_nbit) = opval; 9533 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9534 } 9535 { 9536 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 9537 CPU (h_zbit) = opval; 9538 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9539 } 9540 { 9541 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr))); 9542 CPU (h_vbit) = opval; 9543 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 9544 } 9545{ 9546 { 9547 BI opval = 0; 9548 CPU (h_xbit) = opval; 9549 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9550 } 9551 { 9552 BI opval = 0; 9553 SET_H_INSN_PREFIXED_P (opval); 9554 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9555 } 9556} 9557} 9558} 9559 9560#undef FLD 9561} 9562 NEXT (vpc); 9563 9564 CASE (sem, INSN_MULU_D) : /* mulu.d $Rs,$Rd */ 9565{ 9566 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9567 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9568#define FLD(f) abuf->fields.sfmt_muls_b.f 9569 int UNUSED written = 0; 9570 IADDR UNUSED pc = abuf->addr; 9571 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9572 9573{ 9574 DI tmp_src1; 9575 DI tmp_src2; 9576 DI tmp_tmpr; 9577 tmp_src1 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1)))); 9578 tmp_src2 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))); 9579 tmp_tmpr = MULDI (tmp_src1, tmp_src2); 9580 { 9581 SI opval = TRUNCDISI (tmp_tmpr); 9582 SET_H_GR (FLD (f_operand2), opval); 9583 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9584 } 9585 { 9586 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32)); 9587 SET_H_SR (((UINT) 7), opval); 9588 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 9589 } 9590{ 9591 { 9592 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit)); 9593 CPU (h_cbit) = opval; 9594 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 9595 } 9596 { 9597 BI opval = LTDI (tmp_tmpr, 0); 9598 CPU (h_nbit) = opval; 9599 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9600 } 9601 { 9602 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit)))); 9603 CPU (h_zbit) = opval; 9604 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9605 } 9606 { 9607 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr))); 9608 CPU (h_vbit) = opval; 9609 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 9610 } 9611{ 9612 { 9613 BI opval = 0; 9614 CPU (h_xbit) = opval; 9615 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9616 } 9617 { 9618 BI opval = 0; 9619 SET_H_INSN_PREFIXED_P (opval); 9620 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9621 } 9622} 9623} 9624} 9625 9626#undef FLD 9627} 9628 NEXT (vpc); 9629 9630 CASE (sem, INSN_MSTEP) : /* mstep $Rs,$Rd */ 9631{ 9632 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9633 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9634#define FLD(f) abuf->fields.sfmt_muls_b.f 9635 int UNUSED written = 0; 9636 IADDR UNUSED pc = abuf->addr; 9637 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9638 9639{ 9640 SI tmp_tmpd; 9641 SI tmp_tmps; 9642 tmp_tmps = GET_H_GR (FLD (f_operand1)); 9643 tmp_tmpd = ADDSI (SLLSI (GET_H_GR (FLD (f_operand2)), 1), ((CPU (h_nbit)) ? (tmp_tmps) : (0))); 9644 { 9645 SI opval = tmp_tmpd; 9646 SET_H_GR (FLD (f_operand2), opval); 9647 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9648 } 9649{ 9650 { 9651 BI opval = LTSI (tmp_tmpd, 0); 9652 CPU (h_nbit) = opval; 9653 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9654 } 9655 { 9656 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 9657 CPU (h_zbit) = opval; 9658 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9659 } 9660SET_H_CBIT_MOVE (0); 9661SET_H_VBIT_MOVE (0); 9662{ 9663 { 9664 BI opval = 0; 9665 CPU (h_xbit) = opval; 9666 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9667 } 9668 { 9669 BI opval = 0; 9670 SET_H_INSN_PREFIXED_P (opval); 9671 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9672 } 9673} 9674} 9675} 9676 9677#undef FLD 9678} 9679 NEXT (vpc); 9680 9681 CASE (sem, INSN_DSTEP) : /* dstep $Rs,$Rd */ 9682{ 9683 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9684 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9685#define FLD(f) abuf->fields.sfmt_muls_b.f 9686 int UNUSED written = 0; 9687 IADDR UNUSED pc = abuf->addr; 9688 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9689 9690{ 9691 SI tmp_tmp; 9692 SI tmp_tmps; 9693 SI tmp_tmpd; 9694 tmp_tmps = GET_H_GR (FLD (f_operand1)); 9695 tmp_tmp = SLLSI (GET_H_GR (FLD (f_operand2)), 1); 9696 tmp_tmpd = ((GEUSI (tmp_tmp, tmp_tmps)) ? (SUBSI (tmp_tmp, tmp_tmps)) : (tmp_tmp)); 9697 { 9698 SI opval = tmp_tmpd; 9699 SET_H_GR (FLD (f_operand2), opval); 9700 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9701 } 9702{ 9703 { 9704 BI opval = LTSI (tmp_tmpd, 0); 9705 CPU (h_nbit) = opval; 9706 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9707 } 9708 { 9709 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 9710 CPU (h_zbit) = opval; 9711 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9712 } 9713SET_H_CBIT_MOVE (0); 9714SET_H_VBIT_MOVE (0); 9715{ 9716 { 9717 BI opval = 0; 9718 CPU (h_xbit) = opval; 9719 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9720 } 9721 { 9722 BI opval = 0; 9723 SET_H_INSN_PREFIXED_P (opval); 9724 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9725 } 9726} 9727} 9728} 9729 9730#undef FLD 9731} 9732 NEXT (vpc); 9733 9734 CASE (sem, INSN_ABS) : /* abs $Rs,$Rd */ 9735{ 9736 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9737 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9738#define FLD(f) abuf->fields.sfmt_muls_b.f 9739 int UNUSED written = 0; 9740 IADDR UNUSED pc = abuf->addr; 9741 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9742 9743{ 9744 SI tmp_tmpd; 9745 tmp_tmpd = ABSSI (GET_H_GR (FLD (f_operand1))); 9746 { 9747 SI opval = tmp_tmpd; 9748 SET_H_GR (FLD (f_operand2), opval); 9749 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9750 } 9751{ 9752 { 9753 BI opval = LTSI (tmp_tmpd, 0); 9754 CPU (h_nbit) = opval; 9755 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9756 } 9757 { 9758 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 9759 CPU (h_zbit) = opval; 9760 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9761 } 9762SET_H_CBIT_MOVE (0); 9763SET_H_VBIT_MOVE (0); 9764{ 9765 { 9766 BI opval = 0; 9767 CPU (h_xbit) = opval; 9768 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9769 } 9770 { 9771 BI opval = 0; 9772 SET_H_INSN_PREFIXED_P (opval); 9773 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9774 } 9775} 9776} 9777} 9778 9779#undef FLD 9780} 9781 NEXT (vpc); 9782 9783 CASE (sem, INSN_AND_B_R) : /* and.b $Rs,$Rd */ 9784{ 9785 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9786 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9787#define FLD(f) abuf->fields.sfmt_add_b_r.f 9788 int UNUSED written = 0; 9789 IADDR UNUSED pc = abuf->addr; 9790 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9791 9792{ 9793 QI tmp_tmpd; 9794 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1))); 9795{ 9796 SI tmp_oldregval; 9797 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 9798 { 9799 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00)); 9800 SET_H_GR (FLD (f_operand2), opval); 9801 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9802 } 9803} 9804{ 9805 { 9806 BI opval = LTQI (tmp_tmpd, 0); 9807 CPU (h_nbit) = opval; 9808 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9809 } 9810 { 9811 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 9812 CPU (h_zbit) = opval; 9813 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9814 } 9815SET_H_CBIT_MOVE (0); 9816SET_H_VBIT_MOVE (0); 9817{ 9818 { 9819 BI opval = 0; 9820 CPU (h_xbit) = opval; 9821 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9822 } 9823 { 9824 BI opval = 0; 9825 SET_H_INSN_PREFIXED_P (opval); 9826 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9827 } 9828} 9829} 9830} 9831 9832#undef FLD 9833} 9834 NEXT (vpc); 9835 9836 CASE (sem, INSN_AND_W_R) : /* and.w $Rs,$Rd */ 9837{ 9838 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9839 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9840#define FLD(f) abuf->fields.sfmt_add_b_r.f 9841 int UNUSED written = 0; 9842 IADDR UNUSED pc = abuf->addr; 9843 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9844 9845{ 9846 HI tmp_tmpd; 9847 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1))); 9848{ 9849 SI tmp_oldregval; 9850 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 9851 { 9852 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 9853 SET_H_GR (FLD (f_operand2), opval); 9854 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9855 } 9856} 9857{ 9858 { 9859 BI opval = LTHI (tmp_tmpd, 0); 9860 CPU (h_nbit) = opval; 9861 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9862 } 9863 { 9864 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 9865 CPU (h_zbit) = opval; 9866 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9867 } 9868SET_H_CBIT_MOVE (0); 9869SET_H_VBIT_MOVE (0); 9870{ 9871 { 9872 BI opval = 0; 9873 CPU (h_xbit) = opval; 9874 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9875 } 9876 { 9877 BI opval = 0; 9878 SET_H_INSN_PREFIXED_P (opval); 9879 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9880 } 9881} 9882} 9883} 9884 9885#undef FLD 9886} 9887 NEXT (vpc); 9888 9889 CASE (sem, INSN_AND_D_R) : /* and.d $Rs,$Rd */ 9890{ 9891 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9892 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9893#define FLD(f) abuf->fields.sfmt_add_b_r.f 9894 int UNUSED written = 0; 9895 IADDR UNUSED pc = abuf->addr; 9896 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9897 9898{ 9899 SI tmp_tmpd; 9900 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1))); 9901 { 9902 SI opval = tmp_tmpd; 9903 SET_H_GR (FLD (f_operand2), opval); 9904 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9905 } 9906{ 9907 { 9908 BI opval = LTSI (tmp_tmpd, 0); 9909 CPU (h_nbit) = opval; 9910 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9911 } 9912 { 9913 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 9914 CPU (h_zbit) = opval; 9915 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9916 } 9917SET_H_CBIT_MOVE (0); 9918SET_H_VBIT_MOVE (0); 9919{ 9920 { 9921 BI opval = 0; 9922 CPU (h_xbit) = opval; 9923 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9924 } 9925 { 9926 BI opval = 0; 9927 SET_H_INSN_PREFIXED_P (opval); 9928 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 9929 } 9930} 9931} 9932} 9933 9934#undef FLD 9935} 9936 NEXT (vpc); 9937 9938 CASE (sem, INSN_AND_M_B_M) : /* and-m.b [${Rs}${inc}],${Rd} */ 9939{ 9940 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 9941 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 9942#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 9943 int UNUSED written = 0; 9944 IADDR UNUSED pc = abuf->addr; 9945 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 9946 9947{ 9948 QI tmp_tmpd; 9949 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr; 9950 QI tmp_tmp_mem; 9951 BI tmp_postinc; 9952 tmp_postinc = FLD (f_memmode); 9953; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 9954; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 9955; if (NEBI (tmp_postinc, 0)) { 9956{ 9957if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 9958 tmp_addr = ADDSI (tmp_addr, 1); 9959} 9960 { 9961 SI opval = tmp_addr; 9962 SET_H_GR (FLD (f_operand1), opval); 9963 written |= (1 << 11); 9964 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9965 } 9966} 9967} 9968; tmp_tmp_mem; })); 9969{ 9970 SI tmp_oldregval; 9971 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2)))); 9972 { 9973 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00)); 9974 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 9975 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 9976 } 9977} 9978{ 9979 { 9980 BI opval = LTQI (tmp_tmpd, 0); 9981 CPU (h_nbit) = opval; 9982 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 9983 } 9984 { 9985 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 9986 CPU (h_zbit) = opval; 9987 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 9988 } 9989SET_H_CBIT_MOVE (0); 9990SET_H_VBIT_MOVE (0); 9991{ 9992 { 9993 BI opval = 0; 9994 CPU (h_xbit) = opval; 9995 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 9996 } 9997 { 9998 BI opval = 0; 9999 SET_H_INSN_PREFIXED_P (opval); 10000 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10001 } 10002} 10003} 10004} 10005 10006 abuf->written = written; 10007#undef FLD 10008} 10009 NEXT (vpc); 10010 10011 CASE (sem, INSN_AND_M_W_M) : /* and-m.w [${Rs}${inc}],${Rd} */ 10012{ 10013 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10014 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10015#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 10016 int UNUSED written = 0; 10017 IADDR UNUSED pc = abuf->addr; 10018 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10019 10020{ 10021 HI tmp_tmpd; 10022 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr; 10023 HI tmp_tmp_mem; 10024 BI tmp_postinc; 10025 tmp_postinc = FLD (f_memmode); 10026; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 10027; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 10028; if (NEBI (tmp_postinc, 0)) { 10029{ 10030if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 10031 tmp_addr = ADDSI (tmp_addr, 2); 10032} 10033 { 10034 SI opval = tmp_addr; 10035 SET_H_GR (FLD (f_operand1), opval); 10036 written |= (1 << 11); 10037 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10038 } 10039} 10040} 10041; tmp_tmp_mem; })); 10042{ 10043 SI tmp_oldregval; 10044 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2)))); 10045 { 10046 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 10047 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 10048 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10049 } 10050} 10051{ 10052 { 10053 BI opval = LTHI (tmp_tmpd, 0); 10054 CPU (h_nbit) = opval; 10055 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10056 } 10057 { 10058 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10059 CPU (h_zbit) = opval; 10060 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10061 } 10062SET_H_CBIT_MOVE (0); 10063SET_H_VBIT_MOVE (0); 10064{ 10065 { 10066 BI opval = 0; 10067 CPU (h_xbit) = opval; 10068 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10069 } 10070 { 10071 BI opval = 0; 10072 SET_H_INSN_PREFIXED_P (opval); 10073 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10074 } 10075} 10076} 10077} 10078 10079 abuf->written = written; 10080#undef FLD 10081} 10082 NEXT (vpc); 10083 10084 CASE (sem, INSN_AND_M_D_M) : /* and-m.d [${Rs}${inc}],${Rd} */ 10085{ 10086 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10087 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10088#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 10089 int UNUSED written = 0; 10090 IADDR UNUSED pc = abuf->addr; 10091 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10092 10093{ 10094 SI tmp_tmpd; 10095 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr; 10096 SI tmp_tmp_mem; 10097 BI tmp_postinc; 10098 tmp_postinc = FLD (f_memmode); 10099; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 10100; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 10101; if (NEBI (tmp_postinc, 0)) { 10102{ 10103if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 10104 tmp_addr = ADDSI (tmp_addr, 4); 10105} 10106 { 10107 SI opval = tmp_addr; 10108 SET_H_GR (FLD (f_operand1), opval); 10109 written |= (1 << 10); 10110 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10111 } 10112} 10113} 10114; tmp_tmp_mem; })); 10115 { 10116 SI opval = tmp_tmpd; 10117 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 10118 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10119 } 10120{ 10121 { 10122 BI opval = LTSI (tmp_tmpd, 0); 10123 CPU (h_nbit) = opval; 10124 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10125 } 10126 { 10127 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10128 CPU (h_zbit) = opval; 10129 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10130 } 10131SET_H_CBIT_MOVE (0); 10132SET_H_VBIT_MOVE (0); 10133{ 10134 { 10135 BI opval = 0; 10136 CPU (h_xbit) = opval; 10137 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10138 } 10139 { 10140 BI opval = 0; 10141 SET_H_INSN_PREFIXED_P (opval); 10142 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10143 } 10144} 10145} 10146} 10147 10148 abuf->written = written; 10149#undef FLD 10150} 10151 NEXT (vpc); 10152 10153 CASE (sem, INSN_ANDCBR) : /* and.b ${sconst8}],${Rd} */ 10154{ 10155 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10156 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10157#define FLD(f) abuf->fields.sfmt_addcbr.f 10158 int UNUSED written = 0; 10159 IADDR UNUSED pc = abuf->addr; 10160 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 10161 10162{ 10163 QI tmp_tmpd; 10164 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte)); 10165{ 10166 SI tmp_oldregval; 10167 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 10168 { 10169 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00)); 10170 SET_H_GR (FLD (f_operand2), opval); 10171 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10172 } 10173} 10174{ 10175 { 10176 BI opval = LTQI (tmp_tmpd, 0); 10177 CPU (h_nbit) = opval; 10178 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10179 } 10180 { 10181 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10182 CPU (h_zbit) = opval; 10183 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10184 } 10185SET_H_CBIT_MOVE (0); 10186SET_H_VBIT_MOVE (0); 10187{ 10188 { 10189 BI opval = 0; 10190 CPU (h_xbit) = opval; 10191 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10192 } 10193 { 10194 BI opval = 0; 10195 SET_H_INSN_PREFIXED_P (opval); 10196 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10197 } 10198} 10199} 10200} 10201 10202#undef FLD 10203} 10204 NEXT (vpc); 10205 10206 CASE (sem, INSN_ANDCWR) : /* and.w ${sconst16}],${Rd} */ 10207{ 10208 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10209 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10210#define FLD(f) abuf->fields.sfmt_addcwr.f 10211 int UNUSED written = 0; 10212 IADDR UNUSED pc = abuf->addr; 10213 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 10214 10215{ 10216 HI tmp_tmpd; 10217 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word)); 10218{ 10219 SI tmp_oldregval; 10220 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 10221 { 10222 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 10223 SET_H_GR (FLD (f_operand2), opval); 10224 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10225 } 10226} 10227{ 10228 { 10229 BI opval = LTHI (tmp_tmpd, 0); 10230 CPU (h_nbit) = opval; 10231 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10232 } 10233 { 10234 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10235 CPU (h_zbit) = opval; 10236 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10237 } 10238SET_H_CBIT_MOVE (0); 10239SET_H_VBIT_MOVE (0); 10240{ 10241 { 10242 BI opval = 0; 10243 CPU (h_xbit) = opval; 10244 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10245 } 10246 { 10247 BI opval = 0; 10248 SET_H_INSN_PREFIXED_P (opval); 10249 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10250 } 10251} 10252} 10253} 10254 10255#undef FLD 10256} 10257 NEXT (vpc); 10258 10259 CASE (sem, INSN_ANDCDR) : /* and.d ${const32}],${Rd} */ 10260{ 10261 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10262 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10263#define FLD(f) abuf->fields.sfmt_addcdr.f 10264 int UNUSED written = 0; 10265 IADDR UNUSED pc = abuf->addr; 10266 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 10267 10268{ 10269 SI tmp_tmpd; 10270 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword)); 10271 { 10272 SI opval = tmp_tmpd; 10273 SET_H_GR (FLD (f_operand2), opval); 10274 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10275 } 10276{ 10277 { 10278 BI opval = LTSI (tmp_tmpd, 0); 10279 CPU (h_nbit) = opval; 10280 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10281 } 10282 { 10283 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10284 CPU (h_zbit) = opval; 10285 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10286 } 10287SET_H_CBIT_MOVE (0); 10288SET_H_VBIT_MOVE (0); 10289{ 10290 { 10291 BI opval = 0; 10292 CPU (h_xbit) = opval; 10293 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10294 } 10295 { 10296 BI opval = 0; 10297 SET_H_INSN_PREFIXED_P (opval); 10298 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10299 } 10300} 10301} 10302} 10303 10304#undef FLD 10305} 10306 NEXT (vpc); 10307 10308 CASE (sem, INSN_ANDQ) : /* andq $i,$Rd */ 10309{ 10310 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10311 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10312#define FLD(f) abuf->fields.sfmt_andq.f 10313 int UNUSED written = 0; 10314 IADDR UNUSED pc = abuf->addr; 10315 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10316 10317{ 10318 SI tmp_tmpd; 10319 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6)); 10320 { 10321 SI opval = tmp_tmpd; 10322 SET_H_GR (FLD (f_operand2), opval); 10323 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10324 } 10325{ 10326 { 10327 BI opval = LTSI (tmp_tmpd, 0); 10328 CPU (h_nbit) = opval; 10329 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10330 } 10331 { 10332 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10333 CPU (h_zbit) = opval; 10334 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10335 } 10336SET_H_CBIT_MOVE (0); 10337SET_H_VBIT_MOVE (0); 10338{ 10339 { 10340 BI opval = 0; 10341 CPU (h_xbit) = opval; 10342 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10343 } 10344 { 10345 BI opval = 0; 10346 SET_H_INSN_PREFIXED_P (opval); 10347 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10348 } 10349} 10350} 10351} 10352 10353#undef FLD 10354} 10355 NEXT (vpc); 10356 10357 CASE (sem, INSN_ORR_B_R) : /* orr.b $Rs,$Rd */ 10358{ 10359 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10360 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10361#define FLD(f) abuf->fields.sfmt_add_b_r.f 10362 int UNUSED written = 0; 10363 IADDR UNUSED pc = abuf->addr; 10364 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10365 10366{ 10367 QI tmp_tmpd; 10368 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1))); 10369{ 10370 SI tmp_oldregval; 10371 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 10372 { 10373 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00)); 10374 SET_H_GR (FLD (f_operand2), opval); 10375 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10376 } 10377} 10378{ 10379 { 10380 BI opval = LTQI (tmp_tmpd, 0); 10381 CPU (h_nbit) = opval; 10382 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10383 } 10384 { 10385 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10386 CPU (h_zbit) = opval; 10387 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10388 } 10389SET_H_CBIT_MOVE (0); 10390SET_H_VBIT_MOVE (0); 10391{ 10392 { 10393 BI opval = 0; 10394 CPU (h_xbit) = opval; 10395 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10396 } 10397 { 10398 BI opval = 0; 10399 SET_H_INSN_PREFIXED_P (opval); 10400 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10401 } 10402} 10403} 10404} 10405 10406#undef FLD 10407} 10408 NEXT (vpc); 10409 10410 CASE (sem, INSN_ORR_W_R) : /* orr.w $Rs,$Rd */ 10411{ 10412 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10413 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10414#define FLD(f) abuf->fields.sfmt_add_b_r.f 10415 int UNUSED written = 0; 10416 IADDR UNUSED pc = abuf->addr; 10417 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10418 10419{ 10420 HI tmp_tmpd; 10421 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1))); 10422{ 10423 SI tmp_oldregval; 10424 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 10425 { 10426 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 10427 SET_H_GR (FLD (f_operand2), opval); 10428 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10429 } 10430} 10431{ 10432 { 10433 BI opval = LTHI (tmp_tmpd, 0); 10434 CPU (h_nbit) = opval; 10435 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10436 } 10437 { 10438 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10439 CPU (h_zbit) = opval; 10440 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10441 } 10442SET_H_CBIT_MOVE (0); 10443SET_H_VBIT_MOVE (0); 10444{ 10445 { 10446 BI opval = 0; 10447 CPU (h_xbit) = opval; 10448 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10449 } 10450 { 10451 BI opval = 0; 10452 SET_H_INSN_PREFIXED_P (opval); 10453 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10454 } 10455} 10456} 10457} 10458 10459#undef FLD 10460} 10461 NEXT (vpc); 10462 10463 CASE (sem, INSN_ORR_D_R) : /* orr.d $Rs,$Rd */ 10464{ 10465 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10466 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10467#define FLD(f) abuf->fields.sfmt_add_b_r.f 10468 int UNUSED written = 0; 10469 IADDR UNUSED pc = abuf->addr; 10470 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10471 10472{ 10473 SI tmp_tmpd; 10474 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1))); 10475 { 10476 SI opval = tmp_tmpd; 10477 SET_H_GR (FLD (f_operand2), opval); 10478 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10479 } 10480{ 10481 { 10482 BI opval = LTSI (tmp_tmpd, 0); 10483 CPU (h_nbit) = opval; 10484 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10485 } 10486 { 10487 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10488 CPU (h_zbit) = opval; 10489 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10490 } 10491SET_H_CBIT_MOVE (0); 10492SET_H_VBIT_MOVE (0); 10493{ 10494 { 10495 BI opval = 0; 10496 CPU (h_xbit) = opval; 10497 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10498 } 10499 { 10500 BI opval = 0; 10501 SET_H_INSN_PREFIXED_P (opval); 10502 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10503 } 10504} 10505} 10506} 10507 10508#undef FLD 10509} 10510 NEXT (vpc); 10511 10512 CASE (sem, INSN_OR_M_B_M) : /* or-m.b [${Rs}${inc}],${Rd} */ 10513{ 10514 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10515 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10516#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 10517 int UNUSED written = 0; 10518 IADDR UNUSED pc = abuf->addr; 10519 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10520 10521{ 10522 QI tmp_tmpd; 10523 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr; 10524 QI tmp_tmp_mem; 10525 BI tmp_postinc; 10526 tmp_postinc = FLD (f_memmode); 10527; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 10528; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 10529; if (NEBI (tmp_postinc, 0)) { 10530{ 10531if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 10532 tmp_addr = ADDSI (tmp_addr, 1); 10533} 10534 { 10535 SI opval = tmp_addr; 10536 SET_H_GR (FLD (f_operand1), opval); 10537 written |= (1 << 11); 10538 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10539 } 10540} 10541} 10542; tmp_tmp_mem; })); 10543{ 10544 SI tmp_oldregval; 10545 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2)))); 10546 { 10547 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00)); 10548 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 10549 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10550 } 10551} 10552{ 10553 { 10554 BI opval = LTQI (tmp_tmpd, 0); 10555 CPU (h_nbit) = opval; 10556 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10557 } 10558 { 10559 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10560 CPU (h_zbit) = opval; 10561 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10562 } 10563SET_H_CBIT_MOVE (0); 10564SET_H_VBIT_MOVE (0); 10565{ 10566 { 10567 BI opval = 0; 10568 CPU (h_xbit) = opval; 10569 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10570 } 10571 { 10572 BI opval = 0; 10573 SET_H_INSN_PREFIXED_P (opval); 10574 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10575 } 10576} 10577} 10578} 10579 10580 abuf->written = written; 10581#undef FLD 10582} 10583 NEXT (vpc); 10584 10585 CASE (sem, INSN_OR_M_W_M) : /* or-m.w [${Rs}${inc}],${Rd} */ 10586{ 10587 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10588 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10589#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 10590 int UNUSED written = 0; 10591 IADDR UNUSED pc = abuf->addr; 10592 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10593 10594{ 10595 HI tmp_tmpd; 10596 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr; 10597 HI tmp_tmp_mem; 10598 BI tmp_postinc; 10599 tmp_postinc = FLD (f_memmode); 10600; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 10601; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 10602; if (NEBI (tmp_postinc, 0)) { 10603{ 10604if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 10605 tmp_addr = ADDSI (tmp_addr, 2); 10606} 10607 { 10608 SI opval = tmp_addr; 10609 SET_H_GR (FLD (f_operand1), opval); 10610 written |= (1 << 11); 10611 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10612 } 10613} 10614} 10615; tmp_tmp_mem; })); 10616{ 10617 SI tmp_oldregval; 10618 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2)))); 10619 { 10620 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 10621 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 10622 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10623 } 10624} 10625{ 10626 { 10627 BI opval = LTHI (tmp_tmpd, 0); 10628 CPU (h_nbit) = opval; 10629 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10630 } 10631 { 10632 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10633 CPU (h_zbit) = opval; 10634 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10635 } 10636SET_H_CBIT_MOVE (0); 10637SET_H_VBIT_MOVE (0); 10638{ 10639 { 10640 BI opval = 0; 10641 CPU (h_xbit) = opval; 10642 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10643 } 10644 { 10645 BI opval = 0; 10646 SET_H_INSN_PREFIXED_P (opval); 10647 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10648 } 10649} 10650} 10651} 10652 10653 abuf->written = written; 10654#undef FLD 10655} 10656 NEXT (vpc); 10657 10658 CASE (sem, INSN_OR_M_D_M) : /* or-m.d [${Rs}${inc}],${Rd} */ 10659{ 10660 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10661 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10662#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 10663 int UNUSED written = 0; 10664 IADDR UNUSED pc = abuf->addr; 10665 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10666 10667{ 10668 SI tmp_tmpd; 10669 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr; 10670 SI tmp_tmp_mem; 10671 BI tmp_postinc; 10672 tmp_postinc = FLD (f_memmode); 10673; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 10674; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 10675; if (NEBI (tmp_postinc, 0)) { 10676{ 10677if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 10678 tmp_addr = ADDSI (tmp_addr, 4); 10679} 10680 { 10681 SI opval = tmp_addr; 10682 SET_H_GR (FLD (f_operand1), opval); 10683 written |= (1 << 10); 10684 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10685 } 10686} 10687} 10688; tmp_tmp_mem; })); 10689 { 10690 SI opval = tmp_tmpd; 10691 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval); 10692 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10693 } 10694{ 10695 { 10696 BI opval = LTSI (tmp_tmpd, 0); 10697 CPU (h_nbit) = opval; 10698 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10699 } 10700 { 10701 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10702 CPU (h_zbit) = opval; 10703 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10704 } 10705SET_H_CBIT_MOVE (0); 10706SET_H_VBIT_MOVE (0); 10707{ 10708 { 10709 BI opval = 0; 10710 CPU (h_xbit) = opval; 10711 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10712 } 10713 { 10714 BI opval = 0; 10715 SET_H_INSN_PREFIXED_P (opval); 10716 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10717 } 10718} 10719} 10720} 10721 10722 abuf->written = written; 10723#undef FLD 10724} 10725 NEXT (vpc); 10726 10727 CASE (sem, INSN_ORCBR) : /* or.b ${sconst8}],${Rd} */ 10728{ 10729 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10730 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10731#define FLD(f) abuf->fields.sfmt_addcbr.f 10732 int UNUSED written = 0; 10733 IADDR UNUSED pc = abuf->addr; 10734 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 10735 10736{ 10737 QI tmp_tmpd; 10738 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte)); 10739{ 10740 SI tmp_oldregval; 10741 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 10742 { 10743 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00)); 10744 SET_H_GR (FLD (f_operand2), opval); 10745 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10746 } 10747} 10748{ 10749 { 10750 BI opval = LTQI (tmp_tmpd, 0); 10751 CPU (h_nbit) = opval; 10752 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10753 } 10754 { 10755 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10756 CPU (h_zbit) = opval; 10757 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10758 } 10759SET_H_CBIT_MOVE (0); 10760SET_H_VBIT_MOVE (0); 10761{ 10762 { 10763 BI opval = 0; 10764 CPU (h_xbit) = opval; 10765 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10766 } 10767 { 10768 BI opval = 0; 10769 SET_H_INSN_PREFIXED_P (opval); 10770 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10771 } 10772} 10773} 10774} 10775 10776#undef FLD 10777} 10778 NEXT (vpc); 10779 10780 CASE (sem, INSN_ORCWR) : /* or.w ${sconst16}],${Rd} */ 10781{ 10782 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10783 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10784#define FLD(f) abuf->fields.sfmt_addcwr.f 10785 int UNUSED written = 0; 10786 IADDR UNUSED pc = abuf->addr; 10787 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 10788 10789{ 10790 HI tmp_tmpd; 10791 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word)); 10792{ 10793 SI tmp_oldregval; 10794 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 10795 { 10796 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 10797 SET_H_GR (FLD (f_operand2), opval); 10798 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10799 } 10800} 10801{ 10802 { 10803 BI opval = LTHI (tmp_tmpd, 0); 10804 CPU (h_nbit) = opval; 10805 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10806 } 10807 { 10808 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10809 CPU (h_zbit) = opval; 10810 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10811 } 10812SET_H_CBIT_MOVE (0); 10813SET_H_VBIT_MOVE (0); 10814{ 10815 { 10816 BI opval = 0; 10817 CPU (h_xbit) = opval; 10818 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10819 } 10820 { 10821 BI opval = 0; 10822 SET_H_INSN_PREFIXED_P (opval); 10823 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10824 } 10825} 10826} 10827} 10828 10829#undef FLD 10830} 10831 NEXT (vpc); 10832 10833 CASE (sem, INSN_ORCDR) : /* or.d ${const32}],${Rd} */ 10834{ 10835 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10836 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10837#define FLD(f) abuf->fields.sfmt_addcdr.f 10838 int UNUSED written = 0; 10839 IADDR UNUSED pc = abuf->addr; 10840 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 10841 10842{ 10843 SI tmp_tmpd; 10844 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword)); 10845 { 10846 SI opval = tmp_tmpd; 10847 SET_H_GR (FLD (f_operand2), opval); 10848 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10849 } 10850{ 10851 { 10852 BI opval = LTSI (tmp_tmpd, 0); 10853 CPU (h_nbit) = opval; 10854 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10855 } 10856 { 10857 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10858 CPU (h_zbit) = opval; 10859 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10860 } 10861SET_H_CBIT_MOVE (0); 10862SET_H_VBIT_MOVE (0); 10863{ 10864 { 10865 BI opval = 0; 10866 CPU (h_xbit) = opval; 10867 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10868 } 10869 { 10870 BI opval = 0; 10871 SET_H_INSN_PREFIXED_P (opval); 10872 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10873 } 10874} 10875} 10876} 10877 10878#undef FLD 10879} 10880 NEXT (vpc); 10881 10882 CASE (sem, INSN_ORQ) : /* orq $i,$Rd */ 10883{ 10884 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10885 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10886#define FLD(f) abuf->fields.sfmt_andq.f 10887 int UNUSED written = 0; 10888 IADDR UNUSED pc = abuf->addr; 10889 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10890 10891{ 10892 SI tmp_tmpd; 10893 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6)); 10894 { 10895 SI opval = tmp_tmpd; 10896 SET_H_GR (FLD (f_operand2), opval); 10897 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10898 } 10899{ 10900 { 10901 BI opval = LTSI (tmp_tmpd, 0); 10902 CPU (h_nbit) = opval; 10903 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10904 } 10905 { 10906 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10907 CPU (h_zbit) = opval; 10908 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10909 } 10910SET_H_CBIT_MOVE (0); 10911SET_H_VBIT_MOVE (0); 10912{ 10913 { 10914 BI opval = 0; 10915 CPU (h_xbit) = opval; 10916 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10917 } 10918 { 10919 BI opval = 0; 10920 SET_H_INSN_PREFIXED_P (opval); 10921 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10922 } 10923} 10924} 10925} 10926 10927#undef FLD 10928} 10929 NEXT (vpc); 10930 10931 CASE (sem, INSN_XOR) : /* xor $Rs,$Rd */ 10932{ 10933 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10934 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10935#define FLD(f) abuf->fields.sfmt_muls_b.f 10936 int UNUSED written = 0; 10937 IADDR UNUSED pc = abuf->addr; 10938 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10939 10940{ 10941 SI tmp_tmpd; 10942 tmp_tmpd = XORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1))); 10943 { 10944 SI opval = tmp_tmpd; 10945 SET_H_GR (FLD (f_operand2), opval); 10946 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 10947 } 10948{ 10949 { 10950 BI opval = LTSI (tmp_tmpd, 0); 10951 CPU (h_nbit) = opval; 10952 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 10953 } 10954 { 10955 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 10956 CPU (h_zbit) = opval; 10957 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 10958 } 10959SET_H_CBIT_MOVE (0); 10960SET_H_VBIT_MOVE (0); 10961{ 10962 { 10963 BI opval = 0; 10964 CPU (h_xbit) = opval; 10965 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 10966 } 10967 { 10968 BI opval = 0; 10969 SET_H_INSN_PREFIXED_P (opval); 10970 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 10971 } 10972} 10973} 10974} 10975 10976#undef FLD 10977} 10978 NEXT (vpc); 10979 10980 CASE (sem, INSN_SWAP) : /* swap${swapoption} ${Rs} */ 10981{ 10982 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 10983 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 10984#define FLD(f) abuf->fields.sfmt_move_spr_mv10.f 10985 int UNUSED written = 0; 10986 IADDR UNUSED pc = abuf->addr; 10987 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 10988 10989{ 10990 SI tmp_tmps; 10991 SI tmp_tmpd; 10992 tmp_tmps = GET_H_GR (FLD (f_operand1)); 10993 tmp_tmpd = ({ SI tmp_tmpcode; 10994 SI tmp_tmpval; 10995 SI tmp_tmpres; 10996 tmp_tmpcode = FLD (f_operand2); 10997; tmp_tmpval = tmp_tmps; 10998; if (EQSI (tmp_tmpcode, 0)) { 10999 tmp_tmpres = (cgen_rtx_error (current_cpu, "SWAP without swap modifier isn't implemented"), 0); 11000} 11001 else if (EQSI (tmp_tmpcode, 1)) { 11002 tmp_tmpres = ({ SI tmp_tmpr; 11003 tmp_tmpr = tmp_tmpval; 11004; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); }); 11005} 11006 else if (EQSI (tmp_tmpcode, 2)) { 11007 tmp_tmpres = ({ SI tmp_tmpb; 11008 tmp_tmpb = tmp_tmpval; 11009; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); }); 11010} 11011 else if (EQSI (tmp_tmpcode, 3)) { 11012 tmp_tmpres = ({ SI tmp_tmpr; 11013 tmp_tmpr = ({ SI tmp_tmpb; 11014 tmp_tmpb = tmp_tmpval; 11015; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); }); 11016; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); }); 11017} 11018 else if (EQSI (tmp_tmpcode, 4)) { 11019 tmp_tmpres = ({ SI tmp_tmpb; 11020 tmp_tmpb = tmp_tmpval; 11021; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); }); 11022} 11023 else if (EQSI (tmp_tmpcode, 5)) { 11024 tmp_tmpres = ({ SI tmp_tmpr; 11025 tmp_tmpr = ({ SI tmp_tmpb; 11026 tmp_tmpb = tmp_tmpval; 11027; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); }); 11028; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); }); 11029} 11030 else if (EQSI (tmp_tmpcode, 6)) { 11031 tmp_tmpres = ({ SI tmp_tmpb; 11032 tmp_tmpb = ({ SI tmp_tmpb; 11033 tmp_tmpb = tmp_tmpval; 11034; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); }); 11035; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); }); 11036} 11037 else if (EQSI (tmp_tmpcode, 7)) { 11038 tmp_tmpres = ({ SI tmp_tmpr; 11039 tmp_tmpr = ({ SI tmp_tmpb; 11040 tmp_tmpb = ({ SI tmp_tmpb; 11041 tmp_tmpb = tmp_tmpval; 11042; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); }); 11043; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); }); 11044; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); }); 11045} 11046 else if (EQSI (tmp_tmpcode, 8)) { 11047 tmp_tmpres = INVSI (tmp_tmpval); 11048} 11049 else if (EQSI (tmp_tmpcode, 9)) { 11050 tmp_tmpres = ({ SI tmp_tmpr; 11051 tmp_tmpr = INVSI (tmp_tmpval); 11052; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); }); 11053} 11054 else if (EQSI (tmp_tmpcode, 10)) { 11055 tmp_tmpres = ({ SI tmp_tmpb; 11056 tmp_tmpb = INVSI (tmp_tmpval); 11057; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); }); 11058} 11059 else if (EQSI (tmp_tmpcode, 11)) { 11060 tmp_tmpres = ({ SI tmp_tmpr; 11061 tmp_tmpr = ({ SI tmp_tmpb; 11062 tmp_tmpb = INVSI (tmp_tmpval); 11063; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); }); 11064; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); }); 11065} 11066 else if (EQSI (tmp_tmpcode, 12)) { 11067 tmp_tmpres = ({ SI tmp_tmpb; 11068 tmp_tmpb = INVSI (tmp_tmpval); 11069; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); }); 11070} 11071 else if (EQSI (tmp_tmpcode, 13)) { 11072 tmp_tmpres = ({ SI tmp_tmpr; 11073 tmp_tmpr = ({ SI tmp_tmpb; 11074 tmp_tmpb = INVSI (tmp_tmpval); 11075; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); }); 11076; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); }); 11077} 11078 else if (EQSI (tmp_tmpcode, 14)) { 11079 tmp_tmpres = ({ SI tmp_tmpb; 11080 tmp_tmpb = ({ SI tmp_tmpb; 11081 tmp_tmpb = INVSI (tmp_tmpval); 11082; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); }); 11083; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); }); 11084} 11085 else if (EQSI (tmp_tmpcode, 15)) { 11086 tmp_tmpres = ({ SI tmp_tmpr; 11087 tmp_tmpr = ({ SI tmp_tmpb; 11088 tmp_tmpb = ({ SI tmp_tmpb; 11089 tmp_tmpb = INVSI (tmp_tmpval); 11090; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); }); 11091; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); }); 11092; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); }); 11093} 11094; tmp_tmpres; }); 11095 { 11096 SI opval = tmp_tmpd; 11097 SET_H_GR (FLD (f_operand1), opval); 11098 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11099 } 11100{ 11101 { 11102 BI opval = LTSI (tmp_tmpd, 0); 11103 CPU (h_nbit) = opval; 11104 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11105 } 11106 { 11107 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11108 CPU (h_zbit) = opval; 11109 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11110 } 11111SET_H_CBIT_MOVE (0); 11112SET_H_VBIT_MOVE (0); 11113{ 11114 { 11115 BI opval = 0; 11116 CPU (h_xbit) = opval; 11117 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11118 } 11119 { 11120 BI opval = 0; 11121 SET_H_INSN_PREFIXED_P (opval); 11122 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11123 } 11124} 11125} 11126} 11127 11128#undef FLD 11129} 11130 NEXT (vpc); 11131 11132 CASE (sem, INSN_ASRR_B_R) : /* asrr.b $Rs,$Rd */ 11133{ 11134 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11135 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11136#define FLD(f) abuf->fields.sfmt_add_b_r.f 11137 int UNUSED written = 0; 11138 IADDR UNUSED pc = abuf->addr; 11139 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11140 11141{ 11142 QI tmp_tmpd; 11143 SI tmp_cnt1; 11144 SI tmp_cnt2; 11145 tmp_cnt1 = GET_H_GR (FLD (f_operand1)); 11146 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31))); 11147 tmp_tmpd = SRASI (EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2); 11148{ 11149 SI tmp_oldregval; 11150 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 11151 { 11152 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00)); 11153 SET_H_GR (FLD (f_operand2), opval); 11154 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11155 } 11156} 11157{ 11158 { 11159 BI opval = LTQI (tmp_tmpd, 0); 11160 CPU (h_nbit) = opval; 11161 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11162 } 11163 { 11164 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11165 CPU (h_zbit) = opval; 11166 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11167 } 11168SET_H_CBIT_MOVE (0); 11169SET_H_VBIT_MOVE (0); 11170{ 11171 { 11172 BI opval = 0; 11173 CPU (h_xbit) = opval; 11174 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11175 } 11176 { 11177 BI opval = 0; 11178 SET_H_INSN_PREFIXED_P (opval); 11179 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11180 } 11181} 11182} 11183} 11184 11185#undef FLD 11186} 11187 NEXT (vpc); 11188 11189 CASE (sem, INSN_ASRR_W_R) : /* asrr.w $Rs,$Rd */ 11190{ 11191 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11192 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11193#define FLD(f) abuf->fields.sfmt_add_b_r.f 11194 int UNUSED written = 0; 11195 IADDR UNUSED pc = abuf->addr; 11196 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11197 11198{ 11199 HI tmp_tmpd; 11200 SI tmp_cnt1; 11201 SI tmp_cnt2; 11202 tmp_cnt1 = GET_H_GR (FLD (f_operand1)); 11203 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31))); 11204 tmp_tmpd = SRASI (EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2); 11205{ 11206 SI tmp_oldregval; 11207 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 11208 { 11209 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 11210 SET_H_GR (FLD (f_operand2), opval); 11211 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11212 } 11213} 11214{ 11215 { 11216 BI opval = LTHI (tmp_tmpd, 0); 11217 CPU (h_nbit) = opval; 11218 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11219 } 11220 { 11221 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11222 CPU (h_zbit) = opval; 11223 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11224 } 11225SET_H_CBIT_MOVE (0); 11226SET_H_VBIT_MOVE (0); 11227{ 11228 { 11229 BI opval = 0; 11230 CPU (h_xbit) = opval; 11231 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11232 } 11233 { 11234 BI opval = 0; 11235 SET_H_INSN_PREFIXED_P (opval); 11236 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11237 } 11238} 11239} 11240} 11241 11242#undef FLD 11243} 11244 NEXT (vpc); 11245 11246 CASE (sem, INSN_ASRR_D_R) : /* asrr.d $Rs,$Rd */ 11247{ 11248 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11249 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11250#define FLD(f) abuf->fields.sfmt_add_b_r.f 11251 int UNUSED written = 0; 11252 IADDR UNUSED pc = abuf->addr; 11253 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11254 11255{ 11256 SI tmp_tmpd; 11257 SI tmp_cnt1; 11258 SI tmp_cnt2; 11259 tmp_cnt1 = GET_H_GR (FLD (f_operand1)); 11260 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31))); 11261 tmp_tmpd = SRASI (EXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2); 11262 { 11263 SI opval = tmp_tmpd; 11264 SET_H_GR (FLD (f_operand2), opval); 11265 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11266 } 11267{ 11268 { 11269 BI opval = LTSI (tmp_tmpd, 0); 11270 CPU (h_nbit) = opval; 11271 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11272 } 11273 { 11274 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11275 CPU (h_zbit) = opval; 11276 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11277 } 11278SET_H_CBIT_MOVE (0); 11279SET_H_VBIT_MOVE (0); 11280{ 11281 { 11282 BI opval = 0; 11283 CPU (h_xbit) = opval; 11284 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11285 } 11286 { 11287 BI opval = 0; 11288 SET_H_INSN_PREFIXED_P (opval); 11289 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11290 } 11291} 11292} 11293} 11294 11295#undef FLD 11296} 11297 NEXT (vpc); 11298 11299 CASE (sem, INSN_ASRQ) : /* asrq $c,${Rd} */ 11300{ 11301 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11302 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11303#define FLD(f) abuf->fields.sfmt_asrq.f 11304 int UNUSED written = 0; 11305 IADDR UNUSED pc = abuf->addr; 11306 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11307 11308{ 11309 SI tmp_tmpd; 11310 tmp_tmpd = SRASI (GET_H_GR (FLD (f_operand2)), FLD (f_u5)); 11311 { 11312 SI opval = tmp_tmpd; 11313 SET_H_GR (FLD (f_operand2), opval); 11314 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11315 } 11316{ 11317 { 11318 BI opval = LTSI (tmp_tmpd, 0); 11319 CPU (h_nbit) = opval; 11320 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11321 } 11322 { 11323 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11324 CPU (h_zbit) = opval; 11325 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11326 } 11327SET_H_CBIT_MOVE (0); 11328SET_H_VBIT_MOVE (0); 11329{ 11330 { 11331 BI opval = 0; 11332 CPU (h_xbit) = opval; 11333 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11334 } 11335 { 11336 BI opval = 0; 11337 SET_H_INSN_PREFIXED_P (opval); 11338 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11339 } 11340} 11341} 11342} 11343 11344#undef FLD 11345} 11346 NEXT (vpc); 11347 11348 CASE (sem, INSN_LSRR_B_R) : /* lsrr.b $Rs,$Rd */ 11349{ 11350 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11351 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11352#define FLD(f) abuf->fields.sfmt_add_b_r.f 11353 int UNUSED written = 0; 11354 IADDR UNUSED pc = abuf->addr; 11355 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11356 11357{ 11358 SI tmp_tmpd; 11359 SI tmp_cnt; 11360 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63); 11361 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31)))); 11362{ 11363 SI tmp_oldregval; 11364 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 11365 { 11366 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00)); 11367 SET_H_GR (FLD (f_operand2), opval); 11368 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11369 } 11370} 11371{ 11372 { 11373 BI opval = LTQI (tmp_tmpd, 0); 11374 CPU (h_nbit) = opval; 11375 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11376 } 11377 { 11378 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11379 CPU (h_zbit) = opval; 11380 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11381 } 11382SET_H_CBIT_MOVE (0); 11383SET_H_VBIT_MOVE (0); 11384{ 11385 { 11386 BI opval = 0; 11387 CPU (h_xbit) = opval; 11388 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11389 } 11390 { 11391 BI opval = 0; 11392 SET_H_INSN_PREFIXED_P (opval); 11393 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11394 } 11395} 11396} 11397} 11398 11399#undef FLD 11400} 11401 NEXT (vpc); 11402 11403 CASE (sem, INSN_LSRR_W_R) : /* lsrr.w $Rs,$Rd */ 11404{ 11405 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11406 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11407#define FLD(f) abuf->fields.sfmt_add_b_r.f 11408 int UNUSED written = 0; 11409 IADDR UNUSED pc = abuf->addr; 11410 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11411 11412{ 11413 SI tmp_tmpd; 11414 SI tmp_cnt; 11415 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63); 11416 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31)))); 11417{ 11418 SI tmp_oldregval; 11419 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 11420 { 11421 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 11422 SET_H_GR (FLD (f_operand2), opval); 11423 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11424 } 11425} 11426{ 11427 { 11428 BI opval = LTHI (tmp_tmpd, 0); 11429 CPU (h_nbit) = opval; 11430 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11431 } 11432 { 11433 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11434 CPU (h_zbit) = opval; 11435 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11436 } 11437SET_H_CBIT_MOVE (0); 11438SET_H_VBIT_MOVE (0); 11439{ 11440 { 11441 BI opval = 0; 11442 CPU (h_xbit) = opval; 11443 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11444 } 11445 { 11446 BI opval = 0; 11447 SET_H_INSN_PREFIXED_P (opval); 11448 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11449 } 11450} 11451} 11452} 11453 11454#undef FLD 11455} 11456 NEXT (vpc); 11457 11458 CASE (sem, INSN_LSRR_D_R) : /* lsrr.d $Rs,$Rd */ 11459{ 11460 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11461 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11462#define FLD(f) abuf->fields.sfmt_add_b_r.f 11463 int UNUSED written = 0; 11464 IADDR UNUSED pc = abuf->addr; 11465 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11466 11467{ 11468 SI tmp_tmpd; 11469 SI tmp_cnt; 11470 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63); 11471 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31)))); 11472 { 11473 SI opval = tmp_tmpd; 11474 SET_H_GR (FLD (f_operand2), opval); 11475 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11476 } 11477{ 11478 { 11479 BI opval = LTSI (tmp_tmpd, 0); 11480 CPU (h_nbit) = opval; 11481 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11482 } 11483 { 11484 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11485 CPU (h_zbit) = opval; 11486 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11487 } 11488SET_H_CBIT_MOVE (0); 11489SET_H_VBIT_MOVE (0); 11490{ 11491 { 11492 BI opval = 0; 11493 CPU (h_xbit) = opval; 11494 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11495 } 11496 { 11497 BI opval = 0; 11498 SET_H_INSN_PREFIXED_P (opval); 11499 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11500 } 11501} 11502} 11503} 11504 11505#undef FLD 11506} 11507 NEXT (vpc); 11508 11509 CASE (sem, INSN_LSRQ) : /* lsrq $c,${Rd} */ 11510{ 11511 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11512 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11513#define FLD(f) abuf->fields.sfmt_asrq.f 11514 int UNUSED written = 0; 11515 IADDR UNUSED pc = abuf->addr; 11516 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11517 11518{ 11519 SI tmp_tmpd; 11520 tmp_tmpd = SRLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5)); 11521 { 11522 SI opval = tmp_tmpd; 11523 SET_H_GR (FLD (f_operand2), opval); 11524 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11525 } 11526{ 11527 { 11528 BI opval = LTSI (tmp_tmpd, 0); 11529 CPU (h_nbit) = opval; 11530 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11531 } 11532 { 11533 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11534 CPU (h_zbit) = opval; 11535 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11536 } 11537SET_H_CBIT_MOVE (0); 11538SET_H_VBIT_MOVE (0); 11539{ 11540 { 11541 BI opval = 0; 11542 CPU (h_xbit) = opval; 11543 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11544 } 11545 { 11546 BI opval = 0; 11547 SET_H_INSN_PREFIXED_P (opval); 11548 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11549 } 11550} 11551} 11552} 11553 11554#undef FLD 11555} 11556 NEXT (vpc); 11557 11558 CASE (sem, INSN_LSLR_B_R) : /* lslr.b $Rs,$Rd */ 11559{ 11560 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11561 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11562#define FLD(f) abuf->fields.sfmt_add_b_r.f 11563 int UNUSED written = 0; 11564 IADDR UNUSED pc = abuf->addr; 11565 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11566 11567{ 11568 SI tmp_tmpd; 11569 SI tmp_cnt; 11570 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63); 11571 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31)))); 11572{ 11573 SI tmp_oldregval; 11574 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 11575 { 11576 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00)); 11577 SET_H_GR (FLD (f_operand2), opval); 11578 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11579 } 11580} 11581{ 11582 { 11583 BI opval = LTQI (tmp_tmpd, 0); 11584 CPU (h_nbit) = opval; 11585 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11586 } 11587 { 11588 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11589 CPU (h_zbit) = opval; 11590 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11591 } 11592SET_H_CBIT_MOVE (0); 11593SET_H_VBIT_MOVE (0); 11594{ 11595 { 11596 BI opval = 0; 11597 CPU (h_xbit) = opval; 11598 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11599 } 11600 { 11601 BI opval = 0; 11602 SET_H_INSN_PREFIXED_P (opval); 11603 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11604 } 11605} 11606} 11607} 11608 11609#undef FLD 11610} 11611 NEXT (vpc); 11612 11613 CASE (sem, INSN_LSLR_W_R) : /* lslr.w $Rs,$Rd */ 11614{ 11615 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11616 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11617#define FLD(f) abuf->fields.sfmt_add_b_r.f 11618 int UNUSED written = 0; 11619 IADDR UNUSED pc = abuf->addr; 11620 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11621 11622{ 11623 SI tmp_tmpd; 11624 SI tmp_cnt; 11625 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63); 11626 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31)))); 11627{ 11628 SI tmp_oldregval; 11629 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2)); 11630 { 11631 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000)); 11632 SET_H_GR (FLD (f_operand2), opval); 11633 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11634 } 11635} 11636{ 11637 { 11638 BI opval = LTHI (tmp_tmpd, 0); 11639 CPU (h_nbit) = opval; 11640 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11641 } 11642 { 11643 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11644 CPU (h_zbit) = opval; 11645 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11646 } 11647SET_H_CBIT_MOVE (0); 11648SET_H_VBIT_MOVE (0); 11649{ 11650 { 11651 BI opval = 0; 11652 CPU (h_xbit) = opval; 11653 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11654 } 11655 { 11656 BI opval = 0; 11657 SET_H_INSN_PREFIXED_P (opval); 11658 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11659 } 11660} 11661} 11662} 11663 11664#undef FLD 11665} 11666 NEXT (vpc); 11667 11668 CASE (sem, INSN_LSLR_D_R) : /* lslr.d $Rs,$Rd */ 11669{ 11670 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11671 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11672#define FLD(f) abuf->fields.sfmt_add_b_r.f 11673 int UNUSED written = 0; 11674 IADDR UNUSED pc = abuf->addr; 11675 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11676 11677{ 11678 SI tmp_tmpd; 11679 SI tmp_cnt; 11680 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63); 11681 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31)))); 11682 { 11683 SI opval = tmp_tmpd; 11684 SET_H_GR (FLD (f_operand2), opval); 11685 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11686 } 11687{ 11688 { 11689 BI opval = LTSI (tmp_tmpd, 0); 11690 CPU (h_nbit) = opval; 11691 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11692 } 11693 { 11694 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11695 CPU (h_zbit) = opval; 11696 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11697 } 11698SET_H_CBIT_MOVE (0); 11699SET_H_VBIT_MOVE (0); 11700{ 11701 { 11702 BI opval = 0; 11703 CPU (h_xbit) = opval; 11704 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11705 } 11706 { 11707 BI opval = 0; 11708 SET_H_INSN_PREFIXED_P (opval); 11709 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11710 } 11711} 11712} 11713} 11714 11715#undef FLD 11716} 11717 NEXT (vpc); 11718 11719 CASE (sem, INSN_LSLQ) : /* lslq $c,${Rd} */ 11720{ 11721 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11722 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11723#define FLD(f) abuf->fields.sfmt_asrq.f 11724 int UNUSED written = 0; 11725 IADDR UNUSED pc = abuf->addr; 11726 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11727 11728{ 11729 SI tmp_tmpd; 11730 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5)); 11731 { 11732 SI opval = tmp_tmpd; 11733 SET_H_GR (FLD (f_operand2), opval); 11734 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 11735 } 11736{ 11737 { 11738 BI opval = LTSI (tmp_tmpd, 0); 11739 CPU (h_nbit) = opval; 11740 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11741 } 11742 { 11743 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11744 CPU (h_zbit) = opval; 11745 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11746 } 11747SET_H_CBIT_MOVE (0); 11748SET_H_VBIT_MOVE (0); 11749{ 11750 { 11751 BI opval = 0; 11752 CPU (h_xbit) = opval; 11753 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11754 } 11755 { 11756 BI opval = 0; 11757 SET_H_INSN_PREFIXED_P (opval); 11758 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11759 } 11760} 11761} 11762} 11763 11764#undef FLD 11765} 11766 NEXT (vpc); 11767 11768 CASE (sem, INSN_BTST) : /* $Rs,$Rd */ 11769{ 11770 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11771 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11772#define FLD(f) abuf->fields.sfmt_add_b_r.f 11773 int UNUSED written = 0; 11774 IADDR UNUSED pc = abuf->addr; 11775 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11776 11777{ 11778 SI tmp_tmpd; 11779 SI tmp_cnt; 11780 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, ANDSI (GET_H_GR (FLD (f_operand1)), 31))); 11781{ 11782 { 11783 BI opval = LTSI (tmp_tmpd, 0); 11784 CPU (h_nbit) = opval; 11785 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11786 } 11787 { 11788 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11789 CPU (h_zbit) = opval; 11790 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11791 } 11792SET_H_CBIT_MOVE (0); 11793SET_H_VBIT_MOVE (0); 11794{ 11795 { 11796 BI opval = 0; 11797 CPU (h_xbit) = opval; 11798 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11799 } 11800 { 11801 BI opval = 0; 11802 SET_H_INSN_PREFIXED_P (opval); 11803 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11804 } 11805} 11806} 11807} 11808 11809#undef FLD 11810} 11811 NEXT (vpc); 11812 11813 CASE (sem, INSN_BTSTQ) : /* btstq $c,${Rd} */ 11814{ 11815 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11816 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11817#define FLD(f) abuf->fields.sfmt_asrq.f 11818 int UNUSED written = 0; 11819 IADDR UNUSED pc = abuf->addr; 11820 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11821 11822{ 11823 SI tmp_tmpd; 11824 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, FLD (f_u5))); 11825{ 11826 { 11827 BI opval = LTSI (tmp_tmpd, 0); 11828 CPU (h_nbit) = opval; 11829 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11830 } 11831 { 11832 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 11833 CPU (h_zbit) = opval; 11834 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11835 } 11836SET_H_CBIT_MOVE (0); 11837SET_H_VBIT_MOVE (0); 11838{ 11839 { 11840 BI opval = 0; 11841 CPU (h_xbit) = opval; 11842 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11843 } 11844 { 11845 BI opval = 0; 11846 SET_H_INSN_PREFIXED_P (opval); 11847 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11848 } 11849} 11850} 11851} 11852 11853#undef FLD 11854} 11855 NEXT (vpc); 11856 11857 CASE (sem, INSN_SETF) : /* setf ${list-of-flags} */ 11858{ 11859 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11860 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11861#define FLD(f) abuf->fields.sfmt_setf.f 11862 int UNUSED written = 0; 11863 IADDR UNUSED pc = abuf->addr; 11864 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11865 11866{ 11867 SI tmp_tmp; 11868 tmp_tmp = FLD (f_dstsrc); 11869if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) { 11870 { 11871 BI opval = 1; 11872 CPU (h_cbit) = opval; 11873 written |= (1 << 1); 11874 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 11875 } 11876} 11877if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) { 11878 { 11879 BI opval = 1; 11880 CPU (h_vbit) = opval; 11881 written |= (1 << 7); 11882 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 11883 } 11884} 11885if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) { 11886 { 11887 BI opval = 1; 11888 CPU (h_zbit) = opval; 11889 written |= (1 << 9); 11890 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11891 } 11892} 11893if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) { 11894 { 11895 BI opval = 1; 11896 CPU (h_nbit) = opval; 11897 written |= (1 << 3); 11898 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11899 } 11900} 11901if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) { 11902 { 11903 BI opval = 1; 11904 CPU (h_xbit) = opval; 11905 written |= (1 << 8); 11906 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11907 } 11908} 11909if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) { 11910 { 11911 BI opval = 1; 11912 SET_H_IBIT (opval); 11913 written |= (1 << 2); 11914 CGEN_TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval); 11915 } 11916} 11917if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) { 11918 { 11919 BI opval = 1; 11920 SET_H_UBIT (opval); 11921 written |= (1 << 6); 11922 CGEN_TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval); 11923 } 11924} 11925if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) { 11926 { 11927 BI opval = 1; 11928 CPU (h_pbit) = opval; 11929 written |= (1 << 4); 11930 CGEN_TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval); 11931 } 11932} 11933 { 11934 BI opval = 0; 11935 SET_H_INSN_PREFIXED_P (opval); 11936 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 11937 } 11938if (EQSI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) { 11939 { 11940 BI opval = 0; 11941 CPU (h_xbit) = opval; 11942 written |= (1 << 8); 11943 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 11944 } 11945} 11946} 11947 11948 abuf->written = written; 11949#undef FLD 11950} 11951 NEXT (vpc); 11952 11953 CASE (sem, INSN_CLEARF) : /* clearf ${list-of-flags} */ 11954{ 11955 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 11956 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 11957#define FLD(f) abuf->fields.sfmt_setf.f 11958 int UNUSED written = 0; 11959 IADDR UNUSED pc = abuf->addr; 11960 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 11961 11962{ 11963 SI tmp_tmp; 11964 tmp_tmp = FLD (f_dstsrc); 11965if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) { 11966 { 11967 BI opval = 0; 11968 CPU (h_cbit) = opval; 11969 written |= (1 << 1); 11970 CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval); 11971 } 11972} 11973if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) { 11974 { 11975 BI opval = 0; 11976 CPU (h_vbit) = opval; 11977 written |= (1 << 7); 11978 CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval); 11979 } 11980} 11981if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) { 11982 { 11983 BI opval = 0; 11984 CPU (h_zbit) = opval; 11985 written |= (1 << 9); 11986 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 11987 } 11988} 11989if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) { 11990 { 11991 BI opval = 0; 11992 CPU (h_nbit) = opval; 11993 written |= (1 << 3); 11994 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 11995 } 11996} 11997if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) { 11998 { 11999 BI opval = 0; 12000 CPU (h_xbit) = opval; 12001 written |= (1 << 8); 12002 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12003 } 12004} 12005if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) { 12006 { 12007 BI opval = 0; 12008 SET_H_IBIT (opval); 12009 written |= (1 << 2); 12010 CGEN_TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval); 12011 } 12012} 12013if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) { 12014 { 12015 BI opval = 0; 12016 SET_H_UBIT (opval); 12017 written |= (1 << 6); 12018 CGEN_TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval); 12019 } 12020} 12021if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) { 12022 { 12023 BI opval = 0; 12024 CPU (h_pbit) = opval; 12025 written |= (1 << 4); 12026 CGEN_TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval); 12027 } 12028} 12029{ 12030 { 12031 BI opval = 0; 12032 CPU (h_xbit) = opval; 12033 written |= (1 << 8); 12034 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12035 } 12036 { 12037 BI opval = 0; 12038 SET_H_INSN_PREFIXED_P (opval); 12039 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12040 } 12041} 12042} 12043 12044 abuf->written = written; 12045#undef FLD 12046} 12047 NEXT (vpc); 12048 12049 CASE (sem, INSN_BCC_B) : /* b${cc} ${o-pcrel} */ 12050{ 12051 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12052 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12053#define FLD(f) abuf->fields.sfmt_bcc_b.f 12054 int UNUSED written = 0; 12055 IADDR UNUSED pc = abuf->addr; 12056 SEM_BRANCH_INIT 12057 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 12058 12059{ 12060 BI tmp_truthval; 12061 tmp_truthval = ({ SI tmp_tmpcond; 12062 BI tmp_condres; 12063 tmp_tmpcond = FLD (f_operand2); 12064; if (EQSI (tmp_tmpcond, 0)) { 12065 tmp_condres = NOTBI (CPU (h_cbit)); 12066} 12067 else if (EQSI (tmp_tmpcond, 1)) { 12068 tmp_condres = CPU (h_cbit); 12069} 12070 else if (EQSI (tmp_tmpcond, 2)) { 12071 tmp_condres = NOTBI (CPU (h_zbit)); 12072} 12073 else if (EQSI (tmp_tmpcond, 3)) { 12074 tmp_condres = CPU (h_zbit); 12075} 12076 else if (EQSI (tmp_tmpcond, 4)) { 12077 tmp_condres = NOTBI (CPU (h_vbit)); 12078} 12079 else if (EQSI (tmp_tmpcond, 5)) { 12080 tmp_condres = CPU (h_vbit); 12081} 12082 else if (EQSI (tmp_tmpcond, 6)) { 12083 tmp_condres = NOTBI (CPU (h_nbit)); 12084} 12085 else if (EQSI (tmp_tmpcond, 7)) { 12086 tmp_condres = CPU (h_nbit); 12087} 12088 else if (EQSI (tmp_tmpcond, 8)) { 12089 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit)); 12090} 12091 else if (EQSI (tmp_tmpcond, 9)) { 12092 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit))); 12093} 12094 else if (EQSI (tmp_tmpcond, 10)) { 12095 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit))); 12096} 12097 else if (EQSI (tmp_tmpcond, 11)) { 12098 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit)); 12099} 12100 else if (EQSI (tmp_tmpcond, 12)) { 12101 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit))); 12102} 12103 else if (EQSI (tmp_tmpcond, 13)) { 12104 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)); 12105} 12106 else if (EQSI (tmp_tmpcond, 14)) { 12107 tmp_condres = 1; 12108} 12109 else if (EQSI (tmp_tmpcond, 15)) { 12110 tmp_condres = CPU (h_pbit); 12111} 12112; tmp_condres; }); 12113crisv10f_branch_taken (current_cpu, pc, FLD (i_o_pcrel), tmp_truthval); 12114{ 12115 { 12116 BI opval = 0; 12117 CPU (h_xbit) = opval; 12118 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12119 } 12120 { 12121 BI opval = 0; 12122 SET_H_INSN_PREFIXED_P (opval); 12123 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12124 } 12125} 12126if (tmp_truthval) { 12127{ 12128 { 12129 USI opval = FLD (i_o_pcrel); 12130 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc); 12131 written |= (1 << 8); 12132 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 12133 } 12134} 12135} 12136} 12137 12138 abuf->written = written; 12139 SEM_BRANCH_FINI (vpc); 12140#undef FLD 12141} 12142 NEXT (vpc); 12143 12144 CASE (sem, INSN_BA_B) : /* ba ${o-pcrel} */ 12145{ 12146 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12147 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12148#define FLD(f) abuf->fields.sfmt_bcc_b.f 12149 int UNUSED written = 0; 12150 IADDR UNUSED pc = abuf->addr; 12151 SEM_BRANCH_INIT 12152 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 12153 12154{ 12155{ 12156 { 12157 BI opval = 0; 12158 CPU (h_xbit) = opval; 12159 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12160 } 12161 { 12162 BI opval = 0; 12163 SET_H_INSN_PREFIXED_P (opval); 12164 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12165 } 12166} 12167{ 12168 { 12169 USI opval = FLD (i_o_pcrel); 12170 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc); 12171 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 12172 } 12173} 12174} 12175 12176 SEM_BRANCH_FINI (vpc); 12177#undef FLD 12178} 12179 NEXT (vpc); 12180 12181 CASE (sem, INSN_BCC_W) : /* b${cc} ${o-word-pcrel} */ 12182{ 12183 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12184 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12185#define FLD(f) abuf->fields.sfmt_bcc_w.f 12186 int UNUSED written = 0; 12187 IADDR UNUSED pc = abuf->addr; 12188 SEM_BRANCH_INIT 12189 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 12190 12191{ 12192 BI tmp_truthval; 12193 tmp_truthval = ({ SI tmp_tmpcond; 12194 BI tmp_condres; 12195 tmp_tmpcond = FLD (f_operand2); 12196; if (EQSI (tmp_tmpcond, 0)) { 12197 tmp_condres = NOTBI (CPU (h_cbit)); 12198} 12199 else if (EQSI (tmp_tmpcond, 1)) { 12200 tmp_condres = CPU (h_cbit); 12201} 12202 else if (EQSI (tmp_tmpcond, 2)) { 12203 tmp_condres = NOTBI (CPU (h_zbit)); 12204} 12205 else if (EQSI (tmp_tmpcond, 3)) { 12206 tmp_condres = CPU (h_zbit); 12207} 12208 else if (EQSI (tmp_tmpcond, 4)) { 12209 tmp_condres = NOTBI (CPU (h_vbit)); 12210} 12211 else if (EQSI (tmp_tmpcond, 5)) { 12212 tmp_condres = CPU (h_vbit); 12213} 12214 else if (EQSI (tmp_tmpcond, 6)) { 12215 tmp_condres = NOTBI (CPU (h_nbit)); 12216} 12217 else if (EQSI (tmp_tmpcond, 7)) { 12218 tmp_condres = CPU (h_nbit); 12219} 12220 else if (EQSI (tmp_tmpcond, 8)) { 12221 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit)); 12222} 12223 else if (EQSI (tmp_tmpcond, 9)) { 12224 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit))); 12225} 12226 else if (EQSI (tmp_tmpcond, 10)) { 12227 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit))); 12228} 12229 else if (EQSI (tmp_tmpcond, 11)) { 12230 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit)); 12231} 12232 else if (EQSI (tmp_tmpcond, 12)) { 12233 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit))); 12234} 12235 else if (EQSI (tmp_tmpcond, 13)) { 12236 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)); 12237} 12238 else if (EQSI (tmp_tmpcond, 14)) { 12239 tmp_condres = 1; 12240} 12241 else if (EQSI (tmp_tmpcond, 15)) { 12242 tmp_condres = CPU (h_pbit); 12243} 12244; tmp_condres; }); 12245crisv10f_branch_taken (current_cpu, pc, FLD (i_o_word_pcrel), tmp_truthval); 12246{ 12247 { 12248 BI opval = 0; 12249 CPU (h_xbit) = opval; 12250 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12251 } 12252 { 12253 BI opval = 0; 12254 SET_H_INSN_PREFIXED_P (opval); 12255 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12256 } 12257} 12258if (tmp_truthval) { 12259{ 12260 { 12261 USI opval = FLD (i_o_word_pcrel); 12262 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc); 12263 written |= (1 << 8); 12264 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 12265 } 12266} 12267} 12268} 12269 12270 abuf->written = written; 12271 SEM_BRANCH_FINI (vpc); 12272#undef FLD 12273} 12274 NEXT (vpc); 12275 12276 CASE (sem, INSN_BA_W) : /* ba ${o-word-pcrel} */ 12277{ 12278 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12279 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12280#define FLD(f) abuf->fields.sfmt_bcc_w.f 12281 int UNUSED written = 0; 12282 IADDR UNUSED pc = abuf->addr; 12283 SEM_BRANCH_INIT 12284 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 12285 12286{ 12287{ 12288 { 12289 BI opval = 0; 12290 CPU (h_xbit) = opval; 12291 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12292 } 12293 { 12294 BI opval = 0; 12295 SET_H_INSN_PREFIXED_P (opval); 12296 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12297 } 12298} 12299{ 12300 { 12301 USI opval = FLD (i_o_word_pcrel); 12302 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc); 12303 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 12304 } 12305} 12306} 12307 12308 SEM_BRANCH_FINI (vpc); 12309#undef FLD 12310} 12311 NEXT (vpc); 12312 12313 CASE (sem, INSN_JUMP_R) : /* jump/jsr/jir ${Rs} */ 12314{ 12315 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12316 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12317#define FLD(f) abuf->fields.sfmt_move_m_sprv10.f 12318 int UNUSED written = 0; 12319 IADDR UNUSED pc = abuf->addr; 12320 SEM_BRANCH_INIT 12321 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 12322 12323{ 12324 { 12325 SI opval = ADDSI (pc, 2); 12326 SET_H_SR (FLD (f_operand2), opval); 12327 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 12328 } 12329 { 12330 USI opval = GET_H_GR (FLD (f_operand1)); 12331 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc); 12332 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 12333 } 12334{ 12335 { 12336 BI opval = 0; 12337 CPU (h_xbit) = opval; 12338 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12339 } 12340 { 12341 BI opval = 0; 12342 SET_H_INSN_PREFIXED_P (opval); 12343 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12344 } 12345} 12346} 12347 12348 SEM_BRANCH_FINI (vpc); 12349#undef FLD 12350} 12351 NEXT (vpc); 12352 12353 CASE (sem, INSN_JUMP_M) : /* jump/jsr/jir [${Rs}${inc}] */ 12354{ 12355 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12356 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12357#define FLD(f) abuf->fields.sfmt_move_m_sprv10.f 12358 int UNUSED written = 0; 12359 IADDR UNUSED pc = abuf->addr; 12360 SEM_BRANCH_INIT 12361 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 12362 12363{ 12364 { 12365 SI opval = ADDSI (pc, 2); 12366 SET_H_SR (FLD (f_operand2), opval); 12367 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 12368 } 12369 { 12370 USI opval = ({ SI tmp_addr; 12371 SI tmp_tmp_mem; 12372 BI tmp_postinc; 12373 tmp_postinc = FLD (f_memmode); 12374; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 12375; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 12376; if (NEBI (tmp_postinc, 0)) { 12377{ 12378if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 12379 tmp_addr = ADDSI (tmp_addr, 4); 12380} 12381 { 12382 SI opval = tmp_addr; 12383 SET_H_GR (FLD (f_operand1), opval); 12384 written |= (1 << 7); 12385 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12386 } 12387} 12388} 12389; tmp_tmp_mem; }); 12390 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc); 12391 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 12392 } 12393{ 12394 { 12395 BI opval = 0; 12396 CPU (h_xbit) = opval; 12397 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12398 } 12399 { 12400 BI opval = 0; 12401 SET_H_INSN_PREFIXED_P (opval); 12402 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12403 } 12404} 12405} 12406 12407 abuf->written = written; 12408 SEM_BRANCH_FINI (vpc); 12409#undef FLD 12410} 12411 NEXT (vpc); 12412 12413 CASE (sem, INSN_JUMP_C) : /* jump/jsr/jir ${const32} */ 12414{ 12415 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12416 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12417#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 12418 int UNUSED written = 0; 12419 IADDR UNUSED pc = abuf->addr; 12420 SEM_BRANCH_INIT 12421 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 12422 12423{ 12424 { 12425 SI opval = ADDSI (pc, 6); 12426 SET_H_SR (FLD (f_operand2), opval); 12427 CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval); 12428 } 12429 { 12430 USI opval = FLD (f_indir_pc__dword); 12431 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc); 12432 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 12433 } 12434{ 12435 { 12436 BI opval = 0; 12437 CPU (h_xbit) = opval; 12438 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12439 } 12440 { 12441 BI opval = 0; 12442 SET_H_INSN_PREFIXED_P (opval); 12443 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12444 } 12445} 12446} 12447 12448 SEM_BRANCH_FINI (vpc); 12449#undef FLD 12450} 12451 NEXT (vpc); 12452 12453 CASE (sem, INSN_BREAK) : /* break $n */ 12454{ 12455 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12456 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12457#define FLD(f) abuf->fields.sfmt_break.f 12458 int UNUSED written = 0; 12459 IADDR UNUSED pc = abuf->addr; 12460 SEM_BRANCH_INIT 12461 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 12462 12463{ 12464{ 12465 { 12466 BI opval = 0; 12467 CPU (h_xbit) = opval; 12468 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12469 } 12470 { 12471 BI opval = 0; 12472 SET_H_INSN_PREFIXED_P (opval); 12473 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12474 } 12475} 12476 { 12477 USI opval = crisv10f_break_handler (current_cpu, FLD (f_u4), pc); 12478 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc); 12479 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 12480 } 12481} 12482 12483 SEM_BRANCH_FINI (vpc); 12484#undef FLD 12485} 12486 NEXT (vpc); 12487 12488 CASE (sem, INSN_BOUND_R_B_R) : /* bound-r.b ${Rs},${Rd} */ 12489{ 12490 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12491 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12492#define FLD(f) abuf->fields.sfmt_muls_b.f 12493 int UNUSED written = 0; 12494 IADDR UNUSED pc = abuf->addr; 12495 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 12496 12497{ 12498 SI tmp_tmpopd; 12499 SI tmp_tmpops; 12500 SI tmp_newval; 12501 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1)))); 12502 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 12503 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd)); 12504 { 12505 SI opval = tmp_newval; 12506 SET_H_GR (FLD (f_operand2), opval); 12507 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12508 } 12509{ 12510 { 12511 BI opval = LTSI (tmp_newval, 0); 12512 CPU (h_nbit) = opval; 12513 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 12514 } 12515 { 12516 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 12517 CPU (h_zbit) = opval; 12518 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 12519 } 12520SET_H_CBIT_MOVE (0); 12521SET_H_VBIT_MOVE (0); 12522{ 12523 { 12524 BI opval = 0; 12525 CPU (h_xbit) = opval; 12526 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12527 } 12528 { 12529 BI opval = 0; 12530 SET_H_INSN_PREFIXED_P (opval); 12531 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12532 } 12533} 12534} 12535} 12536 12537#undef FLD 12538} 12539 NEXT (vpc); 12540 12541 CASE (sem, INSN_BOUND_R_W_R) : /* bound-r.w ${Rs},${Rd} */ 12542{ 12543 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12544 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12545#define FLD(f) abuf->fields.sfmt_muls_b.f 12546 int UNUSED written = 0; 12547 IADDR UNUSED pc = abuf->addr; 12548 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 12549 12550{ 12551 SI tmp_tmpopd; 12552 SI tmp_tmpops; 12553 SI tmp_newval; 12554 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1)))); 12555 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 12556 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd)); 12557 { 12558 SI opval = tmp_newval; 12559 SET_H_GR (FLD (f_operand2), opval); 12560 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12561 } 12562{ 12563 { 12564 BI opval = LTSI (tmp_newval, 0); 12565 CPU (h_nbit) = opval; 12566 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 12567 } 12568 { 12569 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 12570 CPU (h_zbit) = opval; 12571 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 12572 } 12573SET_H_CBIT_MOVE (0); 12574SET_H_VBIT_MOVE (0); 12575{ 12576 { 12577 BI opval = 0; 12578 CPU (h_xbit) = opval; 12579 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12580 } 12581 { 12582 BI opval = 0; 12583 SET_H_INSN_PREFIXED_P (opval); 12584 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12585 } 12586} 12587} 12588} 12589 12590#undef FLD 12591} 12592 NEXT (vpc); 12593 12594 CASE (sem, INSN_BOUND_R_D_R) : /* bound-r.d ${Rs},${Rd} */ 12595{ 12596 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12597 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12598#define FLD(f) abuf->fields.sfmt_muls_b.f 12599 int UNUSED written = 0; 12600 IADDR UNUSED pc = abuf->addr; 12601 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 12602 12603{ 12604 SI tmp_tmpopd; 12605 SI tmp_tmpops; 12606 SI tmp_newval; 12607 tmp_tmpops = TRUNCSISI (GET_H_GR (FLD (f_operand1))); 12608 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 12609 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd)); 12610 { 12611 SI opval = tmp_newval; 12612 SET_H_GR (FLD (f_operand2), opval); 12613 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12614 } 12615{ 12616 { 12617 BI opval = LTSI (tmp_newval, 0); 12618 CPU (h_nbit) = opval; 12619 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 12620 } 12621 { 12622 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 12623 CPU (h_zbit) = opval; 12624 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 12625 } 12626SET_H_CBIT_MOVE (0); 12627SET_H_VBIT_MOVE (0); 12628{ 12629 { 12630 BI opval = 0; 12631 CPU (h_xbit) = opval; 12632 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12633 } 12634 { 12635 BI opval = 0; 12636 SET_H_INSN_PREFIXED_P (opval); 12637 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12638 } 12639} 12640} 12641} 12642 12643#undef FLD 12644} 12645 NEXT (vpc); 12646 12647 CASE (sem, INSN_BOUND_M_B_M) : /* bound-m.b [${Rs}${inc}],${Rd} */ 12648{ 12649 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12650 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12651#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 12652 int UNUSED written = 0; 12653 IADDR UNUSED pc = abuf->addr; 12654 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 12655 12656{ 12657 SI tmp_tmpopd; 12658 SI tmp_tmpops; 12659 SI tmp_newval; 12660 tmp_tmpops = ZEXTQISI (({ SI tmp_addr; 12661 QI tmp_tmp_mem; 12662 BI tmp_postinc; 12663 tmp_postinc = FLD (f_memmode); 12664; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 12665; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 12666; if (NEBI (tmp_postinc, 0)) { 12667{ 12668if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 12669 tmp_addr = ADDSI (tmp_addr, 1); 12670} 12671 { 12672 SI opval = tmp_addr; 12673 SET_H_GR (FLD (f_operand1), opval); 12674 written |= (1 << 9); 12675 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12676 } 12677} 12678} 12679; tmp_tmp_mem; })); 12680 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 12681 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd)); 12682if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) { 12683 { 12684 SI opval = tmp_newval; 12685 SET_H_GR (FLD (f_operand1), opval); 12686 written |= (1 << 9); 12687 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12688 } 12689} else { 12690 { 12691 SI opval = tmp_newval; 12692 SET_H_GR (FLD (f_operand2), opval); 12693 written |= (1 << 8); 12694 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12695 } 12696} 12697{ 12698 { 12699 BI opval = LTSI (tmp_newval, 0); 12700 CPU (h_nbit) = opval; 12701 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 12702 } 12703 { 12704 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 12705 CPU (h_zbit) = opval; 12706 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 12707 } 12708SET_H_CBIT_MOVE (0); 12709SET_H_VBIT_MOVE (0); 12710{ 12711 { 12712 BI opval = 0; 12713 CPU (h_xbit) = opval; 12714 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12715 } 12716 { 12717 BI opval = 0; 12718 SET_H_INSN_PREFIXED_P (opval); 12719 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12720 } 12721} 12722} 12723} 12724 12725 abuf->written = written; 12726#undef FLD 12727} 12728 NEXT (vpc); 12729 12730 CASE (sem, INSN_BOUND_M_W_M) : /* bound-m.w [${Rs}${inc}],${Rd} */ 12731{ 12732 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12733 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12734#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 12735 int UNUSED written = 0; 12736 IADDR UNUSED pc = abuf->addr; 12737 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 12738 12739{ 12740 SI tmp_tmpopd; 12741 SI tmp_tmpops; 12742 SI tmp_newval; 12743 tmp_tmpops = ZEXTHISI (({ SI tmp_addr; 12744 HI tmp_tmp_mem; 12745 BI tmp_postinc; 12746 tmp_postinc = FLD (f_memmode); 12747; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 12748; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 12749; if (NEBI (tmp_postinc, 0)) { 12750{ 12751if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 12752 tmp_addr = ADDSI (tmp_addr, 2); 12753} 12754 { 12755 SI opval = tmp_addr; 12756 SET_H_GR (FLD (f_operand1), opval); 12757 written |= (1 << 9); 12758 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12759 } 12760} 12761} 12762; tmp_tmp_mem; })); 12763 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 12764 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd)); 12765if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) { 12766 { 12767 SI opval = tmp_newval; 12768 SET_H_GR (FLD (f_operand1), opval); 12769 written |= (1 << 9); 12770 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12771 } 12772} else { 12773 { 12774 SI opval = tmp_newval; 12775 SET_H_GR (FLD (f_operand2), opval); 12776 written |= (1 << 8); 12777 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12778 } 12779} 12780{ 12781 { 12782 BI opval = LTSI (tmp_newval, 0); 12783 CPU (h_nbit) = opval; 12784 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 12785 } 12786 { 12787 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 12788 CPU (h_zbit) = opval; 12789 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 12790 } 12791SET_H_CBIT_MOVE (0); 12792SET_H_VBIT_MOVE (0); 12793{ 12794 { 12795 BI opval = 0; 12796 CPU (h_xbit) = opval; 12797 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12798 } 12799 { 12800 BI opval = 0; 12801 SET_H_INSN_PREFIXED_P (opval); 12802 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12803 } 12804} 12805} 12806} 12807 12808 abuf->written = written; 12809#undef FLD 12810} 12811 NEXT (vpc); 12812 12813 CASE (sem, INSN_BOUND_M_D_M) : /* bound-m.d [${Rs}${inc}],${Rd} */ 12814{ 12815 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12816 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12817#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 12818 int UNUSED written = 0; 12819 IADDR UNUSED pc = abuf->addr; 12820 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 12821 12822{ 12823 SI tmp_tmpopd; 12824 SI tmp_tmpops; 12825 SI tmp_newval; 12826 tmp_tmpops = ({ SI tmp_addr; 12827 SI tmp_tmp_mem; 12828 BI tmp_postinc; 12829 tmp_postinc = FLD (f_memmode); 12830; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 12831; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 12832; if (NEBI (tmp_postinc, 0)) { 12833{ 12834if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 12835 tmp_addr = ADDSI (tmp_addr, 4); 12836} 12837 { 12838 SI opval = tmp_addr; 12839 SET_H_GR (FLD (f_operand1), opval); 12840 written |= (1 << 9); 12841 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12842 } 12843} 12844} 12845; tmp_tmp_mem; }); 12846 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 12847 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd)); 12848if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) { 12849 { 12850 SI opval = tmp_newval; 12851 SET_H_GR (FLD (f_operand1), opval); 12852 written |= (1 << 9); 12853 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12854 } 12855} else { 12856 { 12857 SI opval = tmp_newval; 12858 SET_H_GR (FLD (f_operand2), opval); 12859 written |= (1 << 8); 12860 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12861 } 12862} 12863{ 12864 { 12865 BI opval = LTSI (tmp_newval, 0); 12866 CPU (h_nbit) = opval; 12867 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 12868 } 12869 { 12870 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 12871 CPU (h_zbit) = opval; 12872 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 12873 } 12874SET_H_CBIT_MOVE (0); 12875SET_H_VBIT_MOVE (0); 12876{ 12877 { 12878 BI opval = 0; 12879 CPU (h_xbit) = opval; 12880 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12881 } 12882 { 12883 BI opval = 0; 12884 SET_H_INSN_PREFIXED_P (opval); 12885 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12886 } 12887} 12888} 12889} 12890 12891 abuf->written = written; 12892#undef FLD 12893} 12894 NEXT (vpc); 12895 12896 CASE (sem, INSN_BOUND_CB) : /* bound.b [PC+],${Rd} */ 12897{ 12898 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12899 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12900#define FLD(f) abuf->fields.sfmt_bound_cb.f 12901 int UNUSED written = 0; 12902 IADDR UNUSED pc = abuf->addr; 12903 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 12904 12905{ 12906 SI tmp_tmpopd; 12907 SI tmp_tmpops; 12908 SI tmp_newval; 12909 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))); 12910 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 12911 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd)); 12912 { 12913 SI opval = tmp_newval; 12914 SET_H_GR (FLD (f_operand2), opval); 12915 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12916 } 12917{ 12918 { 12919 BI opval = LTSI (tmp_newval, 0); 12920 CPU (h_nbit) = opval; 12921 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 12922 } 12923 { 12924 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 12925 CPU (h_zbit) = opval; 12926 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 12927 } 12928SET_H_CBIT_MOVE (0); 12929SET_H_VBIT_MOVE (0); 12930{ 12931 { 12932 BI opval = 0; 12933 CPU (h_xbit) = opval; 12934 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12935 } 12936 { 12937 BI opval = 0; 12938 SET_H_INSN_PREFIXED_P (opval); 12939 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12940 } 12941} 12942} 12943} 12944 12945#undef FLD 12946} 12947 NEXT (vpc); 12948 12949 CASE (sem, INSN_BOUND_CW) : /* bound.w [PC+],${Rd} */ 12950{ 12951 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 12952 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 12953#define FLD(f) abuf->fields.sfmt_bound_cw.f 12954 int UNUSED written = 0; 12955 IADDR UNUSED pc = abuf->addr; 12956 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 12957 12958{ 12959 SI tmp_tmpopd; 12960 SI tmp_tmpops; 12961 SI tmp_newval; 12962 tmp_tmpops = ZEXTSISI (FLD (f_indir_pc__word)); 12963 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 12964 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd)); 12965 { 12966 SI opval = tmp_newval; 12967 SET_H_GR (FLD (f_operand2), opval); 12968 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 12969 } 12970{ 12971 { 12972 BI opval = LTSI (tmp_newval, 0); 12973 CPU (h_nbit) = opval; 12974 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 12975 } 12976 { 12977 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 12978 CPU (h_zbit) = opval; 12979 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 12980 } 12981SET_H_CBIT_MOVE (0); 12982SET_H_VBIT_MOVE (0); 12983{ 12984 { 12985 BI opval = 0; 12986 CPU (h_xbit) = opval; 12987 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 12988 } 12989 { 12990 BI opval = 0; 12991 SET_H_INSN_PREFIXED_P (opval); 12992 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 12993 } 12994} 12995} 12996} 12997 12998#undef FLD 12999} 13000 NEXT (vpc); 13001 13002 CASE (sem, INSN_BOUND_CD) : /* bound.d [PC+],${Rd} */ 13003{ 13004 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13005 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13006#define FLD(f) abuf->fields.sfmt_bound_cd.f 13007 int UNUSED written = 0; 13008 IADDR UNUSED pc = abuf->addr; 13009 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 13010 13011{ 13012 SI tmp_tmpopd; 13013 SI tmp_tmpops; 13014 SI tmp_newval; 13015 tmp_tmpops = FLD (f_indir_pc__dword); 13016 tmp_tmpopd = GET_H_GR (FLD (f_operand2)); 13017 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd)); 13018 { 13019 SI opval = tmp_newval; 13020 SET_H_GR (FLD (f_operand2), opval); 13021 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 13022 } 13023{ 13024 { 13025 BI opval = LTSI (tmp_newval, 0); 13026 CPU (h_nbit) = opval; 13027 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 13028 } 13029 { 13030 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 13031 CPU (h_zbit) = opval; 13032 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 13033 } 13034SET_H_CBIT_MOVE (0); 13035SET_H_VBIT_MOVE (0); 13036{ 13037 { 13038 BI opval = 0; 13039 CPU (h_xbit) = opval; 13040 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 13041 } 13042 { 13043 BI opval = 0; 13044 SET_H_INSN_PREFIXED_P (opval); 13045 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13046 } 13047} 13048} 13049} 13050 13051#undef FLD 13052} 13053 NEXT (vpc); 13054 13055 CASE (sem, INSN_SCC) : /* s${cc} ${Rd-sfield} */ 13056{ 13057 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13058 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13059#define FLD(f) abuf->fields.sfmt_move_spr_mv10.f 13060 int UNUSED written = 0; 13061 IADDR UNUSED pc = abuf->addr; 13062 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13063 13064{ 13065 BI tmp_truthval; 13066 tmp_truthval = ({ SI tmp_tmpcond; 13067 BI tmp_condres; 13068 tmp_tmpcond = FLD (f_operand2); 13069; if (EQSI (tmp_tmpcond, 0)) { 13070 tmp_condres = NOTBI (CPU (h_cbit)); 13071} 13072 else if (EQSI (tmp_tmpcond, 1)) { 13073 tmp_condres = CPU (h_cbit); 13074} 13075 else if (EQSI (tmp_tmpcond, 2)) { 13076 tmp_condres = NOTBI (CPU (h_zbit)); 13077} 13078 else if (EQSI (tmp_tmpcond, 3)) { 13079 tmp_condres = CPU (h_zbit); 13080} 13081 else if (EQSI (tmp_tmpcond, 4)) { 13082 tmp_condres = NOTBI (CPU (h_vbit)); 13083} 13084 else if (EQSI (tmp_tmpcond, 5)) { 13085 tmp_condres = CPU (h_vbit); 13086} 13087 else if (EQSI (tmp_tmpcond, 6)) { 13088 tmp_condres = NOTBI (CPU (h_nbit)); 13089} 13090 else if (EQSI (tmp_tmpcond, 7)) { 13091 tmp_condres = CPU (h_nbit); 13092} 13093 else if (EQSI (tmp_tmpcond, 8)) { 13094 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit)); 13095} 13096 else if (EQSI (tmp_tmpcond, 9)) { 13097 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit))); 13098} 13099 else if (EQSI (tmp_tmpcond, 10)) { 13100 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit))); 13101} 13102 else if (EQSI (tmp_tmpcond, 11)) { 13103 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit)); 13104} 13105 else if (EQSI (tmp_tmpcond, 12)) { 13106 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit))); 13107} 13108 else if (EQSI (tmp_tmpcond, 13)) { 13109 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)); 13110} 13111 else if (EQSI (tmp_tmpcond, 14)) { 13112 tmp_condres = 1; 13113} 13114 else if (EQSI (tmp_tmpcond, 15)) { 13115 tmp_condres = CPU (h_pbit); 13116} 13117; tmp_condres; }); 13118 { 13119 SI opval = ZEXTBISI (tmp_truthval); 13120 SET_H_GR (FLD (f_operand1), opval); 13121 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 13122 } 13123{ 13124 { 13125 BI opval = 0; 13126 CPU (h_xbit) = opval; 13127 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 13128 } 13129 { 13130 BI opval = 0; 13131 SET_H_INSN_PREFIXED_P (opval); 13132 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13133 } 13134} 13135} 13136 13137#undef FLD 13138} 13139 NEXT (vpc); 13140 13141 CASE (sem, INSN_LZ) : /* lz ${Rs},${Rd} */ 13142{ 13143 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13144 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13145#define FLD(f) abuf->fields.sfmt_muls_b.f 13146 int UNUSED written = 0; 13147 IADDR UNUSED pc = abuf->addr; 13148 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13149 13150{ 13151 SI tmp_tmpd; 13152 SI tmp_tmp; 13153 tmp_tmp = GET_H_GR (FLD (f_operand1)); 13154 tmp_tmpd = 0; 13155{ 13156if (GESI (tmp_tmp, 0)) { 13157{ 13158 tmp_tmp = SLLSI (tmp_tmp, 1); 13159 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13160} 13161} 13162if (GESI (tmp_tmp, 0)) { 13163{ 13164 tmp_tmp = SLLSI (tmp_tmp, 1); 13165 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13166} 13167} 13168if (GESI (tmp_tmp, 0)) { 13169{ 13170 tmp_tmp = SLLSI (tmp_tmp, 1); 13171 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13172} 13173} 13174if (GESI (tmp_tmp, 0)) { 13175{ 13176 tmp_tmp = SLLSI (tmp_tmp, 1); 13177 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13178} 13179} 13180if (GESI (tmp_tmp, 0)) { 13181{ 13182 tmp_tmp = SLLSI (tmp_tmp, 1); 13183 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13184} 13185} 13186if (GESI (tmp_tmp, 0)) { 13187{ 13188 tmp_tmp = SLLSI (tmp_tmp, 1); 13189 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13190} 13191} 13192if (GESI (tmp_tmp, 0)) { 13193{ 13194 tmp_tmp = SLLSI (tmp_tmp, 1); 13195 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13196} 13197} 13198if (GESI (tmp_tmp, 0)) { 13199{ 13200 tmp_tmp = SLLSI (tmp_tmp, 1); 13201 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13202} 13203} 13204if (GESI (tmp_tmp, 0)) { 13205{ 13206 tmp_tmp = SLLSI (tmp_tmp, 1); 13207 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13208} 13209} 13210if (GESI (tmp_tmp, 0)) { 13211{ 13212 tmp_tmp = SLLSI (tmp_tmp, 1); 13213 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13214} 13215} 13216if (GESI (tmp_tmp, 0)) { 13217{ 13218 tmp_tmp = SLLSI (tmp_tmp, 1); 13219 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13220} 13221} 13222if (GESI (tmp_tmp, 0)) { 13223{ 13224 tmp_tmp = SLLSI (tmp_tmp, 1); 13225 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13226} 13227} 13228if (GESI (tmp_tmp, 0)) { 13229{ 13230 tmp_tmp = SLLSI (tmp_tmp, 1); 13231 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13232} 13233} 13234if (GESI (tmp_tmp, 0)) { 13235{ 13236 tmp_tmp = SLLSI (tmp_tmp, 1); 13237 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13238} 13239} 13240if (GESI (tmp_tmp, 0)) { 13241{ 13242 tmp_tmp = SLLSI (tmp_tmp, 1); 13243 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13244} 13245} 13246if (GESI (tmp_tmp, 0)) { 13247{ 13248 tmp_tmp = SLLSI (tmp_tmp, 1); 13249 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13250} 13251} 13252if (GESI (tmp_tmp, 0)) { 13253{ 13254 tmp_tmp = SLLSI (tmp_tmp, 1); 13255 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13256} 13257} 13258if (GESI (tmp_tmp, 0)) { 13259{ 13260 tmp_tmp = SLLSI (tmp_tmp, 1); 13261 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13262} 13263} 13264if (GESI (tmp_tmp, 0)) { 13265{ 13266 tmp_tmp = SLLSI (tmp_tmp, 1); 13267 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13268} 13269} 13270if (GESI (tmp_tmp, 0)) { 13271{ 13272 tmp_tmp = SLLSI (tmp_tmp, 1); 13273 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13274} 13275} 13276if (GESI (tmp_tmp, 0)) { 13277{ 13278 tmp_tmp = SLLSI (tmp_tmp, 1); 13279 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13280} 13281} 13282if (GESI (tmp_tmp, 0)) { 13283{ 13284 tmp_tmp = SLLSI (tmp_tmp, 1); 13285 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13286} 13287} 13288if (GESI (tmp_tmp, 0)) { 13289{ 13290 tmp_tmp = SLLSI (tmp_tmp, 1); 13291 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13292} 13293} 13294if (GESI (tmp_tmp, 0)) { 13295{ 13296 tmp_tmp = SLLSI (tmp_tmp, 1); 13297 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13298} 13299} 13300if (GESI (tmp_tmp, 0)) { 13301{ 13302 tmp_tmp = SLLSI (tmp_tmp, 1); 13303 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13304} 13305} 13306if (GESI (tmp_tmp, 0)) { 13307{ 13308 tmp_tmp = SLLSI (tmp_tmp, 1); 13309 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13310} 13311} 13312if (GESI (tmp_tmp, 0)) { 13313{ 13314 tmp_tmp = SLLSI (tmp_tmp, 1); 13315 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13316} 13317} 13318if (GESI (tmp_tmp, 0)) { 13319{ 13320 tmp_tmp = SLLSI (tmp_tmp, 1); 13321 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13322} 13323} 13324if (GESI (tmp_tmp, 0)) { 13325{ 13326 tmp_tmp = SLLSI (tmp_tmp, 1); 13327 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13328} 13329} 13330if (GESI (tmp_tmp, 0)) { 13331{ 13332 tmp_tmp = SLLSI (tmp_tmp, 1); 13333 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13334} 13335} 13336if (GESI (tmp_tmp, 0)) { 13337{ 13338 tmp_tmp = SLLSI (tmp_tmp, 1); 13339 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13340} 13341} 13342if (GESI (tmp_tmp, 0)) { 13343{ 13344 tmp_tmp = SLLSI (tmp_tmp, 1); 13345 tmp_tmpd = ADDSI (tmp_tmpd, 1); 13346} 13347} 13348} 13349 { 13350 SI opval = tmp_tmpd; 13351 SET_H_GR (FLD (f_operand2), opval); 13352 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 13353 } 13354{ 13355 { 13356 BI opval = LTSI (tmp_tmpd, 0); 13357 CPU (h_nbit) = opval; 13358 CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval); 13359 } 13360 { 13361 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))); 13362 CPU (h_zbit) = opval; 13363 CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval); 13364 } 13365SET_H_CBIT_MOVE (0); 13366SET_H_VBIT_MOVE (0); 13367{ 13368 { 13369 BI opval = 0; 13370 CPU (h_xbit) = opval; 13371 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 13372 } 13373 { 13374 BI opval = 0; 13375 SET_H_INSN_PREFIXED_P (opval); 13376 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13377 } 13378} 13379} 13380} 13381 13382#undef FLD 13383} 13384 NEXT (vpc); 13385 13386 CASE (sem, INSN_ADDOQ) : /* addoq $o,$Rs,ACR */ 13387{ 13388 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13389 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13390#define FLD(f) abuf->fields.sfmt_addoq.f 13391 int UNUSED written = 0; 13392 IADDR UNUSED pc = abuf->addr; 13393 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13394 13395{ 13396 { 13397 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s8)); 13398 CPU (h_prefixreg_pre_v32) = opval; 13399 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13400 } 13401 { 13402 BI opval = 1; 13403 SET_H_INSN_PREFIXED_P (opval); 13404 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13405 } 13406} 13407 13408#undef FLD 13409} 13410 NEXT (vpc); 13411 13412 CASE (sem, INSN_BDAPQPC) : /* bdapq $o,PC */ 13413{ 13414 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13415 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13416#define FLD(f) abuf->fields.sfmt_addoq.f 13417 int UNUSED written = 0; 13418 IADDR UNUSED pc = abuf->addr; 13419 SEM_BRANCH_INIT 13420 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13421 13422{ 13423 { 13424 SI opval = ADDSI (ADDSI (pc, 2), FLD (f_s8)); 13425 CPU (h_prefixreg_pre_v32) = opval; 13426 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13427 } 13428 { 13429 BI opval = 1; 13430 SET_H_INSN_PREFIXED_P (opval); 13431 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13432 } 13433cris_flush_simulator_decode_cache (current_cpu, pc); 13434} 13435 13436 SEM_BRANCH_FINI (vpc); 13437#undef FLD 13438} 13439 NEXT (vpc); 13440 13441 CASE (sem, INSN_BDAP_32_PC) : /* bdap ${sconst32},PC */ 13442{ 13443 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13444 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13445#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 13446 int UNUSED written = 0; 13447 IADDR UNUSED pc = abuf->addr; 13448 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 13449 13450{ 13451 SI tmp_newpc; 13452 SI tmp_oldpc; 13453 SI tmp_offs; 13454 tmp_offs = FLD (f_indir_pc__dword); 13455 tmp_oldpc = ADDSI (pc, 6); 13456 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs); 13457 { 13458 SI opval = tmp_newpc; 13459 CPU (h_prefixreg_pre_v32) = opval; 13460 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13461 } 13462 { 13463 BI opval = 1; 13464 SET_H_INSN_PREFIXED_P (opval); 13465 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13466 } 13467} 13468 13469#undef FLD 13470} 13471 NEXT (vpc); 13472 13473 CASE (sem, INSN_MOVE_M_PCPLUS_P0) : /* move [PC+],P0 */ 13474{ 13475 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13476 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13477#define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f 13478 int UNUSED written = 0; 13479 IADDR UNUSED pc = abuf->addr; 13480 SEM_BRANCH_INIT 13481 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13482 13483if (GET_H_INSN_PREFIXED_P ()) { 13484{ 13485 QI tmp_dummy; 13486 tmp_dummy = ({ SI tmp_addr; 13487 QI tmp_tmp_mem; 13488 BI tmp_postinc; 13489 tmp_postinc = FLD (f_memmode); 13490; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (pc) : (CPU (h_prefixreg_pre_v32))); 13491; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 13492; if (NEBI (tmp_postinc, 0)) { 13493{ 13494if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 13495 tmp_addr = ADDSI (tmp_addr, 1); 13496} 13497 { 13498 USI opval = tmp_addr; 13499 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc); 13500 written |= (1 << 5); 13501 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); 13502 } 13503} 13504} 13505; tmp_tmp_mem; }); 13506{ 13507 { 13508 BI opval = 0; 13509 CPU (h_xbit) = opval; 13510 written |= (1 << 7); 13511 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 13512 } 13513 { 13514 BI opval = 0; 13515 SET_H_INSN_PREFIXED_P (opval); 13516 written |= (1 << 6); 13517 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13518 } 13519} 13520} 13521} else { 13522cgen_rtx_error (current_cpu, "move [PC+],P0 without prefix is not implemented"); 13523} 13524 13525 abuf->written = written; 13526 SEM_BRANCH_FINI (vpc); 13527#undef FLD 13528} 13529 NEXT (vpc); 13530 13531 CASE (sem, INSN_MOVE_M_SPPLUS_P8) : /* move [SP+],P8 */ 13532{ 13533 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13534 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13535#define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f 13536 int UNUSED written = 0; 13537 IADDR UNUSED pc = abuf->addr; 13538 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13539 13540if (GET_H_INSN_PREFIXED_P ()) { 13541{ 13542 SI tmp_dummy; 13543 tmp_dummy = ({ SI tmp_addr; 13544 SI tmp_tmp_mem; 13545 BI tmp_postinc; 13546 tmp_postinc = FLD (f_memmode); 13547; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (((UINT) 14))) : (CPU (h_prefixreg_pre_v32))); 13548; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 13549; if (NEBI (tmp_postinc, 0)) { 13550{ 13551if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 13552 tmp_addr = ADDSI (tmp_addr, 4); 13553} 13554 { 13555 SI opval = tmp_addr; 13556 SET_H_GR (((UINT) 14), opval); 13557 written |= (1 << 5); 13558 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 13559 } 13560} 13561} 13562; tmp_tmp_mem; }); 13563{ 13564 { 13565 BI opval = 0; 13566 CPU (h_xbit) = opval; 13567 written |= (1 << 7); 13568 CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval); 13569 } 13570 { 13571 BI opval = 0; 13572 SET_H_INSN_PREFIXED_P (opval); 13573 written |= (1 << 6); 13574 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13575 } 13576} 13577} 13578} else { 13579cgen_rtx_error (current_cpu, "move [SP+],P8 without prefix is not implemented"); 13580} 13581 13582 abuf->written = written; 13583#undef FLD 13584} 13585 NEXT (vpc); 13586 13587 CASE (sem, INSN_ADDO_M_B_M) : /* addo-m.b [${Rs}${inc}],$Rd,ACR */ 13588{ 13589 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13590 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13591#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 13592 int UNUSED written = 0; 13593 IADDR UNUSED pc = abuf->addr; 13594 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13595 13596{ 13597 QI tmp_tmps; 13598 tmp_tmps = ({ SI tmp_addr; 13599 QI tmp_tmp_mem; 13600 BI tmp_postinc; 13601 tmp_postinc = FLD (f_memmode); 13602; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 13603; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr); 13604; if (NEBI (tmp_postinc, 0)) { 13605{ 13606if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 13607 tmp_addr = ADDSI (tmp_addr, 1); 13608} 13609 { 13610 SI opval = tmp_addr; 13611 SET_H_GR (FLD (f_operand1), opval); 13612 written |= (1 << 6); 13613 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 13614 } 13615} 13616} 13617; tmp_tmp_mem; }); 13618 { 13619 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (tmp_tmps)); 13620 CPU (h_prefixreg_pre_v32) = opval; 13621 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13622 } 13623 { 13624 BI opval = 1; 13625 SET_H_INSN_PREFIXED_P (opval); 13626 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13627 } 13628} 13629 13630 abuf->written = written; 13631#undef FLD 13632} 13633 NEXT (vpc); 13634 13635 CASE (sem, INSN_ADDO_M_W_M) : /* addo-m.w [${Rs}${inc}],$Rd,ACR */ 13636{ 13637 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13638 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13639#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 13640 int UNUSED written = 0; 13641 IADDR UNUSED pc = abuf->addr; 13642 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13643 13644{ 13645 HI tmp_tmps; 13646 tmp_tmps = ({ SI tmp_addr; 13647 HI tmp_tmp_mem; 13648 BI tmp_postinc; 13649 tmp_postinc = FLD (f_memmode); 13650; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 13651; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr); 13652; if (NEBI (tmp_postinc, 0)) { 13653{ 13654if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 13655 tmp_addr = ADDSI (tmp_addr, 2); 13656} 13657 { 13658 SI opval = tmp_addr; 13659 SET_H_GR (FLD (f_operand1), opval); 13660 written |= (1 << 6); 13661 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 13662 } 13663} 13664} 13665; tmp_tmp_mem; }); 13666 { 13667 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (tmp_tmps)); 13668 CPU (h_prefixreg_pre_v32) = opval; 13669 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13670 } 13671 { 13672 BI opval = 1; 13673 SET_H_INSN_PREFIXED_P (opval); 13674 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13675 } 13676} 13677 13678 abuf->written = written; 13679#undef FLD 13680} 13681 NEXT (vpc); 13682 13683 CASE (sem, INSN_ADDO_M_D_M) : /* addo-m.d [${Rs}${inc}],$Rd,ACR */ 13684{ 13685 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13686 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13687#define FLD(f) abuf->fields.sfmt_bound_m_b_m.f 13688 int UNUSED written = 0; 13689 IADDR UNUSED pc = abuf->addr; 13690 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13691 13692{ 13693 SI tmp_tmps; 13694 tmp_tmps = ({ SI tmp_addr; 13695 SI tmp_tmp_mem; 13696 BI tmp_postinc; 13697 tmp_postinc = FLD (f_memmode); 13698; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 13699; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 13700; if (NEBI (tmp_postinc, 0)) { 13701{ 13702if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 13703 tmp_addr = ADDSI (tmp_addr, 4); 13704} 13705 { 13706 SI opval = tmp_addr; 13707 SET_H_GR (FLD (f_operand1), opval); 13708 written |= (1 << 6); 13709 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 13710 } 13711} 13712} 13713; tmp_tmp_mem; }); 13714 { 13715 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), tmp_tmps); 13716 CPU (h_prefixreg_pre_v32) = opval; 13717 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13718 } 13719 { 13720 BI opval = 1; 13721 SET_H_INSN_PREFIXED_P (opval); 13722 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13723 } 13724} 13725 13726 abuf->written = written; 13727#undef FLD 13728} 13729 NEXT (vpc); 13730 13731 CASE (sem, INSN_ADDO_CB) : /* addo.b [PC+],$Rd,ACR */ 13732{ 13733 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13734 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13735#define FLD(f) abuf->fields.sfmt_bound_cb.f 13736 int UNUSED written = 0; 13737 IADDR UNUSED pc = abuf->addr; 13738 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 13739 13740{ 13741 { 13742 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)))); 13743 CPU (h_prefixreg_pre_v32) = opval; 13744 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13745 } 13746 { 13747 BI opval = 1; 13748 SET_H_INSN_PREFIXED_P (opval); 13749 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13750 } 13751} 13752 13753#undef FLD 13754} 13755 NEXT (vpc); 13756 13757 CASE (sem, INSN_ADDO_CW) : /* addo.w [PC+],$Rd,ACR */ 13758{ 13759 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13760 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13761#define FLD(f) abuf->fields.sfmt_bound_cw.f 13762 int UNUSED written = 0; 13763 IADDR UNUSED pc = abuf->addr; 13764 vpc = SEM_NEXT_VPC (sem_arg, pc, 4); 13765 13766{ 13767 { 13768 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)))); 13769 CPU (h_prefixreg_pre_v32) = opval; 13770 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13771 } 13772 { 13773 BI opval = 1; 13774 SET_H_INSN_PREFIXED_P (opval); 13775 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13776 } 13777} 13778 13779#undef FLD 13780} 13781 NEXT (vpc); 13782 13783 CASE (sem, INSN_ADDO_CD) : /* addo.d [PC+],$Rd,ACR */ 13784{ 13785 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13786 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13787#define FLD(f) abuf->fields.sfmt_bound_cd.f 13788 int UNUSED written = 0; 13789 IADDR UNUSED pc = abuf->addr; 13790 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 13791 13792{ 13793 { 13794 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword)); 13795 CPU (h_prefixreg_pre_v32) = opval; 13796 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13797 } 13798 { 13799 BI opval = 1; 13800 SET_H_INSN_PREFIXED_P (opval); 13801 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13802 } 13803} 13804 13805#undef FLD 13806} 13807 NEXT (vpc); 13808 13809 CASE (sem, INSN_DIP_M) : /* dip [${Rs}${inc}] */ 13810{ 13811 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13812 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13813#define FLD(f) abuf->fields.sfmt_move_spr_mv10.f 13814 int UNUSED written = 0; 13815 IADDR UNUSED pc = abuf->addr; 13816 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13817 13818{ 13819 SI tmp_tmps; 13820 tmp_tmps = ({ SI tmp_addr; 13821 SI tmp_tmp_mem; 13822 BI tmp_postinc; 13823 tmp_postinc = FLD (f_memmode); 13824; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32))); 13825; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr); 13826; if (NEBI (tmp_postinc, 0)) { 13827{ 13828if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) { 13829 tmp_addr = ADDSI (tmp_addr, 4); 13830} 13831 { 13832 SI opval = tmp_addr; 13833 SET_H_GR (FLD (f_operand1), opval); 13834 written |= (1 << 5); 13835 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); 13836 } 13837} 13838} 13839; tmp_tmp_mem; }); 13840 { 13841 SI opval = tmp_tmps; 13842 CPU (h_prefixreg_pre_v32) = opval; 13843 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13844 } 13845 { 13846 BI opval = 1; 13847 SET_H_INSN_PREFIXED_P (opval); 13848 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13849 } 13850} 13851 13852 abuf->written = written; 13853#undef FLD 13854} 13855 NEXT (vpc); 13856 13857 CASE (sem, INSN_DIP_C) : /* dip [PC+] */ 13858{ 13859 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13860 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13861#define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f 13862 int UNUSED written = 0; 13863 IADDR UNUSED pc = abuf->addr; 13864 vpc = SEM_NEXT_VPC (sem_arg, pc, 6); 13865 13866{ 13867 { 13868 SI opval = FLD (f_indir_pc__dword); 13869 CPU (h_prefixreg_pre_v32) = opval; 13870 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13871 } 13872 { 13873 BI opval = 1; 13874 SET_H_INSN_PREFIXED_P (opval); 13875 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13876 } 13877} 13878 13879#undef FLD 13880} 13881 NEXT (vpc); 13882 13883 CASE (sem, INSN_ADDI_ACR_B_R) : /* addi-acr.b ${Rs-dfield}.m,${Rd-sfield},ACR */ 13884{ 13885 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13886 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13887#define FLD(f) abuf->fields.sfmt_add_b_r.f 13888 int UNUSED written = 0; 13889 IADDR UNUSED pc = abuf->addr; 13890 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13891 13892{ 13893 { 13894 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1)); 13895 CPU (h_prefixreg_pre_v32) = opval; 13896 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13897 } 13898 { 13899 BI opval = 1; 13900 SET_H_INSN_PREFIXED_P (opval); 13901 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13902 } 13903} 13904 13905#undef FLD 13906} 13907 NEXT (vpc); 13908 13909 CASE (sem, INSN_ADDI_ACR_W_R) : /* addi-acr.w ${Rs-dfield}.m,${Rd-sfield},ACR */ 13910{ 13911 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13912 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13913#define FLD(f) abuf->fields.sfmt_add_b_r.f 13914 int UNUSED written = 0; 13915 IADDR UNUSED pc = abuf->addr; 13916 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13917 13918{ 13919 { 13920 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2)); 13921 CPU (h_prefixreg_pre_v32) = opval; 13922 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13923 } 13924 { 13925 BI opval = 1; 13926 SET_H_INSN_PREFIXED_P (opval); 13927 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13928 } 13929} 13930 13931#undef FLD 13932} 13933 NEXT (vpc); 13934 13935 CASE (sem, INSN_ADDI_ACR_D_R) : /* addi-acr.d ${Rs-dfield}.m,${Rd-sfield},ACR */ 13936{ 13937 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13938 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13939#define FLD(f) abuf->fields.sfmt_add_b_r.f 13940 int UNUSED written = 0; 13941 IADDR UNUSED pc = abuf->addr; 13942 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13943 13944{ 13945 { 13946 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4)); 13947 CPU (h_prefixreg_pre_v32) = opval; 13948 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13949 } 13950 { 13951 BI opval = 1; 13952 SET_H_INSN_PREFIXED_P (opval); 13953 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13954 } 13955} 13956 13957#undef FLD 13958} 13959 NEXT (vpc); 13960 13961 CASE (sem, INSN_BIAP_PC_B_R) : /* biap-pc.b ${Rs-dfield}.m,PC */ 13962{ 13963 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13964 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13965#define FLD(f) abuf->fields.sfmt_addoq.f 13966 int UNUSED written = 0; 13967 IADDR UNUSED pc = abuf->addr; 13968 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13969 13970{ 13971 { 13972 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 1)); 13973 CPU (h_prefixreg_pre_v32) = opval; 13974 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 13975 } 13976 { 13977 BI opval = 1; 13978 SET_H_INSN_PREFIXED_P (opval); 13979 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 13980 } 13981} 13982 13983#undef FLD 13984} 13985 NEXT (vpc); 13986 13987 CASE (sem, INSN_BIAP_PC_W_R) : /* biap-pc.w ${Rs-dfield}.m,PC */ 13988{ 13989 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 13990 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 13991#define FLD(f) abuf->fields.sfmt_addoq.f 13992 int UNUSED written = 0; 13993 IADDR UNUSED pc = abuf->addr; 13994 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 13995 13996{ 13997 { 13998 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 2)); 13999 CPU (h_prefixreg_pre_v32) = opval; 14000 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 14001 } 14002 { 14003 BI opval = 1; 14004 SET_H_INSN_PREFIXED_P (opval); 14005 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 14006 } 14007} 14008 14009#undef FLD 14010} 14011 NEXT (vpc); 14012 14013 CASE (sem, INSN_BIAP_PC_D_R) : /* biap-pc.d ${Rs-dfield}.m,PC */ 14014{ 14015 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc); 14016 ARGBUF *abuf = SEM_ARGBUF (sem_arg); 14017#define FLD(f) abuf->fields.sfmt_addoq.f 14018 int UNUSED written = 0; 14019 IADDR UNUSED pc = abuf->addr; 14020 vpc = SEM_NEXT_VPC (sem_arg, pc, 2); 14021 14022{ 14023 { 14024 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 4)); 14025 CPU (h_prefixreg_pre_v32) = opval; 14026 CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval); 14027 } 14028 { 14029 BI opval = 1; 14030 SET_H_INSN_PREFIXED_P (opval); 14031 CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval); 14032 } 14033} 14034 14035#undef FLD 14036} 14037 NEXT (vpc); 14038 14039 14040 } 14041 ENDSWITCH (sem) /* End of semantic switch. */ 14042 14043 /* At this point `vpc' contains the next insn to execute. */ 14044} 14045 14046#undef DEFINE_SWITCH 14047#endif /* DEFINE_SWITCH */ 14048