Home | History | Annotate | Line # | Download | only in cris
semcrisv32f-switch.c revision 1.1.1.8
      1      1.1  christos /* Simulator instruction semantics for crisv32f.
      2      1.1  christos 
      3      1.1  christos THIS FILE IS MACHINE GENERATED WITH CGEN.
      4      1.1  christos 
      5  1.1.1.8  christos Copyright 1996-2019 Free Software Foundation, Inc.
      6      1.1  christos 
      7      1.1  christos This file is part of the GNU simulators.
      8      1.1  christos 
      9      1.1  christos    This file is free software; you can redistribute it and/or modify
     10      1.1  christos    it under the terms of the GNU General Public License as published by
     11      1.1  christos    the Free Software Foundation; either version 3, or (at your option)
     12      1.1  christos    any later version.
     13      1.1  christos 
     14      1.1  christos    It is distributed in the hope that it will be useful, but WITHOUT
     15      1.1  christos    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     16      1.1  christos    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
     17      1.1  christos    License for more details.
     18      1.1  christos 
     19      1.1  christos    You should have received a copy of the GNU General Public License along
     20  1.1.1.2  christos    with this program; if not, see <http://www.gnu.org/licenses/>.
     21      1.1  christos 
     22      1.1  christos */
     23      1.1  christos 
     24      1.1  christos #ifdef DEFINE_LABELS
     25      1.1  christos 
     26      1.1  christos   /* The labels have the case they have because the enum of insn types
     27      1.1  christos      is all uppercase and in the non-stdc case the insn symbol is built
     28      1.1  christos      into the enum name.  */
     29      1.1  christos 
     30      1.1  christos   static struct {
     31      1.1  christos     int index;
     32      1.1  christos     void *label;
     33      1.1  christos   } labels[] = {
     34      1.1  christos     { CRISV32F_INSN_X_INVALID, && case_sem_INSN_X_INVALID },
     35      1.1  christos     { CRISV32F_INSN_X_AFTER, && case_sem_INSN_X_AFTER },
     36      1.1  christos     { CRISV32F_INSN_X_BEFORE, && case_sem_INSN_X_BEFORE },
     37      1.1  christos     { CRISV32F_INSN_X_CTI_CHAIN, && case_sem_INSN_X_CTI_CHAIN },
     38      1.1  christos     { CRISV32F_INSN_X_CHAIN, && case_sem_INSN_X_CHAIN },
     39      1.1  christos     { CRISV32F_INSN_X_BEGIN, && case_sem_INSN_X_BEGIN },
     40      1.1  christos     { CRISV32F_INSN_MOVE_B_R, && case_sem_INSN_MOVE_B_R },
     41      1.1  christos     { CRISV32F_INSN_MOVE_W_R, && case_sem_INSN_MOVE_W_R },
     42      1.1  christos     { CRISV32F_INSN_MOVE_D_R, && case_sem_INSN_MOVE_D_R },
     43      1.1  christos     { CRISV32F_INSN_MOVEQ, && case_sem_INSN_MOVEQ },
     44      1.1  christos     { CRISV32F_INSN_MOVS_B_R, && case_sem_INSN_MOVS_B_R },
     45      1.1  christos     { CRISV32F_INSN_MOVS_W_R, && case_sem_INSN_MOVS_W_R },
     46      1.1  christos     { CRISV32F_INSN_MOVU_B_R, && case_sem_INSN_MOVU_B_R },
     47      1.1  christos     { CRISV32F_INSN_MOVU_W_R, && case_sem_INSN_MOVU_W_R },
     48      1.1  christos     { CRISV32F_INSN_MOVECBR, && case_sem_INSN_MOVECBR },
     49      1.1  christos     { CRISV32F_INSN_MOVECWR, && case_sem_INSN_MOVECWR },
     50      1.1  christos     { CRISV32F_INSN_MOVECDR, && case_sem_INSN_MOVECDR },
     51      1.1  christos     { CRISV32F_INSN_MOVSCBR, && case_sem_INSN_MOVSCBR },
     52      1.1  christos     { CRISV32F_INSN_MOVSCWR, && case_sem_INSN_MOVSCWR },
     53      1.1  christos     { CRISV32F_INSN_MOVUCBR, && case_sem_INSN_MOVUCBR },
     54      1.1  christos     { CRISV32F_INSN_MOVUCWR, && case_sem_INSN_MOVUCWR },
     55      1.1  christos     { CRISV32F_INSN_ADDQ, && case_sem_INSN_ADDQ },
     56      1.1  christos     { CRISV32F_INSN_SUBQ, && case_sem_INSN_SUBQ },
     57      1.1  christos     { CRISV32F_INSN_CMP_R_B_R, && case_sem_INSN_CMP_R_B_R },
     58      1.1  christos     { CRISV32F_INSN_CMP_R_W_R, && case_sem_INSN_CMP_R_W_R },
     59      1.1  christos     { CRISV32F_INSN_CMP_R_D_R, && case_sem_INSN_CMP_R_D_R },
     60      1.1  christos     { CRISV32F_INSN_CMP_M_B_M, && case_sem_INSN_CMP_M_B_M },
     61      1.1  christos     { CRISV32F_INSN_CMP_M_W_M, && case_sem_INSN_CMP_M_W_M },
     62      1.1  christos     { CRISV32F_INSN_CMP_M_D_M, && case_sem_INSN_CMP_M_D_M },
     63      1.1  christos     { CRISV32F_INSN_CMPCBR, && case_sem_INSN_CMPCBR },
     64      1.1  christos     { CRISV32F_INSN_CMPCWR, && case_sem_INSN_CMPCWR },
     65      1.1  christos     { CRISV32F_INSN_CMPCDR, && case_sem_INSN_CMPCDR },
     66      1.1  christos     { CRISV32F_INSN_CMPQ, && case_sem_INSN_CMPQ },
     67      1.1  christos     { CRISV32F_INSN_CMPS_M_B_M, && case_sem_INSN_CMPS_M_B_M },
     68      1.1  christos     { CRISV32F_INSN_CMPS_M_W_M, && case_sem_INSN_CMPS_M_W_M },
     69      1.1  christos     { CRISV32F_INSN_CMPSCBR, && case_sem_INSN_CMPSCBR },
     70      1.1  christos     { CRISV32F_INSN_CMPSCWR, && case_sem_INSN_CMPSCWR },
     71      1.1  christos     { CRISV32F_INSN_CMPU_M_B_M, && case_sem_INSN_CMPU_M_B_M },
     72      1.1  christos     { CRISV32F_INSN_CMPU_M_W_M, && case_sem_INSN_CMPU_M_W_M },
     73      1.1  christos     { CRISV32F_INSN_CMPUCBR, && case_sem_INSN_CMPUCBR },
     74      1.1  christos     { CRISV32F_INSN_CMPUCWR, && case_sem_INSN_CMPUCWR },
     75      1.1  christos     { CRISV32F_INSN_MOVE_M_B_M, && case_sem_INSN_MOVE_M_B_M },
     76      1.1  christos     { CRISV32F_INSN_MOVE_M_W_M, && case_sem_INSN_MOVE_M_W_M },
     77      1.1  christos     { CRISV32F_INSN_MOVE_M_D_M, && case_sem_INSN_MOVE_M_D_M },
     78      1.1  christos     { CRISV32F_INSN_MOVS_M_B_M, && case_sem_INSN_MOVS_M_B_M },
     79      1.1  christos     { CRISV32F_INSN_MOVS_M_W_M, && case_sem_INSN_MOVS_M_W_M },
     80      1.1  christos     { CRISV32F_INSN_MOVU_M_B_M, && case_sem_INSN_MOVU_M_B_M },
     81      1.1  christos     { CRISV32F_INSN_MOVU_M_W_M, && case_sem_INSN_MOVU_M_W_M },
     82      1.1  christos     { CRISV32F_INSN_MOVE_R_SPRV32, && case_sem_INSN_MOVE_R_SPRV32 },
     83      1.1  christos     { CRISV32F_INSN_MOVE_SPR_RV32, && case_sem_INSN_MOVE_SPR_RV32 },
     84      1.1  christos     { CRISV32F_INSN_MOVE_M_SPRV32, && case_sem_INSN_MOVE_M_SPRV32 },
     85      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P2, && case_sem_INSN_MOVE_C_SPRV32_P2 },
     86      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P3, && case_sem_INSN_MOVE_C_SPRV32_P3 },
     87      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P5, && case_sem_INSN_MOVE_C_SPRV32_P5 },
     88      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P6, && case_sem_INSN_MOVE_C_SPRV32_P6 },
     89      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P7, && case_sem_INSN_MOVE_C_SPRV32_P7 },
     90      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P9, && case_sem_INSN_MOVE_C_SPRV32_P9 },
     91      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P10, && case_sem_INSN_MOVE_C_SPRV32_P10 },
     92      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P11, && case_sem_INSN_MOVE_C_SPRV32_P11 },
     93      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P12, && case_sem_INSN_MOVE_C_SPRV32_P12 },
     94      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P13, && case_sem_INSN_MOVE_C_SPRV32_P13 },
     95      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P14, && case_sem_INSN_MOVE_C_SPRV32_P14 },
     96      1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P15, && case_sem_INSN_MOVE_C_SPRV32_P15 },
     97      1.1  christos     { CRISV32F_INSN_MOVE_SPR_MV32, && case_sem_INSN_MOVE_SPR_MV32 },
     98      1.1  christos     { CRISV32F_INSN_MOVE_SS_R, && case_sem_INSN_MOVE_SS_R },
     99      1.1  christos     { CRISV32F_INSN_MOVE_R_SS, && case_sem_INSN_MOVE_R_SS },
    100      1.1  christos     { CRISV32F_INSN_MOVEM_R_M_V32, && case_sem_INSN_MOVEM_R_M_V32 },
    101      1.1  christos     { CRISV32F_INSN_MOVEM_M_R_V32, && case_sem_INSN_MOVEM_M_R_V32 },
    102      1.1  christos     { CRISV32F_INSN_ADD_B_R, && case_sem_INSN_ADD_B_R },
    103      1.1  christos     { CRISV32F_INSN_ADD_W_R, && case_sem_INSN_ADD_W_R },
    104      1.1  christos     { CRISV32F_INSN_ADD_D_R, && case_sem_INSN_ADD_D_R },
    105      1.1  christos     { CRISV32F_INSN_ADD_M_B_M, && case_sem_INSN_ADD_M_B_M },
    106      1.1  christos     { CRISV32F_INSN_ADD_M_W_M, && case_sem_INSN_ADD_M_W_M },
    107      1.1  christos     { CRISV32F_INSN_ADD_M_D_M, && case_sem_INSN_ADD_M_D_M },
    108      1.1  christos     { CRISV32F_INSN_ADDCBR, && case_sem_INSN_ADDCBR },
    109      1.1  christos     { CRISV32F_INSN_ADDCWR, && case_sem_INSN_ADDCWR },
    110      1.1  christos     { CRISV32F_INSN_ADDCDR, && case_sem_INSN_ADDCDR },
    111      1.1  christos     { CRISV32F_INSN_ADDS_B_R, && case_sem_INSN_ADDS_B_R },
    112      1.1  christos     { CRISV32F_INSN_ADDS_W_R, && case_sem_INSN_ADDS_W_R },
    113      1.1  christos     { CRISV32F_INSN_ADDS_M_B_M, && case_sem_INSN_ADDS_M_B_M },
    114      1.1  christos     { CRISV32F_INSN_ADDS_M_W_M, && case_sem_INSN_ADDS_M_W_M },
    115      1.1  christos     { CRISV32F_INSN_ADDSCBR, && case_sem_INSN_ADDSCBR },
    116      1.1  christos     { CRISV32F_INSN_ADDSCWR, && case_sem_INSN_ADDSCWR },
    117      1.1  christos     { CRISV32F_INSN_ADDU_B_R, && case_sem_INSN_ADDU_B_R },
    118      1.1  christos     { CRISV32F_INSN_ADDU_W_R, && case_sem_INSN_ADDU_W_R },
    119      1.1  christos     { CRISV32F_INSN_ADDU_M_B_M, && case_sem_INSN_ADDU_M_B_M },
    120      1.1  christos     { CRISV32F_INSN_ADDU_M_W_M, && case_sem_INSN_ADDU_M_W_M },
    121      1.1  christos     { CRISV32F_INSN_ADDUCBR, && case_sem_INSN_ADDUCBR },
    122      1.1  christos     { CRISV32F_INSN_ADDUCWR, && case_sem_INSN_ADDUCWR },
    123      1.1  christos     { CRISV32F_INSN_SUB_B_R, && case_sem_INSN_SUB_B_R },
    124      1.1  christos     { CRISV32F_INSN_SUB_W_R, && case_sem_INSN_SUB_W_R },
    125      1.1  christos     { CRISV32F_INSN_SUB_D_R, && case_sem_INSN_SUB_D_R },
    126      1.1  christos     { CRISV32F_INSN_SUB_M_B_M, && case_sem_INSN_SUB_M_B_M },
    127      1.1  christos     { CRISV32F_INSN_SUB_M_W_M, && case_sem_INSN_SUB_M_W_M },
    128      1.1  christos     { CRISV32F_INSN_SUB_M_D_M, && case_sem_INSN_SUB_M_D_M },
    129      1.1  christos     { CRISV32F_INSN_SUBCBR, && case_sem_INSN_SUBCBR },
    130      1.1  christos     { CRISV32F_INSN_SUBCWR, && case_sem_INSN_SUBCWR },
    131      1.1  christos     { CRISV32F_INSN_SUBCDR, && case_sem_INSN_SUBCDR },
    132      1.1  christos     { CRISV32F_INSN_SUBS_B_R, && case_sem_INSN_SUBS_B_R },
    133      1.1  christos     { CRISV32F_INSN_SUBS_W_R, && case_sem_INSN_SUBS_W_R },
    134      1.1  christos     { CRISV32F_INSN_SUBS_M_B_M, && case_sem_INSN_SUBS_M_B_M },
    135      1.1  christos     { CRISV32F_INSN_SUBS_M_W_M, && case_sem_INSN_SUBS_M_W_M },
    136      1.1  christos     { CRISV32F_INSN_SUBSCBR, && case_sem_INSN_SUBSCBR },
    137      1.1  christos     { CRISV32F_INSN_SUBSCWR, && case_sem_INSN_SUBSCWR },
    138      1.1  christos     { CRISV32F_INSN_SUBU_B_R, && case_sem_INSN_SUBU_B_R },
    139      1.1  christos     { CRISV32F_INSN_SUBU_W_R, && case_sem_INSN_SUBU_W_R },
    140      1.1  christos     { CRISV32F_INSN_SUBU_M_B_M, && case_sem_INSN_SUBU_M_B_M },
    141      1.1  christos     { CRISV32F_INSN_SUBU_M_W_M, && case_sem_INSN_SUBU_M_W_M },
    142      1.1  christos     { CRISV32F_INSN_SUBUCBR, && case_sem_INSN_SUBUCBR },
    143      1.1  christos     { CRISV32F_INSN_SUBUCWR, && case_sem_INSN_SUBUCWR },
    144      1.1  christos     { CRISV32F_INSN_ADDC_R, && case_sem_INSN_ADDC_R },
    145      1.1  christos     { CRISV32F_INSN_ADDC_M, && case_sem_INSN_ADDC_M },
    146      1.1  christos     { CRISV32F_INSN_ADDC_C, && case_sem_INSN_ADDC_C },
    147      1.1  christos     { CRISV32F_INSN_LAPC_D, && case_sem_INSN_LAPC_D },
    148      1.1  christos     { CRISV32F_INSN_LAPCQ, && case_sem_INSN_LAPCQ },
    149      1.1  christos     { CRISV32F_INSN_ADDI_B_R, && case_sem_INSN_ADDI_B_R },
    150      1.1  christos     { CRISV32F_INSN_ADDI_W_R, && case_sem_INSN_ADDI_W_R },
    151      1.1  christos     { CRISV32F_INSN_ADDI_D_R, && case_sem_INSN_ADDI_D_R },
    152      1.1  christos     { CRISV32F_INSN_NEG_B_R, && case_sem_INSN_NEG_B_R },
    153      1.1  christos     { CRISV32F_INSN_NEG_W_R, && case_sem_INSN_NEG_W_R },
    154      1.1  christos     { CRISV32F_INSN_NEG_D_R, && case_sem_INSN_NEG_D_R },
    155      1.1  christos     { CRISV32F_INSN_TEST_M_B_M, && case_sem_INSN_TEST_M_B_M },
    156      1.1  christos     { CRISV32F_INSN_TEST_M_W_M, && case_sem_INSN_TEST_M_W_M },
    157      1.1  christos     { CRISV32F_INSN_TEST_M_D_M, && case_sem_INSN_TEST_M_D_M },
    158      1.1  christos     { CRISV32F_INSN_MOVE_R_M_B_M, && case_sem_INSN_MOVE_R_M_B_M },
    159      1.1  christos     { CRISV32F_INSN_MOVE_R_M_W_M, && case_sem_INSN_MOVE_R_M_W_M },
    160      1.1  christos     { CRISV32F_INSN_MOVE_R_M_D_M, && case_sem_INSN_MOVE_R_M_D_M },
    161      1.1  christos     { CRISV32F_INSN_MULS_B, && case_sem_INSN_MULS_B },
    162      1.1  christos     { CRISV32F_INSN_MULS_W, && case_sem_INSN_MULS_W },
    163      1.1  christos     { CRISV32F_INSN_MULS_D, && case_sem_INSN_MULS_D },
    164      1.1  christos     { CRISV32F_INSN_MULU_B, && case_sem_INSN_MULU_B },
    165      1.1  christos     { CRISV32F_INSN_MULU_W, && case_sem_INSN_MULU_W },
    166      1.1  christos     { CRISV32F_INSN_MULU_D, && case_sem_INSN_MULU_D },
    167      1.1  christos     { CRISV32F_INSN_MCP, && case_sem_INSN_MCP },
    168      1.1  christos     { CRISV32F_INSN_DSTEP, && case_sem_INSN_DSTEP },
    169      1.1  christos     { CRISV32F_INSN_ABS, && case_sem_INSN_ABS },
    170      1.1  christos     { CRISV32F_INSN_AND_B_R, && case_sem_INSN_AND_B_R },
    171      1.1  christos     { CRISV32F_INSN_AND_W_R, && case_sem_INSN_AND_W_R },
    172      1.1  christos     { CRISV32F_INSN_AND_D_R, && case_sem_INSN_AND_D_R },
    173      1.1  christos     { CRISV32F_INSN_AND_M_B_M, && case_sem_INSN_AND_M_B_M },
    174      1.1  christos     { CRISV32F_INSN_AND_M_W_M, && case_sem_INSN_AND_M_W_M },
    175      1.1  christos     { CRISV32F_INSN_AND_M_D_M, && case_sem_INSN_AND_M_D_M },
    176      1.1  christos     { CRISV32F_INSN_ANDCBR, && case_sem_INSN_ANDCBR },
    177      1.1  christos     { CRISV32F_INSN_ANDCWR, && case_sem_INSN_ANDCWR },
    178      1.1  christos     { CRISV32F_INSN_ANDCDR, && case_sem_INSN_ANDCDR },
    179      1.1  christos     { CRISV32F_INSN_ANDQ, && case_sem_INSN_ANDQ },
    180      1.1  christos     { CRISV32F_INSN_ORR_B_R, && case_sem_INSN_ORR_B_R },
    181      1.1  christos     { CRISV32F_INSN_ORR_W_R, && case_sem_INSN_ORR_W_R },
    182      1.1  christos     { CRISV32F_INSN_ORR_D_R, && case_sem_INSN_ORR_D_R },
    183      1.1  christos     { CRISV32F_INSN_OR_M_B_M, && case_sem_INSN_OR_M_B_M },
    184      1.1  christos     { CRISV32F_INSN_OR_M_W_M, && case_sem_INSN_OR_M_W_M },
    185      1.1  christos     { CRISV32F_INSN_OR_M_D_M, && case_sem_INSN_OR_M_D_M },
    186      1.1  christos     { CRISV32F_INSN_ORCBR, && case_sem_INSN_ORCBR },
    187      1.1  christos     { CRISV32F_INSN_ORCWR, && case_sem_INSN_ORCWR },
    188      1.1  christos     { CRISV32F_INSN_ORCDR, && case_sem_INSN_ORCDR },
    189      1.1  christos     { CRISV32F_INSN_ORQ, && case_sem_INSN_ORQ },
    190      1.1  christos     { CRISV32F_INSN_XOR, && case_sem_INSN_XOR },
    191      1.1  christos     { CRISV32F_INSN_SWAP, && case_sem_INSN_SWAP },
    192      1.1  christos     { CRISV32F_INSN_ASRR_B_R, && case_sem_INSN_ASRR_B_R },
    193      1.1  christos     { CRISV32F_INSN_ASRR_W_R, && case_sem_INSN_ASRR_W_R },
    194      1.1  christos     { CRISV32F_INSN_ASRR_D_R, && case_sem_INSN_ASRR_D_R },
    195      1.1  christos     { CRISV32F_INSN_ASRQ, && case_sem_INSN_ASRQ },
    196      1.1  christos     { CRISV32F_INSN_LSRR_B_R, && case_sem_INSN_LSRR_B_R },
    197      1.1  christos     { CRISV32F_INSN_LSRR_W_R, && case_sem_INSN_LSRR_W_R },
    198      1.1  christos     { CRISV32F_INSN_LSRR_D_R, && case_sem_INSN_LSRR_D_R },
    199      1.1  christos     { CRISV32F_INSN_LSRQ, && case_sem_INSN_LSRQ },
    200      1.1  christos     { CRISV32F_INSN_LSLR_B_R, && case_sem_INSN_LSLR_B_R },
    201      1.1  christos     { CRISV32F_INSN_LSLR_W_R, && case_sem_INSN_LSLR_W_R },
    202      1.1  christos     { CRISV32F_INSN_LSLR_D_R, && case_sem_INSN_LSLR_D_R },
    203      1.1  christos     { CRISV32F_INSN_LSLQ, && case_sem_INSN_LSLQ },
    204      1.1  christos     { CRISV32F_INSN_BTST, && case_sem_INSN_BTST },
    205      1.1  christos     { CRISV32F_INSN_BTSTQ, && case_sem_INSN_BTSTQ },
    206      1.1  christos     { CRISV32F_INSN_SETF, && case_sem_INSN_SETF },
    207      1.1  christos     { CRISV32F_INSN_CLEARF, && case_sem_INSN_CLEARF },
    208      1.1  christos     { CRISV32F_INSN_RFE, && case_sem_INSN_RFE },
    209      1.1  christos     { CRISV32F_INSN_SFE, && case_sem_INSN_SFE },
    210      1.1  christos     { CRISV32F_INSN_RFG, && case_sem_INSN_RFG },
    211      1.1  christos     { CRISV32F_INSN_RFN, && case_sem_INSN_RFN },
    212      1.1  christos     { CRISV32F_INSN_HALT, && case_sem_INSN_HALT },
    213      1.1  christos     { CRISV32F_INSN_BCC_B, && case_sem_INSN_BCC_B },
    214      1.1  christos     { CRISV32F_INSN_BA_B, && case_sem_INSN_BA_B },
    215      1.1  christos     { CRISV32F_INSN_BCC_W, && case_sem_INSN_BCC_W },
    216      1.1  christos     { CRISV32F_INSN_BA_W, && case_sem_INSN_BA_W },
    217      1.1  christos     { CRISV32F_INSN_JAS_R, && case_sem_INSN_JAS_R },
    218      1.1  christos     { CRISV32F_INSN_JAS_C, && case_sem_INSN_JAS_C },
    219      1.1  christos     { CRISV32F_INSN_JUMP_P, && case_sem_INSN_JUMP_P },
    220      1.1  christos     { CRISV32F_INSN_BAS_C, && case_sem_INSN_BAS_C },
    221      1.1  christos     { CRISV32F_INSN_JASC_R, && case_sem_INSN_JASC_R },
    222      1.1  christos     { CRISV32F_INSN_JASC_C, && case_sem_INSN_JASC_C },
    223      1.1  christos     { CRISV32F_INSN_BASC_C, && case_sem_INSN_BASC_C },
    224      1.1  christos     { CRISV32F_INSN_BREAK, && case_sem_INSN_BREAK },
    225      1.1  christos     { CRISV32F_INSN_BOUND_R_B_R, && case_sem_INSN_BOUND_R_B_R },
    226      1.1  christos     { CRISV32F_INSN_BOUND_R_W_R, && case_sem_INSN_BOUND_R_W_R },
    227      1.1  christos     { CRISV32F_INSN_BOUND_R_D_R, && case_sem_INSN_BOUND_R_D_R },
    228      1.1  christos     { CRISV32F_INSN_BOUND_CB, && case_sem_INSN_BOUND_CB },
    229      1.1  christos     { CRISV32F_INSN_BOUND_CW, && case_sem_INSN_BOUND_CW },
    230      1.1  christos     { CRISV32F_INSN_BOUND_CD, && case_sem_INSN_BOUND_CD },
    231      1.1  christos     { CRISV32F_INSN_SCC, && case_sem_INSN_SCC },
    232      1.1  christos     { CRISV32F_INSN_LZ, && case_sem_INSN_LZ },
    233      1.1  christos     { CRISV32F_INSN_ADDOQ, && case_sem_INSN_ADDOQ },
    234      1.1  christos     { CRISV32F_INSN_ADDO_M_B_M, && case_sem_INSN_ADDO_M_B_M },
    235      1.1  christos     { CRISV32F_INSN_ADDO_M_W_M, && case_sem_INSN_ADDO_M_W_M },
    236      1.1  christos     { CRISV32F_INSN_ADDO_M_D_M, && case_sem_INSN_ADDO_M_D_M },
    237      1.1  christos     { CRISV32F_INSN_ADDO_CB, && case_sem_INSN_ADDO_CB },
    238      1.1  christos     { CRISV32F_INSN_ADDO_CW, && case_sem_INSN_ADDO_CW },
    239      1.1  christos     { CRISV32F_INSN_ADDO_CD, && case_sem_INSN_ADDO_CD },
    240      1.1  christos     { CRISV32F_INSN_ADDI_ACR_B_R, && case_sem_INSN_ADDI_ACR_B_R },
    241      1.1  christos     { CRISV32F_INSN_ADDI_ACR_W_R, && case_sem_INSN_ADDI_ACR_W_R },
    242      1.1  christos     { CRISV32F_INSN_ADDI_ACR_D_R, && case_sem_INSN_ADDI_ACR_D_R },
    243      1.1  christos     { CRISV32F_INSN_FIDXI, && case_sem_INSN_FIDXI },
    244      1.1  christos     { CRISV32F_INSN_FTAGI, && case_sem_INSN_FTAGI },
    245      1.1  christos     { CRISV32F_INSN_FIDXD, && case_sem_INSN_FIDXD },
    246      1.1  christos     { CRISV32F_INSN_FTAGD, && case_sem_INSN_FTAGD },
    247      1.1  christos     { 0, 0 }
    248      1.1  christos   };
    249      1.1  christos   int i;
    250      1.1  christos 
    251      1.1  christos   for (i = 0; labels[i].label != 0; ++i)
    252      1.1  christos     {
    253      1.1  christos #if FAST_P
    254      1.1  christos       CPU_IDESC (current_cpu) [labels[i].index].sem_fast_lab = labels[i].label;
    255      1.1  christos #else
    256      1.1  christos       CPU_IDESC (current_cpu) [labels[i].index].sem_full_lab = labels[i].label;
    257      1.1  christos #endif
    258      1.1  christos     }
    259      1.1  christos 
    260      1.1  christos #undef DEFINE_LABELS
    261      1.1  christos #endif /* DEFINE_LABELS */
    262      1.1  christos 
    263      1.1  christos #ifdef DEFINE_SWITCH
    264      1.1  christos 
    265      1.1  christos /* If hyper-fast [well not unnecessarily slow] execution is selected, turn
    266      1.1  christos    off frills like tracing and profiling.  */
    267  1.1.1.5  christos /* FIXME: A better way would be to have CGEN_TRACE_RESULT check for something
    268      1.1  christos    that can cause it to be optimized out.  Another way would be to emit
    269      1.1  christos    special handlers into the instruction "stream".  */
    270      1.1  christos 
    271      1.1  christos #if FAST_P
    272  1.1.1.5  christos #undef CGEN_TRACE_RESULT
    273  1.1.1.5  christos #define CGEN_TRACE_RESULT(cpu, abuf, name, type, val)
    274      1.1  christos #endif
    275      1.1  christos 
    276      1.1  christos #undef GET_ATTR
    277      1.1  christos #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
    278      1.1  christos 
    279      1.1  christos {
    280      1.1  christos 
    281      1.1  christos #if WITH_SCACHE_PBB
    282      1.1  christos 
    283      1.1  christos /* Branch to next handler without going around main loop.  */
    284      1.1  christos #define NEXT(vpc) goto * SEM_ARGBUF (vpc) -> semantic.sem_case
    285      1.1  christos SWITCH (sem, SEM_ARGBUF (vpc) -> semantic.sem_case)
    286      1.1  christos 
    287      1.1  christos #else /* ! WITH_SCACHE_PBB */
    288      1.1  christos 
    289      1.1  christos #define NEXT(vpc) BREAK (sem)
    290      1.1  christos #ifdef __GNUC__
    291      1.1  christos #if FAST_P
    292      1.1  christos   SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_fast_lab)
    293      1.1  christos #else
    294      1.1  christos   SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_full_lab)
    295      1.1  christos #endif
    296      1.1  christos #else
    297      1.1  christos   SWITCH (sem, SEM_ARGBUF (sc) -> idesc->num)
    298      1.1  christos #endif
    299      1.1  christos 
    300      1.1  christos #endif /* ! WITH_SCACHE_PBB */
    301      1.1  christos 
    302      1.1  christos     {
    303      1.1  christos 
    304      1.1  christos   CASE (sem, INSN_X_INVALID) : /* --invalid-- */
    305      1.1  christos {
    306      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    307      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    308      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    309      1.1  christos   int UNUSED written = 0;
    310      1.1  christos   IADDR UNUSED pc = abuf->addr;
    311      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    312      1.1  christos 
    313      1.1  christos   {
    314      1.1  christos     /* Update the recorded pc in the cpu state struct.
    315      1.1  christos        Only necessary for WITH_SCACHE case, but to avoid the
    316      1.1  christos        conditional compilation ....  */
    317      1.1  christos     SET_H_PC (pc);
    318      1.1  christos     /* Virtual insns have zero size.  Overwrite vpc with address of next insn
    319      1.1  christos        using the default-insn-bitsize spec.  When executing insns in parallel
    320      1.1  christos        we may want to queue the fault and continue execution.  */
    321      1.1  christos     vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    322      1.1  christos     vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
    323      1.1  christos   }
    324      1.1  christos 
    325      1.1  christos #undef FLD
    326      1.1  christos }
    327      1.1  christos   NEXT (vpc);
    328      1.1  christos 
    329      1.1  christos   CASE (sem, INSN_X_AFTER) : /* --after-- */
    330      1.1  christos {
    331      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    332      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    333      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    334      1.1  christos   int UNUSED written = 0;
    335      1.1  christos   IADDR UNUSED pc = abuf->addr;
    336      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    337      1.1  christos 
    338      1.1  christos   {
    339      1.1  christos #if WITH_SCACHE_PBB_CRISV32F
    340      1.1  christos     crisv32f_pbb_after (current_cpu, sem_arg);
    341      1.1  christos #endif
    342      1.1  christos   }
    343      1.1  christos 
    344      1.1  christos #undef FLD
    345      1.1  christos }
    346      1.1  christos   NEXT (vpc);
    347      1.1  christos 
    348      1.1  christos   CASE (sem, INSN_X_BEFORE) : /* --before-- */
    349      1.1  christos {
    350      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    351      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    352      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    353      1.1  christos   int UNUSED written = 0;
    354      1.1  christos   IADDR UNUSED pc = abuf->addr;
    355      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    356      1.1  christos 
    357      1.1  christos   {
    358      1.1  christos #if WITH_SCACHE_PBB_CRISV32F
    359      1.1  christos     crisv32f_pbb_before (current_cpu, sem_arg);
    360      1.1  christos #endif
    361      1.1  christos   }
    362      1.1  christos 
    363      1.1  christos #undef FLD
    364      1.1  christos }
    365      1.1  christos   NEXT (vpc);
    366      1.1  christos 
    367      1.1  christos   CASE (sem, INSN_X_CTI_CHAIN) : /* --cti-chain-- */
    368      1.1  christos {
    369      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    370      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    371      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    372      1.1  christos   int UNUSED written = 0;
    373      1.1  christos   IADDR UNUSED pc = abuf->addr;
    374      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    375      1.1  christos 
    376      1.1  christos   {
    377      1.1  christos #if WITH_SCACHE_PBB_CRISV32F
    378      1.1  christos #ifdef DEFINE_SWITCH
    379      1.1  christos     vpc = crisv32f_pbb_cti_chain (current_cpu, sem_arg,
    380      1.1  christos 			       pbb_br_type, pbb_br_npc);
    381      1.1  christos     BREAK (sem);
    382      1.1  christos #else
    383      1.1  christos     /* FIXME: Allow provision of explicit ifmt spec in insn spec.  */
    384      1.1  christos     vpc = crisv32f_pbb_cti_chain (current_cpu, sem_arg,
    385      1.1  christos 			       CPU_PBB_BR_TYPE (current_cpu),
    386      1.1  christos 			       CPU_PBB_BR_NPC (current_cpu));
    387      1.1  christos #endif
    388      1.1  christos #endif
    389      1.1  christos   }
    390      1.1  christos 
    391      1.1  christos #undef FLD
    392      1.1  christos }
    393      1.1  christos   NEXT (vpc);
    394      1.1  christos 
    395      1.1  christos   CASE (sem, INSN_X_CHAIN) : /* --chain-- */
    396      1.1  christos {
    397      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    398      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    399      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    400      1.1  christos   int UNUSED written = 0;
    401      1.1  christos   IADDR UNUSED pc = abuf->addr;
    402      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    403      1.1  christos 
    404      1.1  christos   {
    405      1.1  christos #if WITH_SCACHE_PBB_CRISV32F
    406      1.1  christos     vpc = crisv32f_pbb_chain (current_cpu, sem_arg);
    407      1.1  christos #ifdef DEFINE_SWITCH
    408      1.1  christos     BREAK (sem);
    409      1.1  christos #endif
    410      1.1  christos #endif
    411      1.1  christos   }
    412      1.1  christos 
    413      1.1  christos #undef FLD
    414      1.1  christos }
    415      1.1  christos   NEXT (vpc);
    416      1.1  christos 
    417      1.1  christos   CASE (sem, INSN_X_BEGIN) : /* --begin-- */
    418      1.1  christos {
    419      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    420      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    421      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    422      1.1  christos   int UNUSED written = 0;
    423      1.1  christos   IADDR UNUSED pc = abuf->addr;
    424      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    425      1.1  christos 
    426      1.1  christos   {
    427      1.1  christos #if WITH_SCACHE_PBB_CRISV32F
    428      1.1  christos #if defined DEFINE_SWITCH || defined FAST_P
    429      1.1  christos     /* In the switch case FAST_P is a constant, allowing several optimizations
    430      1.1  christos        in any called inline functions.  */
    431      1.1  christos     vpc = crisv32f_pbb_begin (current_cpu, FAST_P);
    432      1.1  christos #else
    433      1.1  christos #if 0 /* cgen engine can't handle dynamic fast/full switching yet.  */
    434      1.1  christos     vpc = crisv32f_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
    435      1.1  christos #else
    436      1.1  christos     vpc = crisv32f_pbb_begin (current_cpu, 0);
    437      1.1  christos #endif
    438      1.1  christos #endif
    439      1.1  christos #endif
    440      1.1  christos   }
    441      1.1  christos 
    442      1.1  christos #undef FLD
    443      1.1  christos }
    444      1.1  christos   NEXT (vpc);
    445      1.1  christos 
    446      1.1  christos   CASE (sem, INSN_MOVE_B_R) : /* move.b move.m ${Rs},${Rd} */
    447      1.1  christos {
    448      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    449      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    450      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
    451      1.1  christos   int UNUSED written = 0;
    452      1.1  christos   IADDR UNUSED pc = abuf->addr;
    453      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    454      1.1  christos 
    455      1.1  christos {
    456      1.1  christos   QI tmp_newval;
    457      1.1  christos   tmp_newval = GET_H_GR (FLD (f_operand1));
    458      1.1  christos {
    459      1.1  christos   SI tmp_oldregval;
    460      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
    461      1.1  christos   {
    462      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
    463      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    464  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    465      1.1  christos   }
    466      1.1  christos }
    467      1.1  christos {
    468      1.1  christos   {
    469      1.1  christos     BI opval = LTQI (tmp_newval, 0);
    470      1.1  christos     CPU (h_nbit) = opval;
    471  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    472      1.1  christos   }
    473      1.1  christos   {
    474      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    475      1.1  christos     CPU (h_zbit) = opval;
    476  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    477      1.1  christos   }
    478      1.1  christos SET_H_CBIT_MOVE (0);
    479      1.1  christos SET_H_VBIT_MOVE (0);
    480      1.1  christos {
    481      1.1  christos   {
    482      1.1  christos     BI opval = 0;
    483      1.1  christos     CPU (h_xbit) = opval;
    484  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    485      1.1  christos   }
    486      1.1  christos   {
    487      1.1  christos     BI opval = 0;
    488      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    489  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    490      1.1  christos   }
    491      1.1  christos }
    492      1.1  christos }
    493      1.1  christos }
    494      1.1  christos 
    495      1.1  christos #undef FLD
    496      1.1  christos }
    497      1.1  christos   NEXT (vpc);
    498      1.1  christos 
    499      1.1  christos   CASE (sem, INSN_MOVE_W_R) : /* move.w move.m ${Rs},${Rd} */
    500      1.1  christos {
    501      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    502      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    503      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
    504      1.1  christos   int UNUSED written = 0;
    505      1.1  christos   IADDR UNUSED pc = abuf->addr;
    506      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    507      1.1  christos 
    508      1.1  christos {
    509      1.1  christos   HI tmp_newval;
    510      1.1  christos   tmp_newval = GET_H_GR (FLD (f_operand1));
    511      1.1  christos {
    512      1.1  christos   SI tmp_oldregval;
    513      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
    514      1.1  christos   {
    515      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
    516      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    517  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    518      1.1  christos   }
    519      1.1  christos }
    520      1.1  christos {
    521      1.1  christos   {
    522      1.1  christos     BI opval = LTHI (tmp_newval, 0);
    523      1.1  christos     CPU (h_nbit) = opval;
    524  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    525      1.1  christos   }
    526      1.1  christos   {
    527      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    528      1.1  christos     CPU (h_zbit) = opval;
    529  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    530      1.1  christos   }
    531      1.1  christos SET_H_CBIT_MOVE (0);
    532      1.1  christos SET_H_VBIT_MOVE (0);
    533      1.1  christos {
    534      1.1  christos   {
    535      1.1  christos     BI opval = 0;
    536      1.1  christos     CPU (h_xbit) = opval;
    537  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    538      1.1  christos   }
    539      1.1  christos   {
    540      1.1  christos     BI opval = 0;
    541      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    542  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    543      1.1  christos   }
    544      1.1  christos }
    545      1.1  christos }
    546      1.1  christos }
    547      1.1  christos 
    548      1.1  christos #undef FLD
    549      1.1  christos }
    550      1.1  christos   NEXT (vpc);
    551      1.1  christos 
    552      1.1  christos   CASE (sem, INSN_MOVE_D_R) : /* move.d move.m ${Rs},${Rd} */
    553      1.1  christos {
    554      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    555      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    556      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
    557      1.1  christos   int UNUSED written = 0;
    558      1.1  christos   IADDR UNUSED pc = abuf->addr;
    559      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    560      1.1  christos 
    561      1.1  christos {
    562      1.1  christos   SI tmp_newval;
    563      1.1  christos   tmp_newval = GET_H_GR (FLD (f_operand1));
    564      1.1  christos   {
    565      1.1  christos     SI opval = tmp_newval;
    566      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    567  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    568      1.1  christos   }
    569      1.1  christos {
    570      1.1  christos   {
    571      1.1  christos     BI opval = LTSI (tmp_newval, 0);
    572      1.1  christos     CPU (h_nbit) = opval;
    573  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    574      1.1  christos   }
    575      1.1  christos   {
    576      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    577      1.1  christos     CPU (h_zbit) = opval;
    578  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    579      1.1  christos   }
    580      1.1  christos SET_H_CBIT_MOVE (0);
    581      1.1  christos SET_H_VBIT_MOVE (0);
    582      1.1  christos {
    583      1.1  christos   {
    584      1.1  christos     BI opval = 0;
    585      1.1  christos     CPU (h_xbit) = opval;
    586  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    587      1.1  christos   }
    588      1.1  christos   {
    589      1.1  christos     BI opval = 0;
    590      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    591  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    592      1.1  christos   }
    593      1.1  christos }
    594      1.1  christos }
    595      1.1  christos }
    596      1.1  christos 
    597      1.1  christos #undef FLD
    598      1.1  christos }
    599      1.1  christos   NEXT (vpc);
    600      1.1  christos 
    601      1.1  christos   CASE (sem, INSN_MOVEQ) : /* moveq $i,$Rd */
    602      1.1  christos {
    603      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    604      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    605      1.1  christos #define FLD(f) abuf->fields.sfmt_moveq.f
    606      1.1  christos   int UNUSED written = 0;
    607      1.1  christos   IADDR UNUSED pc = abuf->addr;
    608      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    609      1.1  christos 
    610      1.1  christos {
    611      1.1  christos   SI tmp_newval;
    612      1.1  christos   tmp_newval = FLD (f_s6);
    613      1.1  christos   {
    614      1.1  christos     SI opval = tmp_newval;
    615      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    616  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    617      1.1  christos   }
    618      1.1  christos {
    619      1.1  christos SET_H_NBIT_MOVE (LTSI (tmp_newval, 0));
    620      1.1  christos SET_H_ZBIT_MOVE (ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))));
    621      1.1  christos SET_H_CBIT_MOVE (0);
    622      1.1  christos SET_H_VBIT_MOVE (0);
    623      1.1  christos {
    624      1.1  christos   {
    625      1.1  christos     BI opval = 0;
    626      1.1  christos     CPU (h_xbit) = opval;
    627  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    628      1.1  christos   }
    629      1.1  christos   {
    630      1.1  christos     BI opval = 0;
    631      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    632  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    633      1.1  christos   }
    634      1.1  christos }
    635      1.1  christos }
    636      1.1  christos }
    637      1.1  christos 
    638      1.1  christos #undef FLD
    639      1.1  christos }
    640      1.1  christos   NEXT (vpc);
    641      1.1  christos 
    642      1.1  christos   CASE (sem, INSN_MOVS_B_R) : /* movs.b movs.m ${Rs},${Rd} */
    643      1.1  christos {
    644      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    645      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    646      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    647      1.1  christos   int UNUSED written = 0;
    648      1.1  christos   IADDR UNUSED pc = abuf->addr;
    649      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    650      1.1  christos 
    651      1.1  christos {
    652      1.1  christos   QI tmp_tmpops;
    653      1.1  christos   SI tmp_newval;
    654      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
    655      1.1  christos   tmp_newval = EXTQISI (tmp_tmpops);
    656      1.1  christos   {
    657      1.1  christos     SI opval = tmp_newval;
    658      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    659  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    660      1.1  christos   }
    661      1.1  christos {
    662      1.1  christos   {
    663      1.1  christos     BI opval = LTSI (tmp_newval, 0);
    664      1.1  christos     CPU (h_nbit) = opval;
    665  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    666      1.1  christos   }
    667      1.1  christos   {
    668      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    669      1.1  christos     CPU (h_zbit) = opval;
    670  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    671      1.1  christos   }
    672      1.1  christos SET_H_CBIT_MOVE (0);
    673      1.1  christos SET_H_VBIT_MOVE (0);
    674      1.1  christos {
    675      1.1  christos   {
    676      1.1  christos     BI opval = 0;
    677      1.1  christos     CPU (h_xbit) = opval;
    678  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    679      1.1  christos   }
    680      1.1  christos   {
    681      1.1  christos     BI opval = 0;
    682      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    683  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    684      1.1  christos   }
    685      1.1  christos }
    686      1.1  christos }
    687      1.1  christos }
    688      1.1  christos 
    689      1.1  christos #undef FLD
    690      1.1  christos }
    691      1.1  christos   NEXT (vpc);
    692      1.1  christos 
    693      1.1  christos   CASE (sem, INSN_MOVS_W_R) : /* movs.w movs.m ${Rs},${Rd} */
    694      1.1  christos {
    695      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    696      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    697      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    698      1.1  christos   int UNUSED written = 0;
    699      1.1  christos   IADDR UNUSED pc = abuf->addr;
    700      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    701      1.1  christos 
    702      1.1  christos {
    703      1.1  christos   HI tmp_tmpops;
    704      1.1  christos   SI tmp_newval;
    705      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
    706      1.1  christos   tmp_newval = EXTHISI (tmp_tmpops);
    707      1.1  christos   {
    708      1.1  christos     SI opval = tmp_newval;
    709      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    710  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    711      1.1  christos   }
    712      1.1  christos {
    713      1.1  christos   {
    714      1.1  christos     BI opval = LTSI (tmp_newval, 0);
    715      1.1  christos     CPU (h_nbit) = opval;
    716  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    717      1.1  christos   }
    718      1.1  christos   {
    719      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    720      1.1  christos     CPU (h_zbit) = opval;
    721  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    722      1.1  christos   }
    723      1.1  christos SET_H_CBIT_MOVE (0);
    724      1.1  christos SET_H_VBIT_MOVE (0);
    725      1.1  christos {
    726      1.1  christos   {
    727      1.1  christos     BI opval = 0;
    728      1.1  christos     CPU (h_xbit) = opval;
    729  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    730      1.1  christos   }
    731      1.1  christos   {
    732      1.1  christos     BI opval = 0;
    733      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    734  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    735      1.1  christos   }
    736      1.1  christos }
    737      1.1  christos }
    738      1.1  christos }
    739      1.1  christos 
    740      1.1  christos #undef FLD
    741      1.1  christos }
    742      1.1  christos   NEXT (vpc);
    743      1.1  christos 
    744      1.1  christos   CASE (sem, INSN_MOVU_B_R) : /* movu.b movu.m ${Rs},${Rd} */
    745      1.1  christos {
    746      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    747      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    748      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    749      1.1  christos   int UNUSED written = 0;
    750      1.1  christos   IADDR UNUSED pc = abuf->addr;
    751      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    752      1.1  christos 
    753      1.1  christos {
    754      1.1  christos   QI tmp_tmpops;
    755      1.1  christos   SI tmp_newval;
    756      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
    757      1.1  christos   tmp_newval = ZEXTQISI (tmp_tmpops);
    758      1.1  christos   {
    759      1.1  christos     SI opval = tmp_newval;
    760      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    761  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    762      1.1  christos   }
    763      1.1  christos {
    764      1.1  christos   {
    765      1.1  christos     BI opval = LTSI (tmp_newval, 0);
    766      1.1  christos     CPU (h_nbit) = opval;
    767  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    768      1.1  christos   }
    769      1.1  christos   {
    770      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    771      1.1  christos     CPU (h_zbit) = opval;
    772  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    773      1.1  christos   }
    774      1.1  christos SET_H_CBIT_MOVE (0);
    775      1.1  christos SET_H_VBIT_MOVE (0);
    776      1.1  christos {
    777      1.1  christos   {
    778      1.1  christos     BI opval = 0;
    779      1.1  christos     CPU (h_xbit) = opval;
    780  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    781      1.1  christos   }
    782      1.1  christos   {
    783      1.1  christos     BI opval = 0;
    784      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    785  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    786      1.1  christos   }
    787      1.1  christos }
    788      1.1  christos }
    789      1.1  christos }
    790      1.1  christos 
    791      1.1  christos #undef FLD
    792      1.1  christos }
    793      1.1  christos   NEXT (vpc);
    794      1.1  christos 
    795      1.1  christos   CASE (sem, INSN_MOVU_W_R) : /* movu.w movu.m ${Rs},${Rd} */
    796      1.1  christos {
    797      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    798      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    799      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    800      1.1  christos   int UNUSED written = 0;
    801      1.1  christos   IADDR UNUSED pc = abuf->addr;
    802      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    803      1.1  christos 
    804      1.1  christos {
    805      1.1  christos   HI tmp_tmpops;
    806      1.1  christos   SI tmp_newval;
    807      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
    808      1.1  christos   tmp_newval = ZEXTHISI (tmp_tmpops);
    809      1.1  christos   {
    810      1.1  christos     SI opval = tmp_newval;
    811      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    812  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    813      1.1  christos   }
    814      1.1  christos {
    815      1.1  christos   {
    816      1.1  christos     BI opval = LTSI (tmp_newval, 0);
    817      1.1  christos     CPU (h_nbit) = opval;
    818  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    819      1.1  christos   }
    820      1.1  christos   {
    821      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    822      1.1  christos     CPU (h_zbit) = opval;
    823  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    824      1.1  christos   }
    825      1.1  christos SET_H_CBIT_MOVE (0);
    826      1.1  christos SET_H_VBIT_MOVE (0);
    827      1.1  christos {
    828      1.1  christos   {
    829      1.1  christos     BI opval = 0;
    830      1.1  christos     CPU (h_xbit) = opval;
    831  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    832      1.1  christos   }
    833      1.1  christos   {
    834      1.1  christos     BI opval = 0;
    835      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    836  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    837      1.1  christos   }
    838      1.1  christos }
    839      1.1  christos }
    840      1.1  christos }
    841      1.1  christos 
    842      1.1  christos #undef FLD
    843      1.1  christos }
    844      1.1  christos   NEXT (vpc);
    845      1.1  christos 
    846      1.1  christos   CASE (sem, INSN_MOVECBR) : /* move.b ${sconst8},${Rd} */
    847      1.1  christos {
    848      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    849      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    850      1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
    851      1.1  christos   int UNUSED written = 0;
    852      1.1  christos   IADDR UNUSED pc = abuf->addr;
    853      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    854      1.1  christos 
    855      1.1  christos {
    856      1.1  christos   QI tmp_newval;
    857      1.1  christos   tmp_newval = FLD (f_indir_pc__byte);
    858      1.1  christos {
    859      1.1  christos   SI tmp_oldregval;
    860      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
    861      1.1  christos   {
    862      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
    863      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    864  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    865      1.1  christos   }
    866      1.1  christos }
    867      1.1  christos {
    868      1.1  christos   {
    869      1.1  christos     BI opval = LTQI (tmp_newval, 0);
    870      1.1  christos     CPU (h_nbit) = opval;
    871  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    872      1.1  christos   }
    873      1.1  christos   {
    874      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    875      1.1  christos     CPU (h_zbit) = opval;
    876  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    877      1.1  christos   }
    878      1.1  christos SET_H_CBIT_MOVE (0);
    879      1.1  christos SET_H_VBIT_MOVE (0);
    880      1.1  christos {
    881      1.1  christos   {
    882      1.1  christos     BI opval = 0;
    883      1.1  christos     CPU (h_xbit) = opval;
    884  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    885      1.1  christos   }
    886      1.1  christos   {
    887      1.1  christos     BI opval = 0;
    888      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    889  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    890      1.1  christos   }
    891      1.1  christos }
    892      1.1  christos }
    893      1.1  christos }
    894      1.1  christos 
    895      1.1  christos #undef FLD
    896      1.1  christos }
    897      1.1  christos   NEXT (vpc);
    898      1.1  christos 
    899      1.1  christos   CASE (sem, INSN_MOVECWR) : /* move.w ${sconst16},${Rd} */
    900      1.1  christos {
    901      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    902      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    903      1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
    904      1.1  christos   int UNUSED written = 0;
    905      1.1  christos   IADDR UNUSED pc = abuf->addr;
    906      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    907      1.1  christos 
    908      1.1  christos {
    909      1.1  christos   HI tmp_newval;
    910      1.1  christos   tmp_newval = FLD (f_indir_pc__word);
    911      1.1  christos {
    912      1.1  christos   SI tmp_oldregval;
    913      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
    914      1.1  christos   {
    915      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
    916      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    917  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    918      1.1  christos   }
    919      1.1  christos }
    920      1.1  christos {
    921      1.1  christos   {
    922      1.1  christos     BI opval = LTHI (tmp_newval, 0);
    923      1.1  christos     CPU (h_nbit) = opval;
    924  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    925      1.1  christos   }
    926      1.1  christos   {
    927      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    928      1.1  christos     CPU (h_zbit) = opval;
    929  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    930      1.1  christos   }
    931      1.1  christos SET_H_CBIT_MOVE (0);
    932      1.1  christos SET_H_VBIT_MOVE (0);
    933      1.1  christos {
    934      1.1  christos   {
    935      1.1  christos     BI opval = 0;
    936      1.1  christos     CPU (h_xbit) = opval;
    937  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    938      1.1  christos   }
    939      1.1  christos   {
    940      1.1  christos     BI opval = 0;
    941      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    942  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    943      1.1  christos   }
    944      1.1  christos }
    945      1.1  christos }
    946      1.1  christos }
    947      1.1  christos 
    948      1.1  christos #undef FLD
    949      1.1  christos }
    950      1.1  christos   NEXT (vpc);
    951      1.1  christos 
    952      1.1  christos   CASE (sem, INSN_MOVECDR) : /* move.d ${const32},${Rd} */
    953      1.1  christos {
    954      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    955      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    956      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
    957      1.1  christos   int UNUSED written = 0;
    958      1.1  christos   IADDR UNUSED pc = abuf->addr;
    959      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
    960      1.1  christos 
    961      1.1  christos {
    962      1.1  christos   SI tmp_newval;
    963      1.1  christos   tmp_newval = FLD (f_indir_pc__dword);
    964      1.1  christos   {
    965      1.1  christos     SI opval = tmp_newval;
    966      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    967  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    968      1.1  christos   }
    969      1.1  christos {
    970      1.1  christos   {
    971      1.1  christos     BI opval = LTSI (tmp_newval, 0);
    972      1.1  christos     CPU (h_nbit) = opval;
    973  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    974      1.1  christos   }
    975      1.1  christos   {
    976      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    977      1.1  christos     CPU (h_zbit) = opval;
    978  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    979      1.1  christos   }
    980      1.1  christos SET_H_CBIT_MOVE (0);
    981      1.1  christos SET_H_VBIT_MOVE (0);
    982      1.1  christos {
    983      1.1  christos   {
    984      1.1  christos     BI opval = 0;
    985      1.1  christos     CPU (h_xbit) = opval;
    986  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    987      1.1  christos   }
    988      1.1  christos   {
    989      1.1  christos     BI opval = 0;
    990      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    991  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    992      1.1  christos   }
    993      1.1  christos }
    994      1.1  christos }
    995      1.1  christos }
    996      1.1  christos 
    997      1.1  christos #undef FLD
    998      1.1  christos }
    999      1.1  christos   NEXT (vpc);
   1000      1.1  christos 
   1001      1.1  christos   CASE (sem, INSN_MOVSCBR) : /* movs.b ${sconst8},${Rd} */
   1002      1.1  christos {
   1003      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1004      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1005      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   1006      1.1  christos   int UNUSED written = 0;
   1007      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1008      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1009      1.1  christos 
   1010      1.1  christos {
   1011      1.1  christos   SI tmp_newval;
   1012      1.1  christos   tmp_newval = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   1013      1.1  christos   {
   1014      1.1  christos     SI opval = tmp_newval;
   1015      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1016  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1017      1.1  christos   }
   1018      1.1  christos {
   1019      1.1  christos   {
   1020      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1021      1.1  christos     CPU (h_nbit) = opval;
   1022  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1023      1.1  christos   }
   1024      1.1  christos   {
   1025      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   1026      1.1  christos     CPU (h_zbit) = opval;
   1027  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1028      1.1  christos   }
   1029      1.1  christos SET_H_CBIT_MOVE (0);
   1030      1.1  christos SET_H_VBIT_MOVE (0);
   1031      1.1  christos {
   1032      1.1  christos   {
   1033      1.1  christos     BI opval = 0;
   1034      1.1  christos     CPU (h_xbit) = opval;
   1035  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1036      1.1  christos   }
   1037      1.1  christos   {
   1038      1.1  christos     BI opval = 0;
   1039      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1040  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1041      1.1  christos   }
   1042      1.1  christos }
   1043      1.1  christos }
   1044      1.1  christos }
   1045      1.1  christos 
   1046      1.1  christos #undef FLD
   1047      1.1  christos }
   1048      1.1  christos   NEXT (vpc);
   1049      1.1  christos 
   1050      1.1  christos   CASE (sem, INSN_MOVSCWR) : /* movs.w ${sconst16},${Rd} */
   1051      1.1  christos {
   1052      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1053      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1054      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   1055      1.1  christos   int UNUSED written = 0;
   1056      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1057      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1058      1.1  christos 
   1059      1.1  christos {
   1060      1.1  christos   SI tmp_newval;
   1061      1.1  christos   tmp_newval = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   1062      1.1  christos   {
   1063      1.1  christos     SI opval = tmp_newval;
   1064      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1065  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1066      1.1  christos   }
   1067      1.1  christos {
   1068      1.1  christos   {
   1069      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1070      1.1  christos     CPU (h_nbit) = opval;
   1071  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1072      1.1  christos   }
   1073      1.1  christos   {
   1074      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   1075      1.1  christos     CPU (h_zbit) = opval;
   1076  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1077      1.1  christos   }
   1078      1.1  christos SET_H_CBIT_MOVE (0);
   1079      1.1  christos SET_H_VBIT_MOVE (0);
   1080      1.1  christos {
   1081      1.1  christos   {
   1082      1.1  christos     BI opval = 0;
   1083      1.1  christos     CPU (h_xbit) = opval;
   1084  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1085      1.1  christos   }
   1086      1.1  christos   {
   1087      1.1  christos     BI opval = 0;
   1088      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1089  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1090      1.1  christos   }
   1091      1.1  christos }
   1092      1.1  christos }
   1093      1.1  christos }
   1094      1.1  christos 
   1095      1.1  christos #undef FLD
   1096      1.1  christos }
   1097      1.1  christos   NEXT (vpc);
   1098      1.1  christos 
   1099      1.1  christos   CASE (sem, INSN_MOVUCBR) : /* movu.b ${uconst8},${Rd} */
   1100      1.1  christos {
   1101      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1102      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1103      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   1104      1.1  christos   int UNUSED written = 0;
   1105      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1106      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1107      1.1  christos 
   1108      1.1  christos {
   1109      1.1  christos   SI tmp_newval;
   1110      1.1  christos   tmp_newval = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   1111      1.1  christos   {
   1112      1.1  christos     SI opval = tmp_newval;
   1113      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1114  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1115      1.1  christos   }
   1116      1.1  christos {
   1117      1.1  christos   {
   1118      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1119      1.1  christos     CPU (h_nbit) = opval;
   1120  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1121      1.1  christos   }
   1122      1.1  christos   {
   1123      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   1124      1.1  christos     CPU (h_zbit) = opval;
   1125  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1126      1.1  christos   }
   1127      1.1  christos SET_H_CBIT_MOVE (0);
   1128      1.1  christos SET_H_VBIT_MOVE (0);
   1129      1.1  christos {
   1130      1.1  christos   {
   1131      1.1  christos     BI opval = 0;
   1132      1.1  christos     CPU (h_xbit) = opval;
   1133  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1134      1.1  christos   }
   1135      1.1  christos   {
   1136      1.1  christos     BI opval = 0;
   1137      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1138  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1139      1.1  christos   }
   1140      1.1  christos }
   1141      1.1  christos }
   1142      1.1  christos }
   1143      1.1  christos 
   1144      1.1  christos #undef FLD
   1145      1.1  christos }
   1146      1.1  christos   NEXT (vpc);
   1147      1.1  christos 
   1148      1.1  christos   CASE (sem, INSN_MOVUCWR) : /* movu.w ${uconst16},${Rd} */
   1149      1.1  christos {
   1150      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1151      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1152      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   1153      1.1  christos   int UNUSED written = 0;
   1154      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1155      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1156      1.1  christos 
   1157      1.1  christos {
   1158      1.1  christos   SI tmp_newval;
   1159      1.1  christos   tmp_newval = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   1160      1.1  christos   {
   1161      1.1  christos     SI opval = tmp_newval;
   1162      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1163  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1164      1.1  christos   }
   1165      1.1  christos {
   1166      1.1  christos   {
   1167      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1168      1.1  christos     CPU (h_nbit) = opval;
   1169  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1170      1.1  christos   }
   1171      1.1  christos   {
   1172      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   1173      1.1  christos     CPU (h_zbit) = opval;
   1174  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1175      1.1  christos   }
   1176      1.1  christos SET_H_CBIT_MOVE (0);
   1177      1.1  christos SET_H_VBIT_MOVE (0);
   1178      1.1  christos {
   1179      1.1  christos   {
   1180      1.1  christos     BI opval = 0;
   1181      1.1  christos     CPU (h_xbit) = opval;
   1182  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1183      1.1  christos   }
   1184      1.1  christos   {
   1185      1.1  christos     BI opval = 0;
   1186      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1187  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1188      1.1  christos   }
   1189      1.1  christos }
   1190      1.1  christos }
   1191      1.1  christos }
   1192      1.1  christos 
   1193      1.1  christos #undef FLD
   1194      1.1  christos }
   1195      1.1  christos   NEXT (vpc);
   1196      1.1  christos 
   1197      1.1  christos   CASE (sem, INSN_ADDQ) : /* addq $j,$Rd */
   1198      1.1  christos {
   1199      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1200      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1201      1.1  christos #define FLD(f) abuf->fields.sfmt_addq.f
   1202      1.1  christos   int UNUSED written = 0;
   1203      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1204      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1205      1.1  christos 
   1206      1.1  christos {
   1207      1.1  christos   SI tmp_tmpopd;
   1208      1.1  christos   SI tmp_tmpops;
   1209      1.1  christos   BI tmp_carry;
   1210      1.1  christos   SI tmp_newval;
   1211      1.1  christos   tmp_tmpops = FLD (f_u6);
   1212      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1213      1.1  christos   tmp_carry = CPU (h_cbit);
   1214      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1215      1.1  christos   {
   1216      1.1  christos     SI opval = tmp_newval;
   1217      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1218  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1219      1.1  christos   }
   1220      1.1  christos {
   1221      1.1  christos   {
   1222      1.1  christos     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))));
   1223      1.1  christos     CPU (h_cbit) = opval;
   1224  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1225      1.1  christos   }
   1226      1.1  christos   {
   1227      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1228      1.1  christos     CPU (h_nbit) = opval;
   1229  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1230      1.1  christos   }
   1231      1.1  christos   {
   1232      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1233      1.1  christos     CPU (h_zbit) = opval;
   1234  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1235      1.1  christos   }
   1236      1.1  christos   {
   1237      1.1  christos     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)));
   1238      1.1  christos     CPU (h_vbit) = opval;
   1239  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1240      1.1  christos   }
   1241      1.1  christos {
   1242      1.1  christos   {
   1243      1.1  christos     BI opval = 0;
   1244      1.1  christos     CPU (h_xbit) = opval;
   1245  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1246      1.1  christos   }
   1247      1.1  christos   {
   1248      1.1  christos     BI opval = 0;
   1249      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1250  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1251      1.1  christos   }
   1252      1.1  christos }
   1253      1.1  christos }
   1254      1.1  christos }
   1255      1.1  christos 
   1256      1.1  christos #undef FLD
   1257      1.1  christos }
   1258      1.1  christos   NEXT (vpc);
   1259      1.1  christos 
   1260      1.1  christos   CASE (sem, INSN_SUBQ) : /* subq $j,$Rd */
   1261      1.1  christos {
   1262      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1263      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1264      1.1  christos #define FLD(f) abuf->fields.sfmt_addq.f
   1265      1.1  christos   int UNUSED written = 0;
   1266      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1267      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1268      1.1  christos 
   1269      1.1  christos {
   1270      1.1  christos   SI tmp_tmpopd;
   1271      1.1  christos   SI tmp_tmpops;
   1272      1.1  christos   BI tmp_carry;
   1273      1.1  christos   SI tmp_newval;
   1274      1.1  christos   tmp_tmpops = FLD (f_u6);
   1275      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1276      1.1  christos   tmp_carry = CPU (h_cbit);
   1277      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1278      1.1  christos   {
   1279      1.1  christos     SI opval = tmp_newval;
   1280      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1281  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1282      1.1  christos   }
   1283      1.1  christos {
   1284      1.1  christos   {
   1285      1.1  christos     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))));
   1286      1.1  christos     CPU (h_cbit) = opval;
   1287  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1288      1.1  christos   }
   1289      1.1  christos   {
   1290      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1291      1.1  christos     CPU (h_nbit) = opval;
   1292  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1293      1.1  christos   }
   1294      1.1  christos   {
   1295      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1296      1.1  christos     CPU (h_zbit) = opval;
   1297  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1298      1.1  christos   }
   1299      1.1  christos   {
   1300      1.1  christos     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)));
   1301      1.1  christos     CPU (h_vbit) = opval;
   1302  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1303      1.1  christos   }
   1304      1.1  christos {
   1305      1.1  christos   {
   1306      1.1  christos     BI opval = 0;
   1307      1.1  christos     CPU (h_xbit) = opval;
   1308  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1309      1.1  christos   }
   1310      1.1  christos   {
   1311      1.1  christos     BI opval = 0;
   1312      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1313  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1314      1.1  christos   }
   1315      1.1  christos }
   1316      1.1  christos }
   1317      1.1  christos }
   1318      1.1  christos 
   1319      1.1  christos #undef FLD
   1320      1.1  christos }
   1321      1.1  christos   NEXT (vpc);
   1322      1.1  christos 
   1323      1.1  christos   CASE (sem, INSN_CMP_R_B_R) : /* cmp-r.b $Rs,$Rd */
   1324      1.1  christos {
   1325      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1326      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1327      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   1328      1.1  christos   int UNUSED written = 0;
   1329      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1330      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1331      1.1  christos 
   1332      1.1  christos {
   1333      1.1  christos   QI tmp_tmpopd;
   1334      1.1  christos   QI tmp_tmpops;
   1335      1.1  christos   BI tmp_carry;
   1336      1.1  christos   QI tmp_newval;
   1337      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   1338      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1339      1.1  christos   tmp_carry = CPU (h_cbit);
   1340      1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1341      1.1  christos ((void) 0); /*nop*/
   1342      1.1  christos {
   1343      1.1  christos   {
   1344      1.1  christos     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))));
   1345      1.1  christos     CPU (h_cbit) = opval;
   1346  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1347      1.1  christos   }
   1348      1.1  christos   {
   1349      1.1  christos     BI opval = LTQI (tmp_newval, 0);
   1350      1.1  christos     CPU (h_nbit) = opval;
   1351  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1352      1.1  christos   }
   1353      1.1  christos   {
   1354      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1355      1.1  christos     CPU (h_zbit) = opval;
   1356  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1357      1.1  christos   }
   1358      1.1  christos   {
   1359      1.1  christos     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)));
   1360      1.1  christos     CPU (h_vbit) = opval;
   1361  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1362      1.1  christos   }
   1363      1.1  christos {
   1364      1.1  christos   {
   1365      1.1  christos     BI opval = 0;
   1366      1.1  christos     CPU (h_xbit) = opval;
   1367  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1368      1.1  christos   }
   1369      1.1  christos   {
   1370      1.1  christos     BI opval = 0;
   1371      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1372  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1373      1.1  christos   }
   1374      1.1  christos }
   1375      1.1  christos }
   1376      1.1  christos }
   1377      1.1  christos 
   1378      1.1  christos #undef FLD
   1379      1.1  christos }
   1380      1.1  christos   NEXT (vpc);
   1381      1.1  christos 
   1382      1.1  christos   CASE (sem, INSN_CMP_R_W_R) : /* cmp-r.w $Rs,$Rd */
   1383      1.1  christos {
   1384      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1385      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1386      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   1387      1.1  christos   int UNUSED written = 0;
   1388      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1389      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1390      1.1  christos 
   1391      1.1  christos {
   1392      1.1  christos   HI tmp_tmpopd;
   1393      1.1  christos   HI tmp_tmpops;
   1394      1.1  christos   BI tmp_carry;
   1395      1.1  christos   HI tmp_newval;
   1396      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   1397      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1398      1.1  christos   tmp_carry = CPU (h_cbit);
   1399      1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1400      1.1  christos ((void) 0); /*nop*/
   1401      1.1  christos {
   1402      1.1  christos   {
   1403      1.1  christos     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))));
   1404      1.1  christos     CPU (h_cbit) = opval;
   1405  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1406      1.1  christos   }
   1407      1.1  christos   {
   1408      1.1  christos     BI opval = LTHI (tmp_newval, 0);
   1409      1.1  christos     CPU (h_nbit) = opval;
   1410  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1411      1.1  christos   }
   1412      1.1  christos   {
   1413      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1414      1.1  christos     CPU (h_zbit) = opval;
   1415  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1416      1.1  christos   }
   1417      1.1  christos   {
   1418      1.1  christos     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)));
   1419      1.1  christos     CPU (h_vbit) = opval;
   1420  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1421      1.1  christos   }
   1422      1.1  christos {
   1423      1.1  christos   {
   1424      1.1  christos     BI opval = 0;
   1425      1.1  christos     CPU (h_xbit) = opval;
   1426  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1427      1.1  christos   }
   1428      1.1  christos   {
   1429      1.1  christos     BI opval = 0;
   1430      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1431  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1432      1.1  christos   }
   1433      1.1  christos }
   1434      1.1  christos }
   1435      1.1  christos }
   1436      1.1  christos 
   1437      1.1  christos #undef FLD
   1438      1.1  christos }
   1439      1.1  christos   NEXT (vpc);
   1440      1.1  christos 
   1441      1.1  christos   CASE (sem, INSN_CMP_R_D_R) : /* cmp-r.d $Rs,$Rd */
   1442      1.1  christos {
   1443      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1444      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1445      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   1446      1.1  christos   int UNUSED written = 0;
   1447      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1448      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1449      1.1  christos 
   1450      1.1  christos {
   1451      1.1  christos   SI tmp_tmpopd;
   1452      1.1  christos   SI tmp_tmpops;
   1453      1.1  christos   BI tmp_carry;
   1454      1.1  christos   SI tmp_newval;
   1455      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   1456      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1457      1.1  christos   tmp_carry = CPU (h_cbit);
   1458      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1459      1.1  christos ((void) 0); /*nop*/
   1460      1.1  christos {
   1461      1.1  christos   {
   1462      1.1  christos     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))));
   1463      1.1  christos     CPU (h_cbit) = opval;
   1464  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1465      1.1  christos   }
   1466      1.1  christos   {
   1467      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1468      1.1  christos     CPU (h_nbit) = opval;
   1469  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1470      1.1  christos   }
   1471      1.1  christos   {
   1472      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1473      1.1  christos     CPU (h_zbit) = opval;
   1474  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1475      1.1  christos   }
   1476      1.1  christos   {
   1477      1.1  christos     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)));
   1478      1.1  christos     CPU (h_vbit) = opval;
   1479  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1480      1.1  christos   }
   1481      1.1  christos {
   1482      1.1  christos   {
   1483      1.1  christos     BI opval = 0;
   1484      1.1  christos     CPU (h_xbit) = opval;
   1485  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1486      1.1  christos   }
   1487      1.1  christos   {
   1488      1.1  christos     BI opval = 0;
   1489      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1490  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1491      1.1  christos   }
   1492      1.1  christos }
   1493      1.1  christos }
   1494      1.1  christos }
   1495      1.1  christos 
   1496      1.1  christos #undef FLD
   1497      1.1  christos }
   1498      1.1  christos   NEXT (vpc);
   1499      1.1  christos 
   1500      1.1  christos   CASE (sem, INSN_CMP_M_B_M) : /* cmp-m.b [${Rs}${inc}],${Rd} */
   1501      1.1  christos {
   1502      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1503      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1504      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   1505      1.1  christos   int UNUSED written = 0;
   1506      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1507      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1508      1.1  christos 
   1509      1.1  christos {
   1510      1.1  christos   QI tmp_tmpopd;
   1511      1.1  christos   QI tmp_tmpops;
   1512      1.1  christos   BI tmp_carry;
   1513      1.1  christos   QI tmp_newval;
   1514      1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   1515      1.1  christos   QI tmp_tmp_mem;
   1516      1.1  christos   BI tmp_postinc;
   1517      1.1  christos   tmp_postinc = FLD (f_memmode);
   1518      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   1519      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   1520      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   1521      1.1  christos {
   1522      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   1523      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   1524      1.1  christos }
   1525      1.1  christos   {
   1526      1.1  christos     SI opval = tmp_addr;
   1527      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   1528      1.1  christos     written |= (1 << 9);
   1529  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1530      1.1  christos   }
   1531      1.1  christos }
   1532      1.1  christos }
   1533      1.1  christos ; tmp_tmp_mem; });
   1534      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1535      1.1  christos   tmp_carry = CPU (h_cbit);
   1536      1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1537      1.1  christos ((void) 0); /*nop*/
   1538      1.1  christos {
   1539      1.1  christos   {
   1540      1.1  christos     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))));
   1541      1.1  christos     CPU (h_cbit) = opval;
   1542  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1543      1.1  christos   }
   1544      1.1  christos   {
   1545      1.1  christos     BI opval = LTQI (tmp_newval, 0);
   1546      1.1  christos     CPU (h_nbit) = opval;
   1547  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1548      1.1  christos   }
   1549      1.1  christos   {
   1550      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1551      1.1  christos     CPU (h_zbit) = opval;
   1552  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1553      1.1  christos   }
   1554      1.1  christos   {
   1555      1.1  christos     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)));
   1556      1.1  christos     CPU (h_vbit) = opval;
   1557  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1558      1.1  christos   }
   1559      1.1  christos {
   1560      1.1  christos   {
   1561      1.1  christos     BI opval = 0;
   1562      1.1  christos     CPU (h_xbit) = opval;
   1563  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1564      1.1  christos   }
   1565      1.1  christos   {
   1566      1.1  christos     BI opval = 0;
   1567      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1568  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1569      1.1  christos   }
   1570      1.1  christos }
   1571      1.1  christos }
   1572      1.1  christos }
   1573      1.1  christos 
   1574      1.1  christos   abuf->written = written;
   1575      1.1  christos #undef FLD
   1576      1.1  christos }
   1577      1.1  christos   NEXT (vpc);
   1578      1.1  christos 
   1579      1.1  christos   CASE (sem, INSN_CMP_M_W_M) : /* cmp-m.w [${Rs}${inc}],${Rd} */
   1580      1.1  christos {
   1581      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1582      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1583      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   1584      1.1  christos   int UNUSED written = 0;
   1585      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1586      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1587      1.1  christos 
   1588      1.1  christos {
   1589      1.1  christos   HI tmp_tmpopd;
   1590      1.1  christos   HI tmp_tmpops;
   1591      1.1  christos   BI tmp_carry;
   1592      1.1  christos   HI tmp_newval;
   1593      1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   1594      1.1  christos   HI tmp_tmp_mem;
   1595      1.1  christos   BI tmp_postinc;
   1596      1.1  christos   tmp_postinc = FLD (f_memmode);
   1597      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   1598      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   1599      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   1600      1.1  christos {
   1601      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   1602      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   1603      1.1  christos }
   1604      1.1  christos   {
   1605      1.1  christos     SI opval = tmp_addr;
   1606      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   1607      1.1  christos     written |= (1 << 9);
   1608  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1609      1.1  christos   }
   1610      1.1  christos }
   1611      1.1  christos }
   1612      1.1  christos ; tmp_tmp_mem; });
   1613      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1614      1.1  christos   tmp_carry = CPU (h_cbit);
   1615      1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1616      1.1  christos ((void) 0); /*nop*/
   1617      1.1  christos {
   1618      1.1  christos   {
   1619      1.1  christos     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))));
   1620      1.1  christos     CPU (h_cbit) = opval;
   1621  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1622      1.1  christos   }
   1623      1.1  christos   {
   1624      1.1  christos     BI opval = LTHI (tmp_newval, 0);
   1625      1.1  christos     CPU (h_nbit) = opval;
   1626  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1627      1.1  christos   }
   1628      1.1  christos   {
   1629      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1630      1.1  christos     CPU (h_zbit) = opval;
   1631  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1632      1.1  christos   }
   1633      1.1  christos   {
   1634      1.1  christos     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)));
   1635      1.1  christos     CPU (h_vbit) = opval;
   1636  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1637      1.1  christos   }
   1638      1.1  christos {
   1639      1.1  christos   {
   1640      1.1  christos     BI opval = 0;
   1641      1.1  christos     CPU (h_xbit) = opval;
   1642  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1643      1.1  christos   }
   1644      1.1  christos   {
   1645      1.1  christos     BI opval = 0;
   1646      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1647  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1648      1.1  christos   }
   1649      1.1  christos }
   1650      1.1  christos }
   1651      1.1  christos }
   1652      1.1  christos 
   1653      1.1  christos   abuf->written = written;
   1654      1.1  christos #undef FLD
   1655      1.1  christos }
   1656      1.1  christos   NEXT (vpc);
   1657      1.1  christos 
   1658      1.1  christos   CASE (sem, INSN_CMP_M_D_M) : /* cmp-m.d [${Rs}${inc}],${Rd} */
   1659      1.1  christos {
   1660      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1661      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1662      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   1663      1.1  christos   int UNUSED written = 0;
   1664      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1665      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1666      1.1  christos 
   1667      1.1  christos {
   1668      1.1  christos   SI tmp_tmpopd;
   1669      1.1  christos   SI tmp_tmpops;
   1670      1.1  christos   BI tmp_carry;
   1671      1.1  christos   SI tmp_newval;
   1672      1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   1673      1.1  christos   SI tmp_tmp_mem;
   1674      1.1  christos   BI tmp_postinc;
   1675      1.1  christos   tmp_postinc = FLD (f_memmode);
   1676      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   1677      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   1678      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   1679      1.1  christos {
   1680      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   1681      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   1682      1.1  christos }
   1683      1.1  christos   {
   1684      1.1  christos     SI opval = tmp_addr;
   1685      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   1686      1.1  christos     written |= (1 << 9);
   1687  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1688      1.1  christos   }
   1689      1.1  christos }
   1690      1.1  christos }
   1691      1.1  christos ; tmp_tmp_mem; });
   1692      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1693      1.1  christos   tmp_carry = CPU (h_cbit);
   1694      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1695      1.1  christos ((void) 0); /*nop*/
   1696      1.1  christos {
   1697      1.1  christos   {
   1698      1.1  christos     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))));
   1699      1.1  christos     CPU (h_cbit) = opval;
   1700  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1701      1.1  christos   }
   1702      1.1  christos   {
   1703      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1704      1.1  christos     CPU (h_nbit) = opval;
   1705  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1706      1.1  christos   }
   1707      1.1  christos   {
   1708      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1709      1.1  christos     CPU (h_zbit) = opval;
   1710  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1711      1.1  christos   }
   1712      1.1  christos   {
   1713      1.1  christos     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)));
   1714      1.1  christos     CPU (h_vbit) = opval;
   1715  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1716      1.1  christos   }
   1717      1.1  christos {
   1718      1.1  christos   {
   1719      1.1  christos     BI opval = 0;
   1720      1.1  christos     CPU (h_xbit) = opval;
   1721  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1722      1.1  christos   }
   1723      1.1  christos   {
   1724      1.1  christos     BI opval = 0;
   1725      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1726  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1727      1.1  christos   }
   1728      1.1  christos }
   1729      1.1  christos }
   1730      1.1  christos }
   1731      1.1  christos 
   1732      1.1  christos   abuf->written = written;
   1733      1.1  christos #undef FLD
   1734      1.1  christos }
   1735      1.1  christos   NEXT (vpc);
   1736      1.1  christos 
   1737      1.1  christos   CASE (sem, INSN_CMPCBR) : /* cmp.b $sconst8,$Rd */
   1738      1.1  christos {
   1739      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1740      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1741      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   1742      1.1  christos   int UNUSED written = 0;
   1743      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1744      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1745      1.1  christos 
   1746      1.1  christos {
   1747      1.1  christos   QI tmp_tmpopd;
   1748      1.1  christos   QI tmp_tmpops;
   1749      1.1  christos   BI tmp_carry;
   1750      1.1  christos   QI tmp_newval;
   1751      1.1  christos   tmp_tmpops = TRUNCSIQI (FLD (f_indir_pc__byte));
   1752      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1753      1.1  christos   tmp_carry = CPU (h_cbit);
   1754      1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1755      1.1  christos ((void) 0); /*nop*/
   1756      1.1  christos {
   1757      1.1  christos   {
   1758      1.1  christos     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))));
   1759      1.1  christos     CPU (h_cbit) = opval;
   1760  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1761      1.1  christos   }
   1762      1.1  christos   {
   1763      1.1  christos     BI opval = LTQI (tmp_newval, 0);
   1764      1.1  christos     CPU (h_nbit) = opval;
   1765  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1766      1.1  christos   }
   1767      1.1  christos   {
   1768      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1769      1.1  christos     CPU (h_zbit) = opval;
   1770  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1771      1.1  christos   }
   1772      1.1  christos   {
   1773      1.1  christos     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)));
   1774      1.1  christos     CPU (h_vbit) = opval;
   1775  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1776      1.1  christos   }
   1777      1.1  christos {
   1778      1.1  christos   {
   1779      1.1  christos     BI opval = 0;
   1780      1.1  christos     CPU (h_xbit) = opval;
   1781  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1782      1.1  christos   }
   1783      1.1  christos   {
   1784      1.1  christos     BI opval = 0;
   1785      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1786  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1787      1.1  christos   }
   1788      1.1  christos }
   1789      1.1  christos }
   1790      1.1  christos }
   1791      1.1  christos 
   1792      1.1  christos #undef FLD
   1793      1.1  christos }
   1794      1.1  christos   NEXT (vpc);
   1795      1.1  christos 
   1796      1.1  christos   CASE (sem, INSN_CMPCWR) : /* cmp.w $sconst16,$Rd */
   1797      1.1  christos {
   1798      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1799      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1800      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   1801      1.1  christos   int UNUSED written = 0;
   1802      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1803      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1804      1.1  christos 
   1805      1.1  christos {
   1806      1.1  christos   HI tmp_tmpopd;
   1807      1.1  christos   HI tmp_tmpops;
   1808      1.1  christos   BI tmp_carry;
   1809      1.1  christos   HI tmp_newval;
   1810      1.1  christos   tmp_tmpops = TRUNCSIHI (FLD (f_indir_pc__word));
   1811      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1812      1.1  christos   tmp_carry = CPU (h_cbit);
   1813      1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1814      1.1  christos ((void) 0); /*nop*/
   1815      1.1  christos {
   1816      1.1  christos   {
   1817      1.1  christos     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))));
   1818      1.1  christos     CPU (h_cbit) = opval;
   1819  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1820      1.1  christos   }
   1821      1.1  christos   {
   1822      1.1  christos     BI opval = LTHI (tmp_newval, 0);
   1823      1.1  christos     CPU (h_nbit) = opval;
   1824  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1825      1.1  christos   }
   1826      1.1  christos   {
   1827      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1828      1.1  christos     CPU (h_zbit) = opval;
   1829  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1830      1.1  christos   }
   1831      1.1  christos   {
   1832      1.1  christos     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)));
   1833      1.1  christos     CPU (h_vbit) = opval;
   1834  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1835      1.1  christos   }
   1836      1.1  christos {
   1837      1.1  christos   {
   1838      1.1  christos     BI opval = 0;
   1839      1.1  christos     CPU (h_xbit) = opval;
   1840  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1841      1.1  christos   }
   1842      1.1  christos   {
   1843      1.1  christos     BI opval = 0;
   1844      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1845  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1846      1.1  christos   }
   1847      1.1  christos }
   1848      1.1  christos }
   1849      1.1  christos }
   1850      1.1  christos 
   1851      1.1  christos #undef FLD
   1852      1.1  christos }
   1853      1.1  christos   NEXT (vpc);
   1854      1.1  christos 
   1855      1.1  christos   CASE (sem, INSN_CMPCDR) : /* cmp.d $const32,$Rd */
   1856      1.1  christos {
   1857      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1858      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1859      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   1860      1.1  christos   int UNUSED written = 0;
   1861      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1862      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   1863      1.1  christos 
   1864      1.1  christos {
   1865      1.1  christos   SI tmp_tmpopd;
   1866      1.1  christos   SI tmp_tmpops;
   1867      1.1  christos   BI tmp_carry;
   1868      1.1  christos   SI tmp_newval;
   1869      1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   1870      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1871      1.1  christos   tmp_carry = CPU (h_cbit);
   1872      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1873      1.1  christos ((void) 0); /*nop*/
   1874      1.1  christos {
   1875      1.1  christos   {
   1876      1.1  christos     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))));
   1877      1.1  christos     CPU (h_cbit) = opval;
   1878  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1879      1.1  christos   }
   1880      1.1  christos   {
   1881      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1882      1.1  christos     CPU (h_nbit) = opval;
   1883  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1884      1.1  christos   }
   1885      1.1  christos   {
   1886      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1887      1.1  christos     CPU (h_zbit) = opval;
   1888  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1889      1.1  christos   }
   1890      1.1  christos   {
   1891      1.1  christos     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)));
   1892      1.1  christos     CPU (h_vbit) = opval;
   1893  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1894      1.1  christos   }
   1895      1.1  christos {
   1896      1.1  christos   {
   1897      1.1  christos     BI opval = 0;
   1898      1.1  christos     CPU (h_xbit) = opval;
   1899  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1900      1.1  christos   }
   1901      1.1  christos   {
   1902      1.1  christos     BI opval = 0;
   1903      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1904  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1905      1.1  christos   }
   1906      1.1  christos }
   1907      1.1  christos }
   1908      1.1  christos }
   1909      1.1  christos 
   1910      1.1  christos #undef FLD
   1911      1.1  christos }
   1912      1.1  christos   NEXT (vpc);
   1913      1.1  christos 
   1914      1.1  christos   CASE (sem, INSN_CMPQ) : /* cmpq $i,$Rd */
   1915      1.1  christos {
   1916      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1917      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1918      1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   1919      1.1  christos   int UNUSED written = 0;
   1920      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1921      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1922      1.1  christos 
   1923      1.1  christos {
   1924      1.1  christos   SI tmp_tmpopd;
   1925      1.1  christos   SI tmp_tmpops;
   1926      1.1  christos   BI tmp_carry;
   1927      1.1  christos   SI tmp_newval;
   1928      1.1  christos   tmp_tmpops = FLD (f_s6);
   1929      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1930      1.1  christos   tmp_carry = CPU (h_cbit);
   1931      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1932      1.1  christos ((void) 0); /*nop*/
   1933      1.1  christos {
   1934      1.1  christos   {
   1935      1.1  christos     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))));
   1936      1.1  christos     CPU (h_cbit) = opval;
   1937  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1938      1.1  christos   }
   1939      1.1  christos   {
   1940      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1941      1.1  christos     CPU (h_nbit) = opval;
   1942  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1943      1.1  christos   }
   1944      1.1  christos   {
   1945      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1946      1.1  christos     CPU (h_zbit) = opval;
   1947  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1948      1.1  christos   }
   1949      1.1  christos   {
   1950      1.1  christos     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)));
   1951      1.1  christos     CPU (h_vbit) = opval;
   1952  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1953      1.1  christos   }
   1954      1.1  christos {
   1955      1.1  christos   {
   1956      1.1  christos     BI opval = 0;
   1957      1.1  christos     CPU (h_xbit) = opval;
   1958  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1959      1.1  christos   }
   1960      1.1  christos   {
   1961      1.1  christos     BI opval = 0;
   1962      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1963  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1964      1.1  christos   }
   1965      1.1  christos }
   1966      1.1  christos }
   1967      1.1  christos }
   1968      1.1  christos 
   1969      1.1  christos #undef FLD
   1970      1.1  christos }
   1971      1.1  christos   NEXT (vpc);
   1972      1.1  christos 
   1973      1.1  christos   CASE (sem, INSN_CMPS_M_B_M) : /* cmps-m.b [${Rs}${inc}],$Rd */
   1974      1.1  christos {
   1975      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1976      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1977      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   1978      1.1  christos   int UNUSED written = 0;
   1979      1.1  christos   IADDR UNUSED pc = abuf->addr;
   1980      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1981      1.1  christos 
   1982      1.1  christos {
   1983      1.1  christos   SI tmp_tmpopd;
   1984      1.1  christos   SI tmp_tmpops;
   1985      1.1  christos   BI tmp_carry;
   1986      1.1  christos   SI tmp_newval;
   1987      1.1  christos   tmp_tmpops = EXTQISI (({   SI tmp_addr;
   1988      1.1  christos   QI tmp_tmp_mem;
   1989      1.1  christos   BI tmp_postinc;
   1990      1.1  christos   tmp_postinc = FLD (f_memmode);
   1991      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   1992      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   1993      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   1994      1.1  christos {
   1995      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   1996      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   1997      1.1  christos }
   1998      1.1  christos   {
   1999      1.1  christos     SI opval = tmp_addr;
   2000      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2001      1.1  christos     written |= (1 << 9);
   2002  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2003      1.1  christos   }
   2004      1.1  christos }
   2005      1.1  christos }
   2006      1.1  christos ; tmp_tmp_mem; }));
   2007      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2008      1.1  christos   tmp_carry = CPU (h_cbit);
   2009      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2010      1.1  christos ((void) 0); /*nop*/
   2011      1.1  christos {
   2012      1.1  christos   {
   2013      1.1  christos     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))));
   2014      1.1  christos     CPU (h_cbit) = opval;
   2015  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2016      1.1  christos   }
   2017      1.1  christos   {
   2018      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2019      1.1  christos     CPU (h_nbit) = opval;
   2020  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2021      1.1  christos   }
   2022      1.1  christos   {
   2023      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2024      1.1  christos     CPU (h_zbit) = opval;
   2025  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2026      1.1  christos   }
   2027      1.1  christos   {
   2028      1.1  christos     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)));
   2029      1.1  christos     CPU (h_vbit) = opval;
   2030  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2031      1.1  christos   }
   2032      1.1  christos {
   2033      1.1  christos   {
   2034      1.1  christos     BI opval = 0;
   2035      1.1  christos     CPU (h_xbit) = opval;
   2036  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2037      1.1  christos   }
   2038      1.1  christos   {
   2039      1.1  christos     BI opval = 0;
   2040      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2041  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2042      1.1  christos   }
   2043      1.1  christos }
   2044      1.1  christos }
   2045      1.1  christos }
   2046      1.1  christos 
   2047      1.1  christos   abuf->written = written;
   2048      1.1  christos #undef FLD
   2049      1.1  christos }
   2050      1.1  christos   NEXT (vpc);
   2051      1.1  christos 
   2052      1.1  christos   CASE (sem, INSN_CMPS_M_W_M) : /* cmps-m.w [${Rs}${inc}],$Rd */
   2053      1.1  christos {
   2054      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2055      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2056      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   2057      1.1  christos   int UNUSED written = 0;
   2058      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2059      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2060      1.1  christos 
   2061      1.1  christos {
   2062      1.1  christos   SI tmp_tmpopd;
   2063      1.1  christos   SI tmp_tmpops;
   2064      1.1  christos   BI tmp_carry;
   2065      1.1  christos   SI tmp_newval;
   2066      1.1  christos   tmp_tmpops = EXTHISI (({   SI tmp_addr;
   2067      1.1  christos   HI tmp_tmp_mem;
   2068      1.1  christos   BI tmp_postinc;
   2069      1.1  christos   tmp_postinc = FLD (f_memmode);
   2070      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2071      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   2072      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2073      1.1  christos {
   2074      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2075      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   2076      1.1  christos }
   2077      1.1  christos   {
   2078      1.1  christos     SI opval = tmp_addr;
   2079      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2080      1.1  christos     written |= (1 << 9);
   2081  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2082      1.1  christos   }
   2083      1.1  christos }
   2084      1.1  christos }
   2085      1.1  christos ; tmp_tmp_mem; }));
   2086      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2087      1.1  christos   tmp_carry = CPU (h_cbit);
   2088      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2089      1.1  christos ((void) 0); /*nop*/
   2090      1.1  christos {
   2091      1.1  christos   {
   2092      1.1  christos     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))));
   2093      1.1  christos     CPU (h_cbit) = opval;
   2094  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2095      1.1  christos   }
   2096      1.1  christos   {
   2097      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2098      1.1  christos     CPU (h_nbit) = opval;
   2099  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2100      1.1  christos   }
   2101      1.1  christos   {
   2102      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2103      1.1  christos     CPU (h_zbit) = opval;
   2104  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2105      1.1  christos   }
   2106      1.1  christos   {
   2107      1.1  christos     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)));
   2108      1.1  christos     CPU (h_vbit) = opval;
   2109  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2110      1.1  christos   }
   2111      1.1  christos {
   2112      1.1  christos   {
   2113      1.1  christos     BI opval = 0;
   2114      1.1  christos     CPU (h_xbit) = opval;
   2115  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2116      1.1  christos   }
   2117      1.1  christos   {
   2118      1.1  christos     BI opval = 0;
   2119      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2120  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2121      1.1  christos   }
   2122      1.1  christos }
   2123      1.1  christos }
   2124      1.1  christos }
   2125      1.1  christos 
   2126      1.1  christos   abuf->written = written;
   2127      1.1  christos #undef FLD
   2128      1.1  christos }
   2129      1.1  christos   NEXT (vpc);
   2130      1.1  christos 
   2131      1.1  christos   CASE (sem, INSN_CMPSCBR) : /* [${Rs}${inc}],$Rd */
   2132      1.1  christos {
   2133      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2134      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2135      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   2136      1.1  christos   int UNUSED written = 0;
   2137      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2138      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2139      1.1  christos 
   2140      1.1  christos {
   2141      1.1  christos   SI tmp_tmpopd;
   2142      1.1  christos   SI tmp_tmpops;
   2143      1.1  christos   BI tmp_carry;
   2144      1.1  christos   SI tmp_newval;
   2145      1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   2146      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2147      1.1  christos   tmp_carry = CPU (h_cbit);
   2148      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2149      1.1  christos ((void) 0); /*nop*/
   2150      1.1  christos {
   2151      1.1  christos   {
   2152      1.1  christos     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))));
   2153      1.1  christos     CPU (h_cbit) = opval;
   2154  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2155      1.1  christos   }
   2156      1.1  christos   {
   2157      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2158      1.1  christos     CPU (h_nbit) = opval;
   2159  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2160      1.1  christos   }
   2161      1.1  christos   {
   2162      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2163      1.1  christos     CPU (h_zbit) = opval;
   2164  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2165      1.1  christos   }
   2166      1.1  christos   {
   2167      1.1  christos     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)));
   2168      1.1  christos     CPU (h_vbit) = opval;
   2169  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2170      1.1  christos   }
   2171      1.1  christos {
   2172      1.1  christos   {
   2173      1.1  christos     BI opval = 0;
   2174      1.1  christos     CPU (h_xbit) = opval;
   2175  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2176      1.1  christos   }
   2177      1.1  christos   {
   2178      1.1  christos     BI opval = 0;
   2179      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2180  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2181      1.1  christos   }
   2182      1.1  christos }
   2183      1.1  christos }
   2184      1.1  christos }
   2185      1.1  christos 
   2186      1.1  christos #undef FLD
   2187      1.1  christos }
   2188      1.1  christos   NEXT (vpc);
   2189      1.1  christos 
   2190      1.1  christos   CASE (sem, INSN_CMPSCWR) : /* [${Rs}${inc}],$Rd */
   2191      1.1  christos {
   2192      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2193      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2194      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   2195      1.1  christos   int UNUSED written = 0;
   2196      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2197      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2198      1.1  christos 
   2199      1.1  christos {
   2200      1.1  christos   SI tmp_tmpopd;
   2201      1.1  christos   SI tmp_tmpops;
   2202      1.1  christos   BI tmp_carry;
   2203      1.1  christos   SI tmp_newval;
   2204      1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   2205      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2206      1.1  christos   tmp_carry = CPU (h_cbit);
   2207      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2208      1.1  christos ((void) 0); /*nop*/
   2209      1.1  christos {
   2210      1.1  christos   {
   2211      1.1  christos     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))));
   2212      1.1  christos     CPU (h_cbit) = opval;
   2213  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2214      1.1  christos   }
   2215      1.1  christos   {
   2216      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2217      1.1  christos     CPU (h_nbit) = opval;
   2218  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2219      1.1  christos   }
   2220      1.1  christos   {
   2221      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2222      1.1  christos     CPU (h_zbit) = opval;
   2223  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2224      1.1  christos   }
   2225      1.1  christos   {
   2226      1.1  christos     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)));
   2227      1.1  christos     CPU (h_vbit) = opval;
   2228  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2229      1.1  christos   }
   2230      1.1  christos {
   2231      1.1  christos   {
   2232      1.1  christos     BI opval = 0;
   2233      1.1  christos     CPU (h_xbit) = opval;
   2234  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2235      1.1  christos   }
   2236      1.1  christos   {
   2237      1.1  christos     BI opval = 0;
   2238      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2239  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2240      1.1  christos   }
   2241      1.1  christos }
   2242      1.1  christos }
   2243      1.1  christos }
   2244      1.1  christos 
   2245      1.1  christos #undef FLD
   2246      1.1  christos }
   2247      1.1  christos   NEXT (vpc);
   2248      1.1  christos 
   2249      1.1  christos   CASE (sem, INSN_CMPU_M_B_M) : /* cmpu-m.b [${Rs}${inc}],$Rd */
   2250      1.1  christos {
   2251      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2252      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2253      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   2254      1.1  christos   int UNUSED written = 0;
   2255      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2256      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2257      1.1  christos 
   2258      1.1  christos {
   2259      1.1  christos   SI tmp_tmpopd;
   2260      1.1  christos   SI tmp_tmpops;
   2261      1.1  christos   BI tmp_carry;
   2262      1.1  christos   SI tmp_newval;
   2263      1.1  christos   tmp_tmpops = ZEXTQISI (({   SI tmp_addr;
   2264      1.1  christos   QI tmp_tmp_mem;
   2265      1.1  christos   BI tmp_postinc;
   2266      1.1  christos   tmp_postinc = FLD (f_memmode);
   2267      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2268      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   2269      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2270      1.1  christos {
   2271      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2272      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   2273      1.1  christos }
   2274      1.1  christos   {
   2275      1.1  christos     SI opval = tmp_addr;
   2276      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2277      1.1  christos     written |= (1 << 9);
   2278  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2279      1.1  christos   }
   2280      1.1  christos }
   2281      1.1  christos }
   2282      1.1  christos ; tmp_tmp_mem; }));
   2283      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2284      1.1  christos   tmp_carry = CPU (h_cbit);
   2285      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2286      1.1  christos ((void) 0); /*nop*/
   2287      1.1  christos {
   2288      1.1  christos   {
   2289      1.1  christos     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))));
   2290      1.1  christos     CPU (h_cbit) = opval;
   2291  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2292      1.1  christos   }
   2293      1.1  christos   {
   2294      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2295      1.1  christos     CPU (h_nbit) = opval;
   2296  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2297      1.1  christos   }
   2298      1.1  christos   {
   2299      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2300      1.1  christos     CPU (h_zbit) = opval;
   2301  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2302      1.1  christos   }
   2303      1.1  christos   {
   2304      1.1  christos     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)));
   2305      1.1  christos     CPU (h_vbit) = opval;
   2306  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2307      1.1  christos   }
   2308      1.1  christos {
   2309      1.1  christos   {
   2310      1.1  christos     BI opval = 0;
   2311      1.1  christos     CPU (h_xbit) = opval;
   2312  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2313      1.1  christos   }
   2314      1.1  christos   {
   2315      1.1  christos     BI opval = 0;
   2316      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2317  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2318      1.1  christos   }
   2319      1.1  christos }
   2320      1.1  christos }
   2321      1.1  christos }
   2322      1.1  christos 
   2323      1.1  christos   abuf->written = written;
   2324      1.1  christos #undef FLD
   2325      1.1  christos }
   2326      1.1  christos   NEXT (vpc);
   2327      1.1  christos 
   2328      1.1  christos   CASE (sem, INSN_CMPU_M_W_M) : /* cmpu-m.w [${Rs}${inc}],$Rd */
   2329      1.1  christos {
   2330      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2331      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2332      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   2333      1.1  christos   int UNUSED written = 0;
   2334      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2335      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2336      1.1  christos 
   2337      1.1  christos {
   2338      1.1  christos   SI tmp_tmpopd;
   2339      1.1  christos   SI tmp_tmpops;
   2340      1.1  christos   BI tmp_carry;
   2341      1.1  christos   SI tmp_newval;
   2342      1.1  christos   tmp_tmpops = ZEXTHISI (({   SI tmp_addr;
   2343      1.1  christos   HI tmp_tmp_mem;
   2344      1.1  christos   BI tmp_postinc;
   2345      1.1  christos   tmp_postinc = FLD (f_memmode);
   2346      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2347      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   2348      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2349      1.1  christos {
   2350      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2351      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   2352      1.1  christos }
   2353      1.1  christos   {
   2354      1.1  christos     SI opval = tmp_addr;
   2355      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2356      1.1  christos     written |= (1 << 9);
   2357  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2358      1.1  christos   }
   2359      1.1  christos }
   2360      1.1  christos }
   2361      1.1  christos ; tmp_tmp_mem; }));
   2362      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2363      1.1  christos   tmp_carry = CPU (h_cbit);
   2364      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2365      1.1  christos ((void) 0); /*nop*/
   2366      1.1  christos {
   2367      1.1  christos   {
   2368      1.1  christos     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))));
   2369      1.1  christos     CPU (h_cbit) = opval;
   2370  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2371      1.1  christos   }
   2372      1.1  christos   {
   2373      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2374      1.1  christos     CPU (h_nbit) = opval;
   2375  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2376      1.1  christos   }
   2377      1.1  christos   {
   2378      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2379      1.1  christos     CPU (h_zbit) = opval;
   2380  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2381      1.1  christos   }
   2382      1.1  christos   {
   2383      1.1  christos     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)));
   2384      1.1  christos     CPU (h_vbit) = opval;
   2385  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2386      1.1  christos   }
   2387      1.1  christos {
   2388      1.1  christos   {
   2389      1.1  christos     BI opval = 0;
   2390      1.1  christos     CPU (h_xbit) = opval;
   2391  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2392      1.1  christos   }
   2393      1.1  christos   {
   2394      1.1  christos     BI opval = 0;
   2395      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2396  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2397      1.1  christos   }
   2398      1.1  christos }
   2399      1.1  christos }
   2400      1.1  christos }
   2401      1.1  christos 
   2402      1.1  christos   abuf->written = written;
   2403      1.1  christos #undef FLD
   2404      1.1  christos }
   2405      1.1  christos   NEXT (vpc);
   2406      1.1  christos 
   2407      1.1  christos   CASE (sem, INSN_CMPUCBR) : /* [${Rs}${inc}],$Rd */
   2408      1.1  christos {
   2409      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2410      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2411      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   2412      1.1  christos   int UNUSED written = 0;
   2413      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2414      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2415      1.1  christos 
   2416      1.1  christos {
   2417      1.1  christos   SI tmp_tmpopd;
   2418      1.1  christos   SI tmp_tmpops;
   2419      1.1  christos   BI tmp_carry;
   2420      1.1  christos   SI tmp_newval;
   2421      1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   2422      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2423      1.1  christos   tmp_carry = CPU (h_cbit);
   2424      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2425      1.1  christos ((void) 0); /*nop*/
   2426      1.1  christos {
   2427      1.1  christos   {
   2428      1.1  christos     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))));
   2429      1.1  christos     CPU (h_cbit) = opval;
   2430  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2431      1.1  christos   }
   2432      1.1  christos   {
   2433      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2434      1.1  christos     CPU (h_nbit) = opval;
   2435  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2436      1.1  christos   }
   2437      1.1  christos   {
   2438      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2439      1.1  christos     CPU (h_zbit) = opval;
   2440  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2441      1.1  christos   }
   2442      1.1  christos   {
   2443      1.1  christos     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)));
   2444      1.1  christos     CPU (h_vbit) = opval;
   2445  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2446      1.1  christos   }
   2447      1.1  christos {
   2448      1.1  christos   {
   2449      1.1  christos     BI opval = 0;
   2450      1.1  christos     CPU (h_xbit) = opval;
   2451  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2452      1.1  christos   }
   2453      1.1  christos   {
   2454      1.1  christos     BI opval = 0;
   2455      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2456  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2457      1.1  christos   }
   2458      1.1  christos }
   2459      1.1  christos }
   2460      1.1  christos }
   2461      1.1  christos 
   2462      1.1  christos #undef FLD
   2463      1.1  christos }
   2464      1.1  christos   NEXT (vpc);
   2465      1.1  christos 
   2466      1.1  christos   CASE (sem, INSN_CMPUCWR) : /* [${Rs}${inc}],$Rd */
   2467      1.1  christos {
   2468      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2469      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2470      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   2471      1.1  christos   int UNUSED written = 0;
   2472      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2473      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2474      1.1  christos 
   2475      1.1  christos {
   2476      1.1  christos   SI tmp_tmpopd;
   2477      1.1  christos   SI tmp_tmpops;
   2478      1.1  christos   BI tmp_carry;
   2479      1.1  christos   SI tmp_newval;
   2480      1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   2481      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2482      1.1  christos   tmp_carry = CPU (h_cbit);
   2483      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2484      1.1  christos ((void) 0); /*nop*/
   2485      1.1  christos {
   2486      1.1  christos   {
   2487      1.1  christos     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))));
   2488      1.1  christos     CPU (h_cbit) = opval;
   2489  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2490      1.1  christos   }
   2491      1.1  christos   {
   2492      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2493      1.1  christos     CPU (h_nbit) = opval;
   2494  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2495      1.1  christos   }
   2496      1.1  christos   {
   2497      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2498      1.1  christos     CPU (h_zbit) = opval;
   2499  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2500      1.1  christos   }
   2501      1.1  christos   {
   2502      1.1  christos     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)));
   2503      1.1  christos     CPU (h_vbit) = opval;
   2504  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2505      1.1  christos   }
   2506      1.1  christos {
   2507      1.1  christos   {
   2508      1.1  christos     BI opval = 0;
   2509      1.1  christos     CPU (h_xbit) = opval;
   2510  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2511      1.1  christos   }
   2512      1.1  christos   {
   2513      1.1  christos     BI opval = 0;
   2514      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2515  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2516      1.1  christos   }
   2517      1.1  christos }
   2518      1.1  christos }
   2519      1.1  christos }
   2520      1.1  christos 
   2521      1.1  christos #undef FLD
   2522      1.1  christos }
   2523      1.1  christos   NEXT (vpc);
   2524      1.1  christos 
   2525      1.1  christos   CASE (sem, INSN_MOVE_M_B_M) : /* move-m.b [${Rs}${inc}],${Rd} */
   2526      1.1  christos {
   2527      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2528      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2529      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2530      1.1  christos   int UNUSED written = 0;
   2531      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2532      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2533      1.1  christos 
   2534      1.1  christos {
   2535      1.1  christos   SI tmp_tmp;
   2536      1.1  christos   tmp_tmp = ({   SI tmp_addr;
   2537      1.1  christos   QI tmp_tmp_mem;
   2538      1.1  christos   BI tmp_postinc;
   2539      1.1  christos   tmp_postinc = FLD (f_memmode);
   2540      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2541      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   2542      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2543      1.1  christos {
   2544      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2545      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   2546      1.1  christos }
   2547      1.1  christos   {
   2548      1.1  christos     SI opval = tmp_addr;
   2549      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2550      1.1  christos     written |= (1 << 10);
   2551  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2552      1.1  christos   }
   2553      1.1  christos }
   2554      1.1  christos }
   2555      1.1  christos ; tmp_tmp_mem; });
   2556      1.1  christos {
   2557      1.1  christos   SI tmp_oldregval;
   2558      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   2559      1.1  christos   {
   2560      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmp, 255), ANDSI (tmp_oldregval, 0xffffff00));
   2561      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   2562  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2563      1.1  christos   }
   2564      1.1  christos }
   2565      1.1  christos {
   2566      1.1  christos   {
   2567      1.1  christos     BI opval = LTQI (tmp_tmp, 0);
   2568      1.1  christos     CPU (h_nbit) = opval;
   2569  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2570      1.1  christos   }
   2571      1.1  christos   {
   2572      1.1  christos     BI opval = ANDIF (EQQI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2573      1.1  christos     CPU (h_zbit) = opval;
   2574  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2575      1.1  christos   }
   2576      1.1  christos SET_H_CBIT_MOVE (0);
   2577      1.1  christos SET_H_VBIT_MOVE (0);
   2578      1.1  christos {
   2579      1.1  christos   {
   2580      1.1  christos     BI opval = 0;
   2581      1.1  christos     CPU (h_xbit) = opval;
   2582  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2583      1.1  christos   }
   2584      1.1  christos   {
   2585      1.1  christos     BI opval = 0;
   2586      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2587  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2588      1.1  christos   }
   2589      1.1  christos }
   2590      1.1  christos }
   2591      1.1  christos }
   2592      1.1  christos 
   2593      1.1  christos   abuf->written = written;
   2594      1.1  christos #undef FLD
   2595      1.1  christos }
   2596      1.1  christos   NEXT (vpc);
   2597      1.1  christos 
   2598      1.1  christos   CASE (sem, INSN_MOVE_M_W_M) : /* move-m.w [${Rs}${inc}],${Rd} */
   2599      1.1  christos {
   2600      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2601      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2602      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2603      1.1  christos   int UNUSED written = 0;
   2604      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2605      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2606      1.1  christos 
   2607      1.1  christos {
   2608      1.1  christos   SI tmp_tmp;
   2609      1.1  christos   tmp_tmp = ({   SI tmp_addr;
   2610      1.1  christos   HI tmp_tmp_mem;
   2611      1.1  christos   BI tmp_postinc;
   2612      1.1  christos   tmp_postinc = FLD (f_memmode);
   2613      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2614      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   2615      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2616      1.1  christos {
   2617      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2618      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   2619      1.1  christos }
   2620      1.1  christos   {
   2621      1.1  christos     SI opval = tmp_addr;
   2622      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2623      1.1  christos     written |= (1 << 10);
   2624  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2625      1.1  christos   }
   2626      1.1  christos }
   2627      1.1  christos }
   2628      1.1  christos ; tmp_tmp_mem; });
   2629      1.1  christos {
   2630      1.1  christos   SI tmp_oldregval;
   2631      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   2632      1.1  christos   {
   2633      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmp, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   2634      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   2635  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2636      1.1  christos   }
   2637      1.1  christos }
   2638      1.1  christos {
   2639      1.1  christos   {
   2640      1.1  christos     BI opval = LTHI (tmp_tmp, 0);
   2641      1.1  christos     CPU (h_nbit) = opval;
   2642  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2643      1.1  christos   }
   2644      1.1  christos   {
   2645      1.1  christos     BI opval = ANDIF (EQHI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2646      1.1  christos     CPU (h_zbit) = opval;
   2647  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2648      1.1  christos   }
   2649      1.1  christos SET_H_CBIT_MOVE (0);
   2650      1.1  christos SET_H_VBIT_MOVE (0);
   2651      1.1  christos {
   2652      1.1  christos   {
   2653      1.1  christos     BI opval = 0;
   2654      1.1  christos     CPU (h_xbit) = opval;
   2655  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2656      1.1  christos   }
   2657      1.1  christos   {
   2658      1.1  christos     BI opval = 0;
   2659      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2660  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2661      1.1  christos   }
   2662      1.1  christos }
   2663      1.1  christos }
   2664      1.1  christos }
   2665      1.1  christos 
   2666      1.1  christos   abuf->written = written;
   2667      1.1  christos #undef FLD
   2668      1.1  christos }
   2669      1.1  christos   NEXT (vpc);
   2670      1.1  christos 
   2671      1.1  christos   CASE (sem, INSN_MOVE_M_D_M) : /* move-m.d [${Rs}${inc}],${Rd} */
   2672      1.1  christos {
   2673      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2674      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2675      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2676      1.1  christos   int UNUSED written = 0;
   2677      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2678      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2679      1.1  christos 
   2680      1.1  christos {
   2681      1.1  christos   SI tmp_tmp;
   2682      1.1  christos   tmp_tmp = ({   SI tmp_addr;
   2683      1.1  christos   SI tmp_tmp_mem;
   2684      1.1  christos   BI tmp_postinc;
   2685      1.1  christos   tmp_postinc = FLD (f_memmode);
   2686      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2687      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   2688      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2689      1.1  christos {
   2690      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2691      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   2692      1.1  christos }
   2693      1.1  christos   {
   2694      1.1  christos     SI opval = tmp_addr;
   2695      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2696      1.1  christos     written |= (1 << 9);
   2697  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2698      1.1  christos   }
   2699      1.1  christos }
   2700      1.1  christos }
   2701      1.1  christos ; tmp_tmp_mem; });
   2702      1.1  christos   {
   2703      1.1  christos     SI opval = tmp_tmp;
   2704      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   2705  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2706      1.1  christos   }
   2707      1.1  christos {
   2708      1.1  christos   {
   2709      1.1  christos     BI opval = LTSI (tmp_tmp, 0);
   2710      1.1  christos     CPU (h_nbit) = opval;
   2711  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2712      1.1  christos   }
   2713      1.1  christos   {
   2714      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2715      1.1  christos     CPU (h_zbit) = opval;
   2716  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2717      1.1  christos   }
   2718      1.1  christos SET_H_CBIT_MOVE (0);
   2719      1.1  christos SET_H_VBIT_MOVE (0);
   2720      1.1  christos {
   2721      1.1  christos   {
   2722      1.1  christos     BI opval = 0;
   2723      1.1  christos     CPU (h_xbit) = opval;
   2724  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2725      1.1  christos   }
   2726      1.1  christos   {
   2727      1.1  christos     BI opval = 0;
   2728      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2729  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2730      1.1  christos   }
   2731      1.1  christos }
   2732      1.1  christos }
   2733      1.1  christos }
   2734      1.1  christos 
   2735      1.1  christos   abuf->written = written;
   2736      1.1  christos #undef FLD
   2737      1.1  christos }
   2738      1.1  christos   NEXT (vpc);
   2739      1.1  christos 
   2740      1.1  christos   CASE (sem, INSN_MOVS_M_B_M) : /* movs-m.b [${Rs}${inc}],${Rd} */
   2741      1.1  christos {
   2742      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2743      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2744      1.1  christos #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   2745      1.1  christos   int UNUSED written = 0;
   2746      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2747      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2748      1.1  christos 
   2749      1.1  christos {
   2750      1.1  christos   SI tmp_tmp;
   2751      1.1  christos   tmp_tmp = EXTQISI (({   SI tmp_addr;
   2752      1.1  christos   QI tmp_tmp_mem;
   2753      1.1  christos   BI tmp_postinc;
   2754      1.1  christos   tmp_postinc = FLD (f_memmode);
   2755      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2756      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   2757      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2758      1.1  christos {
   2759      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2760      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   2761      1.1  christos }
   2762      1.1  christos   {
   2763      1.1  christos     SI opval = tmp_addr;
   2764      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2765      1.1  christos     written |= (1 << 8);
   2766  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2767      1.1  christos   }
   2768      1.1  christos }
   2769      1.1  christos }
   2770      1.1  christos ; tmp_tmp_mem; }));
   2771      1.1  christos if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
   2772      1.1  christos   {
   2773      1.1  christos     SI opval = tmp_tmp;
   2774      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2775      1.1  christos     written |= (1 << 8);
   2776  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2777      1.1  christos   }
   2778      1.1  christos } else {
   2779      1.1  christos   {
   2780      1.1  christos     SI opval = tmp_tmp;
   2781      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   2782      1.1  christos     written |= (1 << 7);
   2783  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2784      1.1  christos   }
   2785      1.1  christos }
   2786      1.1  christos {
   2787      1.1  christos   {
   2788      1.1  christos     BI opval = LTSI (tmp_tmp, 0);
   2789      1.1  christos     CPU (h_nbit) = opval;
   2790  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2791      1.1  christos   }
   2792      1.1  christos   {
   2793      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2794      1.1  christos     CPU (h_zbit) = opval;
   2795  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2796      1.1  christos   }
   2797      1.1  christos SET_H_CBIT_MOVE (0);
   2798      1.1  christos SET_H_VBIT_MOVE (0);
   2799      1.1  christos {
   2800      1.1  christos   {
   2801      1.1  christos     BI opval = 0;
   2802      1.1  christos     CPU (h_xbit) = opval;
   2803  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2804      1.1  christos   }
   2805      1.1  christos   {
   2806      1.1  christos     BI opval = 0;
   2807      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2808  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2809      1.1  christos   }
   2810      1.1  christos }
   2811      1.1  christos }
   2812      1.1  christos }
   2813      1.1  christos 
   2814      1.1  christos   abuf->written = written;
   2815      1.1  christos #undef FLD
   2816      1.1  christos }
   2817      1.1  christos   NEXT (vpc);
   2818      1.1  christos 
   2819      1.1  christos   CASE (sem, INSN_MOVS_M_W_M) : /* movs-m.w [${Rs}${inc}],${Rd} */
   2820      1.1  christos {
   2821      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2822      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2823      1.1  christos #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   2824      1.1  christos   int UNUSED written = 0;
   2825      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2826      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2827      1.1  christos 
   2828      1.1  christos {
   2829      1.1  christos   SI tmp_tmp;
   2830      1.1  christos   tmp_tmp = EXTHISI (({   SI tmp_addr;
   2831      1.1  christos   HI tmp_tmp_mem;
   2832      1.1  christos   BI tmp_postinc;
   2833      1.1  christos   tmp_postinc = FLD (f_memmode);
   2834      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2835      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   2836      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2837      1.1  christos {
   2838      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2839      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   2840      1.1  christos }
   2841      1.1  christos   {
   2842      1.1  christos     SI opval = tmp_addr;
   2843      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2844      1.1  christos     written |= (1 << 8);
   2845  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2846      1.1  christos   }
   2847      1.1  christos }
   2848      1.1  christos }
   2849      1.1  christos ; tmp_tmp_mem; }));
   2850      1.1  christos if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
   2851      1.1  christos   {
   2852      1.1  christos     SI opval = tmp_tmp;
   2853      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2854      1.1  christos     written |= (1 << 8);
   2855  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2856      1.1  christos   }
   2857      1.1  christos } else {
   2858      1.1  christos   {
   2859      1.1  christos     SI opval = tmp_tmp;
   2860      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   2861      1.1  christos     written |= (1 << 7);
   2862  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2863      1.1  christos   }
   2864      1.1  christos }
   2865      1.1  christos {
   2866      1.1  christos   {
   2867      1.1  christos     BI opval = LTSI (tmp_tmp, 0);
   2868      1.1  christos     CPU (h_nbit) = opval;
   2869  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2870      1.1  christos   }
   2871      1.1  christos   {
   2872      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2873      1.1  christos     CPU (h_zbit) = opval;
   2874  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2875      1.1  christos   }
   2876      1.1  christos SET_H_CBIT_MOVE (0);
   2877      1.1  christos SET_H_VBIT_MOVE (0);
   2878      1.1  christos {
   2879      1.1  christos   {
   2880      1.1  christos     BI opval = 0;
   2881      1.1  christos     CPU (h_xbit) = opval;
   2882  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2883      1.1  christos   }
   2884      1.1  christos   {
   2885      1.1  christos     BI opval = 0;
   2886      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2887  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2888      1.1  christos   }
   2889      1.1  christos }
   2890      1.1  christos }
   2891      1.1  christos }
   2892      1.1  christos 
   2893      1.1  christos   abuf->written = written;
   2894      1.1  christos #undef FLD
   2895      1.1  christos }
   2896      1.1  christos   NEXT (vpc);
   2897      1.1  christos 
   2898      1.1  christos   CASE (sem, INSN_MOVU_M_B_M) : /* movu-m.b [${Rs}${inc}],${Rd} */
   2899      1.1  christos {
   2900      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2901      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2902      1.1  christos #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   2903      1.1  christos   int UNUSED written = 0;
   2904      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2905      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2906      1.1  christos 
   2907      1.1  christos {
   2908      1.1  christos   SI tmp_tmp;
   2909      1.1  christos   tmp_tmp = ZEXTQISI (({   SI tmp_addr;
   2910      1.1  christos   QI tmp_tmp_mem;
   2911      1.1  christos   BI tmp_postinc;
   2912      1.1  christos   tmp_postinc = FLD (f_memmode);
   2913      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2914      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   2915      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2916      1.1  christos {
   2917      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2918      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   2919      1.1  christos }
   2920      1.1  christos   {
   2921      1.1  christos     SI opval = tmp_addr;
   2922      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2923      1.1  christos     written |= (1 << 8);
   2924  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2925      1.1  christos   }
   2926      1.1  christos }
   2927      1.1  christos }
   2928      1.1  christos ; tmp_tmp_mem; }));
   2929      1.1  christos if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
   2930      1.1  christos   {
   2931      1.1  christos     SI opval = tmp_tmp;
   2932      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2933      1.1  christos     written |= (1 << 8);
   2934  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2935      1.1  christos   }
   2936      1.1  christos } else {
   2937      1.1  christos   {
   2938      1.1  christos     SI opval = tmp_tmp;
   2939      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   2940      1.1  christos     written |= (1 << 7);
   2941  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2942      1.1  christos   }
   2943      1.1  christos }
   2944      1.1  christos {
   2945      1.1  christos   {
   2946      1.1  christos     BI opval = LTSI (tmp_tmp, 0);
   2947      1.1  christos     CPU (h_nbit) = opval;
   2948  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2949      1.1  christos   }
   2950      1.1  christos   {
   2951      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2952      1.1  christos     CPU (h_zbit) = opval;
   2953  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2954      1.1  christos   }
   2955      1.1  christos SET_H_CBIT_MOVE (0);
   2956      1.1  christos SET_H_VBIT_MOVE (0);
   2957      1.1  christos {
   2958      1.1  christos   {
   2959      1.1  christos     BI opval = 0;
   2960      1.1  christos     CPU (h_xbit) = opval;
   2961  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2962      1.1  christos   }
   2963      1.1  christos   {
   2964      1.1  christos     BI opval = 0;
   2965      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2966  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2967      1.1  christos   }
   2968      1.1  christos }
   2969      1.1  christos }
   2970      1.1  christos }
   2971      1.1  christos 
   2972      1.1  christos   abuf->written = written;
   2973      1.1  christos #undef FLD
   2974      1.1  christos }
   2975      1.1  christos   NEXT (vpc);
   2976      1.1  christos 
   2977      1.1  christos   CASE (sem, INSN_MOVU_M_W_M) : /* movu-m.w [${Rs}${inc}],${Rd} */
   2978      1.1  christos {
   2979      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2980      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2981      1.1  christos #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   2982      1.1  christos   int UNUSED written = 0;
   2983      1.1  christos   IADDR UNUSED pc = abuf->addr;
   2984      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2985      1.1  christos 
   2986      1.1  christos {
   2987      1.1  christos   SI tmp_tmp;
   2988      1.1  christos   tmp_tmp = ZEXTHISI (({   SI tmp_addr;
   2989      1.1  christos   HI tmp_tmp_mem;
   2990      1.1  christos   BI tmp_postinc;
   2991      1.1  christos   tmp_postinc = FLD (f_memmode);
   2992      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2993      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   2994      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2995      1.1  christos {
   2996      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2997      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   2998      1.1  christos }
   2999      1.1  christos   {
   3000      1.1  christos     SI opval = tmp_addr;
   3001      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3002      1.1  christos     written |= (1 << 8);
   3003  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3004      1.1  christos   }
   3005      1.1  christos }
   3006      1.1  christos }
   3007      1.1  christos ; tmp_tmp_mem; }));
   3008      1.1  christos if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
   3009      1.1  christos   {
   3010      1.1  christos     SI opval = tmp_tmp;
   3011      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3012      1.1  christos     written |= (1 << 8);
   3013  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3014      1.1  christos   }
   3015      1.1  christos } else {
   3016      1.1  christos   {
   3017      1.1  christos     SI opval = tmp_tmp;
   3018      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   3019      1.1  christos     written |= (1 << 7);
   3020  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3021      1.1  christos   }
   3022      1.1  christos }
   3023      1.1  christos {
   3024      1.1  christos   {
   3025      1.1  christos     BI opval = LTSI (tmp_tmp, 0);
   3026      1.1  christos     CPU (h_nbit) = opval;
   3027  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   3028      1.1  christos   }
   3029      1.1  christos   {
   3030      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   3031      1.1  christos     CPU (h_zbit) = opval;
   3032  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   3033      1.1  christos   }
   3034      1.1  christos SET_H_CBIT_MOVE (0);
   3035      1.1  christos SET_H_VBIT_MOVE (0);
   3036      1.1  christos {
   3037      1.1  christos   {
   3038      1.1  christos     BI opval = 0;
   3039      1.1  christos     CPU (h_xbit) = opval;
   3040  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3041      1.1  christos   }
   3042      1.1  christos   {
   3043      1.1  christos     BI opval = 0;
   3044      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3045  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3046      1.1  christos   }
   3047      1.1  christos }
   3048      1.1  christos }
   3049      1.1  christos }
   3050      1.1  christos 
   3051      1.1  christos   abuf->written = written;
   3052      1.1  christos #undef FLD
   3053      1.1  christos }
   3054      1.1  christos   NEXT (vpc);
   3055      1.1  christos 
   3056      1.1  christos   CASE (sem, INSN_MOVE_R_SPRV32) : /* move ${Rs},${Pd} */
   3057      1.1  christos {
   3058      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3059      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3060      1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   3061      1.1  christos   int UNUSED written = 0;
   3062      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3063      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   3064      1.1  christos 
   3065      1.1  christos {
   3066      1.1  christos   SI tmp_tmp;
   3067      1.1  christos   SI tmp_rno;
   3068      1.1  christos   tmp_tmp = GET_H_GR (FLD (f_operand1));
   3069      1.1  christos   tmp_rno = FLD (f_operand2);
   3070      1.1  christos if (ORIF (ORIF (EQSI (tmp_rno, 0), EQSI (tmp_rno, 1)), ORIF (EQSI (tmp_rno, 4), EQSI (tmp_rno, 8)))) {
   3071      1.1  christos cgen_rtx_error (current_cpu, "move-r-spr: trying to set a read-only special register");
   3072      1.1  christos }
   3073      1.1  christos  else {
   3074      1.1  christos   {
   3075      1.1  christos     SI opval = tmp_tmp;
   3076      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3077      1.1  christos     written |= (1 << 2);
   3078  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3079      1.1  christos   }
   3080      1.1  christos }
   3081      1.1  christos {
   3082      1.1  christos   {
   3083      1.1  christos     BI opval = 0;
   3084      1.1  christos     CPU (h_xbit) = opval;
   3085  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3086      1.1  christos   }
   3087      1.1  christos   {
   3088      1.1  christos     BI opval = 0;
   3089      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3090  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3091      1.1  christos   }
   3092      1.1  christos }
   3093      1.1  christos }
   3094      1.1  christos 
   3095      1.1  christos   abuf->written = written;
   3096      1.1  christos #undef FLD
   3097      1.1  christos }
   3098      1.1  christos   NEXT (vpc);
   3099      1.1  christos 
   3100      1.1  christos   CASE (sem, INSN_MOVE_SPR_RV32) : /* move ${Ps},${Rd-sfield} */
   3101      1.1  christos {
   3102      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3103      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3104      1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   3105      1.1  christos   int UNUSED written = 0;
   3106      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3107      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   3108      1.1  christos 
   3109      1.1  christos {
   3110      1.1  christos   SI tmp_grno;
   3111      1.1  christos   SI tmp_prno;
   3112      1.1  christos   SI tmp_newval;
   3113      1.1  christos   tmp_prno = FLD (f_operand2);
   3114      1.1  christos   tmp_newval = GET_H_SR (FLD (f_operand2));
   3115      1.1  christos if (EQSI (tmp_prno, 2)) {
   3116      1.1  christos   {
   3117      1.1  christos     SI opval = tmp_newval;
   3118      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3119      1.1  christos     written |= (1 << 4);
   3120  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3121      1.1  christos   }
   3122      1.1  christos }
   3123      1.1  christos  else if (EQSI (tmp_prno, 3)) {
   3124      1.1  christos {
   3125      1.1  christos   SI tmp_oldregval;
   3126      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3127      1.1  christos   {
   3128      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   3129      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3130      1.1  christos     written |= (1 << 4);
   3131  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3132      1.1  christos   }
   3133      1.1  christos }
   3134      1.1  christos }
   3135      1.1  christos  else if (EQSI (tmp_prno, 5)) {
   3136      1.1  christos   {
   3137      1.1  christos     SI opval = tmp_newval;
   3138      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3139      1.1  christos     written |= (1 << 4);
   3140  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3141      1.1  christos   }
   3142      1.1  christos }
   3143      1.1  christos  else if (EQSI (tmp_prno, 6)) {
   3144      1.1  christos   {
   3145      1.1  christos     SI opval = tmp_newval;
   3146      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3147      1.1  christos     written |= (1 << 4);
   3148  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3149      1.1  christos   }
   3150      1.1  christos }
   3151      1.1  christos  else if (EQSI (tmp_prno, 7)) {
   3152      1.1  christos   {
   3153      1.1  christos     SI opval = tmp_newval;
   3154      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3155      1.1  christos     written |= (1 << 4);
   3156  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3157      1.1  christos   }
   3158      1.1  christos }
   3159      1.1  christos  else if (EQSI (tmp_prno, 9)) {
   3160      1.1  christos   {
   3161      1.1  christos     SI opval = tmp_newval;
   3162      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3163      1.1  christos     written |= (1 << 4);
   3164  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3165      1.1  christos   }
   3166      1.1  christos }
   3167      1.1  christos  else if (EQSI (tmp_prno, 10)) {
   3168      1.1  christos   {
   3169      1.1  christos     SI opval = tmp_newval;
   3170      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3171      1.1  christos     written |= (1 << 4);
   3172  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3173      1.1  christos   }
   3174      1.1  christos }
   3175      1.1  christos  else if (EQSI (tmp_prno, 11)) {
   3176      1.1  christos   {
   3177      1.1  christos     SI opval = tmp_newval;
   3178      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3179      1.1  christos     written |= (1 << 4);
   3180  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3181      1.1  christos   }
   3182      1.1  christos }
   3183      1.1  christos  else if (EQSI (tmp_prno, 12)) {
   3184      1.1  christos   {
   3185      1.1  christos     SI opval = tmp_newval;
   3186      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3187      1.1  christos     written |= (1 << 4);
   3188  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3189      1.1  christos   }
   3190      1.1  christos }
   3191      1.1  christos  else if (EQSI (tmp_prno, 13)) {
   3192      1.1  christos   {
   3193      1.1  christos     SI opval = tmp_newval;
   3194      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3195      1.1  christos     written |= (1 << 4);
   3196  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3197      1.1  christos   }
   3198      1.1  christos }
   3199      1.1  christos  else if (EQSI (tmp_prno, 14)) {
   3200      1.1  christos   {
   3201      1.1  christos     SI opval = tmp_newval;
   3202      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3203      1.1  christos     written |= (1 << 4);
   3204  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3205      1.1  christos   }
   3206      1.1  christos }
   3207      1.1  christos  else if (EQSI (tmp_prno, 15)) {
   3208      1.1  christos   {
   3209      1.1  christos     SI opval = tmp_newval;
   3210      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3211      1.1  christos     written |= (1 << 4);
   3212  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3213      1.1  christos   }
   3214      1.1  christos }
   3215      1.1  christos  else if (EQSI (tmp_prno, 0)) {
   3216      1.1  christos {
   3217      1.1  christos   SI tmp_oldregval;
   3218      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3219      1.1  christos   {
   3220      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   3221      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3222      1.1  christos     written |= (1 << 4);
   3223  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3224      1.1  christos   }
   3225      1.1  christos }
   3226      1.1  christos }
   3227      1.1  christos  else if (EQSI (tmp_prno, 1)) {
   3228      1.1  christos {
   3229      1.1  christos   SI tmp_oldregval;
   3230      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3231      1.1  christos   {
   3232      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   3233      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3234      1.1  christos     written |= (1 << 4);
   3235  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3236      1.1  christos   }
   3237      1.1  christos }
   3238      1.1  christos }
   3239      1.1  christos  else if (EQSI (tmp_prno, 4)) {
   3240      1.1  christos {
   3241      1.1  christos   SI tmp_oldregval;
   3242      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3243      1.1  christos   {
   3244      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   3245      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3246      1.1  christos     written |= (1 << 4);
   3247  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3248      1.1  christos   }
   3249      1.1  christos }
   3250      1.1  christos }
   3251      1.1  christos  else if (EQSI (tmp_prno, 8)) {
   3252      1.1  christos   {
   3253      1.1  christos     SI opval = tmp_newval;
   3254      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3255      1.1  christos     written |= (1 << 4);
   3256  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3257      1.1  christos   }
   3258      1.1  christos }
   3259      1.1  christos  else {
   3260      1.1  christos cgen_rtx_error (current_cpu, "move-spr-r from unimplemented register");
   3261      1.1  christos }
   3262      1.1  christos {
   3263      1.1  christos   {
   3264      1.1  christos     BI opval = 0;
   3265      1.1  christos     CPU (h_xbit) = opval;
   3266  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3267      1.1  christos   }
   3268      1.1  christos   {
   3269      1.1  christos     BI opval = 0;
   3270      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3271  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3272      1.1  christos   }
   3273      1.1  christos }
   3274      1.1  christos }
   3275      1.1  christos 
   3276      1.1  christos   abuf->written = written;
   3277      1.1  christos #undef FLD
   3278      1.1  christos }
   3279      1.1  christos   NEXT (vpc);
   3280      1.1  christos 
   3281      1.1  christos   CASE (sem, INSN_MOVE_M_SPRV32) : /* move [${Rs}${inc}],${Pd} */
   3282      1.1  christos {
   3283      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3284      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3285      1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   3286      1.1  christos   int UNUSED written = 0;
   3287      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3288      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   3289      1.1  christos 
   3290      1.1  christos {
   3291      1.1  christos   SI tmp_rno;
   3292      1.1  christos   SI tmp_newval;
   3293      1.1  christos   tmp_rno = FLD (f_operand2);
   3294      1.1  christos if (EQSI (tmp_rno, 2)) {
   3295      1.1  christos   tmp_newval = ({   SI tmp_addr;
   3296      1.1  christos   SI tmp_tmp_mem;
   3297      1.1  christos   BI tmp_postinc;
   3298      1.1  christos   tmp_postinc = FLD (f_memmode);
   3299      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3300      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3301      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3302      1.1  christos {
   3303      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3304      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3305      1.1  christos }
   3306      1.1  christos   {
   3307      1.1  christos     SI opval = tmp_addr;
   3308      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3309      1.1  christos     written |= (1 << 8);
   3310  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3311      1.1  christos   }
   3312      1.1  christos }
   3313      1.1  christos }
   3314      1.1  christos ; tmp_tmp_mem; });
   3315      1.1  christos }
   3316      1.1  christos  else if (EQSI (tmp_rno, 3)) {
   3317      1.1  christos   tmp_newval = EXTQISI (({   SI tmp_addr;
   3318      1.1  christos   QI tmp_tmp_mem;
   3319      1.1  christos   BI tmp_postinc;
   3320      1.1  christos   tmp_postinc = FLD (f_memmode);
   3321      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3322      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   3323      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3324      1.1  christos {
   3325      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3326      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   3327      1.1  christos }
   3328      1.1  christos   {
   3329      1.1  christos     SI opval = tmp_addr;
   3330      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3331      1.1  christos     written |= (1 << 8);
   3332  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3333      1.1  christos   }
   3334      1.1  christos }
   3335      1.1  christos }
   3336      1.1  christos ; tmp_tmp_mem; }));
   3337      1.1  christos }
   3338      1.1  christos  else if (EQSI (tmp_rno, 5)) {
   3339      1.1  christos   tmp_newval = ({   SI tmp_addr;
   3340      1.1  christos   SI tmp_tmp_mem;
   3341      1.1  christos   BI tmp_postinc;
   3342      1.1  christos   tmp_postinc = FLD (f_memmode);
   3343      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3344      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3345      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3346      1.1  christos {
   3347      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3348      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3349      1.1  christos }
   3350      1.1  christos   {
   3351      1.1  christos     SI opval = tmp_addr;
   3352      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3353      1.1  christos     written |= (1 << 8);
   3354  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3355      1.1  christos   }
   3356      1.1  christos }
   3357      1.1  christos }
   3358      1.1  christos ; tmp_tmp_mem; });
   3359      1.1  christos }
   3360      1.1  christos  else if (EQSI (tmp_rno, 6)) {
   3361      1.1  christos   tmp_newval = ({   SI tmp_addr;
   3362      1.1  christos   SI tmp_tmp_mem;
   3363      1.1  christos   BI tmp_postinc;
   3364      1.1  christos   tmp_postinc = FLD (f_memmode);
   3365      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3366      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3367      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3368      1.1  christos {
   3369      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3370      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3371      1.1  christos }
   3372      1.1  christos   {
   3373      1.1  christos     SI opval = tmp_addr;
   3374      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3375      1.1  christos     written |= (1 << 8);
   3376  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3377      1.1  christos   }
   3378      1.1  christos }
   3379      1.1  christos }
   3380      1.1  christos ; tmp_tmp_mem; });
   3381      1.1  christos }
   3382      1.1  christos  else if (EQSI (tmp_rno, 7)) {
   3383      1.1  christos   tmp_newval = ({   SI tmp_addr;
   3384      1.1  christos   SI tmp_tmp_mem;
   3385      1.1  christos   BI tmp_postinc;
   3386      1.1  christos   tmp_postinc = FLD (f_memmode);
   3387      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3388      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3389      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3390      1.1  christos {
   3391      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3392      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3393      1.1  christos }
   3394      1.1  christos   {
   3395      1.1  christos     SI opval = tmp_addr;
   3396      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3397      1.1  christos     written |= (1 << 8);
   3398  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3399      1.1  christos   }
   3400      1.1  christos }
   3401      1.1  christos }
   3402      1.1  christos ; tmp_tmp_mem; });
   3403      1.1  christos }
   3404      1.1  christos  else if (EQSI (tmp_rno, 9)) {
   3405      1.1  christos   tmp_newval = ({   SI tmp_addr;
   3406      1.1  christos   SI tmp_tmp_mem;
   3407      1.1  christos   BI tmp_postinc;
   3408      1.1  christos   tmp_postinc = FLD (f_memmode);
   3409      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3410      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3411      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3412      1.1  christos {
   3413      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3414      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3415      1.1  christos }
   3416      1.1  christos   {
   3417      1.1  christos     SI opval = tmp_addr;
   3418      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3419      1.1  christos     written |= (1 << 8);
   3420  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3421      1.1  christos   }
   3422      1.1  christos }
   3423      1.1  christos }
   3424      1.1  christos ; tmp_tmp_mem; });
   3425      1.1  christos }
   3426      1.1  christos  else if (EQSI (tmp_rno, 10)) {
   3427      1.1  christos   tmp_newval = ({   SI tmp_addr;
   3428      1.1  christos   SI tmp_tmp_mem;
   3429      1.1  christos   BI tmp_postinc;
   3430      1.1  christos   tmp_postinc = FLD (f_memmode);
   3431      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3432      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3433      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3434      1.1  christos {
   3435      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3436      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3437      1.1  christos }
   3438      1.1  christos   {
   3439      1.1  christos     SI opval = tmp_addr;
   3440      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3441      1.1  christos     written |= (1 << 8);
   3442  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3443      1.1  christos   }
   3444      1.1  christos }
   3445      1.1  christos }
   3446      1.1  christos ; tmp_tmp_mem; });
   3447      1.1  christos }
   3448      1.1  christos  else if (EQSI (tmp_rno, 11)) {
   3449      1.1  christos   tmp_newval = ({   SI tmp_addr;
   3450      1.1  christos   SI tmp_tmp_mem;
   3451      1.1  christos   BI tmp_postinc;
   3452      1.1  christos   tmp_postinc = FLD (f_memmode);
   3453      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3454      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3455      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3456      1.1  christos {
   3457      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3458      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3459      1.1  christos }
   3460      1.1  christos   {
   3461      1.1  christos     SI opval = tmp_addr;
   3462      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3463      1.1  christos     written |= (1 << 8);
   3464  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3465      1.1  christos   }
   3466      1.1  christos }
   3467      1.1  christos }
   3468      1.1  christos ; tmp_tmp_mem; });
   3469      1.1  christos }
   3470      1.1  christos  else if (EQSI (tmp_rno, 12)) {
   3471      1.1  christos   tmp_newval = ({   SI tmp_addr;
   3472      1.1  christos   SI tmp_tmp_mem;
   3473      1.1  christos   BI tmp_postinc;
   3474      1.1  christos   tmp_postinc = FLD (f_memmode);
   3475      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3476      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3477      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3478      1.1  christos {
   3479      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3480      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3481      1.1  christos }
   3482      1.1  christos   {
   3483      1.1  christos     SI opval = tmp_addr;
   3484      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3485      1.1  christos     written |= (1 << 8);
   3486  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3487      1.1  christos   }
   3488      1.1  christos }
   3489      1.1  christos }
   3490      1.1  christos ; tmp_tmp_mem; });
   3491      1.1  christos }
   3492      1.1  christos  else if (EQSI (tmp_rno, 13)) {
   3493      1.1  christos   tmp_newval = ({   SI tmp_addr;
   3494      1.1  christos   SI tmp_tmp_mem;
   3495      1.1  christos   BI tmp_postinc;
   3496      1.1  christos   tmp_postinc = FLD (f_memmode);
   3497      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3498      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3499      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3500      1.1  christos {
   3501      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3502      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3503      1.1  christos }
   3504      1.1  christos   {
   3505      1.1  christos     SI opval = tmp_addr;
   3506      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3507      1.1  christos     written |= (1 << 8);
   3508  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3509      1.1  christos   }
   3510      1.1  christos }
   3511      1.1  christos }
   3512      1.1  christos ; tmp_tmp_mem; });
   3513      1.1  christos }
   3514      1.1  christos  else if (EQSI (tmp_rno, 14)) {
   3515      1.1  christos   tmp_newval = ({   SI tmp_addr;
   3516      1.1  christos   SI tmp_tmp_mem;
   3517      1.1  christos   BI tmp_postinc;
   3518      1.1  christos   tmp_postinc = FLD (f_memmode);
   3519      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3520      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3521      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3522      1.1  christos {
   3523      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3524      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3525      1.1  christos }
   3526      1.1  christos   {
   3527      1.1  christos     SI opval = tmp_addr;
   3528      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3529      1.1  christos     written |= (1 << 8);
   3530  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3531      1.1  christos   }
   3532      1.1  christos }
   3533      1.1  christos }
   3534      1.1  christos ; tmp_tmp_mem; });
   3535      1.1  christos }
   3536      1.1  christos  else if (EQSI (tmp_rno, 15)) {
   3537      1.1  christos   tmp_newval = ({   SI tmp_addr;
   3538      1.1  christos   SI tmp_tmp_mem;
   3539      1.1  christos   BI tmp_postinc;
   3540      1.1  christos   tmp_postinc = FLD (f_memmode);
   3541      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3542      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3543      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3544      1.1  christos {
   3545      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3546      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3547      1.1  christos }
   3548      1.1  christos   {
   3549      1.1  christos     SI opval = tmp_addr;
   3550      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3551      1.1  christos     written |= (1 << 8);
   3552  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3553      1.1  christos   }
   3554      1.1  christos }
   3555      1.1  christos }
   3556      1.1  christos ; tmp_tmp_mem; });
   3557      1.1  christos }
   3558      1.1  christos  else {
   3559      1.1  christos cgen_rtx_error (current_cpu, "Trying to set unimplemented special register");
   3560      1.1  christos }
   3561      1.1  christos   {
   3562      1.1  christos     SI opval = tmp_newval;
   3563      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3564  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3565      1.1  christos   }
   3566      1.1  christos {
   3567      1.1  christos   {
   3568      1.1  christos     BI opval = 0;
   3569      1.1  christos     CPU (h_xbit) = opval;
   3570  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3571      1.1  christos   }
   3572      1.1  christos   {
   3573      1.1  christos     BI opval = 0;
   3574      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3575  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3576      1.1  christos   }
   3577      1.1  christos }
   3578      1.1  christos }
   3579      1.1  christos 
   3580      1.1  christos   abuf->written = written;
   3581      1.1  christos #undef FLD
   3582      1.1  christos }
   3583      1.1  christos   NEXT (vpc);
   3584      1.1  christos 
   3585      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P2) : /* move ${const32},${Pd} */
   3586      1.1  christos {
   3587      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3588      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3589      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3590      1.1  christos   int UNUSED written = 0;
   3591      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3592      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3593      1.1  christos 
   3594      1.1  christos {
   3595      1.1  christos   {
   3596      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3597      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3598  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3599      1.1  christos   }
   3600      1.1  christos {
   3601      1.1  christos   {
   3602      1.1  christos     BI opval = 0;
   3603      1.1  christos     CPU (h_xbit) = opval;
   3604  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3605      1.1  christos   }
   3606      1.1  christos   {
   3607      1.1  christos     BI opval = 0;
   3608      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3609  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3610      1.1  christos   }
   3611      1.1  christos }
   3612      1.1  christos }
   3613      1.1  christos 
   3614      1.1  christos #undef FLD
   3615      1.1  christos }
   3616      1.1  christos   NEXT (vpc);
   3617      1.1  christos 
   3618      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P3) : /* move ${const32},${Pd} */
   3619      1.1  christos {
   3620      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3621      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3622      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3623      1.1  christos   int UNUSED written = 0;
   3624      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3625      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3626      1.1  christos 
   3627      1.1  christos {
   3628      1.1  christos   {
   3629      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3630      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3631  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3632      1.1  christos   }
   3633      1.1  christos {
   3634      1.1  christos   {
   3635      1.1  christos     BI opval = 0;
   3636      1.1  christos     CPU (h_xbit) = opval;
   3637  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3638      1.1  christos   }
   3639      1.1  christos   {
   3640      1.1  christos     BI opval = 0;
   3641      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3642  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3643      1.1  christos   }
   3644      1.1  christos }
   3645      1.1  christos }
   3646      1.1  christos 
   3647      1.1  christos #undef FLD
   3648      1.1  christos }
   3649      1.1  christos   NEXT (vpc);
   3650      1.1  christos 
   3651      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P5) : /* move ${const32},${Pd} */
   3652      1.1  christos {
   3653      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3654      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3655      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3656      1.1  christos   int UNUSED written = 0;
   3657      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3658      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3659      1.1  christos 
   3660      1.1  christos {
   3661      1.1  christos   {
   3662      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3663      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3664  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3665      1.1  christos   }
   3666      1.1  christos {
   3667      1.1  christos   {
   3668      1.1  christos     BI opval = 0;
   3669      1.1  christos     CPU (h_xbit) = opval;
   3670  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3671      1.1  christos   }
   3672      1.1  christos   {
   3673      1.1  christos     BI opval = 0;
   3674      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3675  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3676      1.1  christos   }
   3677      1.1  christos }
   3678      1.1  christos }
   3679      1.1  christos 
   3680      1.1  christos #undef FLD
   3681      1.1  christos }
   3682      1.1  christos   NEXT (vpc);
   3683      1.1  christos 
   3684      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P6) : /* move ${const32},${Pd} */
   3685      1.1  christos {
   3686      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3687      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3688      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3689      1.1  christos   int UNUSED written = 0;
   3690      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3691      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3692      1.1  christos 
   3693      1.1  christos {
   3694      1.1  christos   {
   3695      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3696      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3697  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3698      1.1  christos   }
   3699      1.1  christos {
   3700      1.1  christos   {
   3701      1.1  christos     BI opval = 0;
   3702      1.1  christos     CPU (h_xbit) = opval;
   3703  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3704      1.1  christos   }
   3705      1.1  christos   {
   3706      1.1  christos     BI opval = 0;
   3707      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3708  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3709      1.1  christos   }
   3710      1.1  christos }
   3711      1.1  christos }
   3712      1.1  christos 
   3713      1.1  christos #undef FLD
   3714      1.1  christos }
   3715      1.1  christos   NEXT (vpc);
   3716      1.1  christos 
   3717      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P7) : /* move ${const32},${Pd} */
   3718      1.1  christos {
   3719      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3720      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3721      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3722      1.1  christos   int UNUSED written = 0;
   3723      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3724      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3725      1.1  christos 
   3726      1.1  christos {
   3727      1.1  christos   {
   3728      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3729      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3730  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3731      1.1  christos   }
   3732      1.1  christos {
   3733      1.1  christos   {
   3734      1.1  christos     BI opval = 0;
   3735      1.1  christos     CPU (h_xbit) = opval;
   3736  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3737      1.1  christos   }
   3738      1.1  christos   {
   3739      1.1  christos     BI opval = 0;
   3740      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3741  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3742      1.1  christos   }
   3743      1.1  christos }
   3744      1.1  christos }
   3745      1.1  christos 
   3746      1.1  christos #undef FLD
   3747      1.1  christos }
   3748      1.1  christos   NEXT (vpc);
   3749      1.1  christos 
   3750      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P9) : /* move ${const32},${Pd} */
   3751      1.1  christos {
   3752      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3753      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3754      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3755      1.1  christos   int UNUSED written = 0;
   3756      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3757      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3758      1.1  christos 
   3759      1.1  christos {
   3760      1.1  christos   {
   3761      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3762      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3763  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3764      1.1  christos   }
   3765      1.1  christos {
   3766      1.1  christos   {
   3767      1.1  christos     BI opval = 0;
   3768      1.1  christos     CPU (h_xbit) = opval;
   3769  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3770      1.1  christos   }
   3771      1.1  christos   {
   3772      1.1  christos     BI opval = 0;
   3773      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3774  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3775      1.1  christos   }
   3776      1.1  christos }
   3777      1.1  christos }
   3778      1.1  christos 
   3779      1.1  christos #undef FLD
   3780      1.1  christos }
   3781      1.1  christos   NEXT (vpc);
   3782      1.1  christos 
   3783      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P10) : /* move ${const32},${Pd} */
   3784      1.1  christos {
   3785      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3786      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3787      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3788      1.1  christos   int UNUSED written = 0;
   3789      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3790      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3791      1.1  christos 
   3792      1.1  christos {
   3793      1.1  christos   {
   3794      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3795      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3796  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3797      1.1  christos   }
   3798      1.1  christos {
   3799      1.1  christos   {
   3800      1.1  christos     BI opval = 0;
   3801      1.1  christos     CPU (h_xbit) = opval;
   3802  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3803      1.1  christos   }
   3804      1.1  christos   {
   3805      1.1  christos     BI opval = 0;
   3806      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3807  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3808      1.1  christos   }
   3809      1.1  christos }
   3810      1.1  christos }
   3811      1.1  christos 
   3812      1.1  christos #undef FLD
   3813      1.1  christos }
   3814      1.1  christos   NEXT (vpc);
   3815      1.1  christos 
   3816      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P11) : /* move ${const32},${Pd} */
   3817      1.1  christos {
   3818      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3819      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3820      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3821      1.1  christos   int UNUSED written = 0;
   3822      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3823      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3824      1.1  christos 
   3825      1.1  christos {
   3826      1.1  christos   {
   3827      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3828      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3829  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3830      1.1  christos   }
   3831      1.1  christos {
   3832      1.1  christos   {
   3833      1.1  christos     BI opval = 0;
   3834      1.1  christos     CPU (h_xbit) = opval;
   3835  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3836      1.1  christos   }
   3837      1.1  christos   {
   3838      1.1  christos     BI opval = 0;
   3839      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3840  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3841      1.1  christos   }
   3842      1.1  christos }
   3843      1.1  christos }
   3844      1.1  christos 
   3845      1.1  christos #undef FLD
   3846      1.1  christos }
   3847      1.1  christos   NEXT (vpc);
   3848      1.1  christos 
   3849      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P12) : /* move ${const32},${Pd} */
   3850      1.1  christos {
   3851      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3852      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3853      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3854      1.1  christos   int UNUSED written = 0;
   3855      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3856      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3857      1.1  christos 
   3858      1.1  christos {
   3859      1.1  christos   {
   3860      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3861      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3862  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3863      1.1  christos   }
   3864      1.1  christos {
   3865      1.1  christos   {
   3866      1.1  christos     BI opval = 0;
   3867      1.1  christos     CPU (h_xbit) = opval;
   3868  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3869      1.1  christos   }
   3870      1.1  christos   {
   3871      1.1  christos     BI opval = 0;
   3872      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3873  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3874      1.1  christos   }
   3875      1.1  christos }
   3876      1.1  christos }
   3877      1.1  christos 
   3878      1.1  christos #undef FLD
   3879      1.1  christos }
   3880      1.1  christos   NEXT (vpc);
   3881      1.1  christos 
   3882      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P13) : /* move ${const32},${Pd} */
   3883      1.1  christos {
   3884      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3885      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3886      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3887      1.1  christos   int UNUSED written = 0;
   3888      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3889      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3890      1.1  christos 
   3891      1.1  christos {
   3892      1.1  christos   {
   3893      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3894      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3895  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3896      1.1  christos   }
   3897      1.1  christos {
   3898      1.1  christos   {
   3899      1.1  christos     BI opval = 0;
   3900      1.1  christos     CPU (h_xbit) = opval;
   3901  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3902      1.1  christos   }
   3903      1.1  christos   {
   3904      1.1  christos     BI opval = 0;
   3905      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3906  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3907      1.1  christos   }
   3908      1.1  christos }
   3909      1.1  christos }
   3910      1.1  christos 
   3911      1.1  christos #undef FLD
   3912      1.1  christos }
   3913      1.1  christos   NEXT (vpc);
   3914      1.1  christos 
   3915      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P14) : /* move ${const32},${Pd} */
   3916      1.1  christos {
   3917      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3918      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3919      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3920      1.1  christos   int UNUSED written = 0;
   3921      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3922      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3923      1.1  christos 
   3924      1.1  christos {
   3925      1.1  christos   {
   3926      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3927      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3928  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3929      1.1  christos   }
   3930      1.1  christos {
   3931      1.1  christos   {
   3932      1.1  christos     BI opval = 0;
   3933      1.1  christos     CPU (h_xbit) = opval;
   3934  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3935      1.1  christos   }
   3936      1.1  christos   {
   3937      1.1  christos     BI opval = 0;
   3938      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3939  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3940      1.1  christos   }
   3941      1.1  christos }
   3942      1.1  christos }
   3943      1.1  christos 
   3944      1.1  christos #undef FLD
   3945      1.1  christos }
   3946      1.1  christos   NEXT (vpc);
   3947      1.1  christos 
   3948      1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P15) : /* move ${const32},${Pd} */
   3949      1.1  christos {
   3950      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3951      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3952      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3953      1.1  christos   int UNUSED written = 0;
   3954      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3955      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3956      1.1  christos 
   3957      1.1  christos {
   3958      1.1  christos   {
   3959      1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3960      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3961  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3962      1.1  christos   }
   3963      1.1  christos {
   3964      1.1  christos   {
   3965      1.1  christos     BI opval = 0;
   3966      1.1  christos     CPU (h_xbit) = opval;
   3967  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3968      1.1  christos   }
   3969      1.1  christos   {
   3970      1.1  christos     BI opval = 0;
   3971      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3972  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3973      1.1  christos   }
   3974      1.1  christos }
   3975      1.1  christos }
   3976      1.1  christos 
   3977      1.1  christos #undef FLD
   3978      1.1  christos }
   3979      1.1  christos   NEXT (vpc);
   3980      1.1  christos 
   3981      1.1  christos   CASE (sem, INSN_MOVE_SPR_MV32) : /* move ${Ps},[${Rd-sfield}${inc}] */
   3982      1.1  christos {
   3983      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3984      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3985      1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   3986      1.1  christos   int UNUSED written = 0;
   3987      1.1  christos   IADDR UNUSED pc = abuf->addr;
   3988      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   3989      1.1  christos 
   3990      1.1  christos {
   3991      1.1  christos   SI tmp_rno;
   3992      1.1  christos   tmp_rno = FLD (f_operand2);
   3993      1.1  christos if (EQSI (tmp_rno, 2)) {
   3994      1.1  christos {
   3995      1.1  christos   SI tmp_addr;
   3996      1.1  christos   BI tmp_postinc;
   3997      1.1  christos   tmp_postinc = FLD (f_memmode);
   3998      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3999      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4000      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4001      1.1  christos {
   4002      1.1  christos   {
   4003      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4004      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4005      1.1  christos     written |= (1 << 13);
   4006  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4007      1.1  christos   }
   4008      1.1  christos   {
   4009      1.1  christos     BI opval = CPU (h_pbit);
   4010      1.1  christos     CPU (h_cbit) = opval;
   4011      1.1  christos     written |= (1 << 10);
   4012  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4013      1.1  christos   }
   4014      1.1  christos }
   4015      1.1  christos } else {
   4016      1.1  christos   {
   4017      1.1  christos     BI opval = 1;
   4018      1.1  christos     CPU (h_cbit) = opval;
   4019      1.1  christos     written |= (1 << 10);
   4020  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4021      1.1  christos   }
   4022      1.1  christos }
   4023      1.1  christos } else {
   4024      1.1  christos   {
   4025      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4026      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4027      1.1  christos     written |= (1 << 13);
   4028  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4029      1.1  christos   }
   4030      1.1  christos }
   4031      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4032      1.1  christos {
   4033      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4034      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4035      1.1  christos }
   4036      1.1  christos   {
   4037      1.1  christos     SI opval = tmp_addr;
   4038      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4039      1.1  christos     written |= (1 << 9);
   4040  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4041      1.1  christos   }
   4042      1.1  christos }
   4043      1.1  christos }
   4044      1.1  christos }
   4045      1.1  christos }
   4046      1.1  christos  else if (EQSI (tmp_rno, 3)) {
   4047      1.1  christos {
   4048      1.1  christos   SI tmp_addr;
   4049      1.1  christos   BI tmp_postinc;
   4050      1.1  christos   tmp_postinc = FLD (f_memmode);
   4051      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4052      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4053      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4054      1.1  christos {
   4055      1.1  christos   {
   4056      1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4057      1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4058      1.1  christos     written |= (1 << 12);
   4059  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4060      1.1  christos   }
   4061      1.1  christos   {
   4062      1.1  christos     BI opval = CPU (h_pbit);
   4063      1.1  christos     CPU (h_cbit) = opval;
   4064      1.1  christos     written |= (1 << 10);
   4065  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4066      1.1  christos   }
   4067      1.1  christos }
   4068      1.1  christos } else {
   4069      1.1  christos   {
   4070      1.1  christos     BI opval = 1;
   4071      1.1  christos     CPU (h_cbit) = opval;
   4072      1.1  christos     written |= (1 << 10);
   4073  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4074      1.1  christos   }
   4075      1.1  christos }
   4076      1.1  christos } else {
   4077      1.1  christos   {
   4078      1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4079      1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4080      1.1  christos     written |= (1 << 12);
   4081  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4082      1.1  christos   }
   4083      1.1  christos }
   4084      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4085      1.1  christos {
   4086      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4087      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   4088      1.1  christos }
   4089      1.1  christos   {
   4090      1.1  christos     SI opval = tmp_addr;
   4091      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4092      1.1  christos     written |= (1 << 9);
   4093  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4094      1.1  christos   }
   4095      1.1  christos }
   4096      1.1  christos }
   4097      1.1  christos }
   4098      1.1  christos }
   4099      1.1  christos  else if (EQSI (tmp_rno, 5)) {
   4100      1.1  christos {
   4101      1.1  christos   SI tmp_addr;
   4102      1.1  christos   BI tmp_postinc;
   4103      1.1  christos   tmp_postinc = FLD (f_memmode);
   4104      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4105      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4106      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4107      1.1  christos {
   4108      1.1  christos   {
   4109      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4110      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4111      1.1  christos     written |= (1 << 13);
   4112  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4113      1.1  christos   }
   4114      1.1  christos   {
   4115      1.1  christos     BI opval = CPU (h_pbit);
   4116      1.1  christos     CPU (h_cbit) = opval;
   4117      1.1  christos     written |= (1 << 10);
   4118  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4119      1.1  christos   }
   4120      1.1  christos }
   4121      1.1  christos } else {
   4122      1.1  christos   {
   4123      1.1  christos     BI opval = 1;
   4124      1.1  christos     CPU (h_cbit) = opval;
   4125      1.1  christos     written |= (1 << 10);
   4126  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4127      1.1  christos   }
   4128      1.1  christos }
   4129      1.1  christos } else {
   4130      1.1  christos   {
   4131      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4132      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4133      1.1  christos     written |= (1 << 13);
   4134  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4135      1.1  christos   }
   4136      1.1  christos }
   4137      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4138      1.1  christos {
   4139      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4140      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4141      1.1  christos }
   4142      1.1  christos   {
   4143      1.1  christos     SI opval = tmp_addr;
   4144      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4145      1.1  christos     written |= (1 << 9);
   4146  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4147      1.1  christos   }
   4148      1.1  christos }
   4149      1.1  christos }
   4150      1.1  christos }
   4151      1.1  christos }
   4152      1.1  christos  else if (EQSI (tmp_rno, 6)) {
   4153      1.1  christos {
   4154      1.1  christos   SI tmp_addr;
   4155      1.1  christos   BI tmp_postinc;
   4156      1.1  christos   tmp_postinc = FLD (f_memmode);
   4157      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4158      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4159      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4160      1.1  christos {
   4161      1.1  christos   {
   4162      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4163      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4164      1.1  christos     written |= (1 << 13);
   4165  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4166      1.1  christos   }
   4167      1.1  christos   {
   4168      1.1  christos     BI opval = CPU (h_pbit);
   4169      1.1  christos     CPU (h_cbit) = opval;
   4170      1.1  christos     written |= (1 << 10);
   4171  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4172      1.1  christos   }
   4173      1.1  christos }
   4174      1.1  christos } else {
   4175      1.1  christos   {
   4176      1.1  christos     BI opval = 1;
   4177      1.1  christos     CPU (h_cbit) = opval;
   4178      1.1  christos     written |= (1 << 10);
   4179  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4180      1.1  christos   }
   4181      1.1  christos }
   4182      1.1  christos } else {
   4183      1.1  christos   {
   4184      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4185      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4186      1.1  christos     written |= (1 << 13);
   4187  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4188      1.1  christos   }
   4189      1.1  christos }
   4190      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4191      1.1  christos {
   4192      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4193      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4194      1.1  christos }
   4195      1.1  christos   {
   4196      1.1  christos     SI opval = tmp_addr;
   4197      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4198      1.1  christos     written |= (1 << 9);
   4199  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4200      1.1  christos   }
   4201      1.1  christos }
   4202      1.1  christos }
   4203      1.1  christos }
   4204      1.1  christos }
   4205      1.1  christos  else if (EQSI (tmp_rno, 7)) {
   4206      1.1  christos {
   4207      1.1  christos   SI tmp_addr;
   4208      1.1  christos   BI tmp_postinc;
   4209      1.1  christos   tmp_postinc = FLD (f_memmode);
   4210      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4211      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4212      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4213      1.1  christos {
   4214      1.1  christos   {
   4215      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4216      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4217      1.1  christos     written |= (1 << 13);
   4218  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4219      1.1  christos   }
   4220      1.1  christos   {
   4221      1.1  christos     BI opval = CPU (h_pbit);
   4222      1.1  christos     CPU (h_cbit) = opval;
   4223      1.1  christos     written |= (1 << 10);
   4224  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4225      1.1  christos   }
   4226      1.1  christos }
   4227      1.1  christos } else {
   4228      1.1  christos   {
   4229      1.1  christos     BI opval = 1;
   4230      1.1  christos     CPU (h_cbit) = opval;
   4231      1.1  christos     written |= (1 << 10);
   4232  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4233      1.1  christos   }
   4234      1.1  christos }
   4235      1.1  christos } else {
   4236      1.1  christos   {
   4237      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4238      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4239      1.1  christos     written |= (1 << 13);
   4240  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4241      1.1  christos   }
   4242      1.1  christos }
   4243      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4244      1.1  christos {
   4245      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4246      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4247      1.1  christos }
   4248      1.1  christos   {
   4249      1.1  christos     SI opval = tmp_addr;
   4250      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4251      1.1  christos     written |= (1 << 9);
   4252  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4253      1.1  christos   }
   4254      1.1  christos }
   4255      1.1  christos }
   4256      1.1  christos }
   4257      1.1  christos }
   4258      1.1  christos  else if (EQSI (tmp_rno, 9)) {
   4259      1.1  christos {
   4260      1.1  christos   SI tmp_addr;
   4261      1.1  christos   BI tmp_postinc;
   4262      1.1  christos   tmp_postinc = FLD (f_memmode);
   4263      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4264      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4265      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4266      1.1  christos {
   4267      1.1  christos   {
   4268      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4269      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4270      1.1  christos     written |= (1 << 13);
   4271  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4272      1.1  christos   }
   4273      1.1  christos   {
   4274      1.1  christos     BI opval = CPU (h_pbit);
   4275      1.1  christos     CPU (h_cbit) = opval;
   4276      1.1  christos     written |= (1 << 10);
   4277  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4278      1.1  christos   }
   4279      1.1  christos }
   4280      1.1  christos } else {
   4281      1.1  christos   {
   4282      1.1  christos     BI opval = 1;
   4283      1.1  christos     CPU (h_cbit) = opval;
   4284      1.1  christos     written |= (1 << 10);
   4285  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4286      1.1  christos   }
   4287      1.1  christos }
   4288      1.1  christos } else {
   4289      1.1  christos   {
   4290      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4291      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4292      1.1  christos     written |= (1 << 13);
   4293  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4294      1.1  christos   }
   4295      1.1  christos }
   4296      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4297      1.1  christos {
   4298      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4299      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4300      1.1  christos }
   4301      1.1  christos   {
   4302      1.1  christos     SI opval = tmp_addr;
   4303      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4304      1.1  christos     written |= (1 << 9);
   4305  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4306      1.1  christos   }
   4307      1.1  christos }
   4308      1.1  christos }
   4309      1.1  christos }
   4310      1.1  christos }
   4311      1.1  christos  else if (EQSI (tmp_rno, 10)) {
   4312      1.1  christos {
   4313      1.1  christos   SI tmp_addr;
   4314      1.1  christos   BI tmp_postinc;
   4315      1.1  christos   tmp_postinc = FLD (f_memmode);
   4316      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4317      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4318      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4319      1.1  christos {
   4320      1.1  christos   {
   4321      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4322      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4323      1.1  christos     written |= (1 << 13);
   4324  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4325      1.1  christos   }
   4326      1.1  christos   {
   4327      1.1  christos     BI opval = CPU (h_pbit);
   4328      1.1  christos     CPU (h_cbit) = opval;
   4329      1.1  christos     written |= (1 << 10);
   4330  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4331      1.1  christos   }
   4332      1.1  christos }
   4333      1.1  christos } else {
   4334      1.1  christos   {
   4335      1.1  christos     BI opval = 1;
   4336      1.1  christos     CPU (h_cbit) = opval;
   4337      1.1  christos     written |= (1 << 10);
   4338  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4339      1.1  christos   }
   4340      1.1  christos }
   4341      1.1  christos } else {
   4342      1.1  christos   {
   4343      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4344      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4345      1.1  christos     written |= (1 << 13);
   4346  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4347      1.1  christos   }
   4348      1.1  christos }
   4349      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4350      1.1  christos {
   4351      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4352      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4353      1.1  christos }
   4354      1.1  christos   {
   4355      1.1  christos     SI opval = tmp_addr;
   4356      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4357      1.1  christos     written |= (1 << 9);
   4358  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4359      1.1  christos   }
   4360      1.1  christos }
   4361      1.1  christos }
   4362      1.1  christos }
   4363      1.1  christos }
   4364      1.1  christos  else if (EQSI (tmp_rno, 11)) {
   4365      1.1  christos {
   4366      1.1  christos   SI tmp_addr;
   4367      1.1  christos   BI tmp_postinc;
   4368      1.1  christos   tmp_postinc = FLD (f_memmode);
   4369      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4370      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4371      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4372      1.1  christos {
   4373      1.1  christos   {
   4374      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4375      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4376      1.1  christos     written |= (1 << 13);
   4377  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4378      1.1  christos   }
   4379      1.1  christos   {
   4380      1.1  christos     BI opval = CPU (h_pbit);
   4381      1.1  christos     CPU (h_cbit) = opval;
   4382      1.1  christos     written |= (1 << 10);
   4383  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4384      1.1  christos   }
   4385      1.1  christos }
   4386      1.1  christos } else {
   4387      1.1  christos   {
   4388      1.1  christos     BI opval = 1;
   4389      1.1  christos     CPU (h_cbit) = opval;
   4390      1.1  christos     written |= (1 << 10);
   4391  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4392      1.1  christos   }
   4393      1.1  christos }
   4394      1.1  christos } else {
   4395      1.1  christos   {
   4396      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4397      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4398      1.1  christos     written |= (1 << 13);
   4399  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4400      1.1  christos   }
   4401      1.1  christos }
   4402      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4403      1.1  christos {
   4404      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4405      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4406      1.1  christos }
   4407      1.1  christos   {
   4408      1.1  christos     SI opval = tmp_addr;
   4409      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4410      1.1  christos     written |= (1 << 9);
   4411  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4412      1.1  christos   }
   4413      1.1  christos }
   4414      1.1  christos }
   4415      1.1  christos }
   4416      1.1  christos }
   4417      1.1  christos  else if (EQSI (tmp_rno, 12)) {
   4418      1.1  christos {
   4419      1.1  christos   SI tmp_addr;
   4420      1.1  christos   BI tmp_postinc;
   4421      1.1  christos   tmp_postinc = FLD (f_memmode);
   4422      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4423      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4424      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4425      1.1  christos {
   4426      1.1  christos   {
   4427      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4428      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4429      1.1  christos     written |= (1 << 13);
   4430  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4431      1.1  christos   }
   4432      1.1  christos   {
   4433      1.1  christos     BI opval = CPU (h_pbit);
   4434      1.1  christos     CPU (h_cbit) = opval;
   4435      1.1  christos     written |= (1 << 10);
   4436  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4437      1.1  christos   }
   4438      1.1  christos }
   4439      1.1  christos } else {
   4440      1.1  christos   {
   4441      1.1  christos     BI opval = 1;
   4442      1.1  christos     CPU (h_cbit) = opval;
   4443      1.1  christos     written |= (1 << 10);
   4444  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4445      1.1  christos   }
   4446      1.1  christos }
   4447      1.1  christos } else {
   4448      1.1  christos   {
   4449      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4450      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4451      1.1  christos     written |= (1 << 13);
   4452  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4453      1.1  christos   }
   4454      1.1  christos }
   4455      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4456      1.1  christos {
   4457      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4458      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4459      1.1  christos }
   4460      1.1  christos   {
   4461      1.1  christos     SI opval = tmp_addr;
   4462      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4463      1.1  christos     written |= (1 << 9);
   4464  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4465      1.1  christos   }
   4466      1.1  christos }
   4467      1.1  christos }
   4468      1.1  christos }
   4469      1.1  christos }
   4470      1.1  christos  else if (EQSI (tmp_rno, 13)) {
   4471      1.1  christos {
   4472      1.1  christos   SI tmp_addr;
   4473      1.1  christos   BI tmp_postinc;
   4474      1.1  christos   tmp_postinc = FLD (f_memmode);
   4475      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4476      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4477      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4478      1.1  christos {
   4479      1.1  christos   {
   4480      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4481      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4482      1.1  christos     written |= (1 << 13);
   4483  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4484      1.1  christos   }
   4485      1.1  christos   {
   4486      1.1  christos     BI opval = CPU (h_pbit);
   4487      1.1  christos     CPU (h_cbit) = opval;
   4488      1.1  christos     written |= (1 << 10);
   4489  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4490      1.1  christos   }
   4491      1.1  christos }
   4492      1.1  christos } else {
   4493      1.1  christos   {
   4494      1.1  christos     BI opval = 1;
   4495      1.1  christos     CPU (h_cbit) = opval;
   4496      1.1  christos     written |= (1 << 10);
   4497  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4498      1.1  christos   }
   4499      1.1  christos }
   4500      1.1  christos } else {
   4501      1.1  christos   {
   4502      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4503      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4504      1.1  christos     written |= (1 << 13);
   4505  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4506      1.1  christos   }
   4507      1.1  christos }
   4508      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4509      1.1  christos {
   4510      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4511      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4512      1.1  christos }
   4513      1.1  christos   {
   4514      1.1  christos     SI opval = tmp_addr;
   4515      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4516      1.1  christos     written |= (1 << 9);
   4517  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4518      1.1  christos   }
   4519      1.1  christos }
   4520      1.1  christos }
   4521      1.1  christos }
   4522      1.1  christos }
   4523      1.1  christos  else if (EQSI (tmp_rno, 14)) {
   4524      1.1  christos {
   4525      1.1  christos   SI tmp_addr;
   4526      1.1  christos   BI tmp_postinc;
   4527      1.1  christos   tmp_postinc = FLD (f_memmode);
   4528      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4529      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4530      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4531      1.1  christos {
   4532      1.1  christos   {
   4533      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4534      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4535      1.1  christos     written |= (1 << 13);
   4536  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4537      1.1  christos   }
   4538      1.1  christos   {
   4539      1.1  christos     BI opval = CPU (h_pbit);
   4540      1.1  christos     CPU (h_cbit) = opval;
   4541      1.1  christos     written |= (1 << 10);
   4542  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4543      1.1  christos   }
   4544      1.1  christos }
   4545      1.1  christos } else {
   4546      1.1  christos   {
   4547      1.1  christos     BI opval = 1;
   4548      1.1  christos     CPU (h_cbit) = opval;
   4549      1.1  christos     written |= (1 << 10);
   4550  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4551      1.1  christos   }
   4552      1.1  christos }
   4553      1.1  christos } else {
   4554      1.1  christos   {
   4555      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4556      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4557      1.1  christos     written |= (1 << 13);
   4558  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4559      1.1  christos   }
   4560      1.1  christos }
   4561      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4562      1.1  christos {
   4563      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4564      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4565      1.1  christos }
   4566      1.1  christos   {
   4567      1.1  christos     SI opval = tmp_addr;
   4568      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4569      1.1  christos     written |= (1 << 9);
   4570  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4571      1.1  christos   }
   4572      1.1  christos }
   4573      1.1  christos }
   4574      1.1  christos }
   4575      1.1  christos }
   4576      1.1  christos  else if (EQSI (tmp_rno, 15)) {
   4577      1.1  christos {
   4578      1.1  christos   SI tmp_addr;
   4579      1.1  christos   BI tmp_postinc;
   4580      1.1  christos   tmp_postinc = FLD (f_memmode);
   4581      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4582      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4583      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4584      1.1  christos {
   4585      1.1  christos   {
   4586      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4587      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4588      1.1  christos     written |= (1 << 13);
   4589  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4590      1.1  christos   }
   4591      1.1  christos   {
   4592      1.1  christos     BI opval = CPU (h_pbit);
   4593      1.1  christos     CPU (h_cbit) = opval;
   4594      1.1  christos     written |= (1 << 10);
   4595  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4596      1.1  christos   }
   4597      1.1  christos }
   4598      1.1  christos } else {
   4599      1.1  christos   {
   4600      1.1  christos     BI opval = 1;
   4601      1.1  christos     CPU (h_cbit) = opval;
   4602      1.1  christos     written |= (1 << 10);
   4603  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4604      1.1  christos   }
   4605      1.1  christos }
   4606      1.1  christos } else {
   4607      1.1  christos   {
   4608      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4609      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4610      1.1  christos     written |= (1 << 13);
   4611  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4612      1.1  christos   }
   4613      1.1  christos }
   4614      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4615      1.1  christos {
   4616      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4617      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4618      1.1  christos }
   4619      1.1  christos   {
   4620      1.1  christos     SI opval = tmp_addr;
   4621      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4622      1.1  christos     written |= (1 << 9);
   4623  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4624      1.1  christos   }
   4625      1.1  christos }
   4626      1.1  christos }
   4627      1.1  christos }
   4628      1.1  christos }
   4629      1.1  christos  else if (EQSI (tmp_rno, 0)) {
   4630      1.1  christos {
   4631      1.1  christos   SI tmp_addr;
   4632      1.1  christos   BI tmp_postinc;
   4633      1.1  christos   tmp_postinc = FLD (f_memmode);
   4634      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4635      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4636      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4637      1.1  christos {
   4638      1.1  christos   {
   4639      1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4640      1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4641      1.1  christos     written |= (1 << 12);
   4642  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4643      1.1  christos   }
   4644      1.1  christos   {
   4645      1.1  christos     BI opval = CPU (h_pbit);
   4646      1.1  christos     CPU (h_cbit) = opval;
   4647      1.1  christos     written |= (1 << 10);
   4648  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4649      1.1  christos   }
   4650      1.1  christos }
   4651      1.1  christos } else {
   4652      1.1  christos   {
   4653      1.1  christos     BI opval = 1;
   4654      1.1  christos     CPU (h_cbit) = opval;
   4655      1.1  christos     written |= (1 << 10);
   4656  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4657      1.1  christos   }
   4658      1.1  christos }
   4659      1.1  christos } else {
   4660      1.1  christos   {
   4661      1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4662      1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4663      1.1  christos     written |= (1 << 12);
   4664  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4665      1.1  christos   }
   4666      1.1  christos }
   4667      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4668      1.1  christos {
   4669      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4670      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   4671      1.1  christos }
   4672      1.1  christos   {
   4673      1.1  christos     SI opval = tmp_addr;
   4674      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4675      1.1  christos     written |= (1 << 9);
   4676  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4677      1.1  christos   }
   4678      1.1  christos }
   4679      1.1  christos }
   4680      1.1  christos }
   4681      1.1  christos }
   4682      1.1  christos  else if (EQSI (tmp_rno, 1)) {
   4683      1.1  christos {
   4684      1.1  christos   SI tmp_addr;
   4685      1.1  christos   BI tmp_postinc;
   4686      1.1  christos   tmp_postinc = FLD (f_memmode);
   4687      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4688      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4689      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4690      1.1  christos {
   4691      1.1  christos   {
   4692      1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4693      1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4694      1.1  christos     written |= (1 << 12);
   4695  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4696      1.1  christos   }
   4697      1.1  christos   {
   4698      1.1  christos     BI opval = CPU (h_pbit);
   4699      1.1  christos     CPU (h_cbit) = opval;
   4700      1.1  christos     written |= (1 << 10);
   4701  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4702      1.1  christos   }
   4703      1.1  christos }
   4704      1.1  christos } else {
   4705      1.1  christos   {
   4706      1.1  christos     BI opval = 1;
   4707      1.1  christos     CPU (h_cbit) = opval;
   4708      1.1  christos     written |= (1 << 10);
   4709  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4710      1.1  christos   }
   4711      1.1  christos }
   4712      1.1  christos } else {
   4713      1.1  christos   {
   4714      1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4715      1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4716      1.1  christos     written |= (1 << 12);
   4717  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4718      1.1  christos   }
   4719      1.1  christos }
   4720      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4721      1.1  christos {
   4722      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4723      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   4724      1.1  christos }
   4725      1.1  christos   {
   4726      1.1  christos     SI opval = tmp_addr;
   4727      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4728      1.1  christos     written |= (1 << 9);
   4729  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4730      1.1  christos   }
   4731      1.1  christos }
   4732      1.1  christos }
   4733      1.1  christos }
   4734      1.1  christos }
   4735      1.1  christos  else if (EQSI (tmp_rno, 4)) {
   4736      1.1  christos {
   4737      1.1  christos   SI tmp_addr;
   4738      1.1  christos   BI tmp_postinc;
   4739      1.1  christos   tmp_postinc = FLD (f_memmode);
   4740      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4741      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4742      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4743      1.1  christos {
   4744      1.1  christos   {
   4745      1.1  christos     HI opval = GET_H_SR (FLD (f_operand2));
   4746      1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   4747      1.1  christos     written |= (1 << 11);
   4748  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4749      1.1  christos   }
   4750      1.1  christos   {
   4751      1.1  christos     BI opval = CPU (h_pbit);
   4752      1.1  christos     CPU (h_cbit) = opval;
   4753      1.1  christos     written |= (1 << 10);
   4754  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4755      1.1  christos   }
   4756      1.1  christos }
   4757      1.1  christos } else {
   4758      1.1  christos   {
   4759      1.1  christos     BI opval = 1;
   4760      1.1  christos     CPU (h_cbit) = opval;
   4761      1.1  christos     written |= (1 << 10);
   4762  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4763      1.1  christos   }
   4764      1.1  christos }
   4765      1.1  christos } else {
   4766      1.1  christos   {
   4767      1.1  christos     HI opval = GET_H_SR (FLD (f_operand2));
   4768      1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   4769      1.1  christos     written |= (1 << 11);
   4770  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4771      1.1  christos   }
   4772      1.1  christos }
   4773      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4774      1.1  christos {
   4775      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4776      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   4777      1.1  christos }
   4778      1.1  christos   {
   4779      1.1  christos     SI opval = tmp_addr;
   4780      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4781      1.1  christos     written |= (1 << 9);
   4782  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4783      1.1  christos   }
   4784      1.1  christos }
   4785      1.1  christos }
   4786      1.1  christos }
   4787      1.1  christos }
   4788      1.1  christos  else if (EQSI (tmp_rno, 8)) {
   4789      1.1  christos {
   4790      1.1  christos   SI tmp_addr;
   4791      1.1  christos   BI tmp_postinc;
   4792      1.1  christos   tmp_postinc = FLD (f_memmode);
   4793      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4794      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4795      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4796      1.1  christos {
   4797      1.1  christos   {
   4798      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4799      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4800      1.1  christos     written |= (1 << 13);
   4801  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4802      1.1  christos   }
   4803      1.1  christos   {
   4804      1.1  christos     BI opval = CPU (h_pbit);
   4805      1.1  christos     CPU (h_cbit) = opval;
   4806      1.1  christos     written |= (1 << 10);
   4807  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4808      1.1  christos   }
   4809      1.1  christos }
   4810      1.1  christos } else {
   4811      1.1  christos   {
   4812      1.1  christos     BI opval = 1;
   4813      1.1  christos     CPU (h_cbit) = opval;
   4814      1.1  christos     written |= (1 << 10);
   4815  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4816      1.1  christos   }
   4817      1.1  christos }
   4818      1.1  christos } else {
   4819      1.1  christos   {
   4820      1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4821      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4822      1.1  christos     written |= (1 << 13);
   4823  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4824      1.1  christos   }
   4825      1.1  christos }
   4826      1.1  christos if (NEBI (tmp_postinc, 0)) {
   4827      1.1  christos {
   4828      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4829      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4830      1.1  christos }
   4831      1.1  christos   {
   4832      1.1  christos     SI opval = tmp_addr;
   4833      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4834      1.1  christos     written |= (1 << 9);
   4835  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4836      1.1  christos   }
   4837      1.1  christos }
   4838      1.1  christos }
   4839      1.1  christos }
   4840      1.1  christos }
   4841      1.1  christos  else {
   4842      1.1  christos cgen_rtx_error (current_cpu, "write from unimplemented special register");
   4843      1.1  christos }
   4844      1.1  christos {
   4845      1.1  christos   {
   4846      1.1  christos     BI opval = 0;
   4847      1.1  christos     CPU (h_xbit) = opval;
   4848  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   4849      1.1  christos   }
   4850      1.1  christos   {
   4851      1.1  christos     BI opval = 0;
   4852      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   4853  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   4854      1.1  christos   }
   4855      1.1  christos }
   4856      1.1  christos }
   4857      1.1  christos 
   4858      1.1  christos   abuf->written = written;
   4859      1.1  christos #undef FLD
   4860      1.1  christos }
   4861      1.1  christos   NEXT (vpc);
   4862      1.1  christos 
   4863      1.1  christos   CASE (sem, INSN_MOVE_SS_R) : /* move ${Ss},${Rd-sfield} */
   4864      1.1  christos {
   4865      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   4866      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   4867      1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   4868      1.1  christos   int UNUSED written = 0;
   4869      1.1  christos   IADDR UNUSED pc = abuf->addr;
   4870      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   4871      1.1  christos 
   4872      1.1  christos {
   4873      1.1  christos   {
   4874      1.1  christos     SI opval = GET_H_SUPR (FLD (f_operand2));
   4875      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4876  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4877      1.1  christos   }
   4878      1.1  christos {
   4879      1.1  christos   {
   4880      1.1  christos     BI opval = 0;
   4881      1.1  christos     CPU (h_xbit) = opval;
   4882  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   4883      1.1  christos   }
   4884      1.1  christos   {
   4885      1.1  christos     BI opval = 0;
   4886      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   4887  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   4888      1.1  christos   }
   4889      1.1  christos }
   4890      1.1  christos }
   4891      1.1  christos 
   4892      1.1  christos #undef FLD
   4893      1.1  christos }
   4894      1.1  christos   NEXT (vpc);
   4895      1.1  christos 
   4896      1.1  christos   CASE (sem, INSN_MOVE_R_SS) : /* move ${Rs},${Sd} */
   4897      1.1  christos {
   4898      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   4899      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   4900      1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   4901      1.1  christos   int UNUSED written = 0;
   4902      1.1  christos   IADDR UNUSED pc = abuf->addr;
   4903      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   4904      1.1  christos 
   4905      1.1  christos {
   4906      1.1  christos   {
   4907      1.1  christos     SI opval = GET_H_GR (FLD (f_operand1));
   4908      1.1  christos     SET_H_SUPR (FLD (f_operand2), opval);
   4909  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "supr", 'x', opval);
   4910      1.1  christos   }
   4911      1.1  christos {
   4912      1.1  christos   {
   4913      1.1  christos     BI opval = 0;
   4914      1.1  christos     CPU (h_xbit) = opval;
   4915  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   4916      1.1  christos   }
   4917      1.1  christos   {
   4918      1.1  christos     BI opval = 0;
   4919      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   4920  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   4921      1.1  christos   }
   4922      1.1  christos }
   4923      1.1  christos }
   4924      1.1  christos 
   4925      1.1  christos #undef FLD
   4926      1.1  christos }
   4927      1.1  christos   NEXT (vpc);
   4928      1.1  christos 
   4929      1.1  christos   CASE (sem, INSN_MOVEM_R_M_V32) : /* movem ${Rs-dfield},[${Rd-sfield}${inc}] */
   4930      1.1  christos {
   4931      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   4932      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   4933      1.1  christos #define FLD(f) abuf->fields.sfmt_movem_r_m_v32.f
   4934      1.1  christos   int UNUSED written = 0;
   4935      1.1  christos   IADDR UNUSED pc = abuf->addr;
   4936      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   4937      1.1  christos 
   4938      1.1  christos {
   4939      1.1  christos   SI tmp_addr;
   4940      1.1  christos   BI tmp_postinc;
   4941      1.1  christos   tmp_postinc = FLD (f_memmode);
   4942      1.1  christos {
   4943      1.1  christos   SI tmp_dummy;
   4944      1.1  christos   tmp_dummy = GET_H_GR (FLD (f_operand2));
   4945      1.1  christos }
   4946      1.1  christos   tmp_addr = GET_H_GR (FLD (f_operand1));
   4947      1.1  christos {
   4948      1.1  christos if (GESI (FLD (f_operand2), 0)) {
   4949      1.1  christos {
   4950      1.1  christos   SI tmp_tmp;
   4951      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 0));
   4952      1.1  christos   {
   4953      1.1  christos     SI opval = tmp_tmp;
   4954      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4955      1.1  christos     written |= (1 << 21);
   4956  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4957      1.1  christos   }
   4958      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4959      1.1  christos }
   4960      1.1  christos }
   4961      1.1  christos if (GESI (FLD (f_operand2), 1)) {
   4962      1.1  christos {
   4963      1.1  christos   SI tmp_tmp;
   4964      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 1));
   4965      1.1  christos   {
   4966      1.1  christos     SI opval = tmp_tmp;
   4967      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4968      1.1  christos     written |= (1 << 21);
   4969  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4970      1.1  christos   }
   4971      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4972      1.1  christos }
   4973      1.1  christos }
   4974      1.1  christos if (GESI (FLD (f_operand2), 2)) {
   4975      1.1  christos {
   4976      1.1  christos   SI tmp_tmp;
   4977      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 2));
   4978      1.1  christos   {
   4979      1.1  christos     SI opval = tmp_tmp;
   4980      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4981      1.1  christos     written |= (1 << 21);
   4982  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4983      1.1  christos   }
   4984      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4985      1.1  christos }
   4986      1.1  christos }
   4987      1.1  christos if (GESI (FLD (f_operand2), 3)) {
   4988      1.1  christos {
   4989      1.1  christos   SI tmp_tmp;
   4990      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 3));
   4991      1.1  christos   {
   4992      1.1  christos     SI opval = tmp_tmp;
   4993      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4994      1.1  christos     written |= (1 << 21);
   4995  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4996      1.1  christos   }
   4997      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4998      1.1  christos }
   4999      1.1  christos }
   5000      1.1  christos if (GESI (FLD (f_operand2), 4)) {
   5001      1.1  christos {
   5002      1.1  christos   SI tmp_tmp;
   5003      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 4));
   5004      1.1  christos   {
   5005      1.1  christos     SI opval = tmp_tmp;
   5006      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5007      1.1  christos     written |= (1 << 21);
   5008  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5009      1.1  christos   }
   5010      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5011      1.1  christos }
   5012      1.1  christos }
   5013      1.1  christos if (GESI (FLD (f_operand2), 5)) {
   5014      1.1  christos {
   5015      1.1  christos   SI tmp_tmp;
   5016      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 5));
   5017      1.1  christos   {
   5018      1.1  christos     SI opval = tmp_tmp;
   5019      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5020      1.1  christos     written |= (1 << 21);
   5021  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5022      1.1  christos   }
   5023      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5024      1.1  christos }
   5025      1.1  christos }
   5026      1.1  christos if (GESI (FLD (f_operand2), 6)) {
   5027      1.1  christos {
   5028      1.1  christos   SI tmp_tmp;
   5029      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 6));
   5030      1.1  christos   {
   5031      1.1  christos     SI opval = tmp_tmp;
   5032      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5033      1.1  christos     written |= (1 << 21);
   5034  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5035      1.1  christos   }
   5036      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5037      1.1  christos }
   5038      1.1  christos }
   5039      1.1  christos if (GESI (FLD (f_operand2), 7)) {
   5040      1.1  christos {
   5041      1.1  christos   SI tmp_tmp;
   5042      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 7));
   5043      1.1  christos   {
   5044      1.1  christos     SI opval = tmp_tmp;
   5045      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5046      1.1  christos     written |= (1 << 21);
   5047  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5048      1.1  christos   }
   5049      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5050      1.1  christos }
   5051      1.1  christos }
   5052      1.1  christos if (GESI (FLD (f_operand2), 8)) {
   5053      1.1  christos {
   5054      1.1  christos   SI tmp_tmp;
   5055      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 8));
   5056      1.1  christos   {
   5057      1.1  christos     SI opval = tmp_tmp;
   5058      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5059      1.1  christos     written |= (1 << 21);
   5060  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5061      1.1  christos   }
   5062      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5063      1.1  christos }
   5064      1.1  christos }
   5065      1.1  christos if (GESI (FLD (f_operand2), 9)) {
   5066      1.1  christos {
   5067      1.1  christos   SI tmp_tmp;
   5068      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 9));
   5069      1.1  christos   {
   5070      1.1  christos     SI opval = tmp_tmp;
   5071      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5072      1.1  christos     written |= (1 << 21);
   5073  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5074      1.1  christos   }
   5075      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5076      1.1  christos }
   5077      1.1  christos }
   5078      1.1  christos if (GESI (FLD (f_operand2), 10)) {
   5079      1.1  christos {
   5080      1.1  christos   SI tmp_tmp;
   5081      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 10));
   5082      1.1  christos   {
   5083      1.1  christos     SI opval = tmp_tmp;
   5084      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5085      1.1  christos     written |= (1 << 21);
   5086  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5087      1.1  christos   }
   5088      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5089      1.1  christos }
   5090      1.1  christos }
   5091      1.1  christos if (GESI (FLD (f_operand2), 11)) {
   5092      1.1  christos {
   5093      1.1  christos   SI tmp_tmp;
   5094      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 11));
   5095      1.1  christos   {
   5096      1.1  christos     SI opval = tmp_tmp;
   5097      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5098      1.1  christos     written |= (1 << 21);
   5099  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5100      1.1  christos   }
   5101      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5102      1.1  christos }
   5103      1.1  christos }
   5104      1.1  christos if (GESI (FLD (f_operand2), 12)) {
   5105      1.1  christos {
   5106      1.1  christos   SI tmp_tmp;
   5107      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 12));
   5108      1.1  christos   {
   5109      1.1  christos     SI opval = tmp_tmp;
   5110      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5111      1.1  christos     written |= (1 << 21);
   5112  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5113      1.1  christos   }
   5114      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5115      1.1  christos }
   5116      1.1  christos }
   5117      1.1  christos if (GESI (FLD (f_operand2), 13)) {
   5118      1.1  christos {
   5119      1.1  christos   SI tmp_tmp;
   5120      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 13));
   5121      1.1  christos   {
   5122      1.1  christos     SI opval = tmp_tmp;
   5123      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5124      1.1  christos     written |= (1 << 21);
   5125  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5126      1.1  christos   }
   5127      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5128      1.1  christos }
   5129      1.1  christos }
   5130      1.1  christos if (GESI (FLD (f_operand2), 14)) {
   5131      1.1  christos {
   5132      1.1  christos   SI tmp_tmp;
   5133      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 14));
   5134      1.1  christos   {
   5135      1.1  christos     SI opval = tmp_tmp;
   5136      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5137      1.1  christos     written |= (1 << 21);
   5138  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5139      1.1  christos   }
   5140      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5141      1.1  christos }
   5142      1.1  christos }
   5143      1.1  christos if (GESI (FLD (f_operand2), 15)) {
   5144      1.1  christos {
   5145      1.1  christos   SI tmp_tmp;
   5146      1.1  christos   tmp_tmp = GET_H_GR (((UINT) 15));
   5147      1.1  christos   {
   5148      1.1  christos     SI opval = tmp_tmp;
   5149      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5150      1.1  christos     written |= (1 << 21);
   5151  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5152      1.1  christos   }
   5153      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5154      1.1  christos }
   5155      1.1  christos }
   5156      1.1  christos }
   5157      1.1  christos if (NEBI (tmp_postinc, 0)) {
   5158      1.1  christos   {
   5159      1.1  christos     SI opval = tmp_addr;
   5160      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5161      1.1  christos     written |= (1 << 20);
   5162  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5163      1.1  christos   }
   5164      1.1  christos }
   5165      1.1  christos {
   5166      1.1  christos   {
   5167      1.1  christos     BI opval = 0;
   5168      1.1  christos     CPU (h_xbit) = opval;
   5169  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5170      1.1  christos   }
   5171      1.1  christos   {
   5172      1.1  christos     BI opval = 0;
   5173      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5174  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5175      1.1  christos   }
   5176      1.1  christos }
   5177      1.1  christos }
   5178      1.1  christos 
   5179      1.1  christos   abuf->written = written;
   5180      1.1  christos #undef FLD
   5181      1.1  christos }
   5182      1.1  christos   NEXT (vpc);
   5183      1.1  christos 
   5184      1.1  christos   CASE (sem, INSN_MOVEM_M_R_V32) : /* movem [${Rs}${inc}],${Rd} */
   5185      1.1  christos {
   5186      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5187      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5188      1.1  christos #define FLD(f) abuf->fields.sfmt_movem_m_r_v32.f
   5189      1.1  christos   int UNUSED written = 0;
   5190      1.1  christos   IADDR UNUSED pc = abuf->addr;
   5191      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5192      1.1  christos 
   5193      1.1  christos {
   5194      1.1  christos   SI tmp_addr;
   5195      1.1  christos   BI tmp_postinc;
   5196      1.1  christos   tmp_postinc = FLD (f_memmode);
   5197      1.1  christos   tmp_addr = GET_H_GR (FLD (f_operand1));
   5198      1.1  christos {
   5199      1.1  christos   SI tmp_dummy;
   5200      1.1  christos   tmp_dummy = GET_H_GR (FLD (f_operand2));
   5201      1.1  christos }
   5202      1.1  christos {
   5203      1.1  christos if (GESI (FLD (f_operand2), 0)) {
   5204      1.1  christos {
   5205      1.1  christos   SI tmp_tmp;
   5206      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5207      1.1  christos   {
   5208      1.1  christos     SI opval = tmp_tmp;
   5209      1.1  christos     SET_H_GR (((UINT) 0), opval);
   5210      1.1  christos     written |= (1 << 6);
   5211  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5212      1.1  christos   }
   5213      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5214      1.1  christos }
   5215      1.1  christos }
   5216      1.1  christos if (GESI (FLD (f_operand2), 1)) {
   5217      1.1  christos {
   5218      1.1  christos   SI tmp_tmp;
   5219      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5220      1.1  christos   {
   5221      1.1  christos     SI opval = tmp_tmp;
   5222      1.1  christos     SET_H_GR (((UINT) 1), opval);
   5223      1.1  christos     written |= (1 << 7);
   5224  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5225      1.1  christos   }
   5226      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5227      1.1  christos }
   5228      1.1  christos }
   5229      1.1  christos if (GESI (FLD (f_operand2), 2)) {
   5230      1.1  christos {
   5231      1.1  christos   SI tmp_tmp;
   5232      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5233      1.1  christos   {
   5234      1.1  christos     SI opval = tmp_tmp;
   5235      1.1  christos     SET_H_GR (((UINT) 2), opval);
   5236      1.1  christos     written |= (1 << 14);
   5237  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5238      1.1  christos   }
   5239      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5240      1.1  christos }
   5241      1.1  christos }
   5242      1.1  christos if (GESI (FLD (f_operand2), 3)) {
   5243      1.1  christos {
   5244      1.1  christos   SI tmp_tmp;
   5245      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5246      1.1  christos   {
   5247      1.1  christos     SI opval = tmp_tmp;
   5248      1.1  christos     SET_H_GR (((UINT) 3), opval);
   5249      1.1  christos     written |= (1 << 15);
   5250  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5251      1.1  christos   }
   5252      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5253      1.1  christos }
   5254      1.1  christos }
   5255      1.1  christos if (GESI (FLD (f_operand2), 4)) {
   5256      1.1  christos {
   5257      1.1  christos   SI tmp_tmp;
   5258      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5259      1.1  christos   {
   5260      1.1  christos     SI opval = tmp_tmp;
   5261      1.1  christos     SET_H_GR (((UINT) 4), opval);
   5262      1.1  christos     written |= (1 << 16);
   5263  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5264      1.1  christos   }
   5265      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5266      1.1  christos }
   5267      1.1  christos }
   5268      1.1  christos if (GESI (FLD (f_operand2), 5)) {
   5269      1.1  christos {
   5270      1.1  christos   SI tmp_tmp;
   5271      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5272      1.1  christos   {
   5273      1.1  christos     SI opval = tmp_tmp;
   5274      1.1  christos     SET_H_GR (((UINT) 5), opval);
   5275      1.1  christos     written |= (1 << 17);
   5276  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5277      1.1  christos   }
   5278      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5279      1.1  christos }
   5280      1.1  christos }
   5281      1.1  christos if (GESI (FLD (f_operand2), 6)) {
   5282      1.1  christos {
   5283      1.1  christos   SI tmp_tmp;
   5284      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5285      1.1  christos   {
   5286      1.1  christos     SI opval = tmp_tmp;
   5287      1.1  christos     SET_H_GR (((UINT) 6), opval);
   5288      1.1  christos     written |= (1 << 18);
   5289  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5290      1.1  christos   }
   5291      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5292      1.1  christos }
   5293      1.1  christos }
   5294      1.1  christos if (GESI (FLD (f_operand2), 7)) {
   5295      1.1  christos {
   5296      1.1  christos   SI tmp_tmp;
   5297      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5298      1.1  christos   {
   5299      1.1  christos     SI opval = tmp_tmp;
   5300      1.1  christos     SET_H_GR (((UINT) 7), opval);
   5301      1.1  christos     written |= (1 << 19);
   5302  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5303      1.1  christos   }
   5304      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5305      1.1  christos }
   5306      1.1  christos }
   5307      1.1  christos if (GESI (FLD (f_operand2), 8)) {
   5308      1.1  christos {
   5309      1.1  christos   SI tmp_tmp;
   5310      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5311      1.1  christos   {
   5312      1.1  christos     SI opval = tmp_tmp;
   5313      1.1  christos     SET_H_GR (((UINT) 8), opval);
   5314      1.1  christos     written |= (1 << 20);
   5315  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5316      1.1  christos   }
   5317      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5318      1.1  christos }
   5319      1.1  christos }
   5320      1.1  christos if (GESI (FLD (f_operand2), 9)) {
   5321      1.1  christos {
   5322      1.1  christos   SI tmp_tmp;
   5323      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5324      1.1  christos   {
   5325      1.1  christos     SI opval = tmp_tmp;
   5326      1.1  christos     SET_H_GR (((UINT) 9), opval);
   5327      1.1  christos     written |= (1 << 21);
   5328  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5329      1.1  christos   }
   5330      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5331      1.1  christos }
   5332      1.1  christos }
   5333      1.1  christos if (GESI (FLD (f_operand2), 10)) {
   5334      1.1  christos {
   5335      1.1  christos   SI tmp_tmp;
   5336      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5337      1.1  christos   {
   5338      1.1  christos     SI opval = tmp_tmp;
   5339      1.1  christos     SET_H_GR (((UINT) 10), opval);
   5340      1.1  christos     written |= (1 << 8);
   5341  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5342      1.1  christos   }
   5343      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5344      1.1  christos }
   5345      1.1  christos }
   5346      1.1  christos if (GESI (FLD (f_operand2), 11)) {
   5347      1.1  christos {
   5348      1.1  christos   SI tmp_tmp;
   5349      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5350      1.1  christos   {
   5351      1.1  christos     SI opval = tmp_tmp;
   5352      1.1  christos     SET_H_GR (((UINT) 11), opval);
   5353      1.1  christos     written |= (1 << 9);
   5354  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5355      1.1  christos   }
   5356      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5357      1.1  christos }
   5358      1.1  christos }
   5359      1.1  christos if (GESI (FLD (f_operand2), 12)) {
   5360      1.1  christos {
   5361      1.1  christos   SI tmp_tmp;
   5362      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5363      1.1  christos   {
   5364      1.1  christos     SI opval = tmp_tmp;
   5365      1.1  christos     SET_H_GR (((UINT) 12), opval);
   5366      1.1  christos     written |= (1 << 10);
   5367  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5368      1.1  christos   }
   5369      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5370      1.1  christos }
   5371      1.1  christos }
   5372      1.1  christos if (GESI (FLD (f_operand2), 13)) {
   5373      1.1  christos {
   5374      1.1  christos   SI tmp_tmp;
   5375      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5376      1.1  christos   {
   5377      1.1  christos     SI opval = tmp_tmp;
   5378      1.1  christos     SET_H_GR (((UINT) 13), opval);
   5379      1.1  christos     written |= (1 << 11);
   5380  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5381      1.1  christos   }
   5382      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5383      1.1  christos }
   5384      1.1  christos }
   5385      1.1  christos if (GESI (FLD (f_operand2), 14)) {
   5386      1.1  christos {
   5387      1.1  christos   SI tmp_tmp;
   5388      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5389      1.1  christos   {
   5390      1.1  christos     SI opval = tmp_tmp;
   5391      1.1  christos     SET_H_GR (((UINT) 14), opval);
   5392      1.1  christos     written |= (1 << 12);
   5393  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5394      1.1  christos   }
   5395      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5396      1.1  christos }
   5397      1.1  christos }
   5398      1.1  christos if (GESI (FLD (f_operand2), 15)) {
   5399      1.1  christos {
   5400      1.1  christos   SI tmp_tmp;
   5401      1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5402      1.1  christos   {
   5403      1.1  christos     SI opval = tmp_tmp;
   5404      1.1  christos     SET_H_GR (((UINT) 15), opval);
   5405      1.1  christos     written |= (1 << 13);
   5406  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5407      1.1  christos   }
   5408      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5409      1.1  christos }
   5410      1.1  christos }
   5411      1.1  christos }
   5412      1.1  christos if (NEBI (tmp_postinc, 0)) {
   5413      1.1  christos   {
   5414      1.1  christos     SI opval = tmp_addr;
   5415      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5416      1.1  christos     written |= (1 << 5);
   5417  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5418      1.1  christos   }
   5419      1.1  christos }
   5420      1.1  christos {
   5421      1.1  christos   {
   5422      1.1  christos     BI opval = 0;
   5423      1.1  christos     CPU (h_xbit) = opval;
   5424  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5425      1.1  christos   }
   5426      1.1  christos   {
   5427      1.1  christos     BI opval = 0;
   5428      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5429  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5430      1.1  christos   }
   5431      1.1  christos }
   5432      1.1  christos }
   5433      1.1  christos 
   5434      1.1  christos   abuf->written = written;
   5435      1.1  christos #undef FLD
   5436      1.1  christos }
   5437      1.1  christos   NEXT (vpc);
   5438      1.1  christos 
   5439      1.1  christos   CASE (sem, INSN_ADD_B_R) : /* add.b $Rs,$Rd */
   5440      1.1  christos {
   5441      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5442      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5443      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   5444      1.1  christos   int UNUSED written = 0;
   5445      1.1  christos   IADDR UNUSED pc = abuf->addr;
   5446      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5447      1.1  christos 
   5448      1.1  christos {
   5449      1.1  christos   QI tmp_tmpopd;
   5450      1.1  christos   QI tmp_tmpops;
   5451      1.1  christos   BI tmp_carry;
   5452      1.1  christos   QI tmp_newval;
   5453      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   5454      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5455      1.1  christos   tmp_carry = CPU (h_cbit);
   5456      1.1  christos   tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5457      1.1  christos {
   5458      1.1  christos   SI tmp_oldregval;
   5459      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5460      1.1  christos   {
   5461      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   5462      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5463  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5464      1.1  christos   }
   5465      1.1  christos }
   5466      1.1  christos {
   5467      1.1  christos   {
   5468      1.1  christos     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))));
   5469      1.1  christos     CPU (h_cbit) = opval;
   5470  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5471      1.1  christos   }
   5472      1.1  christos   {
   5473      1.1  christos     BI opval = LTQI (tmp_newval, 0);
   5474      1.1  christos     CPU (h_nbit) = opval;
   5475  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5476      1.1  christos   }
   5477      1.1  christos   {
   5478      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5479      1.1  christos     CPU (h_zbit) = opval;
   5480  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5481      1.1  christos   }
   5482      1.1  christos   {
   5483      1.1  christos     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)));
   5484      1.1  christos     CPU (h_vbit) = opval;
   5485  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5486      1.1  christos   }
   5487      1.1  christos {
   5488      1.1  christos   {
   5489      1.1  christos     BI opval = 0;
   5490      1.1  christos     CPU (h_xbit) = opval;
   5491  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5492      1.1  christos   }
   5493      1.1  christos   {
   5494      1.1  christos     BI opval = 0;
   5495      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5496  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5497      1.1  christos   }
   5498      1.1  christos }
   5499      1.1  christos }
   5500      1.1  christos }
   5501      1.1  christos 
   5502      1.1  christos #undef FLD
   5503      1.1  christos }
   5504      1.1  christos   NEXT (vpc);
   5505      1.1  christos 
   5506      1.1  christos   CASE (sem, INSN_ADD_W_R) : /* add.w $Rs,$Rd */
   5507      1.1  christos {
   5508      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5509      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5510      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   5511      1.1  christos   int UNUSED written = 0;
   5512      1.1  christos   IADDR UNUSED pc = abuf->addr;
   5513      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5514      1.1  christos 
   5515      1.1  christos {
   5516      1.1  christos   HI tmp_tmpopd;
   5517      1.1  christos   HI tmp_tmpops;
   5518      1.1  christos   BI tmp_carry;
   5519      1.1  christos   HI tmp_newval;
   5520      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   5521      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5522      1.1  christos   tmp_carry = CPU (h_cbit);
   5523      1.1  christos   tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5524      1.1  christos {
   5525      1.1  christos   SI tmp_oldregval;
   5526      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5527      1.1  christos   {
   5528      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   5529      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5530  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5531      1.1  christos   }
   5532      1.1  christos }
   5533      1.1  christos {
   5534      1.1  christos   {
   5535      1.1  christos     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))));
   5536      1.1  christos     CPU (h_cbit) = opval;
   5537  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5538      1.1  christos   }
   5539      1.1  christos   {
   5540      1.1  christos     BI opval = LTHI (tmp_newval, 0);
   5541      1.1  christos     CPU (h_nbit) = opval;
   5542  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5543      1.1  christos   }
   5544      1.1  christos   {
   5545      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5546      1.1  christos     CPU (h_zbit) = opval;
   5547  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5548      1.1  christos   }
   5549      1.1  christos   {
   5550      1.1  christos     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)));
   5551      1.1  christos     CPU (h_vbit) = opval;
   5552  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5553      1.1  christos   }
   5554      1.1  christos {
   5555      1.1  christos   {
   5556      1.1  christos     BI opval = 0;
   5557      1.1  christos     CPU (h_xbit) = opval;
   5558  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5559      1.1  christos   }
   5560      1.1  christos   {
   5561      1.1  christos     BI opval = 0;
   5562      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5563  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5564      1.1  christos   }
   5565      1.1  christos }
   5566      1.1  christos }
   5567      1.1  christos }
   5568      1.1  christos 
   5569      1.1  christos #undef FLD
   5570      1.1  christos }
   5571      1.1  christos   NEXT (vpc);
   5572      1.1  christos 
   5573      1.1  christos   CASE (sem, INSN_ADD_D_R) : /* add.d $Rs,$Rd */
   5574      1.1  christos {
   5575      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5576      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5577      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   5578      1.1  christos   int UNUSED written = 0;
   5579      1.1  christos   IADDR UNUSED pc = abuf->addr;
   5580      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5581      1.1  christos 
   5582      1.1  christos {
   5583      1.1  christos   SI tmp_tmpopd;
   5584      1.1  christos   SI tmp_tmpops;
   5585      1.1  christos   BI tmp_carry;
   5586      1.1  christos   SI tmp_newval;
   5587      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   5588      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5589      1.1  christos   tmp_carry = CPU (h_cbit);
   5590      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5591      1.1  christos   {
   5592      1.1  christos     SI opval = tmp_newval;
   5593      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5594  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5595      1.1  christos   }
   5596      1.1  christos {
   5597      1.1  christos   {
   5598      1.1  christos     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))));
   5599      1.1  christos     CPU (h_cbit) = opval;
   5600  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5601      1.1  christos   }
   5602      1.1  christos   {
   5603      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   5604      1.1  christos     CPU (h_nbit) = opval;
   5605  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5606      1.1  christos   }
   5607      1.1  christos   {
   5608      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5609      1.1  christos     CPU (h_zbit) = opval;
   5610  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5611      1.1  christos   }
   5612      1.1  christos   {
   5613      1.1  christos     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)));
   5614      1.1  christos     CPU (h_vbit) = opval;
   5615  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5616      1.1  christos   }
   5617      1.1  christos {
   5618      1.1  christos   {
   5619      1.1  christos     BI opval = 0;
   5620      1.1  christos     CPU (h_xbit) = opval;
   5621  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5622      1.1  christos   }
   5623      1.1  christos   {
   5624      1.1  christos     BI opval = 0;
   5625      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5626  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5627      1.1  christos   }
   5628      1.1  christos }
   5629      1.1  christos }
   5630      1.1  christos }
   5631      1.1  christos 
   5632      1.1  christos #undef FLD
   5633      1.1  christos }
   5634      1.1  christos   NEXT (vpc);
   5635      1.1  christos 
   5636      1.1  christos   CASE (sem, INSN_ADD_M_B_M) : /* add-m.b [${Rs}${inc}],${Rd} */
   5637      1.1  christos {
   5638      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5639      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5640      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   5641      1.1  christos   int UNUSED written = 0;
   5642      1.1  christos   IADDR UNUSED pc = abuf->addr;
   5643      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5644      1.1  christos 
   5645      1.1  christos {
   5646      1.1  christos   QI tmp_tmpopd;
   5647      1.1  christos   QI tmp_tmpops;
   5648      1.1  christos   BI tmp_carry;
   5649      1.1  christos   QI tmp_newval;
   5650      1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   5651      1.1  christos   QI tmp_tmp_mem;
   5652      1.1  christos   BI tmp_postinc;
   5653      1.1  christos   tmp_postinc = FLD (f_memmode);
   5654      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   5655      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   5656      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   5657      1.1  christos {
   5658      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   5659      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   5660      1.1  christos }
   5661      1.1  christos   {
   5662      1.1  christos     SI opval = tmp_addr;
   5663      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5664      1.1  christos     written |= (1 << 12);
   5665  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5666      1.1  christos   }
   5667      1.1  christos }
   5668      1.1  christos }
   5669      1.1  christos ; tmp_tmp_mem; });
   5670      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5671      1.1  christos   tmp_carry = CPU (h_cbit);
   5672      1.1  christos   tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5673      1.1  christos {
   5674      1.1  christos   SI tmp_oldregval;
   5675      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   5676      1.1  christos   {
   5677      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   5678      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   5679  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5680      1.1  christos   }
   5681      1.1  christos }
   5682      1.1  christos {
   5683      1.1  christos   {
   5684      1.1  christos     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))));
   5685      1.1  christos     CPU (h_cbit) = opval;
   5686  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5687      1.1  christos   }
   5688      1.1  christos   {
   5689      1.1  christos     BI opval = LTQI (tmp_newval, 0);
   5690      1.1  christos     CPU (h_nbit) = opval;
   5691  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5692      1.1  christos   }
   5693      1.1  christos   {
   5694      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5695      1.1  christos     CPU (h_zbit) = opval;
   5696  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5697      1.1  christos   }
   5698      1.1  christos   {
   5699      1.1  christos     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)));
   5700      1.1  christos     CPU (h_vbit) = opval;
   5701  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5702      1.1  christos   }
   5703      1.1  christos {
   5704      1.1  christos   {
   5705      1.1  christos     BI opval = 0;
   5706      1.1  christos     CPU (h_xbit) = opval;
   5707  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5708      1.1  christos   }
   5709      1.1  christos   {
   5710      1.1  christos     BI opval = 0;
   5711      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5712  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5713      1.1  christos   }
   5714      1.1  christos }
   5715      1.1  christos }
   5716      1.1  christos }
   5717      1.1  christos 
   5718      1.1  christos   abuf->written = written;
   5719      1.1  christos #undef FLD
   5720      1.1  christos }
   5721      1.1  christos   NEXT (vpc);
   5722      1.1  christos 
   5723      1.1  christos   CASE (sem, INSN_ADD_M_W_M) : /* add-m.w [${Rs}${inc}],${Rd} */
   5724      1.1  christos {
   5725      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5726      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5727      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   5728      1.1  christos   int UNUSED written = 0;
   5729      1.1  christos   IADDR UNUSED pc = abuf->addr;
   5730      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5731      1.1  christos 
   5732      1.1  christos {
   5733      1.1  christos   HI tmp_tmpopd;
   5734      1.1  christos   HI tmp_tmpops;
   5735      1.1  christos   BI tmp_carry;
   5736      1.1  christos   HI tmp_newval;
   5737      1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   5738      1.1  christos   HI tmp_tmp_mem;
   5739      1.1  christos   BI tmp_postinc;
   5740      1.1  christos   tmp_postinc = FLD (f_memmode);
   5741      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   5742      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   5743      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   5744      1.1  christos {
   5745      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   5746      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   5747      1.1  christos }
   5748      1.1  christos   {
   5749      1.1  christos     SI opval = tmp_addr;
   5750      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5751      1.1  christos     written |= (1 << 12);
   5752  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5753      1.1  christos   }
   5754      1.1  christos }
   5755      1.1  christos }
   5756      1.1  christos ; tmp_tmp_mem; });
   5757      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5758      1.1  christos   tmp_carry = CPU (h_cbit);
   5759      1.1  christos   tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5760      1.1  christos {
   5761      1.1  christos   SI tmp_oldregval;
   5762      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   5763      1.1  christos   {
   5764      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   5765      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   5766  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5767      1.1  christos   }
   5768      1.1  christos }
   5769      1.1  christos {
   5770      1.1  christos   {
   5771      1.1  christos     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))));
   5772      1.1  christos     CPU (h_cbit) = opval;
   5773  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5774      1.1  christos   }
   5775      1.1  christos   {
   5776      1.1  christos     BI opval = LTHI (tmp_newval, 0);
   5777      1.1  christos     CPU (h_nbit) = opval;
   5778  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5779      1.1  christos   }
   5780      1.1  christos   {
   5781      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5782      1.1  christos     CPU (h_zbit) = opval;
   5783  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5784      1.1  christos   }
   5785      1.1  christos   {
   5786      1.1  christos     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)));
   5787      1.1  christos     CPU (h_vbit) = opval;
   5788  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5789      1.1  christos   }
   5790      1.1  christos {
   5791      1.1  christos   {
   5792      1.1  christos     BI opval = 0;
   5793      1.1  christos     CPU (h_xbit) = opval;
   5794  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5795      1.1  christos   }
   5796      1.1  christos   {
   5797      1.1  christos     BI opval = 0;
   5798      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5799  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5800      1.1  christos   }
   5801      1.1  christos }
   5802      1.1  christos }
   5803      1.1  christos }
   5804      1.1  christos 
   5805      1.1  christos   abuf->written = written;
   5806      1.1  christos #undef FLD
   5807      1.1  christos }
   5808      1.1  christos   NEXT (vpc);
   5809      1.1  christos 
   5810      1.1  christos   CASE (sem, INSN_ADD_M_D_M) : /* add-m.d [${Rs}${inc}],${Rd} */
   5811      1.1  christos {
   5812      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5813      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5814      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   5815      1.1  christos   int UNUSED written = 0;
   5816      1.1  christos   IADDR UNUSED pc = abuf->addr;
   5817      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5818      1.1  christos 
   5819      1.1  christos {
   5820      1.1  christos   SI tmp_tmpopd;
   5821      1.1  christos   SI tmp_tmpops;
   5822      1.1  christos   BI tmp_carry;
   5823      1.1  christos   SI tmp_newval;
   5824      1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   5825      1.1  christos   SI tmp_tmp_mem;
   5826      1.1  christos   BI tmp_postinc;
   5827      1.1  christos   tmp_postinc = FLD (f_memmode);
   5828      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   5829      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   5830      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   5831      1.1  christos {
   5832      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   5833      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5834      1.1  christos }
   5835      1.1  christos   {
   5836      1.1  christos     SI opval = tmp_addr;
   5837      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5838      1.1  christos     written |= (1 << 11);
   5839  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5840      1.1  christos   }
   5841      1.1  christos }
   5842      1.1  christos }
   5843      1.1  christos ; tmp_tmp_mem; });
   5844      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5845      1.1  christos   tmp_carry = CPU (h_cbit);
   5846      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5847      1.1  christos   {
   5848      1.1  christos     SI opval = tmp_newval;
   5849      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   5850  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5851      1.1  christos   }
   5852      1.1  christos {
   5853      1.1  christos   {
   5854      1.1  christos     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))));
   5855      1.1  christos     CPU (h_cbit) = opval;
   5856  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5857      1.1  christos   }
   5858      1.1  christos   {
   5859      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   5860      1.1  christos     CPU (h_nbit) = opval;
   5861  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5862      1.1  christos   }
   5863      1.1  christos   {
   5864      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5865      1.1  christos     CPU (h_zbit) = opval;
   5866  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5867      1.1  christos   }
   5868      1.1  christos   {
   5869      1.1  christos     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)));
   5870      1.1  christos     CPU (h_vbit) = opval;
   5871  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5872      1.1  christos   }
   5873      1.1  christos {
   5874      1.1  christos   {
   5875      1.1  christos     BI opval = 0;
   5876      1.1  christos     CPU (h_xbit) = opval;
   5877  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5878      1.1  christos   }
   5879      1.1  christos   {
   5880      1.1  christos     BI opval = 0;
   5881      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5882  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5883      1.1  christos   }
   5884      1.1  christos }
   5885      1.1  christos }
   5886      1.1  christos }
   5887      1.1  christos 
   5888      1.1  christos   abuf->written = written;
   5889      1.1  christos #undef FLD
   5890      1.1  christos }
   5891      1.1  christos   NEXT (vpc);
   5892      1.1  christos 
   5893      1.1  christos   CASE (sem, INSN_ADDCBR) : /* add.b ${sconst8}],${Rd} */
   5894      1.1  christos {
   5895      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5896      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5897      1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   5898      1.1  christos   int UNUSED written = 0;
   5899      1.1  christos   IADDR UNUSED pc = abuf->addr;
   5900      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   5901      1.1  christos 
   5902      1.1  christos {
   5903      1.1  christos   QI tmp_tmpopd;
   5904      1.1  christos   QI tmp_tmpops;
   5905      1.1  christos   BI tmp_carry;
   5906      1.1  christos   QI tmp_newval;
   5907      1.1  christos   tmp_tmpops = FLD (f_indir_pc__byte);
   5908      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5909      1.1  christos   tmp_carry = CPU (h_cbit);
   5910      1.1  christos   tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5911      1.1  christos {
   5912      1.1  christos   SI tmp_oldregval;
   5913      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5914      1.1  christos   {
   5915      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   5916      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5917  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5918      1.1  christos   }
   5919      1.1  christos }
   5920      1.1  christos {
   5921      1.1  christos   {
   5922      1.1  christos     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))));
   5923      1.1  christos     CPU (h_cbit) = opval;
   5924  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5925      1.1  christos   }
   5926      1.1  christos   {
   5927      1.1  christos     BI opval = LTQI (tmp_newval, 0);
   5928      1.1  christos     CPU (h_nbit) = opval;
   5929  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5930      1.1  christos   }
   5931      1.1  christos   {
   5932      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5933      1.1  christos     CPU (h_zbit) = opval;
   5934  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5935      1.1  christos   }
   5936      1.1  christos   {
   5937      1.1  christos     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)));
   5938      1.1  christos     CPU (h_vbit) = opval;
   5939  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5940      1.1  christos   }
   5941      1.1  christos {
   5942      1.1  christos   {
   5943      1.1  christos     BI opval = 0;
   5944      1.1  christos     CPU (h_xbit) = opval;
   5945  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5946      1.1  christos   }
   5947      1.1  christos   {
   5948      1.1  christos     BI opval = 0;
   5949      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5950  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5951      1.1  christos   }
   5952      1.1  christos }
   5953      1.1  christos }
   5954      1.1  christos }
   5955      1.1  christos 
   5956      1.1  christos #undef FLD
   5957      1.1  christos }
   5958      1.1  christos   NEXT (vpc);
   5959      1.1  christos 
   5960      1.1  christos   CASE (sem, INSN_ADDCWR) : /* add.w ${sconst16}],${Rd} */
   5961      1.1  christos {
   5962      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5963      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5964      1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   5965      1.1  christos   int UNUSED written = 0;
   5966      1.1  christos   IADDR UNUSED pc = abuf->addr;
   5967      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   5968      1.1  christos 
   5969      1.1  christos {
   5970      1.1  christos   HI tmp_tmpopd;
   5971      1.1  christos   HI tmp_tmpops;
   5972      1.1  christos   BI tmp_carry;
   5973      1.1  christos   HI tmp_newval;
   5974      1.1  christos   tmp_tmpops = FLD (f_indir_pc__word);
   5975      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5976      1.1  christos   tmp_carry = CPU (h_cbit);
   5977      1.1  christos   tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5978      1.1  christos {
   5979      1.1  christos   SI tmp_oldregval;
   5980      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5981      1.1  christos   {
   5982      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   5983      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5984  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5985      1.1  christos   }
   5986      1.1  christos }
   5987      1.1  christos {
   5988      1.1  christos   {
   5989      1.1  christos     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))));
   5990      1.1  christos     CPU (h_cbit) = opval;
   5991  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5992      1.1  christos   }
   5993      1.1  christos   {
   5994      1.1  christos     BI opval = LTHI (tmp_newval, 0);
   5995      1.1  christos     CPU (h_nbit) = opval;
   5996  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5997      1.1  christos   }
   5998      1.1  christos   {
   5999      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6000      1.1  christos     CPU (h_zbit) = opval;
   6001  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6002      1.1  christos   }
   6003      1.1  christos   {
   6004      1.1  christos     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)));
   6005      1.1  christos     CPU (h_vbit) = opval;
   6006  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6007      1.1  christos   }
   6008      1.1  christos {
   6009      1.1  christos   {
   6010      1.1  christos     BI opval = 0;
   6011      1.1  christos     CPU (h_xbit) = opval;
   6012  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6013      1.1  christos   }
   6014      1.1  christos   {
   6015      1.1  christos     BI opval = 0;
   6016      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6017  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6018      1.1  christos   }
   6019      1.1  christos }
   6020      1.1  christos }
   6021      1.1  christos }
   6022      1.1  christos 
   6023      1.1  christos #undef FLD
   6024      1.1  christos }
   6025      1.1  christos   NEXT (vpc);
   6026      1.1  christos 
   6027      1.1  christos   CASE (sem, INSN_ADDCDR) : /* add.d ${const32}],${Rd} */
   6028      1.1  christos {
   6029      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6030      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6031      1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   6032      1.1  christos   int UNUSED written = 0;
   6033      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6034      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   6035      1.1  christos 
   6036      1.1  christos {
   6037      1.1  christos   SI tmp_tmpopd;
   6038      1.1  christos   SI tmp_tmpops;
   6039      1.1  christos   BI tmp_carry;
   6040      1.1  christos   SI tmp_newval;
   6041      1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   6042      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6043      1.1  christos   tmp_carry = CPU (h_cbit);
   6044      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6045      1.1  christos   {
   6046      1.1  christos     SI opval = tmp_newval;
   6047      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6048  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6049      1.1  christos   }
   6050      1.1  christos {
   6051      1.1  christos   {
   6052      1.1  christos     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))));
   6053      1.1  christos     CPU (h_cbit) = opval;
   6054  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6055      1.1  christos   }
   6056      1.1  christos   {
   6057      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6058      1.1  christos     CPU (h_nbit) = opval;
   6059  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6060      1.1  christos   }
   6061      1.1  christos   {
   6062      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6063      1.1  christos     CPU (h_zbit) = opval;
   6064  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6065      1.1  christos   }
   6066      1.1  christos   {
   6067      1.1  christos     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)));
   6068      1.1  christos     CPU (h_vbit) = opval;
   6069  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6070      1.1  christos   }
   6071      1.1  christos {
   6072      1.1  christos   {
   6073      1.1  christos     BI opval = 0;
   6074      1.1  christos     CPU (h_xbit) = opval;
   6075  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6076      1.1  christos   }
   6077      1.1  christos   {
   6078      1.1  christos     BI opval = 0;
   6079      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6080  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6081      1.1  christos   }
   6082      1.1  christos }
   6083      1.1  christos }
   6084      1.1  christos }
   6085      1.1  christos 
   6086      1.1  christos #undef FLD
   6087      1.1  christos }
   6088      1.1  christos   NEXT (vpc);
   6089      1.1  christos 
   6090      1.1  christos   CASE (sem, INSN_ADDS_B_R) : /* adds.b $Rs,$Rd */
   6091      1.1  christos {
   6092      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6093      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6094      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6095      1.1  christos   int UNUSED written = 0;
   6096      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6097      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6098      1.1  christos 
   6099      1.1  christos {
   6100      1.1  christos   SI tmp_tmpopd;
   6101      1.1  christos   SI tmp_tmpops;
   6102      1.1  christos   BI tmp_carry;
   6103      1.1  christos   SI tmp_newval;
   6104      1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   6105      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6106      1.1  christos   tmp_carry = CPU (h_cbit);
   6107      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6108      1.1  christos   {
   6109      1.1  christos     SI opval = tmp_newval;
   6110      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6111  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6112      1.1  christos   }
   6113      1.1  christos {
   6114      1.1  christos   {
   6115      1.1  christos     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))));
   6116      1.1  christos     CPU (h_cbit) = opval;
   6117  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6118      1.1  christos   }
   6119      1.1  christos   {
   6120      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6121      1.1  christos     CPU (h_nbit) = opval;
   6122  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6123      1.1  christos   }
   6124      1.1  christos   {
   6125      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6126      1.1  christos     CPU (h_zbit) = opval;
   6127  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6128      1.1  christos   }
   6129      1.1  christos   {
   6130      1.1  christos     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)));
   6131      1.1  christos     CPU (h_vbit) = opval;
   6132  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6133      1.1  christos   }
   6134      1.1  christos {
   6135      1.1  christos   {
   6136      1.1  christos     BI opval = 0;
   6137      1.1  christos     CPU (h_xbit) = opval;
   6138  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6139      1.1  christos   }
   6140      1.1  christos   {
   6141      1.1  christos     BI opval = 0;
   6142      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6143  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6144      1.1  christos   }
   6145      1.1  christos }
   6146      1.1  christos }
   6147      1.1  christos }
   6148      1.1  christos 
   6149      1.1  christos #undef FLD
   6150      1.1  christos }
   6151      1.1  christos   NEXT (vpc);
   6152      1.1  christos 
   6153      1.1  christos   CASE (sem, INSN_ADDS_W_R) : /* adds.w $Rs,$Rd */
   6154      1.1  christos {
   6155      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6156      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6157      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6158      1.1  christos   int UNUSED written = 0;
   6159      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6160      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6161      1.1  christos 
   6162      1.1  christos {
   6163      1.1  christos   SI tmp_tmpopd;
   6164      1.1  christos   SI tmp_tmpops;
   6165      1.1  christos   BI tmp_carry;
   6166      1.1  christos   SI tmp_newval;
   6167      1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   6168      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6169      1.1  christos   tmp_carry = CPU (h_cbit);
   6170      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6171      1.1  christos   {
   6172      1.1  christos     SI opval = tmp_newval;
   6173      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6174  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6175      1.1  christos   }
   6176      1.1  christos {
   6177      1.1  christos   {
   6178      1.1  christos     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))));
   6179      1.1  christos     CPU (h_cbit) = opval;
   6180  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6181      1.1  christos   }
   6182      1.1  christos   {
   6183      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6184      1.1  christos     CPU (h_nbit) = opval;
   6185  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6186      1.1  christos   }
   6187      1.1  christos   {
   6188      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6189      1.1  christos     CPU (h_zbit) = opval;
   6190  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6191      1.1  christos   }
   6192      1.1  christos   {
   6193      1.1  christos     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)));
   6194      1.1  christos     CPU (h_vbit) = opval;
   6195  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6196      1.1  christos   }
   6197      1.1  christos {
   6198      1.1  christos   {
   6199      1.1  christos     BI opval = 0;
   6200      1.1  christos     CPU (h_xbit) = opval;
   6201  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6202      1.1  christos   }
   6203      1.1  christos   {
   6204      1.1  christos     BI opval = 0;
   6205      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6206  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6207      1.1  christos   }
   6208      1.1  christos }
   6209      1.1  christos }
   6210      1.1  christos }
   6211      1.1  christos 
   6212      1.1  christos #undef FLD
   6213      1.1  christos }
   6214      1.1  christos   NEXT (vpc);
   6215      1.1  christos 
   6216      1.1  christos   CASE (sem, INSN_ADDS_M_B_M) : /* adds-m.b [${Rs}${inc}],$Rd */
   6217      1.1  christos {
   6218      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6219      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6220      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6221      1.1  christos   int UNUSED written = 0;
   6222      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6223      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6224      1.1  christos 
   6225      1.1  christos {
   6226      1.1  christos   SI tmp_tmpopd;
   6227      1.1  christos   SI tmp_tmpops;
   6228      1.1  christos   BI tmp_carry;
   6229      1.1  christos   SI tmp_newval;
   6230      1.1  christos   tmp_tmpops = EXTQISI (({   SI tmp_addr;
   6231      1.1  christos   QI tmp_tmp_mem;
   6232      1.1  christos   BI tmp_postinc;
   6233      1.1  christos   tmp_postinc = FLD (f_memmode);
   6234      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6235      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   6236      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6237      1.1  christos {
   6238      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6239      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   6240      1.1  christos }
   6241      1.1  christos   {
   6242      1.1  christos     SI opval = tmp_addr;
   6243      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6244      1.1  christos     written |= (1 << 11);
   6245  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6246      1.1  christos   }
   6247      1.1  christos }
   6248      1.1  christos }
   6249      1.1  christos ; tmp_tmp_mem; }));
   6250      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6251      1.1  christos   tmp_carry = CPU (h_cbit);
   6252      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6253      1.1  christos   {
   6254      1.1  christos     SI opval = tmp_newval;
   6255      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6256  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6257      1.1  christos   }
   6258      1.1  christos {
   6259      1.1  christos   {
   6260      1.1  christos     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))));
   6261      1.1  christos     CPU (h_cbit) = opval;
   6262  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6263      1.1  christos   }
   6264      1.1  christos   {
   6265      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6266      1.1  christos     CPU (h_nbit) = opval;
   6267  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6268      1.1  christos   }
   6269      1.1  christos   {
   6270      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6271      1.1  christos     CPU (h_zbit) = opval;
   6272  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6273      1.1  christos   }
   6274      1.1  christos   {
   6275      1.1  christos     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)));
   6276      1.1  christos     CPU (h_vbit) = opval;
   6277  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6278      1.1  christos   }
   6279      1.1  christos {
   6280      1.1  christos   {
   6281      1.1  christos     BI opval = 0;
   6282      1.1  christos     CPU (h_xbit) = opval;
   6283  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6284      1.1  christos   }
   6285      1.1  christos   {
   6286      1.1  christos     BI opval = 0;
   6287      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6288  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6289      1.1  christos   }
   6290      1.1  christos }
   6291      1.1  christos }
   6292      1.1  christos }
   6293      1.1  christos 
   6294      1.1  christos   abuf->written = written;
   6295      1.1  christos #undef FLD
   6296      1.1  christos }
   6297      1.1  christos   NEXT (vpc);
   6298      1.1  christos 
   6299      1.1  christos   CASE (sem, INSN_ADDS_M_W_M) : /* adds-m.w [${Rs}${inc}],$Rd */
   6300      1.1  christos {
   6301      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6302      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6303      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6304      1.1  christos   int UNUSED written = 0;
   6305      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6306      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6307      1.1  christos 
   6308      1.1  christos {
   6309      1.1  christos   SI tmp_tmpopd;
   6310      1.1  christos   SI tmp_tmpops;
   6311      1.1  christos   BI tmp_carry;
   6312      1.1  christos   SI tmp_newval;
   6313      1.1  christos   tmp_tmpops = EXTHISI (({   SI tmp_addr;
   6314      1.1  christos   HI tmp_tmp_mem;
   6315      1.1  christos   BI tmp_postinc;
   6316      1.1  christos   tmp_postinc = FLD (f_memmode);
   6317      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6318      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   6319      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6320      1.1  christos {
   6321      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6322      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   6323      1.1  christos }
   6324      1.1  christos   {
   6325      1.1  christos     SI opval = tmp_addr;
   6326      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6327      1.1  christos     written |= (1 << 11);
   6328  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6329      1.1  christos   }
   6330      1.1  christos }
   6331      1.1  christos }
   6332      1.1  christos ; tmp_tmp_mem; }));
   6333      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6334      1.1  christos   tmp_carry = CPU (h_cbit);
   6335      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6336      1.1  christos   {
   6337      1.1  christos     SI opval = tmp_newval;
   6338      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6339  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6340      1.1  christos   }
   6341      1.1  christos {
   6342      1.1  christos   {
   6343      1.1  christos     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))));
   6344      1.1  christos     CPU (h_cbit) = opval;
   6345  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6346      1.1  christos   }
   6347      1.1  christos   {
   6348      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6349      1.1  christos     CPU (h_nbit) = opval;
   6350  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6351      1.1  christos   }
   6352      1.1  christos   {
   6353      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6354      1.1  christos     CPU (h_zbit) = opval;
   6355  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6356      1.1  christos   }
   6357      1.1  christos   {
   6358      1.1  christos     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)));
   6359      1.1  christos     CPU (h_vbit) = opval;
   6360  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6361      1.1  christos   }
   6362      1.1  christos {
   6363      1.1  christos   {
   6364      1.1  christos     BI opval = 0;
   6365      1.1  christos     CPU (h_xbit) = opval;
   6366  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6367      1.1  christos   }
   6368      1.1  christos   {
   6369      1.1  christos     BI opval = 0;
   6370      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6371  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6372      1.1  christos   }
   6373      1.1  christos }
   6374      1.1  christos }
   6375      1.1  christos }
   6376      1.1  christos 
   6377      1.1  christos   abuf->written = written;
   6378      1.1  christos #undef FLD
   6379      1.1  christos }
   6380      1.1  christos   NEXT (vpc);
   6381      1.1  christos 
   6382      1.1  christos   CASE (sem, INSN_ADDSCBR) : /* [${Rs}${inc}],$Rd */
   6383      1.1  christos {
   6384      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6385      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6386      1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   6387      1.1  christos   int UNUSED written = 0;
   6388      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6389      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6390      1.1  christos 
   6391      1.1  christos {
   6392      1.1  christos   SI tmp_tmpopd;
   6393      1.1  christos   SI tmp_tmpops;
   6394      1.1  christos   BI tmp_carry;
   6395      1.1  christos   SI tmp_newval;
   6396      1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   6397      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6398      1.1  christos   tmp_carry = CPU (h_cbit);
   6399      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6400      1.1  christos   {
   6401      1.1  christos     SI opval = tmp_newval;
   6402      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6403  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6404      1.1  christos   }
   6405      1.1  christos {
   6406      1.1  christos   {
   6407      1.1  christos     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))));
   6408      1.1  christos     CPU (h_cbit) = opval;
   6409  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6410      1.1  christos   }
   6411      1.1  christos   {
   6412      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6413      1.1  christos     CPU (h_nbit) = opval;
   6414  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6415      1.1  christos   }
   6416      1.1  christos   {
   6417      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6418      1.1  christos     CPU (h_zbit) = opval;
   6419  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6420      1.1  christos   }
   6421      1.1  christos   {
   6422      1.1  christos     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)));
   6423      1.1  christos     CPU (h_vbit) = opval;
   6424  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6425      1.1  christos   }
   6426      1.1  christos {
   6427      1.1  christos   {
   6428      1.1  christos     BI opval = 0;
   6429      1.1  christos     CPU (h_xbit) = opval;
   6430  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6431      1.1  christos   }
   6432      1.1  christos   {
   6433      1.1  christos     BI opval = 0;
   6434      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6435  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6436      1.1  christos   }
   6437      1.1  christos }
   6438      1.1  christos }
   6439      1.1  christos }
   6440      1.1  christos 
   6441      1.1  christos #undef FLD
   6442      1.1  christos }
   6443      1.1  christos   NEXT (vpc);
   6444      1.1  christos 
   6445      1.1  christos   CASE (sem, INSN_ADDSCWR) : /* [${Rs}${inc}],$Rd */
   6446      1.1  christos {
   6447      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6448      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6449      1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   6450      1.1  christos   int UNUSED written = 0;
   6451      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6452      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6453      1.1  christos 
   6454      1.1  christos {
   6455      1.1  christos   SI tmp_tmpopd;
   6456      1.1  christos   SI tmp_tmpops;
   6457      1.1  christos   BI tmp_carry;
   6458      1.1  christos   SI tmp_newval;
   6459      1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   6460      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6461      1.1  christos   tmp_carry = CPU (h_cbit);
   6462      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6463      1.1  christos   {
   6464      1.1  christos     SI opval = tmp_newval;
   6465      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6466  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6467      1.1  christos   }
   6468      1.1  christos {
   6469      1.1  christos   {
   6470      1.1  christos     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))));
   6471      1.1  christos     CPU (h_cbit) = opval;
   6472  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6473      1.1  christos   }
   6474      1.1  christos   {
   6475      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6476      1.1  christos     CPU (h_nbit) = opval;
   6477  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6478      1.1  christos   }
   6479      1.1  christos   {
   6480      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6481      1.1  christos     CPU (h_zbit) = opval;
   6482  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6483      1.1  christos   }
   6484      1.1  christos   {
   6485      1.1  christos     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)));
   6486      1.1  christos     CPU (h_vbit) = opval;
   6487  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6488      1.1  christos   }
   6489      1.1  christos {
   6490      1.1  christos   {
   6491      1.1  christos     BI opval = 0;
   6492      1.1  christos     CPU (h_xbit) = opval;
   6493  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6494      1.1  christos   }
   6495      1.1  christos   {
   6496      1.1  christos     BI opval = 0;
   6497      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6498  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6499      1.1  christos   }
   6500      1.1  christos }
   6501      1.1  christos }
   6502      1.1  christos }
   6503      1.1  christos 
   6504      1.1  christos #undef FLD
   6505      1.1  christos }
   6506      1.1  christos   NEXT (vpc);
   6507      1.1  christos 
   6508      1.1  christos   CASE (sem, INSN_ADDU_B_R) : /* addu.b $Rs,$Rd */
   6509      1.1  christos {
   6510      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6511      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6512      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6513      1.1  christos   int UNUSED written = 0;
   6514      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6515      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6516      1.1  christos 
   6517      1.1  christos {
   6518      1.1  christos   SI tmp_tmpopd;
   6519      1.1  christos   SI tmp_tmpops;
   6520      1.1  christos   BI tmp_carry;
   6521      1.1  christos   SI tmp_newval;
   6522      1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   6523      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6524      1.1  christos   tmp_carry = CPU (h_cbit);
   6525      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6526      1.1  christos   {
   6527      1.1  christos     SI opval = tmp_newval;
   6528      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6529  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6530      1.1  christos   }
   6531      1.1  christos {
   6532      1.1  christos   {
   6533      1.1  christos     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))));
   6534      1.1  christos     CPU (h_cbit) = opval;
   6535  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6536      1.1  christos   }
   6537      1.1  christos   {
   6538      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6539      1.1  christos     CPU (h_nbit) = opval;
   6540  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6541      1.1  christos   }
   6542      1.1  christos   {
   6543      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6544      1.1  christos     CPU (h_zbit) = opval;
   6545  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6546      1.1  christos   }
   6547      1.1  christos   {
   6548      1.1  christos     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)));
   6549      1.1  christos     CPU (h_vbit) = opval;
   6550  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6551      1.1  christos   }
   6552      1.1  christos {
   6553      1.1  christos   {
   6554      1.1  christos     BI opval = 0;
   6555      1.1  christos     CPU (h_xbit) = opval;
   6556  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6557      1.1  christos   }
   6558      1.1  christos   {
   6559      1.1  christos     BI opval = 0;
   6560      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6561  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6562      1.1  christos   }
   6563      1.1  christos }
   6564      1.1  christos }
   6565      1.1  christos }
   6566      1.1  christos 
   6567      1.1  christos #undef FLD
   6568      1.1  christos }
   6569      1.1  christos   NEXT (vpc);
   6570      1.1  christos 
   6571      1.1  christos   CASE (sem, INSN_ADDU_W_R) : /* addu.w $Rs,$Rd */
   6572      1.1  christos {
   6573      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6574      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6575      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6576      1.1  christos   int UNUSED written = 0;
   6577      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6578      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6579      1.1  christos 
   6580      1.1  christos {
   6581      1.1  christos   SI tmp_tmpopd;
   6582      1.1  christos   SI tmp_tmpops;
   6583      1.1  christos   BI tmp_carry;
   6584      1.1  christos   SI tmp_newval;
   6585      1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   6586      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6587      1.1  christos   tmp_carry = CPU (h_cbit);
   6588      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6589      1.1  christos   {
   6590      1.1  christos     SI opval = tmp_newval;
   6591      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6592  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6593      1.1  christos   }
   6594      1.1  christos {
   6595      1.1  christos   {
   6596      1.1  christos     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))));
   6597      1.1  christos     CPU (h_cbit) = opval;
   6598  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6599      1.1  christos   }
   6600      1.1  christos   {
   6601      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6602      1.1  christos     CPU (h_nbit) = opval;
   6603  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6604      1.1  christos   }
   6605      1.1  christos   {
   6606      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6607      1.1  christos     CPU (h_zbit) = opval;
   6608  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6609      1.1  christos   }
   6610      1.1  christos   {
   6611      1.1  christos     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)));
   6612      1.1  christos     CPU (h_vbit) = opval;
   6613  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6614      1.1  christos   }
   6615      1.1  christos {
   6616      1.1  christos   {
   6617      1.1  christos     BI opval = 0;
   6618      1.1  christos     CPU (h_xbit) = opval;
   6619  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6620      1.1  christos   }
   6621      1.1  christos   {
   6622      1.1  christos     BI opval = 0;
   6623      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6624  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6625      1.1  christos   }
   6626      1.1  christos }
   6627      1.1  christos }
   6628      1.1  christos }
   6629      1.1  christos 
   6630      1.1  christos #undef FLD
   6631      1.1  christos }
   6632      1.1  christos   NEXT (vpc);
   6633      1.1  christos 
   6634      1.1  christos   CASE (sem, INSN_ADDU_M_B_M) : /* addu-m.b [${Rs}${inc}],$Rd */
   6635      1.1  christos {
   6636      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6637      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6638      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6639      1.1  christos   int UNUSED written = 0;
   6640      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6641      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6642      1.1  christos 
   6643      1.1  christos {
   6644      1.1  christos   SI tmp_tmpopd;
   6645      1.1  christos   SI tmp_tmpops;
   6646      1.1  christos   BI tmp_carry;
   6647      1.1  christos   SI tmp_newval;
   6648      1.1  christos   tmp_tmpops = ZEXTQISI (({   SI tmp_addr;
   6649      1.1  christos   QI tmp_tmp_mem;
   6650      1.1  christos   BI tmp_postinc;
   6651      1.1  christos   tmp_postinc = FLD (f_memmode);
   6652      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6653      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   6654      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6655      1.1  christos {
   6656      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6657      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   6658      1.1  christos }
   6659      1.1  christos   {
   6660      1.1  christos     SI opval = tmp_addr;
   6661      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6662      1.1  christos     written |= (1 << 11);
   6663  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6664      1.1  christos   }
   6665      1.1  christos }
   6666      1.1  christos }
   6667      1.1  christos ; tmp_tmp_mem; }));
   6668      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6669      1.1  christos   tmp_carry = CPU (h_cbit);
   6670      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6671      1.1  christos   {
   6672      1.1  christos     SI opval = tmp_newval;
   6673      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6674  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6675      1.1  christos   }
   6676      1.1  christos {
   6677      1.1  christos   {
   6678      1.1  christos     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))));
   6679      1.1  christos     CPU (h_cbit) = opval;
   6680  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6681      1.1  christos   }
   6682      1.1  christos   {
   6683      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6684      1.1  christos     CPU (h_nbit) = opval;
   6685  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6686      1.1  christos   }
   6687      1.1  christos   {
   6688      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6689      1.1  christos     CPU (h_zbit) = opval;
   6690  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6691      1.1  christos   }
   6692      1.1  christos   {
   6693      1.1  christos     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)));
   6694      1.1  christos     CPU (h_vbit) = opval;
   6695  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6696      1.1  christos   }
   6697      1.1  christos {
   6698      1.1  christos   {
   6699      1.1  christos     BI opval = 0;
   6700      1.1  christos     CPU (h_xbit) = opval;
   6701  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6702      1.1  christos   }
   6703      1.1  christos   {
   6704      1.1  christos     BI opval = 0;
   6705      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6706  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6707      1.1  christos   }
   6708      1.1  christos }
   6709      1.1  christos }
   6710      1.1  christos }
   6711      1.1  christos 
   6712      1.1  christos   abuf->written = written;
   6713      1.1  christos #undef FLD
   6714      1.1  christos }
   6715      1.1  christos   NEXT (vpc);
   6716      1.1  christos 
   6717      1.1  christos   CASE (sem, INSN_ADDU_M_W_M) : /* addu-m.w [${Rs}${inc}],$Rd */
   6718      1.1  christos {
   6719      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6720      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6721      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6722      1.1  christos   int UNUSED written = 0;
   6723      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6724      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6725      1.1  christos 
   6726      1.1  christos {
   6727      1.1  christos   SI tmp_tmpopd;
   6728      1.1  christos   SI tmp_tmpops;
   6729      1.1  christos   BI tmp_carry;
   6730      1.1  christos   SI tmp_newval;
   6731      1.1  christos   tmp_tmpops = ZEXTHISI (({   SI tmp_addr;
   6732      1.1  christos   HI tmp_tmp_mem;
   6733      1.1  christos   BI tmp_postinc;
   6734      1.1  christos   tmp_postinc = FLD (f_memmode);
   6735      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6736      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   6737      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6738      1.1  christos {
   6739      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6740      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   6741      1.1  christos }
   6742      1.1  christos   {
   6743      1.1  christos     SI opval = tmp_addr;
   6744      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6745      1.1  christos     written |= (1 << 11);
   6746  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6747      1.1  christos   }
   6748      1.1  christos }
   6749      1.1  christos }
   6750      1.1  christos ; tmp_tmp_mem; }));
   6751      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6752      1.1  christos   tmp_carry = CPU (h_cbit);
   6753      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6754      1.1  christos   {
   6755      1.1  christos     SI opval = tmp_newval;
   6756      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6757  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6758      1.1  christos   }
   6759      1.1  christos {
   6760      1.1  christos   {
   6761      1.1  christos     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))));
   6762      1.1  christos     CPU (h_cbit) = opval;
   6763  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6764      1.1  christos   }
   6765      1.1  christos   {
   6766      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6767      1.1  christos     CPU (h_nbit) = opval;
   6768  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6769      1.1  christos   }
   6770      1.1  christos   {
   6771      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6772      1.1  christos     CPU (h_zbit) = opval;
   6773  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6774      1.1  christos   }
   6775      1.1  christos   {
   6776      1.1  christos     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)));
   6777      1.1  christos     CPU (h_vbit) = opval;
   6778  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6779      1.1  christos   }
   6780      1.1  christos {
   6781      1.1  christos   {
   6782      1.1  christos     BI opval = 0;
   6783      1.1  christos     CPU (h_xbit) = opval;
   6784  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6785      1.1  christos   }
   6786      1.1  christos   {
   6787      1.1  christos     BI opval = 0;
   6788      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6789  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6790      1.1  christos   }
   6791      1.1  christos }
   6792      1.1  christos }
   6793      1.1  christos }
   6794      1.1  christos 
   6795      1.1  christos   abuf->written = written;
   6796      1.1  christos #undef FLD
   6797      1.1  christos }
   6798      1.1  christos   NEXT (vpc);
   6799      1.1  christos 
   6800      1.1  christos   CASE (sem, INSN_ADDUCBR) : /* [${Rs}${inc}],$Rd */
   6801      1.1  christos {
   6802      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6803      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6804      1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   6805      1.1  christos   int UNUSED written = 0;
   6806      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6807      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6808      1.1  christos 
   6809      1.1  christos {
   6810      1.1  christos   SI tmp_tmpopd;
   6811      1.1  christos   SI tmp_tmpops;
   6812      1.1  christos   BI tmp_carry;
   6813      1.1  christos   SI tmp_newval;
   6814      1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   6815      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6816      1.1  christos   tmp_carry = CPU (h_cbit);
   6817      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6818      1.1  christos   {
   6819      1.1  christos     SI opval = tmp_newval;
   6820      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6821  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6822      1.1  christos   }
   6823      1.1  christos {
   6824      1.1  christos   {
   6825      1.1  christos     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))));
   6826      1.1  christos     CPU (h_cbit) = opval;
   6827  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6828      1.1  christos   }
   6829      1.1  christos   {
   6830      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6831      1.1  christos     CPU (h_nbit) = opval;
   6832  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6833      1.1  christos   }
   6834      1.1  christos   {
   6835      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6836      1.1  christos     CPU (h_zbit) = opval;
   6837  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6838      1.1  christos   }
   6839      1.1  christos   {
   6840      1.1  christos     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)));
   6841      1.1  christos     CPU (h_vbit) = opval;
   6842  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6843      1.1  christos   }
   6844      1.1  christos {
   6845      1.1  christos   {
   6846      1.1  christos     BI opval = 0;
   6847      1.1  christos     CPU (h_xbit) = opval;
   6848  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6849      1.1  christos   }
   6850      1.1  christos   {
   6851      1.1  christos     BI opval = 0;
   6852      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6853  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6854      1.1  christos   }
   6855      1.1  christos }
   6856      1.1  christos }
   6857      1.1  christos }
   6858      1.1  christos 
   6859      1.1  christos #undef FLD
   6860      1.1  christos }
   6861      1.1  christos   NEXT (vpc);
   6862      1.1  christos 
   6863      1.1  christos   CASE (sem, INSN_ADDUCWR) : /* [${Rs}${inc}],$Rd */
   6864      1.1  christos {
   6865      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6866      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6867      1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   6868      1.1  christos   int UNUSED written = 0;
   6869      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6870      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6871      1.1  christos 
   6872      1.1  christos {
   6873      1.1  christos   SI tmp_tmpopd;
   6874      1.1  christos   SI tmp_tmpops;
   6875      1.1  christos   BI tmp_carry;
   6876      1.1  christos   SI tmp_newval;
   6877      1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   6878      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6879      1.1  christos   tmp_carry = CPU (h_cbit);
   6880      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6881      1.1  christos   {
   6882      1.1  christos     SI opval = tmp_newval;
   6883      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6884  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6885      1.1  christos   }
   6886      1.1  christos {
   6887      1.1  christos   {
   6888      1.1  christos     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))));
   6889      1.1  christos     CPU (h_cbit) = opval;
   6890  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6891      1.1  christos   }
   6892      1.1  christos   {
   6893      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6894      1.1  christos     CPU (h_nbit) = opval;
   6895  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6896      1.1  christos   }
   6897      1.1  christos   {
   6898      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6899      1.1  christos     CPU (h_zbit) = opval;
   6900  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6901      1.1  christos   }
   6902      1.1  christos   {
   6903      1.1  christos     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)));
   6904      1.1  christos     CPU (h_vbit) = opval;
   6905  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6906      1.1  christos   }
   6907      1.1  christos {
   6908      1.1  christos   {
   6909      1.1  christos     BI opval = 0;
   6910      1.1  christos     CPU (h_xbit) = opval;
   6911  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6912      1.1  christos   }
   6913      1.1  christos   {
   6914      1.1  christos     BI opval = 0;
   6915      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6916  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6917      1.1  christos   }
   6918      1.1  christos }
   6919      1.1  christos }
   6920      1.1  christos }
   6921      1.1  christos 
   6922      1.1  christos #undef FLD
   6923      1.1  christos }
   6924      1.1  christos   NEXT (vpc);
   6925      1.1  christos 
   6926      1.1  christos   CASE (sem, INSN_SUB_B_R) : /* sub.b $Rs,$Rd */
   6927      1.1  christos {
   6928      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6929      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6930      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6931      1.1  christos   int UNUSED written = 0;
   6932      1.1  christos   IADDR UNUSED pc = abuf->addr;
   6933      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6934      1.1  christos 
   6935      1.1  christos {
   6936      1.1  christos   QI tmp_tmpopd;
   6937      1.1  christos   QI tmp_tmpops;
   6938      1.1  christos   BI tmp_carry;
   6939      1.1  christos   QI tmp_newval;
   6940      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   6941      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6942      1.1  christos   tmp_carry = CPU (h_cbit);
   6943      1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6944      1.1  christos {
   6945      1.1  christos   SI tmp_oldregval;
   6946      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   6947      1.1  christos   {
   6948      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   6949      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6950  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6951      1.1  christos   }
   6952      1.1  christos }
   6953      1.1  christos {
   6954      1.1  christos   {
   6955      1.1  christos     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))));
   6956      1.1  christos     CPU (h_cbit) = opval;
   6957  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6958      1.1  christos   }
   6959      1.1  christos   {
   6960      1.1  christos     BI opval = LTQI (tmp_newval, 0);
   6961      1.1  christos     CPU (h_nbit) = opval;
   6962  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6963      1.1  christos   }
   6964      1.1  christos   {
   6965      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6966      1.1  christos     CPU (h_zbit) = opval;
   6967  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6968      1.1  christos   }
   6969      1.1  christos   {
   6970      1.1  christos     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)));
   6971      1.1  christos     CPU (h_vbit) = opval;
   6972  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6973      1.1  christos   }
   6974      1.1  christos {
   6975      1.1  christos   {
   6976      1.1  christos     BI opval = 0;
   6977      1.1  christos     CPU (h_xbit) = opval;
   6978  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6979      1.1  christos   }
   6980      1.1  christos   {
   6981      1.1  christos     BI opval = 0;
   6982      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6983  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6984      1.1  christos   }
   6985      1.1  christos }
   6986      1.1  christos }
   6987      1.1  christos }
   6988      1.1  christos 
   6989      1.1  christos #undef FLD
   6990      1.1  christos }
   6991      1.1  christos   NEXT (vpc);
   6992      1.1  christos 
   6993      1.1  christos   CASE (sem, INSN_SUB_W_R) : /* sub.w $Rs,$Rd */
   6994      1.1  christos {
   6995      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6996      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6997      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6998      1.1  christos   int UNUSED written = 0;
   6999      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7000      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7001      1.1  christos 
   7002      1.1  christos {
   7003      1.1  christos   HI tmp_tmpopd;
   7004      1.1  christos   HI tmp_tmpops;
   7005      1.1  christos   BI tmp_carry;
   7006      1.1  christos   HI tmp_newval;
   7007      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   7008      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7009      1.1  christos   tmp_carry = CPU (h_cbit);
   7010      1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7011      1.1  christos {
   7012      1.1  christos   SI tmp_oldregval;
   7013      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   7014      1.1  christos   {
   7015      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   7016      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7017  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7018      1.1  christos   }
   7019      1.1  christos }
   7020      1.1  christos {
   7021      1.1  christos   {
   7022      1.1  christos     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))));
   7023      1.1  christos     CPU (h_cbit) = opval;
   7024  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7025      1.1  christos   }
   7026      1.1  christos   {
   7027      1.1  christos     BI opval = LTHI (tmp_newval, 0);
   7028      1.1  christos     CPU (h_nbit) = opval;
   7029  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7030      1.1  christos   }
   7031      1.1  christos   {
   7032      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7033      1.1  christos     CPU (h_zbit) = opval;
   7034  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7035      1.1  christos   }
   7036      1.1  christos   {
   7037      1.1  christos     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)));
   7038      1.1  christos     CPU (h_vbit) = opval;
   7039  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7040      1.1  christos   }
   7041      1.1  christos {
   7042      1.1  christos   {
   7043      1.1  christos     BI opval = 0;
   7044      1.1  christos     CPU (h_xbit) = opval;
   7045  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7046      1.1  christos   }
   7047      1.1  christos   {
   7048      1.1  christos     BI opval = 0;
   7049      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7050  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7051      1.1  christos   }
   7052      1.1  christos }
   7053      1.1  christos }
   7054      1.1  christos }
   7055      1.1  christos 
   7056      1.1  christos #undef FLD
   7057      1.1  christos }
   7058      1.1  christos   NEXT (vpc);
   7059      1.1  christos 
   7060      1.1  christos   CASE (sem, INSN_SUB_D_R) : /* sub.d $Rs,$Rd */
   7061      1.1  christos {
   7062      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7063      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7064      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   7065      1.1  christos   int UNUSED written = 0;
   7066      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7067      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7068      1.1  christos 
   7069      1.1  christos {
   7070      1.1  christos   SI tmp_tmpopd;
   7071      1.1  christos   SI tmp_tmpops;
   7072      1.1  christos   BI tmp_carry;
   7073      1.1  christos   SI tmp_newval;
   7074      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   7075      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7076      1.1  christos   tmp_carry = CPU (h_cbit);
   7077      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7078      1.1  christos   {
   7079      1.1  christos     SI opval = tmp_newval;
   7080      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7081  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7082      1.1  christos   }
   7083      1.1  christos {
   7084      1.1  christos   {
   7085      1.1  christos     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))));
   7086      1.1  christos     CPU (h_cbit) = opval;
   7087  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7088      1.1  christos   }
   7089      1.1  christos   {
   7090      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7091      1.1  christos     CPU (h_nbit) = opval;
   7092  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7093      1.1  christos   }
   7094      1.1  christos   {
   7095      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7096      1.1  christos     CPU (h_zbit) = opval;
   7097  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7098      1.1  christos   }
   7099      1.1  christos   {
   7100      1.1  christos     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)));
   7101      1.1  christos     CPU (h_vbit) = opval;
   7102  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7103      1.1  christos   }
   7104      1.1  christos {
   7105      1.1  christos   {
   7106      1.1  christos     BI opval = 0;
   7107      1.1  christos     CPU (h_xbit) = opval;
   7108  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7109      1.1  christos   }
   7110      1.1  christos   {
   7111      1.1  christos     BI opval = 0;
   7112      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7113  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7114      1.1  christos   }
   7115      1.1  christos }
   7116      1.1  christos }
   7117      1.1  christos }
   7118      1.1  christos 
   7119      1.1  christos #undef FLD
   7120      1.1  christos }
   7121      1.1  christos   NEXT (vpc);
   7122      1.1  christos 
   7123      1.1  christos   CASE (sem, INSN_SUB_M_B_M) : /* sub-m.b [${Rs}${inc}],${Rd} */
   7124      1.1  christos {
   7125      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7126      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7127      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7128      1.1  christos   int UNUSED written = 0;
   7129      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7130      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7131      1.1  christos 
   7132      1.1  christos {
   7133      1.1  christos   QI tmp_tmpopd;
   7134      1.1  christos   QI tmp_tmpops;
   7135      1.1  christos   BI tmp_carry;
   7136      1.1  christos   QI tmp_newval;
   7137      1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   7138      1.1  christos   QI tmp_tmp_mem;
   7139      1.1  christos   BI tmp_postinc;
   7140      1.1  christos   tmp_postinc = FLD (f_memmode);
   7141      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7142      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   7143      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7144      1.1  christos {
   7145      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7146      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   7147      1.1  christos }
   7148      1.1  christos   {
   7149      1.1  christos     SI opval = tmp_addr;
   7150      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7151      1.1  christos     written |= (1 << 12);
   7152  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7153      1.1  christos   }
   7154      1.1  christos }
   7155      1.1  christos }
   7156      1.1  christos ; tmp_tmp_mem; });
   7157      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7158      1.1  christos   tmp_carry = CPU (h_cbit);
   7159      1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7160      1.1  christos {
   7161      1.1  christos   SI tmp_oldregval;
   7162      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   7163      1.1  christos   {
   7164      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   7165      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7166  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7167      1.1  christos   }
   7168      1.1  christos }
   7169      1.1  christos {
   7170      1.1  christos   {
   7171      1.1  christos     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))));
   7172      1.1  christos     CPU (h_cbit) = opval;
   7173  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7174      1.1  christos   }
   7175      1.1  christos   {
   7176      1.1  christos     BI opval = LTQI (tmp_newval, 0);
   7177      1.1  christos     CPU (h_nbit) = opval;
   7178  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7179      1.1  christos   }
   7180      1.1  christos   {
   7181      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7182      1.1  christos     CPU (h_zbit) = opval;
   7183  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7184      1.1  christos   }
   7185      1.1  christos   {
   7186      1.1  christos     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)));
   7187      1.1  christos     CPU (h_vbit) = opval;
   7188  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7189      1.1  christos   }
   7190      1.1  christos {
   7191      1.1  christos   {
   7192      1.1  christos     BI opval = 0;
   7193      1.1  christos     CPU (h_xbit) = opval;
   7194  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7195      1.1  christos   }
   7196      1.1  christos   {
   7197      1.1  christos     BI opval = 0;
   7198      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7199  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7200      1.1  christos   }
   7201      1.1  christos }
   7202      1.1  christos }
   7203      1.1  christos }
   7204      1.1  christos 
   7205      1.1  christos   abuf->written = written;
   7206      1.1  christos #undef FLD
   7207      1.1  christos }
   7208      1.1  christos   NEXT (vpc);
   7209      1.1  christos 
   7210      1.1  christos   CASE (sem, INSN_SUB_M_W_M) : /* sub-m.w [${Rs}${inc}],${Rd} */
   7211      1.1  christos {
   7212      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7213      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7214      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7215      1.1  christos   int UNUSED written = 0;
   7216      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7217      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7218      1.1  christos 
   7219      1.1  christos {
   7220      1.1  christos   HI tmp_tmpopd;
   7221      1.1  christos   HI tmp_tmpops;
   7222      1.1  christos   BI tmp_carry;
   7223      1.1  christos   HI tmp_newval;
   7224      1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   7225      1.1  christos   HI tmp_tmp_mem;
   7226      1.1  christos   BI tmp_postinc;
   7227      1.1  christos   tmp_postinc = FLD (f_memmode);
   7228      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7229      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   7230      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7231      1.1  christos {
   7232      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7233      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   7234      1.1  christos }
   7235      1.1  christos   {
   7236      1.1  christos     SI opval = tmp_addr;
   7237      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7238      1.1  christos     written |= (1 << 12);
   7239  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7240      1.1  christos   }
   7241      1.1  christos }
   7242      1.1  christos }
   7243      1.1  christos ; tmp_tmp_mem; });
   7244      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7245      1.1  christos   tmp_carry = CPU (h_cbit);
   7246      1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7247      1.1  christos {
   7248      1.1  christos   SI tmp_oldregval;
   7249      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   7250      1.1  christos   {
   7251      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   7252      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7253  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7254      1.1  christos   }
   7255      1.1  christos }
   7256      1.1  christos {
   7257      1.1  christos   {
   7258      1.1  christos     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))));
   7259      1.1  christos     CPU (h_cbit) = opval;
   7260  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7261      1.1  christos   }
   7262      1.1  christos   {
   7263      1.1  christos     BI opval = LTHI (tmp_newval, 0);
   7264      1.1  christos     CPU (h_nbit) = opval;
   7265  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7266      1.1  christos   }
   7267      1.1  christos   {
   7268      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7269      1.1  christos     CPU (h_zbit) = opval;
   7270  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7271      1.1  christos   }
   7272      1.1  christos   {
   7273      1.1  christos     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)));
   7274      1.1  christos     CPU (h_vbit) = opval;
   7275  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7276      1.1  christos   }
   7277      1.1  christos {
   7278      1.1  christos   {
   7279      1.1  christos     BI opval = 0;
   7280      1.1  christos     CPU (h_xbit) = opval;
   7281  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7282      1.1  christos   }
   7283      1.1  christos   {
   7284      1.1  christos     BI opval = 0;
   7285      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7286  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7287      1.1  christos   }
   7288      1.1  christos }
   7289      1.1  christos }
   7290      1.1  christos }
   7291      1.1  christos 
   7292      1.1  christos   abuf->written = written;
   7293      1.1  christos #undef FLD
   7294      1.1  christos }
   7295      1.1  christos   NEXT (vpc);
   7296      1.1  christos 
   7297      1.1  christos   CASE (sem, INSN_SUB_M_D_M) : /* sub-m.d [${Rs}${inc}],${Rd} */
   7298      1.1  christos {
   7299      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7300      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7301      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7302      1.1  christos   int UNUSED written = 0;
   7303      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7304      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7305      1.1  christos 
   7306      1.1  christos {
   7307      1.1  christos   SI tmp_tmpopd;
   7308      1.1  christos   SI tmp_tmpops;
   7309      1.1  christos   BI tmp_carry;
   7310      1.1  christos   SI tmp_newval;
   7311      1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   7312      1.1  christos   SI tmp_tmp_mem;
   7313      1.1  christos   BI tmp_postinc;
   7314      1.1  christos   tmp_postinc = FLD (f_memmode);
   7315      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7316      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   7317      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7318      1.1  christos {
   7319      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7320      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   7321      1.1  christos }
   7322      1.1  christos   {
   7323      1.1  christos     SI opval = tmp_addr;
   7324      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7325      1.1  christos     written |= (1 << 11);
   7326  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7327      1.1  christos   }
   7328      1.1  christos }
   7329      1.1  christos }
   7330      1.1  christos ; tmp_tmp_mem; });
   7331      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7332      1.1  christos   tmp_carry = CPU (h_cbit);
   7333      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7334      1.1  christos   {
   7335      1.1  christos     SI opval = tmp_newval;
   7336      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7337  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7338      1.1  christos   }
   7339      1.1  christos {
   7340      1.1  christos   {
   7341      1.1  christos     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))));
   7342      1.1  christos     CPU (h_cbit) = opval;
   7343  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7344      1.1  christos   }
   7345      1.1  christos   {
   7346      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7347      1.1  christos     CPU (h_nbit) = opval;
   7348  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7349      1.1  christos   }
   7350      1.1  christos   {
   7351      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7352      1.1  christos     CPU (h_zbit) = opval;
   7353  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7354      1.1  christos   }
   7355      1.1  christos   {
   7356      1.1  christos     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)));
   7357      1.1  christos     CPU (h_vbit) = opval;
   7358  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7359      1.1  christos   }
   7360      1.1  christos {
   7361      1.1  christos   {
   7362      1.1  christos     BI opval = 0;
   7363      1.1  christos     CPU (h_xbit) = opval;
   7364  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7365      1.1  christos   }
   7366      1.1  christos   {
   7367      1.1  christos     BI opval = 0;
   7368      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7369  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7370      1.1  christos   }
   7371      1.1  christos }
   7372      1.1  christos }
   7373      1.1  christos }
   7374      1.1  christos 
   7375      1.1  christos   abuf->written = written;
   7376      1.1  christos #undef FLD
   7377      1.1  christos }
   7378      1.1  christos   NEXT (vpc);
   7379      1.1  christos 
   7380      1.1  christos   CASE (sem, INSN_SUBCBR) : /* sub.b ${sconst8}],${Rd} */
   7381      1.1  christos {
   7382      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7383      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7384      1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   7385      1.1  christos   int UNUSED written = 0;
   7386      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7387      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7388      1.1  christos 
   7389      1.1  christos {
   7390      1.1  christos   QI tmp_tmpopd;
   7391      1.1  christos   QI tmp_tmpops;
   7392      1.1  christos   BI tmp_carry;
   7393      1.1  christos   QI tmp_newval;
   7394      1.1  christos   tmp_tmpops = FLD (f_indir_pc__byte);
   7395      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7396      1.1  christos   tmp_carry = CPU (h_cbit);
   7397      1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7398      1.1  christos {
   7399      1.1  christos   SI tmp_oldregval;
   7400      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   7401      1.1  christos   {
   7402      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   7403      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7404  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7405      1.1  christos   }
   7406      1.1  christos }
   7407      1.1  christos {
   7408      1.1  christos   {
   7409      1.1  christos     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))));
   7410      1.1  christos     CPU (h_cbit) = opval;
   7411  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7412      1.1  christos   }
   7413      1.1  christos   {
   7414      1.1  christos     BI opval = LTQI (tmp_newval, 0);
   7415      1.1  christos     CPU (h_nbit) = opval;
   7416  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7417      1.1  christos   }
   7418      1.1  christos   {
   7419      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7420      1.1  christos     CPU (h_zbit) = opval;
   7421  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7422      1.1  christos   }
   7423      1.1  christos   {
   7424      1.1  christos     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)));
   7425      1.1  christos     CPU (h_vbit) = opval;
   7426  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7427      1.1  christos   }
   7428      1.1  christos {
   7429      1.1  christos   {
   7430      1.1  christos     BI opval = 0;
   7431      1.1  christos     CPU (h_xbit) = opval;
   7432  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7433      1.1  christos   }
   7434      1.1  christos   {
   7435      1.1  christos     BI opval = 0;
   7436      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7437  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7438      1.1  christos   }
   7439      1.1  christos }
   7440      1.1  christos }
   7441      1.1  christos }
   7442      1.1  christos 
   7443      1.1  christos #undef FLD
   7444      1.1  christos }
   7445      1.1  christos   NEXT (vpc);
   7446      1.1  christos 
   7447      1.1  christos   CASE (sem, INSN_SUBCWR) : /* sub.w ${sconst16}],${Rd} */
   7448      1.1  christos {
   7449      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7450      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7451      1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   7452      1.1  christos   int UNUSED written = 0;
   7453      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7454      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7455      1.1  christos 
   7456      1.1  christos {
   7457      1.1  christos   HI tmp_tmpopd;
   7458      1.1  christos   HI tmp_tmpops;
   7459      1.1  christos   BI tmp_carry;
   7460      1.1  christos   HI tmp_newval;
   7461      1.1  christos   tmp_tmpops = FLD (f_indir_pc__word);
   7462      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7463      1.1  christos   tmp_carry = CPU (h_cbit);
   7464      1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7465      1.1  christos {
   7466      1.1  christos   SI tmp_oldregval;
   7467      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   7468      1.1  christos   {
   7469      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   7470      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7471  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7472      1.1  christos   }
   7473      1.1  christos }
   7474      1.1  christos {
   7475      1.1  christos   {
   7476      1.1  christos     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))));
   7477      1.1  christos     CPU (h_cbit) = opval;
   7478  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7479      1.1  christos   }
   7480      1.1  christos   {
   7481      1.1  christos     BI opval = LTHI (tmp_newval, 0);
   7482      1.1  christos     CPU (h_nbit) = opval;
   7483  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7484      1.1  christos   }
   7485      1.1  christos   {
   7486      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7487      1.1  christos     CPU (h_zbit) = opval;
   7488  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7489      1.1  christos   }
   7490      1.1  christos   {
   7491      1.1  christos     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)));
   7492      1.1  christos     CPU (h_vbit) = opval;
   7493  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7494      1.1  christos   }
   7495      1.1  christos {
   7496      1.1  christos   {
   7497      1.1  christos     BI opval = 0;
   7498      1.1  christos     CPU (h_xbit) = opval;
   7499  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7500      1.1  christos   }
   7501      1.1  christos   {
   7502      1.1  christos     BI opval = 0;
   7503      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7504  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7505      1.1  christos   }
   7506      1.1  christos }
   7507      1.1  christos }
   7508      1.1  christos }
   7509      1.1  christos 
   7510      1.1  christos #undef FLD
   7511      1.1  christos }
   7512      1.1  christos   NEXT (vpc);
   7513      1.1  christos 
   7514      1.1  christos   CASE (sem, INSN_SUBCDR) : /* sub.d ${const32}],${Rd} */
   7515      1.1  christos {
   7516      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7517      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7518      1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   7519      1.1  christos   int UNUSED written = 0;
   7520      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7521      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   7522      1.1  christos 
   7523      1.1  christos {
   7524      1.1  christos   SI tmp_tmpopd;
   7525      1.1  christos   SI tmp_tmpops;
   7526      1.1  christos   BI tmp_carry;
   7527      1.1  christos   SI tmp_newval;
   7528      1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   7529      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7530      1.1  christos   tmp_carry = CPU (h_cbit);
   7531      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7532      1.1  christos   {
   7533      1.1  christos     SI opval = tmp_newval;
   7534      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7535  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7536      1.1  christos   }
   7537      1.1  christos {
   7538      1.1  christos   {
   7539      1.1  christos     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))));
   7540      1.1  christos     CPU (h_cbit) = opval;
   7541  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7542      1.1  christos   }
   7543      1.1  christos   {
   7544      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7545      1.1  christos     CPU (h_nbit) = opval;
   7546  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7547      1.1  christos   }
   7548      1.1  christos   {
   7549      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7550      1.1  christos     CPU (h_zbit) = opval;
   7551  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7552      1.1  christos   }
   7553      1.1  christos   {
   7554      1.1  christos     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)));
   7555      1.1  christos     CPU (h_vbit) = opval;
   7556  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7557      1.1  christos   }
   7558      1.1  christos {
   7559      1.1  christos   {
   7560      1.1  christos     BI opval = 0;
   7561      1.1  christos     CPU (h_xbit) = opval;
   7562  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7563      1.1  christos   }
   7564      1.1  christos   {
   7565      1.1  christos     BI opval = 0;
   7566      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7567  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7568      1.1  christos   }
   7569      1.1  christos }
   7570      1.1  christos }
   7571      1.1  christos }
   7572      1.1  christos 
   7573      1.1  christos #undef FLD
   7574      1.1  christos }
   7575      1.1  christos   NEXT (vpc);
   7576      1.1  christos 
   7577      1.1  christos   CASE (sem, INSN_SUBS_B_R) : /* subs.b $Rs,$Rd */
   7578      1.1  christos {
   7579      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7580      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7581      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   7582      1.1  christos   int UNUSED written = 0;
   7583      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7584      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7585      1.1  christos 
   7586      1.1  christos {
   7587      1.1  christos   SI tmp_tmpopd;
   7588      1.1  christos   SI tmp_tmpops;
   7589      1.1  christos   BI tmp_carry;
   7590      1.1  christos   SI tmp_newval;
   7591      1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   7592      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7593      1.1  christos   tmp_carry = CPU (h_cbit);
   7594      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7595      1.1  christos   {
   7596      1.1  christos     SI opval = tmp_newval;
   7597      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7598  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7599      1.1  christos   }
   7600      1.1  christos {
   7601      1.1  christos   {
   7602      1.1  christos     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))));
   7603      1.1  christos     CPU (h_cbit) = opval;
   7604  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7605      1.1  christos   }
   7606      1.1  christos   {
   7607      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7608      1.1  christos     CPU (h_nbit) = opval;
   7609  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7610      1.1  christos   }
   7611      1.1  christos   {
   7612      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7613      1.1  christos     CPU (h_zbit) = opval;
   7614  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7615      1.1  christos   }
   7616      1.1  christos   {
   7617      1.1  christos     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)));
   7618      1.1  christos     CPU (h_vbit) = opval;
   7619  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7620      1.1  christos   }
   7621      1.1  christos {
   7622      1.1  christos   {
   7623      1.1  christos     BI opval = 0;
   7624      1.1  christos     CPU (h_xbit) = opval;
   7625  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7626      1.1  christos   }
   7627      1.1  christos   {
   7628      1.1  christos     BI opval = 0;
   7629      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7630  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7631      1.1  christos   }
   7632      1.1  christos }
   7633      1.1  christos }
   7634      1.1  christos }
   7635      1.1  christos 
   7636      1.1  christos #undef FLD
   7637      1.1  christos }
   7638      1.1  christos   NEXT (vpc);
   7639      1.1  christos 
   7640      1.1  christos   CASE (sem, INSN_SUBS_W_R) : /* subs.w $Rs,$Rd */
   7641      1.1  christos {
   7642      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7643      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7644      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   7645      1.1  christos   int UNUSED written = 0;
   7646      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7647      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7648      1.1  christos 
   7649      1.1  christos {
   7650      1.1  christos   SI tmp_tmpopd;
   7651      1.1  christos   SI tmp_tmpops;
   7652      1.1  christos   BI tmp_carry;
   7653      1.1  christos   SI tmp_newval;
   7654      1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   7655      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7656      1.1  christos   tmp_carry = CPU (h_cbit);
   7657      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7658      1.1  christos   {
   7659      1.1  christos     SI opval = tmp_newval;
   7660      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7661  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7662      1.1  christos   }
   7663      1.1  christos {
   7664      1.1  christos   {
   7665      1.1  christos     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))));
   7666      1.1  christos     CPU (h_cbit) = opval;
   7667  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7668      1.1  christos   }
   7669      1.1  christos   {
   7670      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7671      1.1  christos     CPU (h_nbit) = opval;
   7672  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7673      1.1  christos   }
   7674      1.1  christos   {
   7675      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7676      1.1  christos     CPU (h_zbit) = opval;
   7677  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7678      1.1  christos   }
   7679      1.1  christos   {
   7680      1.1  christos     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)));
   7681      1.1  christos     CPU (h_vbit) = opval;
   7682  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7683      1.1  christos   }
   7684      1.1  christos {
   7685      1.1  christos   {
   7686      1.1  christos     BI opval = 0;
   7687      1.1  christos     CPU (h_xbit) = opval;
   7688  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7689      1.1  christos   }
   7690      1.1  christos   {
   7691      1.1  christos     BI opval = 0;
   7692      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7693  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7694      1.1  christos   }
   7695      1.1  christos }
   7696      1.1  christos }
   7697      1.1  christos }
   7698      1.1  christos 
   7699      1.1  christos #undef FLD
   7700      1.1  christos }
   7701      1.1  christos   NEXT (vpc);
   7702      1.1  christos 
   7703      1.1  christos   CASE (sem, INSN_SUBS_M_B_M) : /* subs-m.b [${Rs}${inc}],$Rd */
   7704      1.1  christos {
   7705      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7706      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7707      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7708      1.1  christos   int UNUSED written = 0;
   7709      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7710      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7711      1.1  christos 
   7712      1.1  christos {
   7713      1.1  christos   SI tmp_tmpopd;
   7714      1.1  christos   SI tmp_tmpops;
   7715      1.1  christos   BI tmp_carry;
   7716      1.1  christos   SI tmp_newval;
   7717      1.1  christos   tmp_tmpops = EXTQISI (({   SI tmp_addr;
   7718      1.1  christos   QI tmp_tmp_mem;
   7719      1.1  christos   BI tmp_postinc;
   7720      1.1  christos   tmp_postinc = FLD (f_memmode);
   7721      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7722      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   7723      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7724      1.1  christos {
   7725      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7726      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   7727      1.1  christos }
   7728      1.1  christos   {
   7729      1.1  christos     SI opval = tmp_addr;
   7730      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7731      1.1  christos     written |= (1 << 11);
   7732  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7733      1.1  christos   }
   7734      1.1  christos }
   7735      1.1  christos }
   7736      1.1  christos ; tmp_tmp_mem; }));
   7737      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7738      1.1  christos   tmp_carry = CPU (h_cbit);
   7739      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7740      1.1  christos   {
   7741      1.1  christos     SI opval = tmp_newval;
   7742      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7743  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7744      1.1  christos   }
   7745      1.1  christos {
   7746      1.1  christos   {
   7747      1.1  christos     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))));
   7748      1.1  christos     CPU (h_cbit) = opval;
   7749  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7750      1.1  christos   }
   7751      1.1  christos   {
   7752      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7753      1.1  christos     CPU (h_nbit) = opval;
   7754  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7755      1.1  christos   }
   7756      1.1  christos   {
   7757      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7758      1.1  christos     CPU (h_zbit) = opval;
   7759  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7760      1.1  christos   }
   7761      1.1  christos   {
   7762      1.1  christos     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)));
   7763      1.1  christos     CPU (h_vbit) = opval;
   7764  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7765      1.1  christos   }
   7766      1.1  christos {
   7767      1.1  christos   {
   7768      1.1  christos     BI opval = 0;
   7769      1.1  christos     CPU (h_xbit) = opval;
   7770  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7771      1.1  christos   }
   7772      1.1  christos   {
   7773      1.1  christos     BI opval = 0;
   7774      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7775  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7776      1.1  christos   }
   7777      1.1  christos }
   7778      1.1  christos }
   7779      1.1  christos }
   7780      1.1  christos 
   7781      1.1  christos   abuf->written = written;
   7782      1.1  christos #undef FLD
   7783      1.1  christos }
   7784      1.1  christos   NEXT (vpc);
   7785      1.1  christos 
   7786      1.1  christos   CASE (sem, INSN_SUBS_M_W_M) : /* subs-m.w [${Rs}${inc}],$Rd */
   7787      1.1  christos {
   7788      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7789      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7790      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7791      1.1  christos   int UNUSED written = 0;
   7792      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7793      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7794      1.1  christos 
   7795      1.1  christos {
   7796      1.1  christos   SI tmp_tmpopd;
   7797      1.1  christos   SI tmp_tmpops;
   7798      1.1  christos   BI tmp_carry;
   7799      1.1  christos   SI tmp_newval;
   7800      1.1  christos   tmp_tmpops = EXTHISI (({   SI tmp_addr;
   7801      1.1  christos   HI tmp_tmp_mem;
   7802      1.1  christos   BI tmp_postinc;
   7803      1.1  christos   tmp_postinc = FLD (f_memmode);
   7804      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7805      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   7806      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7807      1.1  christos {
   7808      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7809      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   7810      1.1  christos }
   7811      1.1  christos   {
   7812      1.1  christos     SI opval = tmp_addr;
   7813      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7814      1.1  christos     written |= (1 << 11);
   7815  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7816      1.1  christos   }
   7817      1.1  christos }
   7818      1.1  christos }
   7819      1.1  christos ; tmp_tmp_mem; }));
   7820      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7821      1.1  christos   tmp_carry = CPU (h_cbit);
   7822      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7823      1.1  christos   {
   7824      1.1  christos     SI opval = tmp_newval;
   7825      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7826  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7827      1.1  christos   }
   7828      1.1  christos {
   7829      1.1  christos   {
   7830      1.1  christos     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))));
   7831      1.1  christos     CPU (h_cbit) = opval;
   7832  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7833      1.1  christos   }
   7834      1.1  christos   {
   7835      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7836      1.1  christos     CPU (h_nbit) = opval;
   7837  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7838      1.1  christos   }
   7839      1.1  christos   {
   7840      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7841      1.1  christos     CPU (h_zbit) = opval;
   7842  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7843      1.1  christos   }
   7844      1.1  christos   {
   7845      1.1  christos     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)));
   7846      1.1  christos     CPU (h_vbit) = opval;
   7847  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7848      1.1  christos   }
   7849      1.1  christos {
   7850      1.1  christos   {
   7851      1.1  christos     BI opval = 0;
   7852      1.1  christos     CPU (h_xbit) = opval;
   7853  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7854      1.1  christos   }
   7855      1.1  christos   {
   7856      1.1  christos     BI opval = 0;
   7857      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7858  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7859      1.1  christos   }
   7860      1.1  christos }
   7861      1.1  christos }
   7862      1.1  christos }
   7863      1.1  christos 
   7864      1.1  christos   abuf->written = written;
   7865      1.1  christos #undef FLD
   7866      1.1  christos }
   7867      1.1  christos   NEXT (vpc);
   7868      1.1  christos 
   7869      1.1  christos   CASE (sem, INSN_SUBSCBR) : /* [${Rs}${inc}],$Rd */
   7870      1.1  christos {
   7871      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7872      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7873      1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   7874      1.1  christos   int UNUSED written = 0;
   7875      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7876      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7877      1.1  christos 
   7878      1.1  christos {
   7879      1.1  christos   SI tmp_tmpopd;
   7880      1.1  christos   SI tmp_tmpops;
   7881      1.1  christos   BI tmp_carry;
   7882      1.1  christos   SI tmp_newval;
   7883      1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   7884      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7885      1.1  christos   tmp_carry = CPU (h_cbit);
   7886      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7887      1.1  christos   {
   7888      1.1  christos     SI opval = tmp_newval;
   7889      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7890  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7891      1.1  christos   }
   7892      1.1  christos {
   7893      1.1  christos   {
   7894      1.1  christos     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))));
   7895      1.1  christos     CPU (h_cbit) = opval;
   7896  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7897      1.1  christos   }
   7898      1.1  christos   {
   7899      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7900      1.1  christos     CPU (h_nbit) = opval;
   7901  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7902      1.1  christos   }
   7903      1.1  christos   {
   7904      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7905      1.1  christos     CPU (h_zbit) = opval;
   7906  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7907      1.1  christos   }
   7908      1.1  christos   {
   7909      1.1  christos     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)));
   7910      1.1  christos     CPU (h_vbit) = opval;
   7911  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7912      1.1  christos   }
   7913      1.1  christos {
   7914      1.1  christos   {
   7915      1.1  christos     BI opval = 0;
   7916      1.1  christos     CPU (h_xbit) = opval;
   7917  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7918      1.1  christos   }
   7919      1.1  christos   {
   7920      1.1  christos     BI opval = 0;
   7921      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7922  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7923      1.1  christos   }
   7924      1.1  christos }
   7925      1.1  christos }
   7926      1.1  christos }
   7927      1.1  christos 
   7928      1.1  christos #undef FLD
   7929      1.1  christos }
   7930      1.1  christos   NEXT (vpc);
   7931      1.1  christos 
   7932      1.1  christos   CASE (sem, INSN_SUBSCWR) : /* [${Rs}${inc}],$Rd */
   7933      1.1  christos {
   7934      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7935      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7936      1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   7937      1.1  christos   int UNUSED written = 0;
   7938      1.1  christos   IADDR UNUSED pc = abuf->addr;
   7939      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7940      1.1  christos 
   7941      1.1  christos {
   7942      1.1  christos   SI tmp_tmpopd;
   7943      1.1  christos   SI tmp_tmpops;
   7944      1.1  christos   BI tmp_carry;
   7945      1.1  christos   SI tmp_newval;
   7946      1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   7947      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7948      1.1  christos   tmp_carry = CPU (h_cbit);
   7949      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7950      1.1  christos   {
   7951      1.1  christos     SI opval = tmp_newval;
   7952      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7953  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7954      1.1  christos   }
   7955      1.1  christos {
   7956      1.1  christos   {
   7957      1.1  christos     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))));
   7958      1.1  christos     CPU (h_cbit) = opval;
   7959  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7960      1.1  christos   }
   7961      1.1  christos   {
   7962      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7963      1.1  christos     CPU (h_nbit) = opval;
   7964  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7965      1.1  christos   }
   7966      1.1  christos   {
   7967      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7968      1.1  christos     CPU (h_zbit) = opval;
   7969  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7970      1.1  christos   }
   7971      1.1  christos   {
   7972      1.1  christos     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)));
   7973      1.1  christos     CPU (h_vbit) = opval;
   7974  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7975      1.1  christos   }
   7976      1.1  christos {
   7977      1.1  christos   {
   7978      1.1  christos     BI opval = 0;
   7979      1.1  christos     CPU (h_xbit) = opval;
   7980  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7981      1.1  christos   }
   7982      1.1  christos   {
   7983      1.1  christos     BI opval = 0;
   7984      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7985  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7986      1.1  christos   }
   7987      1.1  christos }
   7988      1.1  christos }
   7989      1.1  christos }
   7990      1.1  christos 
   7991      1.1  christos #undef FLD
   7992      1.1  christos }
   7993      1.1  christos   NEXT (vpc);
   7994      1.1  christos 
   7995      1.1  christos   CASE (sem, INSN_SUBU_B_R) : /* subu.b $Rs,$Rd */
   7996      1.1  christos {
   7997      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7998      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7999      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8000      1.1  christos   int UNUSED written = 0;
   8001      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8002      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8003      1.1  christos 
   8004      1.1  christos {
   8005      1.1  christos   SI tmp_tmpopd;
   8006      1.1  christos   SI tmp_tmpops;
   8007      1.1  christos   BI tmp_carry;
   8008      1.1  christos   SI tmp_newval;
   8009      1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   8010      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8011      1.1  christos   tmp_carry = CPU (h_cbit);
   8012      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8013      1.1  christos   {
   8014      1.1  christos     SI opval = tmp_newval;
   8015      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8016  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8017      1.1  christos   }
   8018      1.1  christos {
   8019      1.1  christos   {
   8020      1.1  christos     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))));
   8021      1.1  christos     CPU (h_cbit) = opval;
   8022  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8023      1.1  christos   }
   8024      1.1  christos   {
   8025      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8026      1.1  christos     CPU (h_nbit) = opval;
   8027  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8028      1.1  christos   }
   8029      1.1  christos   {
   8030      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8031      1.1  christos     CPU (h_zbit) = opval;
   8032  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8033      1.1  christos   }
   8034      1.1  christos   {
   8035      1.1  christos     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)));
   8036      1.1  christos     CPU (h_vbit) = opval;
   8037  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8038      1.1  christos   }
   8039      1.1  christos {
   8040      1.1  christos   {
   8041      1.1  christos     BI opval = 0;
   8042      1.1  christos     CPU (h_xbit) = opval;
   8043  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8044      1.1  christos   }
   8045      1.1  christos   {
   8046      1.1  christos     BI opval = 0;
   8047      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8048  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8049      1.1  christos   }
   8050      1.1  christos }
   8051      1.1  christos }
   8052      1.1  christos }
   8053      1.1  christos 
   8054      1.1  christos #undef FLD
   8055      1.1  christos }
   8056      1.1  christos   NEXT (vpc);
   8057      1.1  christos 
   8058      1.1  christos   CASE (sem, INSN_SUBU_W_R) : /* subu.w $Rs,$Rd */
   8059      1.1  christos {
   8060      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8061      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8062      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8063      1.1  christos   int UNUSED written = 0;
   8064      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8065      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8066      1.1  christos 
   8067      1.1  christos {
   8068      1.1  christos   SI tmp_tmpopd;
   8069      1.1  christos   SI tmp_tmpops;
   8070      1.1  christos   BI tmp_carry;
   8071      1.1  christos   SI tmp_newval;
   8072      1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   8073      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8074      1.1  christos   tmp_carry = CPU (h_cbit);
   8075      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8076      1.1  christos   {
   8077      1.1  christos     SI opval = tmp_newval;
   8078      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8079  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8080      1.1  christos   }
   8081      1.1  christos {
   8082      1.1  christos   {
   8083      1.1  christos     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))));
   8084      1.1  christos     CPU (h_cbit) = opval;
   8085  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8086      1.1  christos   }
   8087      1.1  christos   {
   8088      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8089      1.1  christos     CPU (h_nbit) = opval;
   8090  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8091      1.1  christos   }
   8092      1.1  christos   {
   8093      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8094      1.1  christos     CPU (h_zbit) = opval;
   8095  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8096      1.1  christos   }
   8097      1.1  christos   {
   8098      1.1  christos     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)));
   8099      1.1  christos     CPU (h_vbit) = opval;
   8100  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8101      1.1  christos   }
   8102      1.1  christos {
   8103      1.1  christos   {
   8104      1.1  christos     BI opval = 0;
   8105      1.1  christos     CPU (h_xbit) = opval;
   8106  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8107      1.1  christos   }
   8108      1.1  christos   {
   8109      1.1  christos     BI opval = 0;
   8110      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8111  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8112      1.1  christos   }
   8113      1.1  christos }
   8114      1.1  christos }
   8115      1.1  christos }
   8116      1.1  christos 
   8117      1.1  christos #undef FLD
   8118      1.1  christos }
   8119      1.1  christos   NEXT (vpc);
   8120      1.1  christos 
   8121      1.1  christos   CASE (sem, INSN_SUBU_M_B_M) : /* subu-m.b [${Rs}${inc}],$Rd */
   8122      1.1  christos {
   8123      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8124      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8125      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   8126      1.1  christos   int UNUSED written = 0;
   8127      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8128      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8129      1.1  christos 
   8130      1.1  christos {
   8131      1.1  christos   SI tmp_tmpopd;
   8132      1.1  christos   SI tmp_tmpops;
   8133      1.1  christos   BI tmp_carry;
   8134      1.1  christos   SI tmp_newval;
   8135      1.1  christos   tmp_tmpops = ZEXTQISI (({   SI tmp_addr;
   8136      1.1  christos   QI tmp_tmp_mem;
   8137      1.1  christos   BI tmp_postinc;
   8138      1.1  christos   tmp_postinc = FLD (f_memmode);
   8139      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   8140      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   8141      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   8142      1.1  christos {
   8143      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   8144      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   8145      1.1  christos }
   8146      1.1  christos   {
   8147      1.1  christos     SI opval = tmp_addr;
   8148      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8149      1.1  christos     written |= (1 << 11);
   8150  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8151      1.1  christos   }
   8152      1.1  christos }
   8153      1.1  christos }
   8154      1.1  christos ; tmp_tmp_mem; }));
   8155      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8156      1.1  christos   tmp_carry = CPU (h_cbit);
   8157      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8158      1.1  christos   {
   8159      1.1  christos     SI opval = tmp_newval;
   8160      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   8161  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8162      1.1  christos   }
   8163      1.1  christos {
   8164      1.1  christos   {
   8165      1.1  christos     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))));
   8166      1.1  christos     CPU (h_cbit) = opval;
   8167  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8168      1.1  christos   }
   8169      1.1  christos   {
   8170      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8171      1.1  christos     CPU (h_nbit) = opval;
   8172  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8173      1.1  christos   }
   8174      1.1  christos   {
   8175      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8176      1.1  christos     CPU (h_zbit) = opval;
   8177  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8178      1.1  christos   }
   8179      1.1  christos   {
   8180      1.1  christos     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)));
   8181      1.1  christos     CPU (h_vbit) = opval;
   8182  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8183      1.1  christos   }
   8184      1.1  christos {
   8185      1.1  christos   {
   8186      1.1  christos     BI opval = 0;
   8187      1.1  christos     CPU (h_xbit) = opval;
   8188  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8189      1.1  christos   }
   8190      1.1  christos   {
   8191      1.1  christos     BI opval = 0;
   8192      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8193  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8194      1.1  christos   }
   8195      1.1  christos }
   8196      1.1  christos }
   8197      1.1  christos }
   8198      1.1  christos 
   8199      1.1  christos   abuf->written = written;
   8200      1.1  christos #undef FLD
   8201      1.1  christos }
   8202      1.1  christos   NEXT (vpc);
   8203      1.1  christos 
   8204      1.1  christos   CASE (sem, INSN_SUBU_M_W_M) : /* subu-m.w [${Rs}${inc}],$Rd */
   8205      1.1  christos {
   8206      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8207      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8208      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   8209      1.1  christos   int UNUSED written = 0;
   8210      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8211      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8212      1.1  christos 
   8213      1.1  christos {
   8214      1.1  christos   SI tmp_tmpopd;
   8215      1.1  christos   SI tmp_tmpops;
   8216      1.1  christos   BI tmp_carry;
   8217      1.1  christos   SI tmp_newval;
   8218      1.1  christos   tmp_tmpops = ZEXTHISI (({   SI tmp_addr;
   8219      1.1  christos   HI tmp_tmp_mem;
   8220      1.1  christos   BI tmp_postinc;
   8221      1.1  christos   tmp_postinc = FLD (f_memmode);
   8222      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   8223      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   8224      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   8225      1.1  christos {
   8226      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   8227      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   8228      1.1  christos }
   8229      1.1  christos   {
   8230      1.1  christos     SI opval = tmp_addr;
   8231      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8232      1.1  christos     written |= (1 << 11);
   8233  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8234      1.1  christos   }
   8235      1.1  christos }
   8236      1.1  christos }
   8237      1.1  christos ; tmp_tmp_mem; }));
   8238      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8239      1.1  christos   tmp_carry = CPU (h_cbit);
   8240      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8241      1.1  christos   {
   8242      1.1  christos     SI opval = tmp_newval;
   8243      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   8244  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8245      1.1  christos   }
   8246      1.1  christos {
   8247      1.1  christos   {
   8248      1.1  christos     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))));
   8249      1.1  christos     CPU (h_cbit) = opval;
   8250  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8251      1.1  christos   }
   8252      1.1  christos   {
   8253      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8254      1.1  christos     CPU (h_nbit) = opval;
   8255  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8256      1.1  christos   }
   8257      1.1  christos   {
   8258      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8259      1.1  christos     CPU (h_zbit) = opval;
   8260  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8261      1.1  christos   }
   8262      1.1  christos   {
   8263      1.1  christos     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)));
   8264      1.1  christos     CPU (h_vbit) = opval;
   8265  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8266      1.1  christos   }
   8267      1.1  christos {
   8268      1.1  christos   {
   8269      1.1  christos     BI opval = 0;
   8270      1.1  christos     CPU (h_xbit) = opval;
   8271  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8272      1.1  christos   }
   8273      1.1  christos   {
   8274      1.1  christos     BI opval = 0;
   8275      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8276  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8277      1.1  christos   }
   8278      1.1  christos }
   8279      1.1  christos }
   8280      1.1  christos }
   8281      1.1  christos 
   8282      1.1  christos   abuf->written = written;
   8283      1.1  christos #undef FLD
   8284      1.1  christos }
   8285      1.1  christos   NEXT (vpc);
   8286      1.1  christos 
   8287      1.1  christos   CASE (sem, INSN_SUBUCBR) : /* [${Rs}${inc}],$Rd */
   8288      1.1  christos {
   8289      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8290      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8291      1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   8292      1.1  christos   int UNUSED written = 0;
   8293      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8294      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   8295      1.1  christos 
   8296      1.1  christos {
   8297      1.1  christos   SI tmp_tmpopd;
   8298      1.1  christos   SI tmp_tmpops;
   8299      1.1  christos   BI tmp_carry;
   8300      1.1  christos   SI tmp_newval;
   8301      1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   8302      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8303      1.1  christos   tmp_carry = CPU (h_cbit);
   8304      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8305      1.1  christos   {
   8306      1.1  christos     SI opval = tmp_newval;
   8307      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8308  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8309      1.1  christos   }
   8310      1.1  christos {
   8311      1.1  christos   {
   8312      1.1  christos     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))));
   8313      1.1  christos     CPU (h_cbit) = opval;
   8314  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8315      1.1  christos   }
   8316      1.1  christos   {
   8317      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8318      1.1  christos     CPU (h_nbit) = opval;
   8319  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8320      1.1  christos   }
   8321      1.1  christos   {
   8322      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8323      1.1  christos     CPU (h_zbit) = opval;
   8324  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8325      1.1  christos   }
   8326      1.1  christos   {
   8327      1.1  christos     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)));
   8328      1.1  christos     CPU (h_vbit) = opval;
   8329  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8330      1.1  christos   }
   8331      1.1  christos {
   8332      1.1  christos   {
   8333      1.1  christos     BI opval = 0;
   8334      1.1  christos     CPU (h_xbit) = opval;
   8335  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8336      1.1  christos   }
   8337      1.1  christos   {
   8338      1.1  christos     BI opval = 0;
   8339      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8340  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8341      1.1  christos   }
   8342      1.1  christos }
   8343      1.1  christos }
   8344      1.1  christos }
   8345      1.1  christos 
   8346      1.1  christos #undef FLD
   8347      1.1  christos }
   8348      1.1  christos   NEXT (vpc);
   8349      1.1  christos 
   8350      1.1  christos   CASE (sem, INSN_SUBUCWR) : /* [${Rs}${inc}],$Rd */
   8351      1.1  christos {
   8352      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8353      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8354      1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   8355      1.1  christos   int UNUSED written = 0;
   8356      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8357      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   8358      1.1  christos 
   8359      1.1  christos {
   8360      1.1  christos   SI tmp_tmpopd;
   8361      1.1  christos   SI tmp_tmpops;
   8362      1.1  christos   BI tmp_carry;
   8363      1.1  christos   SI tmp_newval;
   8364      1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   8365      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8366      1.1  christos   tmp_carry = CPU (h_cbit);
   8367      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8368      1.1  christos   {
   8369      1.1  christos     SI opval = tmp_newval;
   8370      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8371  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8372      1.1  christos   }
   8373      1.1  christos {
   8374      1.1  christos   {
   8375      1.1  christos     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))));
   8376      1.1  christos     CPU (h_cbit) = opval;
   8377  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8378      1.1  christos   }
   8379      1.1  christos   {
   8380      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8381      1.1  christos     CPU (h_nbit) = opval;
   8382  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8383      1.1  christos   }
   8384      1.1  christos   {
   8385      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8386      1.1  christos     CPU (h_zbit) = opval;
   8387  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8388      1.1  christos   }
   8389      1.1  christos   {
   8390      1.1  christos     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)));
   8391      1.1  christos     CPU (h_vbit) = opval;
   8392  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8393      1.1  christos   }
   8394      1.1  christos {
   8395      1.1  christos   {
   8396      1.1  christos     BI opval = 0;
   8397      1.1  christos     CPU (h_xbit) = opval;
   8398  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8399      1.1  christos   }
   8400      1.1  christos   {
   8401      1.1  christos     BI opval = 0;
   8402      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8403  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8404      1.1  christos   }
   8405      1.1  christos }
   8406      1.1  christos }
   8407      1.1  christos }
   8408      1.1  christos 
   8409      1.1  christos #undef FLD
   8410      1.1  christos }
   8411      1.1  christos   NEXT (vpc);
   8412      1.1  christos 
   8413      1.1  christos   CASE (sem, INSN_ADDC_R) : /* addc $Rs,$Rd */
   8414      1.1  christos {
   8415      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8416      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8417      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8418      1.1  christos   int UNUSED written = 0;
   8419      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8420      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8421      1.1  christos 
   8422      1.1  christos {
   8423      1.1  christos CPU (h_xbit) = 1;
   8424      1.1  christos {
   8425      1.1  christos   SI tmp_tmpopd;
   8426      1.1  christos   SI tmp_tmpops;
   8427      1.1  christos   BI tmp_carry;
   8428      1.1  christos   SI tmp_newval;
   8429      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8430      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8431      1.1  christos   tmp_carry = CPU (h_cbit);
   8432      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8433      1.1  christos   {
   8434      1.1  christos     SI opval = tmp_newval;
   8435      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8436  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8437      1.1  christos   }
   8438      1.1  christos {
   8439      1.1  christos   {
   8440      1.1  christos     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))));
   8441      1.1  christos     CPU (h_cbit) = opval;
   8442  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8443      1.1  christos   }
   8444      1.1  christos   {
   8445      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8446      1.1  christos     CPU (h_nbit) = opval;
   8447  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8448      1.1  christos   }
   8449      1.1  christos   {
   8450      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8451      1.1  christos     CPU (h_zbit) = opval;
   8452  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8453      1.1  christos   }
   8454      1.1  christos   {
   8455      1.1  christos     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)));
   8456      1.1  christos     CPU (h_vbit) = opval;
   8457  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8458      1.1  christos   }
   8459      1.1  christos {
   8460      1.1  christos   {
   8461      1.1  christos     BI opval = 0;
   8462      1.1  christos     CPU (h_xbit) = opval;
   8463  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8464      1.1  christos   }
   8465      1.1  christos   {
   8466      1.1  christos     BI opval = 0;
   8467      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8468  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8469      1.1  christos   }
   8470      1.1  christos }
   8471      1.1  christos }
   8472      1.1  christos }
   8473      1.1  christos }
   8474      1.1  christos 
   8475      1.1  christos #undef FLD
   8476      1.1  christos }
   8477      1.1  christos   NEXT (vpc);
   8478      1.1  christos 
   8479      1.1  christos   CASE (sem, INSN_ADDC_M) : /* addc [${Rs}${inc}],${Rd} */
   8480      1.1  christos {
   8481      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8482      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8483      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8484      1.1  christos   int UNUSED written = 0;
   8485      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8486      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8487      1.1  christos 
   8488      1.1  christos {
   8489      1.1  christos CPU (h_xbit) = 1;
   8490      1.1  christos {
   8491      1.1  christos   SI tmp_tmpopd;
   8492      1.1  christos   SI tmp_tmpops;
   8493      1.1  christos   BI tmp_carry;
   8494      1.1  christos   SI tmp_newval;
   8495      1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   8496      1.1  christos   SI tmp_tmp_mem;
   8497      1.1  christos   BI tmp_postinc;
   8498      1.1  christos   tmp_postinc = FLD (f_memmode);
   8499      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   8500      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   8501      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   8502      1.1  christos {
   8503      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   8504      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   8505      1.1  christos }
   8506      1.1  christos   {
   8507      1.1  christos     SI opval = tmp_addr;
   8508      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8509      1.1  christos     written |= (1 << 10);
   8510  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8511      1.1  christos   }
   8512      1.1  christos }
   8513      1.1  christos }
   8514      1.1  christos ; tmp_tmp_mem; });
   8515      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8516      1.1  christos   tmp_carry = CPU (h_cbit);
   8517      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8518      1.1  christos   {
   8519      1.1  christos     SI opval = tmp_newval;
   8520      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8521  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8522      1.1  christos   }
   8523      1.1  christos {
   8524      1.1  christos   {
   8525      1.1  christos     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))));
   8526      1.1  christos     CPU (h_cbit) = opval;
   8527  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8528      1.1  christos   }
   8529      1.1  christos   {
   8530      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8531      1.1  christos     CPU (h_nbit) = opval;
   8532  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8533      1.1  christos   }
   8534      1.1  christos   {
   8535      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8536      1.1  christos     CPU (h_zbit) = opval;
   8537  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8538      1.1  christos   }
   8539      1.1  christos   {
   8540      1.1  christos     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)));
   8541      1.1  christos     CPU (h_vbit) = opval;
   8542  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8543      1.1  christos   }
   8544      1.1  christos {
   8545      1.1  christos   {
   8546      1.1  christos     BI opval = 0;
   8547      1.1  christos     CPU (h_xbit) = opval;
   8548  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8549      1.1  christos   }
   8550      1.1  christos   {
   8551      1.1  christos     BI opval = 0;
   8552      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8553  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8554      1.1  christos   }
   8555      1.1  christos }
   8556      1.1  christos }
   8557      1.1  christos }
   8558      1.1  christos }
   8559      1.1  christos 
   8560      1.1  christos   abuf->written = written;
   8561      1.1  christos #undef FLD
   8562      1.1  christos }
   8563      1.1  christos   NEXT (vpc);
   8564      1.1  christos 
   8565      1.1  christos   CASE (sem, INSN_ADDC_C) : /* addc ${const32},${Rd} */
   8566      1.1  christos {
   8567      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8568      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8569      1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   8570      1.1  christos   int UNUSED written = 0;
   8571      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8572      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   8573      1.1  christos 
   8574      1.1  christos {
   8575      1.1  christos CPU (h_xbit) = 1;
   8576      1.1  christos {
   8577      1.1  christos   SI tmp_tmpopd;
   8578      1.1  christos   SI tmp_tmpops;
   8579      1.1  christos   BI tmp_carry;
   8580      1.1  christos   SI tmp_newval;
   8581      1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   8582      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8583      1.1  christos   tmp_carry = CPU (h_cbit);
   8584      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8585      1.1  christos   {
   8586      1.1  christos     SI opval = tmp_newval;
   8587      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8588  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8589      1.1  christos   }
   8590      1.1  christos {
   8591      1.1  christos   {
   8592      1.1  christos     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))));
   8593      1.1  christos     CPU (h_cbit) = opval;
   8594  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8595      1.1  christos   }
   8596      1.1  christos   {
   8597      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8598      1.1  christos     CPU (h_nbit) = opval;
   8599  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8600      1.1  christos   }
   8601      1.1  christos   {
   8602      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8603      1.1  christos     CPU (h_zbit) = opval;
   8604  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8605      1.1  christos   }
   8606      1.1  christos   {
   8607      1.1  christos     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)));
   8608      1.1  christos     CPU (h_vbit) = opval;
   8609  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8610      1.1  christos   }
   8611      1.1  christos {
   8612      1.1  christos   {
   8613      1.1  christos     BI opval = 0;
   8614      1.1  christos     CPU (h_xbit) = opval;
   8615  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8616      1.1  christos   }
   8617      1.1  christos   {
   8618      1.1  christos     BI opval = 0;
   8619      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8620  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8621      1.1  christos   }
   8622      1.1  christos }
   8623      1.1  christos }
   8624      1.1  christos }
   8625      1.1  christos }
   8626      1.1  christos 
   8627      1.1  christos #undef FLD
   8628      1.1  christos }
   8629      1.1  christos   NEXT (vpc);
   8630      1.1  christos 
   8631      1.1  christos   CASE (sem, INSN_LAPC_D) : /* lapc.d ${const32-pcrel},${Rd} */
   8632      1.1  christos {
   8633      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8634      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8635      1.1  christos #define FLD(f) abuf->fields.sfmt_lapc_d.f
   8636      1.1  christos   int UNUSED written = 0;
   8637      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8638      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   8639      1.1  christos 
   8640      1.1  christos {
   8641      1.1  christos   {
   8642      1.1  christos     SI opval = FLD (i_const32_pcrel);
   8643      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8644  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8645      1.1  christos   }
   8646      1.1  christos {
   8647      1.1  christos   {
   8648      1.1  christos     BI opval = 0;
   8649      1.1  christos     CPU (h_xbit) = opval;
   8650  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8651      1.1  christos   }
   8652      1.1  christos   {
   8653      1.1  christos     BI opval = 0;
   8654      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8655  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8656      1.1  christos   }
   8657      1.1  christos }
   8658      1.1  christos }
   8659      1.1  christos 
   8660      1.1  christos #undef FLD
   8661      1.1  christos }
   8662      1.1  christos   NEXT (vpc);
   8663      1.1  christos 
   8664      1.1  christos   CASE (sem, INSN_LAPCQ) : /* lapcq ${qo},${Rd} */
   8665      1.1  christos {
   8666      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8667      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8668      1.1  christos #define FLD(f) abuf->fields.sfmt_lapcq.f
   8669      1.1  christos   int UNUSED written = 0;
   8670      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8671      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8672      1.1  christos 
   8673      1.1  christos {
   8674      1.1  christos   {
   8675      1.1  christos     SI opval = FLD (i_qo);
   8676      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8677  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8678      1.1  christos   }
   8679      1.1  christos {
   8680      1.1  christos   {
   8681      1.1  christos     BI opval = 0;
   8682      1.1  christos     CPU (h_xbit) = opval;
   8683  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8684      1.1  christos   }
   8685      1.1  christos   {
   8686      1.1  christos     BI opval = 0;
   8687      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8688  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8689      1.1  christos   }
   8690      1.1  christos }
   8691      1.1  christos }
   8692      1.1  christos 
   8693      1.1  christos #undef FLD
   8694      1.1  christos }
   8695      1.1  christos   NEXT (vpc);
   8696      1.1  christos 
   8697      1.1  christos   CASE (sem, INSN_ADDI_B_R) : /* addi.b ${Rs-dfield}.m,${Rd-sfield} */
   8698      1.1  christos {
   8699      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8700      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8701      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8702      1.1  christos   int UNUSED written = 0;
   8703      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8704      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8705      1.1  christos 
   8706      1.1  christos {
   8707      1.1  christos   {
   8708      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
   8709      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8710  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8711      1.1  christos   }
   8712      1.1  christos {
   8713      1.1  christos   {
   8714      1.1  christos     BI opval = 0;
   8715      1.1  christos     CPU (h_xbit) = opval;
   8716  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8717      1.1  christos   }
   8718      1.1  christos   {
   8719      1.1  christos     BI opval = 0;
   8720      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8721  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8722      1.1  christos   }
   8723      1.1  christos }
   8724      1.1  christos }
   8725      1.1  christos 
   8726      1.1  christos #undef FLD
   8727      1.1  christos }
   8728      1.1  christos   NEXT (vpc);
   8729      1.1  christos 
   8730      1.1  christos   CASE (sem, INSN_ADDI_W_R) : /* addi.w ${Rs-dfield}.m,${Rd-sfield} */
   8731      1.1  christos {
   8732      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8733      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8734      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8735      1.1  christos   int UNUSED written = 0;
   8736      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8737      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8738      1.1  christos 
   8739      1.1  christos {
   8740      1.1  christos   {
   8741      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
   8742      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8743  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8744      1.1  christos   }
   8745      1.1  christos {
   8746      1.1  christos   {
   8747      1.1  christos     BI opval = 0;
   8748      1.1  christos     CPU (h_xbit) = opval;
   8749  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8750      1.1  christos   }
   8751      1.1  christos   {
   8752      1.1  christos     BI opval = 0;
   8753      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8754  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8755      1.1  christos   }
   8756      1.1  christos }
   8757      1.1  christos }
   8758      1.1  christos 
   8759      1.1  christos #undef FLD
   8760      1.1  christos }
   8761      1.1  christos   NEXT (vpc);
   8762      1.1  christos 
   8763      1.1  christos   CASE (sem, INSN_ADDI_D_R) : /* addi.d ${Rs-dfield}.m,${Rd-sfield} */
   8764      1.1  christos {
   8765      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8766      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8767      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8768      1.1  christos   int UNUSED written = 0;
   8769      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8770      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8771      1.1  christos 
   8772      1.1  christos {
   8773      1.1  christos   {
   8774      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
   8775      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8776  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8777      1.1  christos   }
   8778      1.1  christos {
   8779      1.1  christos   {
   8780      1.1  christos     BI opval = 0;
   8781      1.1  christos     CPU (h_xbit) = opval;
   8782  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8783      1.1  christos   }
   8784      1.1  christos   {
   8785      1.1  christos     BI opval = 0;
   8786      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8787  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8788      1.1  christos   }
   8789      1.1  christos }
   8790      1.1  christos }
   8791      1.1  christos 
   8792      1.1  christos #undef FLD
   8793      1.1  christos }
   8794      1.1  christos   NEXT (vpc);
   8795      1.1  christos 
   8796      1.1  christos   CASE (sem, INSN_NEG_B_R) : /* neg.b $Rs,$Rd */
   8797      1.1  christos {
   8798      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8799      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8800      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8801      1.1  christos   int UNUSED written = 0;
   8802      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8803      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8804      1.1  christos 
   8805      1.1  christos {
   8806      1.1  christos   QI tmp_tmpopd;
   8807      1.1  christos   QI tmp_tmpops;
   8808      1.1  christos   BI tmp_carry;
   8809      1.1  christos   QI tmp_newval;
   8810      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8811      1.1  christos   tmp_tmpopd = 0;
   8812      1.1  christos   tmp_carry = CPU (h_cbit);
   8813      1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8814      1.1  christos {
   8815      1.1  christos   SI tmp_oldregval;
   8816      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   8817      1.1  christos   {
   8818      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   8819      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8820  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8821      1.1  christos   }
   8822      1.1  christos }
   8823      1.1  christos {
   8824      1.1  christos   {
   8825      1.1  christos     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))));
   8826      1.1  christos     CPU (h_cbit) = opval;
   8827  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8828      1.1  christos   }
   8829      1.1  christos   {
   8830      1.1  christos     BI opval = LTQI (tmp_newval, 0);
   8831      1.1  christos     CPU (h_nbit) = opval;
   8832  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8833      1.1  christos   }
   8834      1.1  christos   {
   8835      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8836      1.1  christos     CPU (h_zbit) = opval;
   8837  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8838      1.1  christos   }
   8839      1.1  christos   {
   8840      1.1  christos     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)));
   8841      1.1  christos     CPU (h_vbit) = opval;
   8842  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8843      1.1  christos   }
   8844      1.1  christos {
   8845      1.1  christos   {
   8846      1.1  christos     BI opval = 0;
   8847      1.1  christos     CPU (h_xbit) = opval;
   8848  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8849      1.1  christos   }
   8850      1.1  christos   {
   8851      1.1  christos     BI opval = 0;
   8852      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8853  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8854      1.1  christos   }
   8855      1.1  christos }
   8856      1.1  christos }
   8857      1.1  christos }
   8858      1.1  christos 
   8859      1.1  christos #undef FLD
   8860      1.1  christos }
   8861      1.1  christos   NEXT (vpc);
   8862      1.1  christos 
   8863      1.1  christos   CASE (sem, INSN_NEG_W_R) : /* neg.w $Rs,$Rd */
   8864      1.1  christos {
   8865      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8866      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8867      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8868      1.1  christos   int UNUSED written = 0;
   8869      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8870      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8871      1.1  christos 
   8872      1.1  christos {
   8873      1.1  christos   HI tmp_tmpopd;
   8874      1.1  christos   HI tmp_tmpops;
   8875      1.1  christos   BI tmp_carry;
   8876      1.1  christos   HI tmp_newval;
   8877      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8878      1.1  christos   tmp_tmpopd = 0;
   8879      1.1  christos   tmp_carry = CPU (h_cbit);
   8880      1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8881      1.1  christos {
   8882      1.1  christos   SI tmp_oldregval;
   8883      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   8884      1.1  christos   {
   8885      1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   8886      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8887  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8888      1.1  christos   }
   8889      1.1  christos }
   8890      1.1  christos {
   8891      1.1  christos   {
   8892      1.1  christos     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))));
   8893      1.1  christos     CPU (h_cbit) = opval;
   8894  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8895      1.1  christos   }
   8896      1.1  christos   {
   8897      1.1  christos     BI opval = LTHI (tmp_newval, 0);
   8898      1.1  christos     CPU (h_nbit) = opval;
   8899  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8900      1.1  christos   }
   8901      1.1  christos   {
   8902      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8903      1.1  christos     CPU (h_zbit) = opval;
   8904  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8905      1.1  christos   }
   8906      1.1  christos   {
   8907      1.1  christos     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)));
   8908      1.1  christos     CPU (h_vbit) = opval;
   8909  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8910      1.1  christos   }
   8911      1.1  christos {
   8912      1.1  christos   {
   8913      1.1  christos     BI opval = 0;
   8914      1.1  christos     CPU (h_xbit) = opval;
   8915  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8916      1.1  christos   }
   8917      1.1  christos   {
   8918      1.1  christos     BI opval = 0;
   8919      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8920  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8921      1.1  christos   }
   8922      1.1  christos }
   8923      1.1  christos }
   8924      1.1  christos }
   8925      1.1  christos 
   8926      1.1  christos #undef FLD
   8927      1.1  christos }
   8928      1.1  christos   NEXT (vpc);
   8929      1.1  christos 
   8930      1.1  christos   CASE (sem, INSN_NEG_D_R) : /* neg.d $Rs,$Rd */
   8931      1.1  christos {
   8932      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8933      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8934      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8935      1.1  christos   int UNUSED written = 0;
   8936      1.1  christos   IADDR UNUSED pc = abuf->addr;
   8937      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8938      1.1  christos 
   8939      1.1  christos {
   8940      1.1  christos   SI tmp_tmpopd;
   8941      1.1  christos   SI tmp_tmpops;
   8942      1.1  christos   BI tmp_carry;
   8943      1.1  christos   SI tmp_newval;
   8944      1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8945      1.1  christos   tmp_tmpopd = 0;
   8946      1.1  christos   tmp_carry = CPU (h_cbit);
   8947      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8948      1.1  christos   {
   8949      1.1  christos     SI opval = tmp_newval;
   8950      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8951  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8952      1.1  christos   }
   8953      1.1  christos {
   8954      1.1  christos   {
   8955      1.1  christos     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))));
   8956      1.1  christos     CPU (h_cbit) = opval;
   8957  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8958      1.1  christos   }
   8959      1.1  christos   {
   8960      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8961      1.1  christos     CPU (h_nbit) = opval;
   8962  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8963      1.1  christos   }
   8964      1.1  christos   {
   8965      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8966      1.1  christos     CPU (h_zbit) = opval;
   8967  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8968      1.1  christos   }
   8969      1.1  christos   {
   8970      1.1  christos     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)));
   8971      1.1  christos     CPU (h_vbit) = opval;
   8972  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8973      1.1  christos   }
   8974      1.1  christos {
   8975      1.1  christos   {
   8976      1.1  christos     BI opval = 0;
   8977      1.1  christos     CPU (h_xbit) = opval;
   8978  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8979      1.1  christos   }
   8980      1.1  christos   {
   8981      1.1  christos     BI opval = 0;
   8982      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8983  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8984      1.1  christos   }
   8985      1.1  christos }
   8986      1.1  christos }
   8987      1.1  christos }
   8988      1.1  christos 
   8989      1.1  christos #undef FLD
   8990      1.1  christos }
   8991      1.1  christos   NEXT (vpc);
   8992      1.1  christos 
   8993      1.1  christos   CASE (sem, INSN_TEST_M_B_M) : /* test-m.b [${Rs}${inc}] */
   8994      1.1  christos {
   8995      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8996      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8997      1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   8998      1.1  christos   int UNUSED written = 0;
   8999      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9000      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9001      1.1  christos 
   9002      1.1  christos {
   9003      1.1  christos   QI tmp_tmpd;
   9004      1.1  christos   tmp_tmpd = ({   SI tmp_addr;
   9005      1.1  christos   QI tmp_tmp_mem;
   9006      1.1  christos   BI tmp_postinc;
   9007      1.1  christos   tmp_postinc = FLD (f_memmode);
   9008      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9009      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   9010      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   9011      1.1  christos {
   9012      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9013      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   9014      1.1  christos }
   9015      1.1  christos   {
   9016      1.1  christos     SI opval = tmp_addr;
   9017      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9018      1.1  christos     written |= (1 << 8);
   9019  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9020      1.1  christos   }
   9021      1.1  christos }
   9022      1.1  christos }
   9023      1.1  christos ; tmp_tmp_mem; });
   9024      1.1  christos {
   9025      1.1  christos   QI tmp_tmpopd;
   9026      1.1  christos   QI tmp_tmpops;
   9027      1.1  christos   BI tmp_carry;
   9028      1.1  christos   QI tmp_newval;
   9029      1.1  christos   tmp_tmpops = 0;
   9030      1.1  christos   tmp_tmpopd = tmp_tmpd;
   9031      1.1  christos   tmp_carry = CPU (h_cbit);
   9032      1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9033      1.1  christos ((void) 0); /*nop*/
   9034      1.1  christos {
   9035      1.1  christos   {
   9036      1.1  christos     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))));
   9037      1.1  christos     CPU (h_cbit) = opval;
   9038  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9039      1.1  christos   }
   9040      1.1  christos   {
   9041      1.1  christos     BI opval = LTQI (tmp_newval, 0);
   9042      1.1  christos     CPU (h_nbit) = opval;
   9043  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9044      1.1  christos   }
   9045      1.1  christos   {
   9046      1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9047      1.1  christos     CPU (h_zbit) = opval;
   9048  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9049      1.1  christos   }
   9050      1.1  christos   {
   9051      1.1  christos     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)));
   9052      1.1  christos     CPU (h_vbit) = opval;
   9053  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9054      1.1  christos   }
   9055      1.1  christos {
   9056      1.1  christos   {
   9057      1.1  christos     BI opval = 0;
   9058      1.1  christos     CPU (h_xbit) = opval;
   9059  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9060      1.1  christos   }
   9061      1.1  christos   {
   9062      1.1  christos     BI opval = 0;
   9063      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9064  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9065      1.1  christos   }
   9066      1.1  christos }
   9067      1.1  christos }
   9068      1.1  christos }
   9069      1.1  christos }
   9070      1.1  christos 
   9071      1.1  christos   abuf->written = written;
   9072      1.1  christos #undef FLD
   9073      1.1  christos }
   9074      1.1  christos   NEXT (vpc);
   9075      1.1  christos 
   9076      1.1  christos   CASE (sem, INSN_TEST_M_W_M) : /* test-m.w [${Rs}${inc}] */
   9077      1.1  christos {
   9078      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9079      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9080      1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   9081      1.1  christos   int UNUSED written = 0;
   9082      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9083      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9084      1.1  christos 
   9085      1.1  christos {
   9086      1.1  christos   HI tmp_tmpd;
   9087      1.1  christos   tmp_tmpd = ({   SI tmp_addr;
   9088      1.1  christos   HI tmp_tmp_mem;
   9089      1.1  christos   BI tmp_postinc;
   9090      1.1  christos   tmp_postinc = FLD (f_memmode);
   9091      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9092      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   9093      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   9094      1.1  christos {
   9095      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9096      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   9097      1.1  christos }
   9098      1.1  christos   {
   9099      1.1  christos     SI opval = tmp_addr;
   9100      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9101      1.1  christos     written |= (1 << 8);
   9102  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9103      1.1  christos   }
   9104      1.1  christos }
   9105      1.1  christos }
   9106      1.1  christos ; tmp_tmp_mem; });
   9107      1.1  christos {
   9108      1.1  christos   HI tmp_tmpopd;
   9109      1.1  christos   HI tmp_tmpops;
   9110      1.1  christos   BI tmp_carry;
   9111      1.1  christos   HI tmp_newval;
   9112      1.1  christos   tmp_tmpops = 0;
   9113      1.1  christos   tmp_tmpopd = tmp_tmpd;
   9114      1.1  christos   tmp_carry = CPU (h_cbit);
   9115      1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9116      1.1  christos ((void) 0); /*nop*/
   9117      1.1  christos {
   9118      1.1  christos   {
   9119      1.1  christos     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))));
   9120      1.1  christos     CPU (h_cbit) = opval;
   9121  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9122      1.1  christos   }
   9123      1.1  christos   {
   9124      1.1  christos     BI opval = LTHI (tmp_newval, 0);
   9125      1.1  christos     CPU (h_nbit) = opval;
   9126  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9127      1.1  christos   }
   9128      1.1  christos   {
   9129      1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9130      1.1  christos     CPU (h_zbit) = opval;
   9131  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9132      1.1  christos   }
   9133      1.1  christos   {
   9134      1.1  christos     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)));
   9135      1.1  christos     CPU (h_vbit) = opval;
   9136  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9137      1.1  christos   }
   9138      1.1  christos {
   9139      1.1  christos   {
   9140      1.1  christos     BI opval = 0;
   9141      1.1  christos     CPU (h_xbit) = opval;
   9142  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9143      1.1  christos   }
   9144      1.1  christos   {
   9145      1.1  christos     BI opval = 0;
   9146      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9147  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9148      1.1  christos   }
   9149      1.1  christos }
   9150      1.1  christos }
   9151      1.1  christos }
   9152      1.1  christos }
   9153      1.1  christos 
   9154      1.1  christos   abuf->written = written;
   9155      1.1  christos #undef FLD
   9156      1.1  christos }
   9157      1.1  christos   NEXT (vpc);
   9158      1.1  christos 
   9159      1.1  christos   CASE (sem, INSN_TEST_M_D_M) : /* test-m.d [${Rs}${inc}] */
   9160      1.1  christos {
   9161      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9162      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9163      1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   9164      1.1  christos   int UNUSED written = 0;
   9165      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9166      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9167      1.1  christos 
   9168      1.1  christos {
   9169      1.1  christos   SI tmp_tmpd;
   9170      1.1  christos   tmp_tmpd = ({   SI tmp_addr;
   9171      1.1  christos   SI tmp_tmp_mem;
   9172      1.1  christos   BI tmp_postinc;
   9173      1.1  christos   tmp_postinc = FLD (f_memmode);
   9174      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9175      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   9176      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   9177      1.1  christos {
   9178      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9179      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   9180      1.1  christos }
   9181      1.1  christos   {
   9182      1.1  christos     SI opval = tmp_addr;
   9183      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9184      1.1  christos     written |= (1 << 8);
   9185  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9186      1.1  christos   }
   9187      1.1  christos }
   9188      1.1  christos }
   9189      1.1  christos ; tmp_tmp_mem; });
   9190      1.1  christos {
   9191      1.1  christos   SI tmp_tmpopd;
   9192      1.1  christos   SI tmp_tmpops;
   9193      1.1  christos   BI tmp_carry;
   9194      1.1  christos   SI tmp_newval;
   9195      1.1  christos   tmp_tmpops = 0;
   9196      1.1  christos   tmp_tmpopd = tmp_tmpd;
   9197      1.1  christos   tmp_carry = CPU (h_cbit);
   9198      1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9199      1.1  christos ((void) 0); /*nop*/
   9200      1.1  christos {
   9201      1.1  christos   {
   9202      1.1  christos     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))));
   9203      1.1  christos     CPU (h_cbit) = opval;
   9204  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9205      1.1  christos   }
   9206      1.1  christos   {
   9207      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   9208      1.1  christos     CPU (h_nbit) = opval;
   9209  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9210      1.1  christos   }
   9211      1.1  christos   {
   9212      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9213      1.1  christos     CPU (h_zbit) = opval;
   9214  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9215      1.1  christos   }
   9216      1.1  christos   {
   9217      1.1  christos     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)));
   9218      1.1  christos     CPU (h_vbit) = opval;
   9219  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9220      1.1  christos   }
   9221      1.1  christos {
   9222      1.1  christos   {
   9223      1.1  christos     BI opval = 0;
   9224      1.1  christos     CPU (h_xbit) = opval;
   9225  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9226      1.1  christos   }
   9227      1.1  christos   {
   9228      1.1  christos     BI opval = 0;
   9229      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9230  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9231      1.1  christos   }
   9232      1.1  christos }
   9233      1.1  christos }
   9234      1.1  christos }
   9235      1.1  christos }
   9236      1.1  christos 
   9237      1.1  christos   abuf->written = written;
   9238      1.1  christos #undef FLD
   9239      1.1  christos }
   9240      1.1  christos   NEXT (vpc);
   9241      1.1  christos 
   9242      1.1  christos   CASE (sem, INSN_MOVE_R_M_B_M) : /* move-r-m.b ${Rs-dfield},[${Rd-sfield}${inc}] */
   9243      1.1  christos {
   9244      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9245      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9246      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   9247      1.1  christos   int UNUSED written = 0;
   9248      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9249      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9250      1.1  christos 
   9251      1.1  christos {
   9252      1.1  christos   QI tmp_tmpd;
   9253      1.1  christos   tmp_tmpd = GET_H_GR (FLD (f_operand2));
   9254      1.1  christos {
   9255      1.1  christos   SI tmp_addr;
   9256      1.1  christos   BI tmp_postinc;
   9257      1.1  christos   tmp_postinc = FLD (f_memmode);
   9258      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9259      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   9260      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   9261      1.1  christos {
   9262      1.1  christos   {
   9263      1.1  christos     QI opval = tmp_tmpd;
   9264      1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   9265      1.1  christos     written |= (1 << 10);
   9266  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9267      1.1  christos   }
   9268      1.1  christos   {
   9269      1.1  christos     BI opval = CPU (h_pbit);
   9270      1.1  christos     CPU (h_cbit) = opval;
   9271      1.1  christos     written |= (1 << 9);
   9272  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9273      1.1  christos   }
   9274      1.1  christos }
   9275      1.1  christos } else {
   9276      1.1  christos   {
   9277      1.1  christos     BI opval = 1;
   9278      1.1  christos     CPU (h_cbit) = opval;
   9279      1.1  christos     written |= (1 << 9);
   9280  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9281      1.1  christos   }
   9282      1.1  christos }
   9283      1.1  christos } else {
   9284      1.1  christos   {
   9285      1.1  christos     QI opval = tmp_tmpd;
   9286      1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   9287      1.1  christos     written |= (1 << 10);
   9288  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9289      1.1  christos   }
   9290      1.1  christos }
   9291      1.1  christos if (NEBI (tmp_postinc, 0)) {
   9292      1.1  christos {
   9293      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9294      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   9295      1.1  christos }
   9296      1.1  christos   {
   9297      1.1  christos     SI opval = tmp_addr;
   9298      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9299      1.1  christos     written |= (1 << 8);
   9300  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9301      1.1  christos   }
   9302      1.1  christos }
   9303      1.1  christos }
   9304      1.1  christos }
   9305      1.1  christos {
   9306      1.1  christos   {
   9307      1.1  christos     BI opval = 0;
   9308      1.1  christos     CPU (h_xbit) = opval;
   9309  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9310      1.1  christos   }
   9311      1.1  christos   {
   9312      1.1  christos     BI opval = 0;
   9313      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9314  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9315      1.1  christos   }
   9316      1.1  christos }
   9317      1.1  christos }
   9318      1.1  christos 
   9319      1.1  christos   abuf->written = written;
   9320      1.1  christos #undef FLD
   9321      1.1  christos }
   9322      1.1  christos   NEXT (vpc);
   9323      1.1  christos 
   9324      1.1  christos   CASE (sem, INSN_MOVE_R_M_W_M) : /* move-r-m.w ${Rs-dfield},[${Rd-sfield}${inc}] */
   9325      1.1  christos {
   9326      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9327      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9328      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   9329      1.1  christos   int UNUSED written = 0;
   9330      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9331      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9332      1.1  christos 
   9333      1.1  christos {
   9334      1.1  christos   HI tmp_tmpd;
   9335      1.1  christos   tmp_tmpd = GET_H_GR (FLD (f_operand2));
   9336      1.1  christos {
   9337      1.1  christos   SI tmp_addr;
   9338      1.1  christos   BI tmp_postinc;
   9339      1.1  christos   tmp_postinc = FLD (f_memmode);
   9340      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9341      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   9342      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   9343      1.1  christos {
   9344      1.1  christos   {
   9345      1.1  christos     HI opval = tmp_tmpd;
   9346      1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   9347      1.1  christos     written |= (1 << 10);
   9348  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9349      1.1  christos   }
   9350      1.1  christos   {
   9351      1.1  christos     BI opval = CPU (h_pbit);
   9352      1.1  christos     CPU (h_cbit) = opval;
   9353      1.1  christos     written |= (1 << 9);
   9354  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9355      1.1  christos   }
   9356      1.1  christos }
   9357      1.1  christos } else {
   9358      1.1  christos   {
   9359      1.1  christos     BI opval = 1;
   9360      1.1  christos     CPU (h_cbit) = opval;
   9361      1.1  christos     written |= (1 << 9);
   9362  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9363      1.1  christos   }
   9364      1.1  christos }
   9365      1.1  christos } else {
   9366      1.1  christos   {
   9367      1.1  christos     HI opval = tmp_tmpd;
   9368      1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   9369      1.1  christos     written |= (1 << 10);
   9370  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9371      1.1  christos   }
   9372      1.1  christos }
   9373      1.1  christos if (NEBI (tmp_postinc, 0)) {
   9374      1.1  christos {
   9375      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9376      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   9377      1.1  christos }
   9378      1.1  christos   {
   9379      1.1  christos     SI opval = tmp_addr;
   9380      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9381      1.1  christos     written |= (1 << 8);
   9382  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9383      1.1  christos   }
   9384      1.1  christos }
   9385      1.1  christos }
   9386      1.1  christos }
   9387      1.1  christos {
   9388      1.1  christos   {
   9389      1.1  christos     BI opval = 0;
   9390      1.1  christos     CPU (h_xbit) = opval;
   9391  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9392      1.1  christos   }
   9393      1.1  christos   {
   9394      1.1  christos     BI opval = 0;
   9395      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9396  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9397      1.1  christos   }
   9398      1.1  christos }
   9399      1.1  christos }
   9400      1.1  christos 
   9401      1.1  christos   abuf->written = written;
   9402      1.1  christos #undef FLD
   9403      1.1  christos }
   9404      1.1  christos   NEXT (vpc);
   9405      1.1  christos 
   9406      1.1  christos   CASE (sem, INSN_MOVE_R_M_D_M) : /* move-r-m.d ${Rs-dfield},[${Rd-sfield}${inc}] */
   9407      1.1  christos {
   9408      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9409      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9410      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   9411      1.1  christos   int UNUSED written = 0;
   9412      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9413      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9414      1.1  christos 
   9415      1.1  christos {
   9416      1.1  christos   SI tmp_tmpd;
   9417      1.1  christos   tmp_tmpd = GET_H_GR (FLD (f_operand2));
   9418      1.1  christos {
   9419      1.1  christos   SI tmp_addr;
   9420      1.1  christos   BI tmp_postinc;
   9421      1.1  christos   tmp_postinc = FLD (f_memmode);
   9422      1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9423      1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   9424      1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   9425      1.1  christos {
   9426      1.1  christos   {
   9427      1.1  christos     SI opval = tmp_tmpd;
   9428      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   9429      1.1  christos     written |= (1 << 10);
   9430  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9431      1.1  christos   }
   9432      1.1  christos   {
   9433      1.1  christos     BI opval = CPU (h_pbit);
   9434      1.1  christos     CPU (h_cbit) = opval;
   9435      1.1  christos     written |= (1 << 9);
   9436  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9437      1.1  christos   }
   9438      1.1  christos }
   9439      1.1  christos } else {
   9440      1.1  christos   {
   9441      1.1  christos     BI opval = 1;
   9442      1.1  christos     CPU (h_cbit) = opval;
   9443      1.1  christos     written |= (1 << 9);
   9444  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9445      1.1  christos   }
   9446      1.1  christos }
   9447      1.1  christos } else {
   9448      1.1  christos   {
   9449      1.1  christos     SI opval = tmp_tmpd;
   9450      1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   9451      1.1  christos     written |= (1 << 10);
   9452  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9453      1.1  christos   }
   9454      1.1  christos }
   9455      1.1  christos if (NEBI (tmp_postinc, 0)) {
   9456      1.1  christos {
   9457      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9458      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   9459      1.1  christos }
   9460      1.1  christos   {
   9461      1.1  christos     SI opval = tmp_addr;
   9462      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9463      1.1  christos     written |= (1 << 8);
   9464  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9465      1.1  christos   }
   9466      1.1  christos }
   9467      1.1  christos }
   9468      1.1  christos }
   9469      1.1  christos {
   9470      1.1  christos   {
   9471      1.1  christos     BI opval = 0;
   9472      1.1  christos     CPU (h_xbit) = opval;
   9473  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9474      1.1  christos   }
   9475      1.1  christos   {
   9476      1.1  christos     BI opval = 0;
   9477      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9478  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9479      1.1  christos   }
   9480      1.1  christos }
   9481      1.1  christos }
   9482      1.1  christos 
   9483      1.1  christos   abuf->written = written;
   9484      1.1  christos #undef FLD
   9485      1.1  christos }
   9486      1.1  christos   NEXT (vpc);
   9487      1.1  christos 
   9488      1.1  christos   CASE (sem, INSN_MULS_B) : /* muls.b $Rs,$Rd */
   9489      1.1  christos {
   9490      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9491      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9492      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9493      1.1  christos   int UNUSED written = 0;
   9494      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9495      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9496      1.1  christos 
   9497      1.1  christos {
   9498      1.1  christos   DI tmp_src1;
   9499      1.1  christos   DI tmp_src2;
   9500      1.1  christos   DI tmp_tmpr;
   9501      1.1  christos   tmp_src1 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   9502      1.1  christos   tmp_src2 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
   9503      1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9504      1.1  christos   {
   9505      1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9506      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9507  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9508      1.1  christos   }
   9509      1.1  christos   {
   9510      1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9511      1.1  christos     SET_H_SR (((UINT) 7), opval);
   9512  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9513      1.1  christos   }
   9514      1.1  christos {
   9515      1.1  christos   {
   9516      1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9517      1.1  christos     CPU (h_cbit) = opval;
   9518  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9519      1.1  christos   }
   9520      1.1  christos   {
   9521      1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9522      1.1  christos     CPU (h_nbit) = opval;
   9523  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9524      1.1  christos   }
   9525      1.1  christos   {
   9526      1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9527      1.1  christos     CPU (h_zbit) = opval;
   9528  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9529      1.1  christos   }
   9530      1.1  christos   {
   9531      1.1  christos     BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
   9532      1.1  christos     CPU (h_vbit) = opval;
   9533  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9534      1.1  christos   }
   9535      1.1  christos {
   9536      1.1  christos   {
   9537      1.1  christos     BI opval = 0;
   9538      1.1  christos     CPU (h_xbit) = opval;
   9539  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9540      1.1  christos   }
   9541      1.1  christos   {
   9542      1.1  christos     BI opval = 0;
   9543      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9544  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9545      1.1  christos   }
   9546      1.1  christos }
   9547      1.1  christos }
   9548      1.1  christos }
   9549      1.1  christos 
   9550      1.1  christos #undef FLD
   9551      1.1  christos }
   9552      1.1  christos   NEXT (vpc);
   9553      1.1  christos 
   9554      1.1  christos   CASE (sem, INSN_MULS_W) : /* muls.w $Rs,$Rd */
   9555      1.1  christos {
   9556      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9557      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9558      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9559      1.1  christos   int UNUSED written = 0;
   9560      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9561      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9562      1.1  christos 
   9563      1.1  christos {
   9564      1.1  christos   DI tmp_src1;
   9565      1.1  christos   DI tmp_src2;
   9566      1.1  christos   DI tmp_tmpr;
   9567      1.1  christos   tmp_src1 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   9568      1.1  christos   tmp_src2 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
   9569      1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9570      1.1  christos   {
   9571      1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9572      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9573  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9574      1.1  christos   }
   9575      1.1  christos   {
   9576      1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9577      1.1  christos     SET_H_SR (((UINT) 7), opval);
   9578  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9579      1.1  christos   }
   9580      1.1  christos {
   9581      1.1  christos   {
   9582      1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9583      1.1  christos     CPU (h_cbit) = opval;
   9584  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9585      1.1  christos   }
   9586      1.1  christos   {
   9587      1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9588      1.1  christos     CPU (h_nbit) = opval;
   9589  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9590      1.1  christos   }
   9591      1.1  christos   {
   9592      1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9593      1.1  christos     CPU (h_zbit) = opval;
   9594  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9595      1.1  christos   }
   9596      1.1  christos   {
   9597      1.1  christos     BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
   9598      1.1  christos     CPU (h_vbit) = opval;
   9599  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9600      1.1  christos   }
   9601      1.1  christos {
   9602      1.1  christos   {
   9603      1.1  christos     BI opval = 0;
   9604      1.1  christos     CPU (h_xbit) = opval;
   9605  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9606      1.1  christos   }
   9607      1.1  christos   {
   9608      1.1  christos     BI opval = 0;
   9609      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9610  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9611      1.1  christos   }
   9612      1.1  christos }
   9613      1.1  christos }
   9614      1.1  christos }
   9615      1.1  christos 
   9616      1.1  christos #undef FLD
   9617      1.1  christos }
   9618      1.1  christos   NEXT (vpc);
   9619      1.1  christos 
   9620      1.1  christos   CASE (sem, INSN_MULS_D) : /* muls.d $Rs,$Rd */
   9621      1.1  christos {
   9622      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9623      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9624      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9625      1.1  christos   int UNUSED written = 0;
   9626      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9627      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9628      1.1  christos 
   9629      1.1  christos {
   9630      1.1  christos   DI tmp_src1;
   9631      1.1  christos   DI tmp_src2;
   9632      1.1  christos   DI tmp_tmpr;
   9633      1.1  christos   tmp_src1 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
   9634      1.1  christos   tmp_src2 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
   9635      1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9636      1.1  christos   {
   9637      1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9638      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9639  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9640      1.1  christos   }
   9641      1.1  christos   {
   9642      1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9643      1.1  christos     SET_H_SR (((UINT) 7), opval);
   9644  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9645      1.1  christos   }
   9646      1.1  christos {
   9647      1.1  christos   {
   9648      1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9649      1.1  christos     CPU (h_cbit) = opval;
   9650  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9651      1.1  christos   }
   9652      1.1  christos   {
   9653      1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9654      1.1  christos     CPU (h_nbit) = opval;
   9655  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9656      1.1  christos   }
   9657      1.1  christos   {
   9658      1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9659      1.1  christos     CPU (h_zbit) = opval;
   9660  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9661      1.1  christos   }
   9662      1.1  christos   {
   9663      1.1  christos     BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
   9664      1.1  christos     CPU (h_vbit) = opval;
   9665  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9666      1.1  christos   }
   9667      1.1  christos {
   9668      1.1  christos   {
   9669      1.1  christos     BI opval = 0;
   9670      1.1  christos     CPU (h_xbit) = opval;
   9671  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9672      1.1  christos   }
   9673      1.1  christos   {
   9674      1.1  christos     BI opval = 0;
   9675      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9676  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9677      1.1  christos   }
   9678      1.1  christos }
   9679      1.1  christos }
   9680      1.1  christos }
   9681      1.1  christos 
   9682      1.1  christos #undef FLD
   9683      1.1  christos }
   9684      1.1  christos   NEXT (vpc);
   9685      1.1  christos 
   9686      1.1  christos   CASE (sem, INSN_MULU_B) : /* mulu.b $Rs,$Rd */
   9687      1.1  christos {
   9688      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9689      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9690      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9691      1.1  christos   int UNUSED written = 0;
   9692      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9693      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9694      1.1  christos 
   9695      1.1  christos {
   9696      1.1  christos   DI tmp_src1;
   9697      1.1  christos   DI tmp_src2;
   9698      1.1  christos   DI tmp_tmpr;
   9699      1.1  christos   tmp_src1 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   9700      1.1  christos   tmp_src2 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
   9701      1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9702      1.1  christos   {
   9703      1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9704      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9705  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9706      1.1  christos   }
   9707      1.1  christos   {
   9708      1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9709      1.1  christos     SET_H_SR (((UINT) 7), opval);
   9710  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9711      1.1  christos   }
   9712      1.1  christos {
   9713      1.1  christos   {
   9714      1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9715      1.1  christos     CPU (h_cbit) = opval;
   9716  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9717      1.1  christos   }
   9718      1.1  christos   {
   9719      1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9720      1.1  christos     CPU (h_nbit) = opval;
   9721  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9722      1.1  christos   }
   9723      1.1  christos   {
   9724      1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9725      1.1  christos     CPU (h_zbit) = opval;
   9726  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9727      1.1  christos   }
   9728      1.1  christos   {
   9729      1.1  christos     BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
   9730      1.1  christos     CPU (h_vbit) = opval;
   9731  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9732      1.1  christos   }
   9733      1.1  christos {
   9734      1.1  christos   {
   9735      1.1  christos     BI opval = 0;
   9736      1.1  christos     CPU (h_xbit) = opval;
   9737  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9738      1.1  christos   }
   9739      1.1  christos   {
   9740      1.1  christos     BI opval = 0;
   9741      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9742  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9743      1.1  christos   }
   9744      1.1  christos }
   9745      1.1  christos }
   9746      1.1  christos }
   9747      1.1  christos 
   9748      1.1  christos #undef FLD
   9749      1.1  christos }
   9750      1.1  christos   NEXT (vpc);
   9751      1.1  christos 
   9752      1.1  christos   CASE (sem, INSN_MULU_W) : /* mulu.w $Rs,$Rd */
   9753      1.1  christos {
   9754      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9755      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9756      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9757      1.1  christos   int UNUSED written = 0;
   9758      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9759      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9760      1.1  christos 
   9761      1.1  christos {
   9762      1.1  christos   DI tmp_src1;
   9763      1.1  christos   DI tmp_src2;
   9764      1.1  christos   DI tmp_tmpr;
   9765      1.1  christos   tmp_src1 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   9766      1.1  christos   tmp_src2 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
   9767      1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9768      1.1  christos   {
   9769      1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9770      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9771  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9772      1.1  christos   }
   9773      1.1  christos   {
   9774      1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9775      1.1  christos     SET_H_SR (((UINT) 7), opval);
   9776  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9777      1.1  christos   }
   9778      1.1  christos {
   9779      1.1  christos   {
   9780      1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9781      1.1  christos     CPU (h_cbit) = opval;
   9782  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9783      1.1  christos   }
   9784      1.1  christos   {
   9785      1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9786      1.1  christos     CPU (h_nbit) = opval;
   9787  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9788      1.1  christos   }
   9789      1.1  christos   {
   9790      1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9791      1.1  christos     CPU (h_zbit) = opval;
   9792  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9793      1.1  christos   }
   9794      1.1  christos   {
   9795      1.1  christos     BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
   9796      1.1  christos     CPU (h_vbit) = opval;
   9797  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9798      1.1  christos   }
   9799      1.1  christos {
   9800      1.1  christos   {
   9801      1.1  christos     BI opval = 0;
   9802      1.1  christos     CPU (h_xbit) = opval;
   9803  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9804      1.1  christos   }
   9805      1.1  christos   {
   9806      1.1  christos     BI opval = 0;
   9807      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9808  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9809      1.1  christos   }
   9810      1.1  christos }
   9811      1.1  christos }
   9812      1.1  christos }
   9813      1.1  christos 
   9814      1.1  christos #undef FLD
   9815      1.1  christos }
   9816      1.1  christos   NEXT (vpc);
   9817      1.1  christos 
   9818      1.1  christos   CASE (sem, INSN_MULU_D) : /* mulu.d $Rs,$Rd */
   9819      1.1  christos {
   9820      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9821      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9822      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9823      1.1  christos   int UNUSED written = 0;
   9824      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9825      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9826      1.1  christos 
   9827      1.1  christos {
   9828      1.1  christos   DI tmp_src1;
   9829      1.1  christos   DI tmp_src2;
   9830      1.1  christos   DI tmp_tmpr;
   9831      1.1  christos   tmp_src1 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
   9832      1.1  christos   tmp_src2 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
   9833      1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9834      1.1  christos   {
   9835      1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9836      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9837  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9838      1.1  christos   }
   9839      1.1  christos   {
   9840      1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9841      1.1  christos     SET_H_SR (((UINT) 7), opval);
   9842  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9843      1.1  christos   }
   9844      1.1  christos {
   9845      1.1  christos   {
   9846      1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9847      1.1  christos     CPU (h_cbit) = opval;
   9848  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9849      1.1  christos   }
   9850      1.1  christos   {
   9851      1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9852      1.1  christos     CPU (h_nbit) = opval;
   9853  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9854      1.1  christos   }
   9855      1.1  christos   {
   9856      1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9857      1.1  christos     CPU (h_zbit) = opval;
   9858  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9859      1.1  christos   }
   9860      1.1  christos   {
   9861      1.1  christos     BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
   9862      1.1  christos     CPU (h_vbit) = opval;
   9863  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9864      1.1  christos   }
   9865      1.1  christos {
   9866      1.1  christos   {
   9867      1.1  christos     BI opval = 0;
   9868      1.1  christos     CPU (h_xbit) = opval;
   9869  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9870      1.1  christos   }
   9871      1.1  christos   {
   9872      1.1  christos     BI opval = 0;
   9873      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9874  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9875      1.1  christos   }
   9876      1.1  christos }
   9877      1.1  christos }
   9878      1.1  christos }
   9879      1.1  christos 
   9880      1.1  christos #undef FLD
   9881      1.1  christos }
   9882      1.1  christos   NEXT (vpc);
   9883      1.1  christos 
   9884      1.1  christos   CASE (sem, INSN_MCP) : /* mcp $Ps,$Rd */
   9885      1.1  christos {
   9886      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9887      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9888      1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   9889      1.1  christos   int UNUSED written = 0;
   9890      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9891      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9892      1.1  christos 
   9893      1.1  christos {
   9894      1.1  christos CPU (h_xbit) = 1;
   9895      1.1  christos CPU (h_zbit) = 1;
   9896      1.1  christos {
   9897      1.1  christos   SI tmp_tmpopd;
   9898      1.1  christos   SI tmp_tmpops;
   9899      1.1  christos   BI tmp_carry;
   9900      1.1  christos   SI tmp_newval;
   9901      1.1  christos   tmp_tmpops = GET_H_SR (FLD (f_operand2));
   9902      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand1));
   9903      1.1  christos   tmp_carry = CPU (h_rbit);
   9904      1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9905      1.1  christos   {
   9906      1.1  christos     SI opval = tmp_newval;
   9907      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9908  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9909      1.1  christos   }
   9910      1.1  christos {
   9911      1.1  christos   {
   9912      1.1  christos     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))));
   9913      1.1  christos     CPU (h_rbit) = opval;
   9914  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "rbit", 'x', opval);
   9915      1.1  christos   }
   9916      1.1  christos   {
   9917      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   9918      1.1  christos     CPU (h_nbit) = opval;
   9919  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9920      1.1  christos   }
   9921      1.1  christos   {
   9922      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9923      1.1  christos     CPU (h_zbit) = opval;
   9924  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9925      1.1  christos   }
   9926      1.1  christos   {
   9927      1.1  christos     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)));
   9928      1.1  christos     CPU (h_vbit) = opval;
   9929  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9930      1.1  christos   }
   9931      1.1  christos {
   9932      1.1  christos   {
   9933      1.1  christos     BI opval = 0;
   9934      1.1  christos     CPU (h_xbit) = opval;
   9935  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9936      1.1  christos   }
   9937      1.1  christos   {
   9938      1.1  christos     BI opval = 0;
   9939      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9940  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9941      1.1  christos   }
   9942      1.1  christos }
   9943      1.1  christos }
   9944      1.1  christos }
   9945      1.1  christos }
   9946      1.1  christos 
   9947      1.1  christos #undef FLD
   9948      1.1  christos }
   9949      1.1  christos   NEXT (vpc);
   9950      1.1  christos 
   9951      1.1  christos   CASE (sem, INSN_DSTEP) : /* dstep $Rs,$Rd */
   9952      1.1  christos {
   9953      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9954      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9955      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9956      1.1  christos   int UNUSED written = 0;
   9957      1.1  christos   IADDR UNUSED pc = abuf->addr;
   9958      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9959      1.1  christos 
   9960      1.1  christos {
   9961      1.1  christos   SI tmp_tmp;
   9962      1.1  christos   SI tmp_tmps;
   9963      1.1  christos   SI tmp_tmpd;
   9964      1.1  christos   tmp_tmps = GET_H_GR (FLD (f_operand1));
   9965      1.1  christos   tmp_tmp = SLLSI (GET_H_GR (FLD (f_operand2)), 1);
   9966      1.1  christos   tmp_tmpd = ((GEUSI (tmp_tmp, tmp_tmps)) ? (SUBSI (tmp_tmp, tmp_tmps)) : (tmp_tmp));
   9967      1.1  christos   {
   9968      1.1  christos     SI opval = tmp_tmpd;
   9969      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9970  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9971      1.1  christos   }
   9972      1.1  christos {
   9973      1.1  christos   {
   9974      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   9975      1.1  christos     CPU (h_nbit) = opval;
   9976  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9977      1.1  christos   }
   9978      1.1  christos   {
   9979      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   9980      1.1  christos     CPU (h_zbit) = opval;
   9981  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9982      1.1  christos   }
   9983      1.1  christos SET_H_CBIT_MOVE (0);
   9984      1.1  christos SET_H_VBIT_MOVE (0);
   9985      1.1  christos {
   9986      1.1  christos   {
   9987      1.1  christos     BI opval = 0;
   9988      1.1  christos     CPU (h_xbit) = opval;
   9989  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9990      1.1  christos   }
   9991      1.1  christos   {
   9992      1.1  christos     BI opval = 0;
   9993      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9994  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9995      1.1  christos   }
   9996      1.1  christos }
   9997      1.1  christos }
   9998      1.1  christos }
   9999      1.1  christos 
   10000      1.1  christos #undef FLD
   10001      1.1  christos }
   10002      1.1  christos   NEXT (vpc);
   10003      1.1  christos 
   10004      1.1  christos   CASE (sem, INSN_ABS) : /* abs $Rs,$Rd */
   10005      1.1  christos {
   10006      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10007      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10008      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   10009      1.1  christos   int UNUSED written = 0;
   10010      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10011      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10012      1.1  christos 
   10013      1.1  christos {
   10014      1.1  christos   SI tmp_tmpd;
   10015      1.1  christos   tmp_tmpd = ABSSI (GET_H_GR (FLD (f_operand1)));
   10016      1.1  christos   {
   10017      1.1  christos     SI opval = tmp_tmpd;
   10018      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10019  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10020      1.1  christos   }
   10021      1.1  christos {
   10022      1.1  christos   {
   10023      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10024      1.1  christos     CPU (h_nbit) = opval;
   10025  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10026      1.1  christos   }
   10027      1.1  christos   {
   10028      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10029      1.1  christos     CPU (h_zbit) = opval;
   10030  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10031      1.1  christos   }
   10032      1.1  christos SET_H_CBIT_MOVE (0);
   10033      1.1  christos SET_H_VBIT_MOVE (0);
   10034      1.1  christos {
   10035      1.1  christos   {
   10036      1.1  christos     BI opval = 0;
   10037      1.1  christos     CPU (h_xbit) = opval;
   10038  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10039      1.1  christos   }
   10040      1.1  christos   {
   10041      1.1  christos     BI opval = 0;
   10042      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10043  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10044      1.1  christos   }
   10045      1.1  christos }
   10046      1.1  christos }
   10047      1.1  christos }
   10048      1.1  christos 
   10049      1.1  christos #undef FLD
   10050      1.1  christos }
   10051      1.1  christos   NEXT (vpc);
   10052      1.1  christos 
   10053      1.1  christos   CASE (sem, INSN_AND_B_R) : /* and.b $Rs,$Rd */
   10054      1.1  christos {
   10055      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10056      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10057      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10058      1.1  christos   int UNUSED written = 0;
   10059      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10060      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10061      1.1  christos 
   10062      1.1  christos {
   10063      1.1  christos   QI tmp_tmpd;
   10064      1.1  christos   tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10065      1.1  christos {
   10066      1.1  christos   SI tmp_oldregval;
   10067      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10068      1.1  christos   {
   10069      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10070      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10071  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10072      1.1  christos   }
   10073      1.1  christos }
   10074      1.1  christos {
   10075      1.1  christos   {
   10076      1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10077      1.1  christos     CPU (h_nbit) = opval;
   10078  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10079      1.1  christos   }
   10080      1.1  christos   {
   10081      1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10082      1.1  christos     CPU (h_zbit) = opval;
   10083  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10084      1.1  christos   }
   10085      1.1  christos SET_H_CBIT_MOVE (0);
   10086      1.1  christos SET_H_VBIT_MOVE (0);
   10087      1.1  christos {
   10088      1.1  christos   {
   10089      1.1  christos     BI opval = 0;
   10090      1.1  christos     CPU (h_xbit) = opval;
   10091  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10092      1.1  christos   }
   10093      1.1  christos   {
   10094      1.1  christos     BI opval = 0;
   10095      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10096  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10097      1.1  christos   }
   10098      1.1  christos }
   10099      1.1  christos }
   10100      1.1  christos }
   10101      1.1  christos 
   10102      1.1  christos #undef FLD
   10103      1.1  christos }
   10104      1.1  christos   NEXT (vpc);
   10105      1.1  christos 
   10106      1.1  christos   CASE (sem, INSN_AND_W_R) : /* and.w $Rs,$Rd */
   10107      1.1  christos {
   10108      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10109      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10110      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10111      1.1  christos   int UNUSED written = 0;
   10112      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10113      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10114      1.1  christos 
   10115      1.1  christos {
   10116      1.1  christos   HI tmp_tmpd;
   10117      1.1  christos   tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10118      1.1  christos {
   10119      1.1  christos   SI tmp_oldregval;
   10120      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10121      1.1  christos   {
   10122      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10123      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10124  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10125      1.1  christos   }
   10126      1.1  christos }
   10127      1.1  christos {
   10128      1.1  christos   {
   10129      1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10130      1.1  christos     CPU (h_nbit) = opval;
   10131  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10132      1.1  christos   }
   10133      1.1  christos   {
   10134      1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10135      1.1  christos     CPU (h_zbit) = opval;
   10136  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10137      1.1  christos   }
   10138      1.1  christos SET_H_CBIT_MOVE (0);
   10139      1.1  christos SET_H_VBIT_MOVE (0);
   10140      1.1  christos {
   10141      1.1  christos   {
   10142      1.1  christos     BI opval = 0;
   10143      1.1  christos     CPU (h_xbit) = opval;
   10144  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10145      1.1  christos   }
   10146      1.1  christos   {
   10147      1.1  christos     BI opval = 0;
   10148      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10149  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10150      1.1  christos   }
   10151      1.1  christos }
   10152      1.1  christos }
   10153      1.1  christos }
   10154      1.1  christos 
   10155      1.1  christos #undef FLD
   10156      1.1  christos }
   10157      1.1  christos   NEXT (vpc);
   10158      1.1  christos 
   10159      1.1  christos   CASE (sem, INSN_AND_D_R) : /* and.d $Rs,$Rd */
   10160      1.1  christos {
   10161      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10162      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10163      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10164      1.1  christos   int UNUSED written = 0;
   10165      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10166      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10167      1.1  christos 
   10168      1.1  christos {
   10169      1.1  christos   SI tmp_tmpd;
   10170      1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10171      1.1  christos   {
   10172      1.1  christos     SI opval = tmp_tmpd;
   10173      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10174  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10175      1.1  christos   }
   10176      1.1  christos {
   10177      1.1  christos   {
   10178      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10179      1.1  christos     CPU (h_nbit) = opval;
   10180  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10181      1.1  christos   }
   10182      1.1  christos   {
   10183      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10184      1.1  christos     CPU (h_zbit) = opval;
   10185  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10186      1.1  christos   }
   10187      1.1  christos SET_H_CBIT_MOVE (0);
   10188      1.1  christos SET_H_VBIT_MOVE (0);
   10189      1.1  christos {
   10190      1.1  christos   {
   10191      1.1  christos     BI opval = 0;
   10192      1.1  christos     CPU (h_xbit) = opval;
   10193  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10194      1.1  christos   }
   10195      1.1  christos   {
   10196      1.1  christos     BI opval = 0;
   10197      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10198  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10199      1.1  christos   }
   10200      1.1  christos }
   10201      1.1  christos }
   10202      1.1  christos }
   10203      1.1  christos 
   10204      1.1  christos #undef FLD
   10205      1.1  christos }
   10206      1.1  christos   NEXT (vpc);
   10207      1.1  christos 
   10208      1.1  christos   CASE (sem, INSN_AND_M_B_M) : /* and-m.b [${Rs}${inc}],${Rd} */
   10209      1.1  christos {
   10210      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10211      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10212      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10213      1.1  christos   int UNUSED written = 0;
   10214      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10215      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10216      1.1  christos 
   10217      1.1  christos {
   10218      1.1  christos   QI tmp_tmpd;
   10219      1.1  christos   tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10220      1.1  christos   QI tmp_tmp_mem;
   10221      1.1  christos   BI tmp_postinc;
   10222      1.1  christos   tmp_postinc = FLD (f_memmode);
   10223      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10224      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   10225      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10226      1.1  christos {
   10227      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10228      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   10229      1.1  christos }
   10230      1.1  christos   {
   10231      1.1  christos     SI opval = tmp_addr;
   10232      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10233      1.1  christos     written |= (1 << 11);
   10234  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10235      1.1  christos   }
   10236      1.1  christos }
   10237      1.1  christos }
   10238      1.1  christos ; tmp_tmp_mem; }));
   10239      1.1  christos {
   10240      1.1  christos   SI tmp_oldregval;
   10241      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   10242      1.1  christos   {
   10243      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10244      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10245  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10246      1.1  christos   }
   10247      1.1  christos }
   10248      1.1  christos {
   10249      1.1  christos   {
   10250      1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10251      1.1  christos     CPU (h_nbit) = opval;
   10252  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10253      1.1  christos   }
   10254      1.1  christos   {
   10255      1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10256      1.1  christos     CPU (h_zbit) = opval;
   10257  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10258      1.1  christos   }
   10259      1.1  christos SET_H_CBIT_MOVE (0);
   10260      1.1  christos SET_H_VBIT_MOVE (0);
   10261      1.1  christos {
   10262      1.1  christos   {
   10263      1.1  christos     BI opval = 0;
   10264      1.1  christos     CPU (h_xbit) = opval;
   10265  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10266      1.1  christos   }
   10267      1.1  christos   {
   10268      1.1  christos     BI opval = 0;
   10269      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10270  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10271      1.1  christos   }
   10272      1.1  christos }
   10273      1.1  christos }
   10274      1.1  christos }
   10275      1.1  christos 
   10276      1.1  christos   abuf->written = written;
   10277      1.1  christos #undef FLD
   10278      1.1  christos }
   10279      1.1  christos   NEXT (vpc);
   10280      1.1  christos 
   10281      1.1  christos   CASE (sem, INSN_AND_M_W_M) : /* and-m.w [${Rs}${inc}],${Rd} */
   10282      1.1  christos {
   10283      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10284      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10285      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10286      1.1  christos   int UNUSED written = 0;
   10287      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10288      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10289      1.1  christos 
   10290      1.1  christos {
   10291      1.1  christos   HI tmp_tmpd;
   10292      1.1  christos   tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10293      1.1  christos   HI tmp_tmp_mem;
   10294      1.1  christos   BI tmp_postinc;
   10295      1.1  christos   tmp_postinc = FLD (f_memmode);
   10296      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10297      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   10298      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10299      1.1  christos {
   10300      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10301      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   10302      1.1  christos }
   10303      1.1  christos   {
   10304      1.1  christos     SI opval = tmp_addr;
   10305      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10306      1.1  christos     written |= (1 << 11);
   10307  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10308      1.1  christos   }
   10309      1.1  christos }
   10310      1.1  christos }
   10311      1.1  christos ; tmp_tmp_mem; }));
   10312      1.1  christos {
   10313      1.1  christos   SI tmp_oldregval;
   10314      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   10315      1.1  christos   {
   10316      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10317      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10318  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10319      1.1  christos   }
   10320      1.1  christos }
   10321      1.1  christos {
   10322      1.1  christos   {
   10323      1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10324      1.1  christos     CPU (h_nbit) = opval;
   10325  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10326      1.1  christos   }
   10327      1.1  christos   {
   10328      1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10329      1.1  christos     CPU (h_zbit) = opval;
   10330  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10331      1.1  christos   }
   10332      1.1  christos SET_H_CBIT_MOVE (0);
   10333      1.1  christos SET_H_VBIT_MOVE (0);
   10334      1.1  christos {
   10335      1.1  christos   {
   10336      1.1  christos     BI opval = 0;
   10337      1.1  christos     CPU (h_xbit) = opval;
   10338  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10339      1.1  christos   }
   10340      1.1  christos   {
   10341      1.1  christos     BI opval = 0;
   10342      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10343  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10344      1.1  christos   }
   10345      1.1  christos }
   10346      1.1  christos }
   10347      1.1  christos }
   10348      1.1  christos 
   10349      1.1  christos   abuf->written = written;
   10350      1.1  christos #undef FLD
   10351      1.1  christos }
   10352      1.1  christos   NEXT (vpc);
   10353      1.1  christos 
   10354      1.1  christos   CASE (sem, INSN_AND_M_D_M) : /* and-m.d [${Rs}${inc}],${Rd} */
   10355      1.1  christos {
   10356      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10357      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10358      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10359      1.1  christos   int UNUSED written = 0;
   10360      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10361      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10362      1.1  christos 
   10363      1.1  christos {
   10364      1.1  christos   SI tmp_tmpd;
   10365      1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10366      1.1  christos   SI tmp_tmp_mem;
   10367      1.1  christos   BI tmp_postinc;
   10368      1.1  christos   tmp_postinc = FLD (f_memmode);
   10369      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10370      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   10371      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10372      1.1  christos {
   10373      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10374      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   10375      1.1  christos }
   10376      1.1  christos   {
   10377      1.1  christos     SI opval = tmp_addr;
   10378      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10379      1.1  christos     written |= (1 << 10);
   10380  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10381      1.1  christos   }
   10382      1.1  christos }
   10383      1.1  christos }
   10384      1.1  christos ; tmp_tmp_mem; }));
   10385      1.1  christos   {
   10386      1.1  christos     SI opval = tmp_tmpd;
   10387      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10388  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10389      1.1  christos   }
   10390      1.1  christos {
   10391      1.1  christos   {
   10392      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10393      1.1  christos     CPU (h_nbit) = opval;
   10394  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10395      1.1  christos   }
   10396      1.1  christos   {
   10397      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10398      1.1  christos     CPU (h_zbit) = opval;
   10399  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10400      1.1  christos   }
   10401      1.1  christos SET_H_CBIT_MOVE (0);
   10402      1.1  christos SET_H_VBIT_MOVE (0);
   10403      1.1  christos {
   10404      1.1  christos   {
   10405      1.1  christos     BI opval = 0;
   10406      1.1  christos     CPU (h_xbit) = opval;
   10407  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10408      1.1  christos   }
   10409      1.1  christos   {
   10410      1.1  christos     BI opval = 0;
   10411      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10412  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10413      1.1  christos   }
   10414      1.1  christos }
   10415      1.1  christos }
   10416      1.1  christos }
   10417      1.1  christos 
   10418      1.1  christos   abuf->written = written;
   10419      1.1  christos #undef FLD
   10420      1.1  christos }
   10421      1.1  christos   NEXT (vpc);
   10422      1.1  christos 
   10423      1.1  christos   CASE (sem, INSN_ANDCBR) : /* and.b ${sconst8}],${Rd} */
   10424      1.1  christos {
   10425      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10426      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10427      1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   10428      1.1  christos   int UNUSED written = 0;
   10429      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10430      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   10431      1.1  christos 
   10432      1.1  christos {
   10433      1.1  christos   QI tmp_tmpd;
   10434      1.1  christos   tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
   10435      1.1  christos {
   10436      1.1  christos   SI tmp_oldregval;
   10437      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10438      1.1  christos   {
   10439      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10440      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10441  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10442      1.1  christos   }
   10443      1.1  christos }
   10444      1.1  christos {
   10445      1.1  christos   {
   10446      1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10447      1.1  christos     CPU (h_nbit) = opval;
   10448  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10449      1.1  christos   }
   10450      1.1  christos   {
   10451      1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10452      1.1  christos     CPU (h_zbit) = opval;
   10453  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10454      1.1  christos   }
   10455      1.1  christos SET_H_CBIT_MOVE (0);
   10456      1.1  christos SET_H_VBIT_MOVE (0);
   10457      1.1  christos {
   10458      1.1  christos   {
   10459      1.1  christos     BI opval = 0;
   10460      1.1  christos     CPU (h_xbit) = opval;
   10461  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10462      1.1  christos   }
   10463      1.1  christos   {
   10464      1.1  christos     BI opval = 0;
   10465      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10466  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10467      1.1  christos   }
   10468      1.1  christos }
   10469      1.1  christos }
   10470      1.1  christos }
   10471      1.1  christos 
   10472      1.1  christos #undef FLD
   10473      1.1  christos }
   10474      1.1  christos   NEXT (vpc);
   10475      1.1  christos 
   10476      1.1  christos   CASE (sem, INSN_ANDCWR) : /* and.w ${sconst16}],${Rd} */
   10477      1.1  christos {
   10478      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10479      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10480      1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   10481      1.1  christos   int UNUSED written = 0;
   10482      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10483      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   10484      1.1  christos 
   10485      1.1  christos {
   10486      1.1  christos   HI tmp_tmpd;
   10487      1.1  christos   tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
   10488      1.1  christos {
   10489      1.1  christos   SI tmp_oldregval;
   10490      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10491      1.1  christos   {
   10492      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10493      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10494  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10495      1.1  christos   }
   10496      1.1  christos }
   10497      1.1  christos {
   10498      1.1  christos   {
   10499      1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10500      1.1  christos     CPU (h_nbit) = opval;
   10501  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10502      1.1  christos   }
   10503      1.1  christos   {
   10504      1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10505      1.1  christos     CPU (h_zbit) = opval;
   10506  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10507      1.1  christos   }
   10508      1.1  christos SET_H_CBIT_MOVE (0);
   10509      1.1  christos SET_H_VBIT_MOVE (0);
   10510      1.1  christos {
   10511      1.1  christos   {
   10512      1.1  christos     BI opval = 0;
   10513      1.1  christos     CPU (h_xbit) = opval;
   10514  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10515      1.1  christos   }
   10516      1.1  christos   {
   10517      1.1  christos     BI opval = 0;
   10518      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10519  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10520      1.1  christos   }
   10521      1.1  christos }
   10522      1.1  christos }
   10523      1.1  christos }
   10524      1.1  christos 
   10525      1.1  christos #undef FLD
   10526      1.1  christos }
   10527      1.1  christos   NEXT (vpc);
   10528      1.1  christos 
   10529      1.1  christos   CASE (sem, INSN_ANDCDR) : /* and.d ${const32}],${Rd} */
   10530      1.1  christos {
   10531      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10532      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10533      1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   10534      1.1  christos   int UNUSED written = 0;
   10535      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10536      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   10537      1.1  christos 
   10538      1.1  christos {
   10539      1.1  christos   SI tmp_tmpd;
   10540      1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
   10541      1.1  christos   {
   10542      1.1  christos     SI opval = tmp_tmpd;
   10543      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10544  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10545      1.1  christos   }
   10546      1.1  christos {
   10547      1.1  christos   {
   10548      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10549      1.1  christos     CPU (h_nbit) = opval;
   10550  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10551      1.1  christos   }
   10552      1.1  christos   {
   10553      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10554      1.1  christos     CPU (h_zbit) = opval;
   10555  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10556      1.1  christos   }
   10557      1.1  christos SET_H_CBIT_MOVE (0);
   10558      1.1  christos SET_H_VBIT_MOVE (0);
   10559      1.1  christos {
   10560      1.1  christos   {
   10561      1.1  christos     BI opval = 0;
   10562      1.1  christos     CPU (h_xbit) = opval;
   10563  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10564      1.1  christos   }
   10565      1.1  christos   {
   10566      1.1  christos     BI opval = 0;
   10567      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10568  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10569      1.1  christos   }
   10570      1.1  christos }
   10571      1.1  christos }
   10572      1.1  christos }
   10573      1.1  christos 
   10574      1.1  christos #undef FLD
   10575      1.1  christos }
   10576      1.1  christos   NEXT (vpc);
   10577      1.1  christos 
   10578      1.1  christos   CASE (sem, INSN_ANDQ) : /* andq $i,$Rd */
   10579      1.1  christos {
   10580      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10581      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10582      1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   10583      1.1  christos   int UNUSED written = 0;
   10584      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10585      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10586      1.1  christos 
   10587      1.1  christos {
   10588      1.1  christos   SI tmp_tmpd;
   10589      1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
   10590      1.1  christos   {
   10591      1.1  christos     SI opval = tmp_tmpd;
   10592      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10593  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10594      1.1  christos   }
   10595      1.1  christos {
   10596      1.1  christos   {
   10597      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10598      1.1  christos     CPU (h_nbit) = opval;
   10599  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10600      1.1  christos   }
   10601      1.1  christos   {
   10602      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10603      1.1  christos     CPU (h_zbit) = opval;
   10604  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10605      1.1  christos   }
   10606      1.1  christos SET_H_CBIT_MOVE (0);
   10607      1.1  christos SET_H_VBIT_MOVE (0);
   10608      1.1  christos {
   10609      1.1  christos   {
   10610      1.1  christos     BI opval = 0;
   10611      1.1  christos     CPU (h_xbit) = opval;
   10612  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10613      1.1  christos   }
   10614      1.1  christos   {
   10615      1.1  christos     BI opval = 0;
   10616      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10617  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10618      1.1  christos   }
   10619      1.1  christos }
   10620      1.1  christos }
   10621      1.1  christos }
   10622      1.1  christos 
   10623      1.1  christos #undef FLD
   10624      1.1  christos }
   10625      1.1  christos   NEXT (vpc);
   10626      1.1  christos 
   10627      1.1  christos   CASE (sem, INSN_ORR_B_R) : /* orr.b $Rs,$Rd */
   10628      1.1  christos {
   10629      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10630      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10631      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10632      1.1  christos   int UNUSED written = 0;
   10633      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10634      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10635      1.1  christos 
   10636      1.1  christos {
   10637      1.1  christos   QI tmp_tmpd;
   10638      1.1  christos   tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10639      1.1  christos {
   10640      1.1  christos   SI tmp_oldregval;
   10641      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10642      1.1  christos   {
   10643      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10644      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10645  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10646      1.1  christos   }
   10647      1.1  christos }
   10648      1.1  christos {
   10649      1.1  christos   {
   10650      1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10651      1.1  christos     CPU (h_nbit) = opval;
   10652  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10653      1.1  christos   }
   10654      1.1  christos   {
   10655      1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10656      1.1  christos     CPU (h_zbit) = opval;
   10657  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10658      1.1  christos   }
   10659      1.1  christos SET_H_CBIT_MOVE (0);
   10660      1.1  christos SET_H_VBIT_MOVE (0);
   10661      1.1  christos {
   10662      1.1  christos   {
   10663      1.1  christos     BI opval = 0;
   10664      1.1  christos     CPU (h_xbit) = opval;
   10665  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10666      1.1  christos   }
   10667      1.1  christos   {
   10668      1.1  christos     BI opval = 0;
   10669      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10670  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10671      1.1  christos   }
   10672      1.1  christos }
   10673      1.1  christos }
   10674      1.1  christos }
   10675      1.1  christos 
   10676      1.1  christos #undef FLD
   10677      1.1  christos }
   10678      1.1  christos   NEXT (vpc);
   10679      1.1  christos 
   10680      1.1  christos   CASE (sem, INSN_ORR_W_R) : /* orr.w $Rs,$Rd */
   10681      1.1  christos {
   10682      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10683      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10684      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10685      1.1  christos   int UNUSED written = 0;
   10686      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10687      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10688      1.1  christos 
   10689      1.1  christos {
   10690      1.1  christos   HI tmp_tmpd;
   10691      1.1  christos   tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10692      1.1  christos {
   10693      1.1  christos   SI tmp_oldregval;
   10694      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10695      1.1  christos   {
   10696      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10697      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10698  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10699      1.1  christos   }
   10700      1.1  christos }
   10701      1.1  christos {
   10702      1.1  christos   {
   10703      1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10704      1.1  christos     CPU (h_nbit) = opval;
   10705  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10706      1.1  christos   }
   10707      1.1  christos   {
   10708      1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10709      1.1  christos     CPU (h_zbit) = opval;
   10710  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10711      1.1  christos   }
   10712      1.1  christos SET_H_CBIT_MOVE (0);
   10713      1.1  christos SET_H_VBIT_MOVE (0);
   10714      1.1  christos {
   10715      1.1  christos   {
   10716      1.1  christos     BI opval = 0;
   10717      1.1  christos     CPU (h_xbit) = opval;
   10718  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10719      1.1  christos   }
   10720      1.1  christos   {
   10721      1.1  christos     BI opval = 0;
   10722      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10723  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10724      1.1  christos   }
   10725      1.1  christos }
   10726      1.1  christos }
   10727      1.1  christos }
   10728      1.1  christos 
   10729      1.1  christos #undef FLD
   10730      1.1  christos }
   10731      1.1  christos   NEXT (vpc);
   10732      1.1  christos 
   10733      1.1  christos   CASE (sem, INSN_ORR_D_R) : /* orr.d $Rs,$Rd */
   10734      1.1  christos {
   10735      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10736      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10737      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10738      1.1  christos   int UNUSED written = 0;
   10739      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10740      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10741      1.1  christos 
   10742      1.1  christos {
   10743      1.1  christos   SI tmp_tmpd;
   10744      1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10745      1.1  christos   {
   10746      1.1  christos     SI opval = tmp_tmpd;
   10747      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10748  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10749      1.1  christos   }
   10750      1.1  christos {
   10751      1.1  christos   {
   10752      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10753      1.1  christos     CPU (h_nbit) = opval;
   10754  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10755      1.1  christos   }
   10756      1.1  christos   {
   10757      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10758      1.1  christos     CPU (h_zbit) = opval;
   10759  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10760      1.1  christos   }
   10761      1.1  christos SET_H_CBIT_MOVE (0);
   10762      1.1  christos SET_H_VBIT_MOVE (0);
   10763      1.1  christos {
   10764      1.1  christos   {
   10765      1.1  christos     BI opval = 0;
   10766      1.1  christos     CPU (h_xbit) = opval;
   10767  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10768      1.1  christos   }
   10769      1.1  christos   {
   10770      1.1  christos     BI opval = 0;
   10771      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10772  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10773      1.1  christos   }
   10774      1.1  christos }
   10775      1.1  christos }
   10776      1.1  christos }
   10777      1.1  christos 
   10778      1.1  christos #undef FLD
   10779      1.1  christos }
   10780      1.1  christos   NEXT (vpc);
   10781      1.1  christos 
   10782      1.1  christos   CASE (sem, INSN_OR_M_B_M) : /* or-m.b [${Rs}${inc}],${Rd} */
   10783      1.1  christos {
   10784      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10785      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10786      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10787      1.1  christos   int UNUSED written = 0;
   10788      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10789      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10790      1.1  christos 
   10791      1.1  christos {
   10792      1.1  christos   QI tmp_tmpd;
   10793      1.1  christos   tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10794      1.1  christos   QI tmp_tmp_mem;
   10795      1.1  christos   BI tmp_postinc;
   10796      1.1  christos   tmp_postinc = FLD (f_memmode);
   10797      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10798      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   10799      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10800      1.1  christos {
   10801      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10802      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   10803      1.1  christos }
   10804      1.1  christos   {
   10805      1.1  christos     SI opval = tmp_addr;
   10806      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10807      1.1  christos     written |= (1 << 11);
   10808  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10809      1.1  christos   }
   10810      1.1  christos }
   10811      1.1  christos }
   10812      1.1  christos ; tmp_tmp_mem; }));
   10813      1.1  christos {
   10814      1.1  christos   SI tmp_oldregval;
   10815      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   10816      1.1  christos   {
   10817      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10818      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10819  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10820      1.1  christos   }
   10821      1.1  christos }
   10822      1.1  christos {
   10823      1.1  christos   {
   10824      1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10825      1.1  christos     CPU (h_nbit) = opval;
   10826  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10827      1.1  christos   }
   10828      1.1  christos   {
   10829      1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10830      1.1  christos     CPU (h_zbit) = opval;
   10831  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10832      1.1  christos   }
   10833      1.1  christos SET_H_CBIT_MOVE (0);
   10834      1.1  christos SET_H_VBIT_MOVE (0);
   10835      1.1  christos {
   10836      1.1  christos   {
   10837      1.1  christos     BI opval = 0;
   10838      1.1  christos     CPU (h_xbit) = opval;
   10839  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10840      1.1  christos   }
   10841      1.1  christos   {
   10842      1.1  christos     BI opval = 0;
   10843      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10844  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10845      1.1  christos   }
   10846      1.1  christos }
   10847      1.1  christos }
   10848      1.1  christos }
   10849      1.1  christos 
   10850      1.1  christos   abuf->written = written;
   10851      1.1  christos #undef FLD
   10852      1.1  christos }
   10853      1.1  christos   NEXT (vpc);
   10854      1.1  christos 
   10855      1.1  christos   CASE (sem, INSN_OR_M_W_M) : /* or-m.w [${Rs}${inc}],${Rd} */
   10856      1.1  christos {
   10857      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10858      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10859      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10860      1.1  christos   int UNUSED written = 0;
   10861      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10862      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10863      1.1  christos 
   10864      1.1  christos {
   10865      1.1  christos   HI tmp_tmpd;
   10866      1.1  christos   tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10867      1.1  christos   HI tmp_tmp_mem;
   10868      1.1  christos   BI tmp_postinc;
   10869      1.1  christos   tmp_postinc = FLD (f_memmode);
   10870      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10871      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   10872      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10873      1.1  christos {
   10874      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10875      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   10876      1.1  christos }
   10877      1.1  christos   {
   10878      1.1  christos     SI opval = tmp_addr;
   10879      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10880      1.1  christos     written |= (1 << 11);
   10881  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10882      1.1  christos   }
   10883      1.1  christos }
   10884      1.1  christos }
   10885      1.1  christos ; tmp_tmp_mem; }));
   10886      1.1  christos {
   10887      1.1  christos   SI tmp_oldregval;
   10888      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   10889      1.1  christos   {
   10890      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10891      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10892  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10893      1.1  christos   }
   10894      1.1  christos }
   10895      1.1  christos {
   10896      1.1  christos   {
   10897      1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10898      1.1  christos     CPU (h_nbit) = opval;
   10899  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10900      1.1  christos   }
   10901      1.1  christos   {
   10902      1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10903      1.1  christos     CPU (h_zbit) = opval;
   10904  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10905      1.1  christos   }
   10906      1.1  christos SET_H_CBIT_MOVE (0);
   10907      1.1  christos SET_H_VBIT_MOVE (0);
   10908      1.1  christos {
   10909      1.1  christos   {
   10910      1.1  christos     BI opval = 0;
   10911      1.1  christos     CPU (h_xbit) = opval;
   10912  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10913      1.1  christos   }
   10914      1.1  christos   {
   10915      1.1  christos     BI opval = 0;
   10916      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10917  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10918      1.1  christos   }
   10919      1.1  christos }
   10920      1.1  christos }
   10921      1.1  christos }
   10922      1.1  christos 
   10923      1.1  christos   abuf->written = written;
   10924      1.1  christos #undef FLD
   10925      1.1  christos }
   10926      1.1  christos   NEXT (vpc);
   10927      1.1  christos 
   10928      1.1  christos   CASE (sem, INSN_OR_M_D_M) : /* or-m.d [${Rs}${inc}],${Rd} */
   10929      1.1  christos {
   10930      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10931      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10932      1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10933      1.1  christos   int UNUSED written = 0;
   10934      1.1  christos   IADDR UNUSED pc = abuf->addr;
   10935      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10936      1.1  christos 
   10937      1.1  christos {
   10938      1.1  christos   SI tmp_tmpd;
   10939      1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10940      1.1  christos   SI tmp_tmp_mem;
   10941      1.1  christos   BI tmp_postinc;
   10942      1.1  christos   tmp_postinc = FLD (f_memmode);
   10943      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10944      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   10945      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10946      1.1  christos {
   10947      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10948      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   10949      1.1  christos }
   10950      1.1  christos   {
   10951      1.1  christos     SI opval = tmp_addr;
   10952      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10953      1.1  christos     written |= (1 << 10);
   10954  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10955      1.1  christos   }
   10956      1.1  christos }
   10957      1.1  christos }
   10958      1.1  christos ; tmp_tmp_mem; }));
   10959      1.1  christos   {
   10960      1.1  christos     SI opval = tmp_tmpd;
   10961      1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10962  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10963      1.1  christos   }
   10964      1.1  christos {
   10965      1.1  christos   {
   10966      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10967      1.1  christos     CPU (h_nbit) = opval;
   10968  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10969      1.1  christos   }
   10970      1.1  christos   {
   10971      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10972      1.1  christos     CPU (h_zbit) = opval;
   10973  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10974      1.1  christos   }
   10975      1.1  christos SET_H_CBIT_MOVE (0);
   10976      1.1  christos SET_H_VBIT_MOVE (0);
   10977      1.1  christos {
   10978      1.1  christos   {
   10979      1.1  christos     BI opval = 0;
   10980      1.1  christos     CPU (h_xbit) = opval;
   10981  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10982      1.1  christos   }
   10983      1.1  christos   {
   10984      1.1  christos     BI opval = 0;
   10985      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10986  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10987      1.1  christos   }
   10988      1.1  christos }
   10989      1.1  christos }
   10990      1.1  christos }
   10991      1.1  christos 
   10992      1.1  christos   abuf->written = written;
   10993      1.1  christos #undef FLD
   10994      1.1  christos }
   10995      1.1  christos   NEXT (vpc);
   10996      1.1  christos 
   10997      1.1  christos   CASE (sem, INSN_ORCBR) : /* or.b ${sconst8}],${Rd} */
   10998      1.1  christos {
   10999      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11000      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11001      1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   11002      1.1  christos   int UNUSED written = 0;
   11003      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11004      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   11005      1.1  christos 
   11006      1.1  christos {
   11007      1.1  christos   QI tmp_tmpd;
   11008      1.1  christos   tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
   11009      1.1  christos {
   11010      1.1  christos   SI tmp_oldregval;
   11011      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11012      1.1  christos   {
   11013      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11014      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11015  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11016      1.1  christos   }
   11017      1.1  christos }
   11018      1.1  christos {
   11019      1.1  christos   {
   11020      1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11021      1.1  christos     CPU (h_nbit) = opval;
   11022  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11023      1.1  christos   }
   11024      1.1  christos   {
   11025      1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11026      1.1  christos     CPU (h_zbit) = opval;
   11027  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11028      1.1  christos   }
   11029      1.1  christos SET_H_CBIT_MOVE (0);
   11030      1.1  christos SET_H_VBIT_MOVE (0);
   11031      1.1  christos {
   11032      1.1  christos   {
   11033      1.1  christos     BI opval = 0;
   11034      1.1  christos     CPU (h_xbit) = opval;
   11035  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11036      1.1  christos   }
   11037      1.1  christos   {
   11038      1.1  christos     BI opval = 0;
   11039      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11040  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11041      1.1  christos   }
   11042      1.1  christos }
   11043      1.1  christos }
   11044      1.1  christos }
   11045      1.1  christos 
   11046      1.1  christos #undef FLD
   11047      1.1  christos }
   11048      1.1  christos   NEXT (vpc);
   11049      1.1  christos 
   11050      1.1  christos   CASE (sem, INSN_ORCWR) : /* or.w ${sconst16}],${Rd} */
   11051      1.1  christos {
   11052      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11053      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11054      1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   11055      1.1  christos   int UNUSED written = 0;
   11056      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11057      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   11058      1.1  christos 
   11059      1.1  christos {
   11060      1.1  christos   HI tmp_tmpd;
   11061      1.1  christos   tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
   11062      1.1  christos {
   11063      1.1  christos   SI tmp_oldregval;
   11064      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11065      1.1  christos   {
   11066      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11067      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11068  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11069      1.1  christos   }
   11070      1.1  christos }
   11071      1.1  christos {
   11072      1.1  christos   {
   11073      1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11074      1.1  christos     CPU (h_nbit) = opval;
   11075  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11076      1.1  christos   }
   11077      1.1  christos   {
   11078      1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11079      1.1  christos     CPU (h_zbit) = opval;
   11080  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11081      1.1  christos   }
   11082      1.1  christos SET_H_CBIT_MOVE (0);
   11083      1.1  christos SET_H_VBIT_MOVE (0);
   11084      1.1  christos {
   11085      1.1  christos   {
   11086      1.1  christos     BI opval = 0;
   11087      1.1  christos     CPU (h_xbit) = opval;
   11088  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11089      1.1  christos   }
   11090      1.1  christos   {
   11091      1.1  christos     BI opval = 0;
   11092      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11093  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11094      1.1  christos   }
   11095      1.1  christos }
   11096      1.1  christos }
   11097      1.1  christos }
   11098      1.1  christos 
   11099      1.1  christos #undef FLD
   11100      1.1  christos }
   11101      1.1  christos   NEXT (vpc);
   11102      1.1  christos 
   11103      1.1  christos   CASE (sem, INSN_ORCDR) : /* or.d ${const32}],${Rd} */
   11104      1.1  christos {
   11105      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11106      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11107      1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   11108      1.1  christos   int UNUSED written = 0;
   11109      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11110      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   11111      1.1  christos 
   11112      1.1  christos {
   11113      1.1  christos   SI tmp_tmpd;
   11114      1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
   11115      1.1  christos   {
   11116      1.1  christos     SI opval = tmp_tmpd;
   11117      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11118  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11119      1.1  christos   }
   11120      1.1  christos {
   11121      1.1  christos   {
   11122      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11123      1.1  christos     CPU (h_nbit) = opval;
   11124  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11125      1.1  christos   }
   11126      1.1  christos   {
   11127      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11128      1.1  christos     CPU (h_zbit) = opval;
   11129  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11130      1.1  christos   }
   11131      1.1  christos SET_H_CBIT_MOVE (0);
   11132      1.1  christos SET_H_VBIT_MOVE (0);
   11133      1.1  christos {
   11134      1.1  christos   {
   11135      1.1  christos     BI opval = 0;
   11136      1.1  christos     CPU (h_xbit) = opval;
   11137  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11138      1.1  christos   }
   11139      1.1  christos   {
   11140      1.1  christos     BI opval = 0;
   11141      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11142  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11143      1.1  christos   }
   11144      1.1  christos }
   11145      1.1  christos }
   11146      1.1  christos }
   11147      1.1  christos 
   11148      1.1  christos #undef FLD
   11149      1.1  christos }
   11150      1.1  christos   NEXT (vpc);
   11151      1.1  christos 
   11152      1.1  christos   CASE (sem, INSN_ORQ) : /* orq $i,$Rd */
   11153      1.1  christos {
   11154      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11155      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11156      1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   11157      1.1  christos   int UNUSED written = 0;
   11158      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11159      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11160      1.1  christos 
   11161      1.1  christos {
   11162      1.1  christos   SI tmp_tmpd;
   11163      1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
   11164      1.1  christos   {
   11165      1.1  christos     SI opval = tmp_tmpd;
   11166      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11167  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11168      1.1  christos   }
   11169      1.1  christos {
   11170      1.1  christos   {
   11171      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11172      1.1  christos     CPU (h_nbit) = opval;
   11173  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11174      1.1  christos   }
   11175      1.1  christos   {
   11176      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11177      1.1  christos     CPU (h_zbit) = opval;
   11178  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11179      1.1  christos   }
   11180      1.1  christos SET_H_CBIT_MOVE (0);
   11181      1.1  christos SET_H_VBIT_MOVE (0);
   11182      1.1  christos {
   11183      1.1  christos   {
   11184      1.1  christos     BI opval = 0;
   11185      1.1  christos     CPU (h_xbit) = opval;
   11186  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11187      1.1  christos   }
   11188      1.1  christos   {
   11189      1.1  christos     BI opval = 0;
   11190      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11191  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11192      1.1  christos   }
   11193      1.1  christos }
   11194      1.1  christos }
   11195      1.1  christos }
   11196      1.1  christos 
   11197      1.1  christos #undef FLD
   11198      1.1  christos }
   11199      1.1  christos   NEXT (vpc);
   11200      1.1  christos 
   11201      1.1  christos   CASE (sem, INSN_XOR) : /* xor $Rs,$Rd */
   11202      1.1  christos {
   11203      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11204      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11205      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   11206      1.1  christos   int UNUSED written = 0;
   11207      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11208      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11209      1.1  christos 
   11210      1.1  christos {
   11211      1.1  christos   SI tmp_tmpd;
   11212      1.1  christos   tmp_tmpd = XORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   11213      1.1  christos   {
   11214      1.1  christos     SI opval = tmp_tmpd;
   11215      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11216  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11217      1.1  christos   }
   11218      1.1  christos {
   11219      1.1  christos   {
   11220      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11221      1.1  christos     CPU (h_nbit) = opval;
   11222  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11223      1.1  christos   }
   11224      1.1  christos   {
   11225      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11226      1.1  christos     CPU (h_zbit) = opval;
   11227  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11228      1.1  christos   }
   11229      1.1  christos SET_H_CBIT_MOVE (0);
   11230      1.1  christos SET_H_VBIT_MOVE (0);
   11231      1.1  christos {
   11232      1.1  christos   {
   11233      1.1  christos     BI opval = 0;
   11234      1.1  christos     CPU (h_xbit) = opval;
   11235  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11236      1.1  christos   }
   11237      1.1  christos   {
   11238      1.1  christos     BI opval = 0;
   11239      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11240  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11241      1.1  christos   }
   11242      1.1  christos }
   11243      1.1  christos }
   11244      1.1  christos }
   11245      1.1  christos 
   11246      1.1  christos #undef FLD
   11247      1.1  christos }
   11248      1.1  christos   NEXT (vpc);
   11249      1.1  christos 
   11250      1.1  christos   CASE (sem, INSN_SWAP) : /* swap${swapoption} ${Rs} */
   11251      1.1  christos {
   11252      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11253      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11254      1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   11255      1.1  christos   int UNUSED written = 0;
   11256      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11257      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11258      1.1  christos 
   11259      1.1  christos {
   11260      1.1  christos   SI tmp_tmps;
   11261      1.1  christos   SI tmp_tmpd;
   11262      1.1  christos   tmp_tmps = GET_H_GR (FLD (f_operand1));
   11263      1.1  christos   tmp_tmpd = ({   SI tmp_tmpcode;
   11264      1.1  christos   SI tmp_tmpval;
   11265      1.1  christos   SI tmp_tmpres;
   11266      1.1  christos   tmp_tmpcode = FLD (f_operand2);
   11267      1.1  christos ;   tmp_tmpval = tmp_tmps;
   11268      1.1  christos ; if (EQSI (tmp_tmpcode, 0)) {
   11269      1.1  christos   tmp_tmpres = (cgen_rtx_error (current_cpu, "SWAP without swap modifier isn't implemented"), 0);
   11270      1.1  christos }
   11271      1.1  christos  else if (EQSI (tmp_tmpcode, 1)) {
   11272      1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11273      1.1  christos   tmp_tmpr = tmp_tmpval;
   11274      1.1  christos ; 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)))))))); });
   11275      1.1  christos }
   11276      1.1  christos  else if (EQSI (tmp_tmpcode, 2)) {
   11277      1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11278      1.1  christos   tmp_tmpb = tmp_tmpval;
   11279      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11280      1.1  christos }
   11281      1.1  christos  else if (EQSI (tmp_tmpcode, 3)) {
   11282      1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11283      1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11284      1.1  christos   tmp_tmpb = tmp_tmpval;
   11285      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11286      1.1  christos ; 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)))))))); });
   11287      1.1  christos }
   11288      1.1  christos  else if (EQSI (tmp_tmpcode, 4)) {
   11289      1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11290      1.1  christos   tmp_tmpb = tmp_tmpval;
   11291      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11292      1.1  christos }
   11293      1.1  christos  else if (EQSI (tmp_tmpcode, 5)) {
   11294      1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11295      1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11296      1.1  christos   tmp_tmpb = tmp_tmpval;
   11297      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11298      1.1  christos ; 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)))))))); });
   11299      1.1  christos }
   11300      1.1  christos  else if (EQSI (tmp_tmpcode, 6)) {
   11301      1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11302      1.1  christos   tmp_tmpb = ({   SI tmp_tmpb;
   11303      1.1  christos   tmp_tmpb = tmp_tmpval;
   11304      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11305      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11306      1.1  christos }
   11307      1.1  christos  else if (EQSI (tmp_tmpcode, 7)) {
   11308      1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11309      1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11310      1.1  christos   tmp_tmpb = ({   SI tmp_tmpb;
   11311      1.1  christos   tmp_tmpb = tmp_tmpval;
   11312      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11313      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11314      1.1  christos ; 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)))))))); });
   11315      1.1  christos }
   11316      1.1  christos  else if (EQSI (tmp_tmpcode, 8)) {
   11317      1.1  christos   tmp_tmpres = INVSI (tmp_tmpval);
   11318      1.1  christos }
   11319      1.1  christos  else if (EQSI (tmp_tmpcode, 9)) {
   11320      1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11321      1.1  christos   tmp_tmpr = INVSI (tmp_tmpval);
   11322      1.1  christos ; 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)))))))); });
   11323      1.1  christos }
   11324      1.1  christos  else if (EQSI (tmp_tmpcode, 10)) {
   11325      1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11326      1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11327      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11328      1.1  christos }
   11329      1.1  christos  else if (EQSI (tmp_tmpcode, 11)) {
   11330      1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11331      1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11332      1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11333      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11334      1.1  christos ; 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)))))))); });
   11335      1.1  christos }
   11336      1.1  christos  else if (EQSI (tmp_tmpcode, 12)) {
   11337      1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11338      1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11339      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11340      1.1  christos }
   11341      1.1  christos  else if (EQSI (tmp_tmpcode, 13)) {
   11342      1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11343      1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11344      1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11345      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11346      1.1  christos ; 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)))))))); });
   11347      1.1  christos }
   11348      1.1  christos  else if (EQSI (tmp_tmpcode, 14)) {
   11349      1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11350      1.1  christos   tmp_tmpb = ({   SI tmp_tmpb;
   11351      1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11352      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11353      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11354      1.1  christos }
   11355      1.1  christos  else if (EQSI (tmp_tmpcode, 15)) {
   11356      1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11357      1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11358      1.1  christos   tmp_tmpb = ({   SI tmp_tmpb;
   11359      1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11360      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11361      1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11362      1.1  christos ; 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)))))))); });
   11363      1.1  christos }
   11364      1.1  christos ; tmp_tmpres; });
   11365      1.1  christos   {
   11366      1.1  christos     SI opval = tmp_tmpd;
   11367      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   11368  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11369      1.1  christos   }
   11370      1.1  christos {
   11371      1.1  christos   {
   11372      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11373      1.1  christos     CPU (h_nbit) = opval;
   11374  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11375      1.1  christos   }
   11376      1.1  christos   {
   11377      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11378      1.1  christos     CPU (h_zbit) = opval;
   11379  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11380      1.1  christos   }
   11381      1.1  christos SET_H_CBIT_MOVE (0);
   11382      1.1  christos SET_H_VBIT_MOVE (0);
   11383      1.1  christos {
   11384      1.1  christos   {
   11385      1.1  christos     BI opval = 0;
   11386      1.1  christos     CPU (h_xbit) = opval;
   11387  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11388      1.1  christos   }
   11389      1.1  christos   {
   11390      1.1  christos     BI opval = 0;
   11391      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11392  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11393      1.1  christos   }
   11394      1.1  christos }
   11395      1.1  christos }
   11396      1.1  christos }
   11397      1.1  christos 
   11398      1.1  christos #undef FLD
   11399      1.1  christos }
   11400      1.1  christos   NEXT (vpc);
   11401      1.1  christos 
   11402      1.1  christos   CASE (sem, INSN_ASRR_B_R) : /* asrr.b $Rs,$Rd */
   11403      1.1  christos {
   11404      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11405      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11406      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11407      1.1  christos   int UNUSED written = 0;
   11408      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11409      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11410      1.1  christos 
   11411      1.1  christos {
   11412      1.1  christos   QI tmp_tmpd;
   11413      1.1  christos   SI tmp_cnt1;
   11414      1.1  christos   SI tmp_cnt2;
   11415      1.1  christos   tmp_cnt1 = GET_H_GR (FLD (f_operand1));
   11416      1.1  christos   tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
   11417      1.1  christos   tmp_tmpd = SRASI (EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
   11418      1.1  christos {
   11419      1.1  christos   SI tmp_oldregval;
   11420      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11421      1.1  christos   {
   11422      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11423      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11424  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11425      1.1  christos   }
   11426      1.1  christos }
   11427      1.1  christos {
   11428      1.1  christos   {
   11429      1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11430      1.1  christos     CPU (h_nbit) = opval;
   11431  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11432      1.1  christos   }
   11433      1.1  christos   {
   11434      1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11435      1.1  christos     CPU (h_zbit) = opval;
   11436  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11437      1.1  christos   }
   11438      1.1  christos SET_H_CBIT_MOVE (0);
   11439      1.1  christos SET_H_VBIT_MOVE (0);
   11440      1.1  christos {
   11441      1.1  christos   {
   11442      1.1  christos     BI opval = 0;
   11443      1.1  christos     CPU (h_xbit) = opval;
   11444  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11445      1.1  christos   }
   11446      1.1  christos   {
   11447      1.1  christos     BI opval = 0;
   11448      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11449  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11450      1.1  christos   }
   11451      1.1  christos }
   11452      1.1  christos }
   11453      1.1  christos }
   11454      1.1  christos 
   11455      1.1  christos #undef FLD
   11456      1.1  christos }
   11457      1.1  christos   NEXT (vpc);
   11458      1.1  christos 
   11459      1.1  christos   CASE (sem, INSN_ASRR_W_R) : /* asrr.w $Rs,$Rd */
   11460      1.1  christos {
   11461      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11462      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11463      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11464      1.1  christos   int UNUSED written = 0;
   11465      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11466      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11467      1.1  christos 
   11468      1.1  christos {
   11469      1.1  christos   HI tmp_tmpd;
   11470      1.1  christos   SI tmp_cnt1;
   11471      1.1  christos   SI tmp_cnt2;
   11472      1.1  christos   tmp_cnt1 = GET_H_GR (FLD (f_operand1));
   11473      1.1  christos   tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
   11474      1.1  christos   tmp_tmpd = SRASI (EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
   11475      1.1  christos {
   11476      1.1  christos   SI tmp_oldregval;
   11477      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11478      1.1  christos   {
   11479      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11480      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11481  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11482      1.1  christos   }
   11483      1.1  christos }
   11484      1.1  christos {
   11485      1.1  christos   {
   11486      1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11487      1.1  christos     CPU (h_nbit) = opval;
   11488  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11489      1.1  christos   }
   11490      1.1  christos   {
   11491      1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11492      1.1  christos     CPU (h_zbit) = opval;
   11493  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11494      1.1  christos   }
   11495      1.1  christos SET_H_CBIT_MOVE (0);
   11496      1.1  christos SET_H_VBIT_MOVE (0);
   11497      1.1  christos {
   11498      1.1  christos   {
   11499      1.1  christos     BI opval = 0;
   11500      1.1  christos     CPU (h_xbit) = opval;
   11501  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11502      1.1  christos   }
   11503      1.1  christos   {
   11504      1.1  christos     BI opval = 0;
   11505      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11506  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11507      1.1  christos   }
   11508      1.1  christos }
   11509      1.1  christos }
   11510      1.1  christos }
   11511      1.1  christos 
   11512      1.1  christos #undef FLD
   11513      1.1  christos }
   11514      1.1  christos   NEXT (vpc);
   11515      1.1  christos 
   11516      1.1  christos   CASE (sem, INSN_ASRR_D_R) : /* asrr.d $Rs,$Rd */
   11517      1.1  christos {
   11518      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11519      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11520      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11521      1.1  christos   int UNUSED written = 0;
   11522      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11523      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11524      1.1  christos 
   11525      1.1  christos {
   11526      1.1  christos   SI tmp_tmpd;
   11527      1.1  christos   SI tmp_cnt1;
   11528      1.1  christos   SI tmp_cnt2;
   11529      1.1  christos   tmp_cnt1 = GET_H_GR (FLD (f_operand1));
   11530      1.1  christos   tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
   11531      1.1  christos   tmp_tmpd = SRASI (EXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
   11532      1.1  christos   {
   11533      1.1  christos     SI opval = tmp_tmpd;
   11534      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11535  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11536      1.1  christos   }
   11537      1.1  christos {
   11538      1.1  christos   {
   11539      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11540      1.1  christos     CPU (h_nbit) = opval;
   11541  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11542      1.1  christos   }
   11543      1.1  christos   {
   11544      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11545      1.1  christos     CPU (h_zbit) = opval;
   11546  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11547      1.1  christos   }
   11548      1.1  christos SET_H_CBIT_MOVE (0);
   11549      1.1  christos SET_H_VBIT_MOVE (0);
   11550      1.1  christos {
   11551      1.1  christos   {
   11552      1.1  christos     BI opval = 0;
   11553      1.1  christos     CPU (h_xbit) = opval;
   11554  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11555      1.1  christos   }
   11556      1.1  christos   {
   11557      1.1  christos     BI opval = 0;
   11558      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11559  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11560      1.1  christos   }
   11561      1.1  christos }
   11562      1.1  christos }
   11563      1.1  christos }
   11564      1.1  christos 
   11565      1.1  christos #undef FLD
   11566      1.1  christos }
   11567      1.1  christos   NEXT (vpc);
   11568      1.1  christos 
   11569      1.1  christos   CASE (sem, INSN_ASRQ) : /* asrq $c,${Rd} */
   11570      1.1  christos {
   11571      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11572      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11573      1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   11574      1.1  christos   int UNUSED written = 0;
   11575      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11576      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11577      1.1  christos 
   11578      1.1  christos {
   11579      1.1  christos   SI tmp_tmpd;
   11580      1.1  christos   tmp_tmpd = SRASI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
   11581      1.1  christos   {
   11582      1.1  christos     SI opval = tmp_tmpd;
   11583      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11584  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11585      1.1  christos   }
   11586      1.1  christos {
   11587      1.1  christos   {
   11588      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11589      1.1  christos     CPU (h_nbit) = opval;
   11590  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11591      1.1  christos   }
   11592      1.1  christos   {
   11593      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11594      1.1  christos     CPU (h_zbit) = opval;
   11595  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11596      1.1  christos   }
   11597      1.1  christos SET_H_CBIT_MOVE (0);
   11598      1.1  christos SET_H_VBIT_MOVE (0);
   11599      1.1  christos {
   11600      1.1  christos   {
   11601      1.1  christos     BI opval = 0;
   11602      1.1  christos     CPU (h_xbit) = opval;
   11603  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11604      1.1  christos   }
   11605      1.1  christos   {
   11606      1.1  christos     BI opval = 0;
   11607      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11608  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11609      1.1  christos   }
   11610      1.1  christos }
   11611      1.1  christos }
   11612      1.1  christos }
   11613      1.1  christos 
   11614      1.1  christos #undef FLD
   11615      1.1  christos }
   11616      1.1  christos   NEXT (vpc);
   11617      1.1  christos 
   11618      1.1  christos   CASE (sem, INSN_LSRR_B_R) : /* lsrr.b $Rs,$Rd */
   11619      1.1  christos {
   11620      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11621      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11622      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11623      1.1  christos   int UNUSED written = 0;
   11624      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11625      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11626      1.1  christos 
   11627      1.1  christos {
   11628      1.1  christos   SI tmp_tmpd;
   11629      1.1  christos   SI tmp_cnt;
   11630      1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11631      1.1  christos   tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
   11632      1.1  christos {
   11633      1.1  christos   SI tmp_oldregval;
   11634      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11635      1.1  christos   {
   11636      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11637      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11638  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11639      1.1  christos   }
   11640      1.1  christos }
   11641      1.1  christos {
   11642      1.1  christos   {
   11643      1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11644      1.1  christos     CPU (h_nbit) = opval;
   11645  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11646      1.1  christos   }
   11647      1.1  christos   {
   11648      1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11649      1.1  christos     CPU (h_zbit) = opval;
   11650  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11651      1.1  christos   }
   11652      1.1  christos SET_H_CBIT_MOVE (0);
   11653      1.1  christos SET_H_VBIT_MOVE (0);
   11654      1.1  christos {
   11655      1.1  christos   {
   11656      1.1  christos     BI opval = 0;
   11657      1.1  christos     CPU (h_xbit) = opval;
   11658  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11659      1.1  christos   }
   11660      1.1  christos   {
   11661      1.1  christos     BI opval = 0;
   11662      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11663  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11664      1.1  christos   }
   11665      1.1  christos }
   11666      1.1  christos }
   11667      1.1  christos }
   11668      1.1  christos 
   11669      1.1  christos #undef FLD
   11670      1.1  christos }
   11671      1.1  christos   NEXT (vpc);
   11672      1.1  christos 
   11673      1.1  christos   CASE (sem, INSN_LSRR_W_R) : /* lsrr.w $Rs,$Rd */
   11674      1.1  christos {
   11675      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11676      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11677      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11678      1.1  christos   int UNUSED written = 0;
   11679      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11680      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11681      1.1  christos 
   11682      1.1  christos {
   11683      1.1  christos   SI tmp_tmpd;
   11684      1.1  christos   SI tmp_cnt;
   11685      1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11686      1.1  christos   tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
   11687      1.1  christos {
   11688      1.1  christos   SI tmp_oldregval;
   11689      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11690      1.1  christos   {
   11691      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11692      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11693  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11694      1.1  christos   }
   11695      1.1  christos }
   11696      1.1  christos {
   11697      1.1  christos   {
   11698      1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11699      1.1  christos     CPU (h_nbit) = opval;
   11700  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11701      1.1  christos   }
   11702      1.1  christos   {
   11703      1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11704      1.1  christos     CPU (h_zbit) = opval;
   11705  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11706      1.1  christos   }
   11707      1.1  christos SET_H_CBIT_MOVE (0);
   11708      1.1  christos SET_H_VBIT_MOVE (0);
   11709      1.1  christos {
   11710      1.1  christos   {
   11711      1.1  christos     BI opval = 0;
   11712      1.1  christos     CPU (h_xbit) = opval;
   11713  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11714      1.1  christos   }
   11715      1.1  christos   {
   11716      1.1  christos     BI opval = 0;
   11717      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11718  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11719      1.1  christos   }
   11720      1.1  christos }
   11721      1.1  christos }
   11722      1.1  christos }
   11723      1.1  christos 
   11724      1.1  christos #undef FLD
   11725      1.1  christos }
   11726      1.1  christos   NEXT (vpc);
   11727      1.1  christos 
   11728      1.1  christos   CASE (sem, INSN_LSRR_D_R) : /* lsrr.d $Rs,$Rd */
   11729      1.1  christos {
   11730      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11731      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11732      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11733      1.1  christos   int UNUSED written = 0;
   11734      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11735      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11736      1.1  christos 
   11737      1.1  christos {
   11738      1.1  christos   SI tmp_tmpd;
   11739      1.1  christos   SI tmp_cnt;
   11740      1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11741      1.1  christos   tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
   11742      1.1  christos   {
   11743      1.1  christos     SI opval = tmp_tmpd;
   11744      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11745  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11746      1.1  christos   }
   11747      1.1  christos {
   11748      1.1  christos   {
   11749      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11750      1.1  christos     CPU (h_nbit) = opval;
   11751  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11752      1.1  christos   }
   11753      1.1  christos   {
   11754      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11755      1.1  christos     CPU (h_zbit) = opval;
   11756  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11757      1.1  christos   }
   11758      1.1  christos SET_H_CBIT_MOVE (0);
   11759      1.1  christos SET_H_VBIT_MOVE (0);
   11760      1.1  christos {
   11761      1.1  christos   {
   11762      1.1  christos     BI opval = 0;
   11763      1.1  christos     CPU (h_xbit) = opval;
   11764  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11765      1.1  christos   }
   11766      1.1  christos   {
   11767      1.1  christos     BI opval = 0;
   11768      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11769  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11770      1.1  christos   }
   11771      1.1  christos }
   11772      1.1  christos }
   11773      1.1  christos }
   11774      1.1  christos 
   11775      1.1  christos #undef FLD
   11776      1.1  christos }
   11777      1.1  christos   NEXT (vpc);
   11778      1.1  christos 
   11779      1.1  christos   CASE (sem, INSN_LSRQ) : /* lsrq $c,${Rd} */
   11780      1.1  christos {
   11781      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11782      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11783      1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   11784      1.1  christos   int UNUSED written = 0;
   11785      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11786      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11787      1.1  christos 
   11788      1.1  christos {
   11789      1.1  christos   SI tmp_tmpd;
   11790      1.1  christos   tmp_tmpd = SRLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
   11791      1.1  christos   {
   11792      1.1  christos     SI opval = tmp_tmpd;
   11793      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11794  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11795      1.1  christos   }
   11796      1.1  christos {
   11797      1.1  christos   {
   11798      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11799      1.1  christos     CPU (h_nbit) = opval;
   11800  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11801      1.1  christos   }
   11802      1.1  christos   {
   11803      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11804      1.1  christos     CPU (h_zbit) = opval;
   11805  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11806      1.1  christos   }
   11807      1.1  christos SET_H_CBIT_MOVE (0);
   11808      1.1  christos SET_H_VBIT_MOVE (0);
   11809      1.1  christos {
   11810      1.1  christos   {
   11811      1.1  christos     BI opval = 0;
   11812      1.1  christos     CPU (h_xbit) = opval;
   11813  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11814      1.1  christos   }
   11815      1.1  christos   {
   11816      1.1  christos     BI opval = 0;
   11817      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11818  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11819      1.1  christos   }
   11820      1.1  christos }
   11821      1.1  christos }
   11822      1.1  christos }
   11823      1.1  christos 
   11824      1.1  christos #undef FLD
   11825      1.1  christos }
   11826      1.1  christos   NEXT (vpc);
   11827      1.1  christos 
   11828      1.1  christos   CASE (sem, INSN_LSLR_B_R) : /* lslr.b $Rs,$Rd */
   11829      1.1  christos {
   11830      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11831      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11832      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11833      1.1  christos   int UNUSED written = 0;
   11834      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11835      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11836      1.1  christos 
   11837      1.1  christos {
   11838      1.1  christos   SI tmp_tmpd;
   11839      1.1  christos   SI tmp_cnt;
   11840      1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11841      1.1  christos   tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
   11842      1.1  christos {
   11843      1.1  christos   SI tmp_oldregval;
   11844      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11845      1.1  christos   {
   11846      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11847      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11848  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11849      1.1  christos   }
   11850      1.1  christos }
   11851      1.1  christos {
   11852      1.1  christos   {
   11853      1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11854      1.1  christos     CPU (h_nbit) = opval;
   11855  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11856      1.1  christos   }
   11857      1.1  christos   {
   11858      1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11859      1.1  christos     CPU (h_zbit) = opval;
   11860  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11861      1.1  christos   }
   11862      1.1  christos SET_H_CBIT_MOVE (0);
   11863      1.1  christos SET_H_VBIT_MOVE (0);
   11864      1.1  christos {
   11865      1.1  christos   {
   11866      1.1  christos     BI opval = 0;
   11867      1.1  christos     CPU (h_xbit) = opval;
   11868  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11869      1.1  christos   }
   11870      1.1  christos   {
   11871      1.1  christos     BI opval = 0;
   11872      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11873  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11874      1.1  christos   }
   11875      1.1  christos }
   11876      1.1  christos }
   11877      1.1  christos }
   11878      1.1  christos 
   11879      1.1  christos #undef FLD
   11880      1.1  christos }
   11881      1.1  christos   NEXT (vpc);
   11882      1.1  christos 
   11883      1.1  christos   CASE (sem, INSN_LSLR_W_R) : /* lslr.w $Rs,$Rd */
   11884      1.1  christos {
   11885      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11886      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11887      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11888      1.1  christos   int UNUSED written = 0;
   11889      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11890      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11891      1.1  christos 
   11892      1.1  christos {
   11893      1.1  christos   SI tmp_tmpd;
   11894      1.1  christos   SI tmp_cnt;
   11895      1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11896      1.1  christos   tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
   11897      1.1  christos {
   11898      1.1  christos   SI tmp_oldregval;
   11899      1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11900      1.1  christos   {
   11901      1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11902      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11903  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11904      1.1  christos   }
   11905      1.1  christos }
   11906      1.1  christos {
   11907      1.1  christos   {
   11908      1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11909      1.1  christos     CPU (h_nbit) = opval;
   11910  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11911      1.1  christos   }
   11912      1.1  christos   {
   11913      1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11914      1.1  christos     CPU (h_zbit) = opval;
   11915  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11916      1.1  christos   }
   11917      1.1  christos SET_H_CBIT_MOVE (0);
   11918      1.1  christos SET_H_VBIT_MOVE (0);
   11919      1.1  christos {
   11920      1.1  christos   {
   11921      1.1  christos     BI opval = 0;
   11922      1.1  christos     CPU (h_xbit) = opval;
   11923  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11924      1.1  christos   }
   11925      1.1  christos   {
   11926      1.1  christos     BI opval = 0;
   11927      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11928  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11929      1.1  christos   }
   11930      1.1  christos }
   11931      1.1  christos }
   11932      1.1  christos }
   11933      1.1  christos 
   11934      1.1  christos #undef FLD
   11935      1.1  christos }
   11936      1.1  christos   NEXT (vpc);
   11937      1.1  christos 
   11938      1.1  christos   CASE (sem, INSN_LSLR_D_R) : /* lslr.d $Rs,$Rd */
   11939      1.1  christos {
   11940      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11941      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11942      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11943      1.1  christos   int UNUSED written = 0;
   11944      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11945      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11946      1.1  christos 
   11947      1.1  christos {
   11948      1.1  christos   SI tmp_tmpd;
   11949      1.1  christos   SI tmp_cnt;
   11950      1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11951      1.1  christos   tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
   11952      1.1  christos   {
   11953      1.1  christos     SI opval = tmp_tmpd;
   11954      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11955  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11956      1.1  christos   }
   11957      1.1  christos {
   11958      1.1  christos   {
   11959      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11960      1.1  christos     CPU (h_nbit) = opval;
   11961  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11962      1.1  christos   }
   11963      1.1  christos   {
   11964      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11965      1.1  christos     CPU (h_zbit) = opval;
   11966  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11967      1.1  christos   }
   11968      1.1  christos SET_H_CBIT_MOVE (0);
   11969      1.1  christos SET_H_VBIT_MOVE (0);
   11970      1.1  christos {
   11971      1.1  christos   {
   11972      1.1  christos     BI opval = 0;
   11973      1.1  christos     CPU (h_xbit) = opval;
   11974  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11975      1.1  christos   }
   11976      1.1  christos   {
   11977      1.1  christos     BI opval = 0;
   11978      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11979  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11980      1.1  christos   }
   11981      1.1  christos }
   11982      1.1  christos }
   11983      1.1  christos }
   11984      1.1  christos 
   11985      1.1  christos #undef FLD
   11986      1.1  christos }
   11987      1.1  christos   NEXT (vpc);
   11988      1.1  christos 
   11989      1.1  christos   CASE (sem, INSN_LSLQ) : /* lslq $c,${Rd} */
   11990      1.1  christos {
   11991      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11992      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11993      1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   11994      1.1  christos   int UNUSED written = 0;
   11995      1.1  christos   IADDR UNUSED pc = abuf->addr;
   11996      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11997      1.1  christos 
   11998      1.1  christos {
   11999      1.1  christos   SI tmp_tmpd;
   12000      1.1  christos   tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
   12001      1.1  christos   {
   12002      1.1  christos     SI opval = tmp_tmpd;
   12003      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   12004  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   12005      1.1  christos   }
   12006      1.1  christos {
   12007      1.1  christos   {
   12008      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   12009      1.1  christos     CPU (h_nbit) = opval;
   12010  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12011      1.1  christos   }
   12012      1.1  christos   {
   12013      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   12014      1.1  christos     CPU (h_zbit) = opval;
   12015  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12016      1.1  christos   }
   12017      1.1  christos SET_H_CBIT_MOVE (0);
   12018      1.1  christos SET_H_VBIT_MOVE (0);
   12019      1.1  christos {
   12020      1.1  christos   {
   12021      1.1  christos     BI opval = 0;
   12022      1.1  christos     CPU (h_xbit) = opval;
   12023  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12024      1.1  christos   }
   12025      1.1  christos   {
   12026      1.1  christos     BI opval = 0;
   12027      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12028  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12029      1.1  christos   }
   12030      1.1  christos }
   12031      1.1  christos }
   12032      1.1  christos }
   12033      1.1  christos 
   12034      1.1  christos #undef FLD
   12035      1.1  christos }
   12036      1.1  christos   NEXT (vpc);
   12037      1.1  christos 
   12038      1.1  christos   CASE (sem, INSN_BTST) : /* $Rs,$Rd */
   12039      1.1  christos {
   12040      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12041      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12042      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   12043      1.1  christos   int UNUSED written = 0;
   12044      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12045      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12046      1.1  christos 
   12047      1.1  christos {
   12048      1.1  christos   SI tmp_tmpd;
   12049      1.1  christos   SI tmp_cnt;
   12050      1.1  christos   tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, ANDSI (GET_H_GR (FLD (f_operand1)), 31)));
   12051      1.1  christos {
   12052      1.1  christos   {
   12053      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   12054      1.1  christos     CPU (h_nbit) = opval;
   12055  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12056      1.1  christos   }
   12057      1.1  christos   {
   12058      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   12059      1.1  christos     CPU (h_zbit) = opval;
   12060  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12061      1.1  christos   }
   12062      1.1  christos SET_H_CBIT_MOVE (0);
   12063      1.1  christos SET_H_VBIT_MOVE (0);
   12064      1.1  christos {
   12065      1.1  christos   {
   12066      1.1  christos     BI opval = 0;
   12067      1.1  christos     CPU (h_xbit) = opval;
   12068  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12069      1.1  christos   }
   12070      1.1  christos   {
   12071      1.1  christos     BI opval = 0;
   12072      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12073  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12074      1.1  christos   }
   12075      1.1  christos }
   12076      1.1  christos }
   12077      1.1  christos }
   12078      1.1  christos 
   12079      1.1  christos #undef FLD
   12080      1.1  christos }
   12081      1.1  christos   NEXT (vpc);
   12082      1.1  christos 
   12083      1.1  christos   CASE (sem, INSN_BTSTQ) : /* btstq $c,${Rd} */
   12084      1.1  christos {
   12085      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12086      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12087      1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   12088      1.1  christos   int UNUSED written = 0;
   12089      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12090      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12091      1.1  christos 
   12092      1.1  christos {
   12093      1.1  christos   SI tmp_tmpd;
   12094      1.1  christos   tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, FLD (f_u5)));
   12095      1.1  christos {
   12096      1.1  christos   {
   12097      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   12098      1.1  christos     CPU (h_nbit) = opval;
   12099  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12100      1.1  christos   }
   12101      1.1  christos   {
   12102      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   12103      1.1  christos     CPU (h_zbit) = opval;
   12104  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12105      1.1  christos   }
   12106      1.1  christos SET_H_CBIT_MOVE (0);
   12107      1.1  christos SET_H_VBIT_MOVE (0);
   12108      1.1  christos {
   12109      1.1  christos   {
   12110      1.1  christos     BI opval = 0;
   12111      1.1  christos     CPU (h_xbit) = opval;
   12112  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12113      1.1  christos   }
   12114      1.1  christos   {
   12115      1.1  christos     BI opval = 0;
   12116      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12117  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12118      1.1  christos   }
   12119      1.1  christos }
   12120      1.1  christos }
   12121      1.1  christos }
   12122      1.1  christos 
   12123      1.1  christos #undef FLD
   12124      1.1  christos }
   12125      1.1  christos   NEXT (vpc);
   12126      1.1  christos 
   12127      1.1  christos   CASE (sem, INSN_SETF) : /* setf ${list-of-flags} */
   12128      1.1  christos {
   12129      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12130      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12131      1.1  christos #define FLD(f) abuf->fields.sfmt_setf.f
   12132      1.1  christos   int UNUSED written = 0;
   12133      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12134      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12135      1.1  christos 
   12136      1.1  christos {
   12137      1.1  christos   SI tmp_tmp;
   12138      1.1  christos   tmp_tmp = FLD (f_dstsrc);
   12139      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
   12140      1.1  christos   {
   12141      1.1  christos     BI opval = 1;
   12142      1.1  christos     CPU (h_cbit) = opval;
   12143      1.1  christos     written |= (1 << 1);
   12144  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   12145      1.1  christos   }
   12146      1.1  christos }
   12147      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
   12148      1.1  christos   {
   12149      1.1  christos     BI opval = 1;
   12150      1.1  christos     CPU (h_vbit) = opval;
   12151      1.1  christos     written |= (1 << 7);
   12152  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   12153      1.1  christos   }
   12154      1.1  christos }
   12155      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
   12156      1.1  christos   {
   12157      1.1  christos     BI opval = 1;
   12158      1.1  christos     CPU (h_zbit) = opval;
   12159      1.1  christos     written |= (1 << 9);
   12160  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12161      1.1  christos   }
   12162      1.1  christos }
   12163      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
   12164      1.1  christos   {
   12165      1.1  christos     BI opval = 1;
   12166      1.1  christos     CPU (h_nbit) = opval;
   12167      1.1  christos     written |= (1 << 3);
   12168  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12169      1.1  christos   }
   12170      1.1  christos }
   12171      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
   12172      1.1  christos   {
   12173      1.1  christos     BI opval = 1;
   12174      1.1  christos     CPU (h_xbit) = opval;
   12175      1.1  christos     written |= (1 << 8);
   12176  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12177      1.1  christos   }
   12178      1.1  christos }
   12179      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
   12180      1.1  christos   {
   12181      1.1  christos     BI opval = 1;
   12182      1.1  christos     SET_H_IBIT (opval);
   12183      1.1  christos     written |= (1 << 2);
   12184  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
   12185      1.1  christos   }
   12186      1.1  christos }
   12187      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
   12188      1.1  christos   {
   12189      1.1  christos     BI opval = 1;
   12190      1.1  christos     SET_H_UBIT (opval);
   12191      1.1  christos     written |= (1 << 6);
   12192  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
   12193      1.1  christos   }
   12194      1.1  christos }
   12195      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
   12196      1.1  christos   {
   12197      1.1  christos     BI opval = 1;
   12198      1.1  christos     CPU (h_pbit) = opval;
   12199      1.1  christos     written |= (1 << 4);
   12200  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
   12201      1.1  christos   }
   12202      1.1  christos }
   12203      1.1  christos   {
   12204      1.1  christos     BI opval = 0;
   12205      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12206  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12207      1.1  christos   }
   12208      1.1  christos if (EQSI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
   12209      1.1  christos   {
   12210      1.1  christos     BI opval = 0;
   12211      1.1  christos     CPU (h_xbit) = opval;
   12212      1.1  christos     written |= (1 << 8);
   12213  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12214      1.1  christos   }
   12215      1.1  christos }
   12216      1.1  christos }
   12217      1.1  christos 
   12218      1.1  christos   abuf->written = written;
   12219      1.1  christos #undef FLD
   12220      1.1  christos }
   12221      1.1  christos   NEXT (vpc);
   12222      1.1  christos 
   12223      1.1  christos   CASE (sem, INSN_CLEARF) : /* clearf ${list-of-flags} */
   12224      1.1  christos {
   12225      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12226      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12227      1.1  christos #define FLD(f) abuf->fields.sfmt_setf.f
   12228      1.1  christos   int UNUSED written = 0;
   12229      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12230      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12231      1.1  christos 
   12232      1.1  christos {
   12233      1.1  christos   SI tmp_tmp;
   12234      1.1  christos   tmp_tmp = FLD (f_dstsrc);
   12235      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
   12236      1.1  christos   {
   12237      1.1  christos     BI opval = 0;
   12238      1.1  christos     CPU (h_cbit) = opval;
   12239      1.1  christos     written |= (1 << 1);
   12240  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   12241      1.1  christos   }
   12242      1.1  christos }
   12243      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
   12244      1.1  christos   {
   12245      1.1  christos     BI opval = 0;
   12246      1.1  christos     CPU (h_vbit) = opval;
   12247      1.1  christos     written |= (1 << 7);
   12248  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   12249      1.1  christos   }
   12250      1.1  christos }
   12251      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
   12252      1.1  christos   {
   12253      1.1  christos     BI opval = 0;
   12254      1.1  christos     CPU (h_zbit) = opval;
   12255      1.1  christos     written |= (1 << 9);
   12256  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12257      1.1  christos   }
   12258      1.1  christos }
   12259      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
   12260      1.1  christos   {
   12261      1.1  christos     BI opval = 0;
   12262      1.1  christos     CPU (h_nbit) = opval;
   12263      1.1  christos     written |= (1 << 3);
   12264  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12265      1.1  christos   }
   12266      1.1  christos }
   12267      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
   12268      1.1  christos   {
   12269      1.1  christos     BI opval = 0;
   12270      1.1  christos     CPU (h_xbit) = opval;
   12271      1.1  christos     written |= (1 << 8);
   12272  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12273      1.1  christos   }
   12274      1.1  christos }
   12275      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
   12276      1.1  christos   {
   12277      1.1  christos     BI opval = 0;
   12278      1.1  christos     SET_H_IBIT (opval);
   12279      1.1  christos     written |= (1 << 2);
   12280  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
   12281      1.1  christos   }
   12282      1.1  christos }
   12283      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
   12284      1.1  christos   {
   12285      1.1  christos     BI opval = 0;
   12286      1.1  christos     SET_H_UBIT (opval);
   12287      1.1  christos     written |= (1 << 6);
   12288  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
   12289      1.1  christos   }
   12290      1.1  christos }
   12291      1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
   12292      1.1  christos   {
   12293      1.1  christos     BI opval = 0;
   12294      1.1  christos     CPU (h_pbit) = opval;
   12295      1.1  christos     written |= (1 << 4);
   12296  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
   12297      1.1  christos   }
   12298      1.1  christos }
   12299      1.1  christos {
   12300      1.1  christos   {
   12301      1.1  christos     BI opval = 0;
   12302      1.1  christos     CPU (h_xbit) = opval;
   12303      1.1  christos     written |= (1 << 8);
   12304  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12305      1.1  christos   }
   12306      1.1  christos   {
   12307      1.1  christos     BI opval = 0;
   12308      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12309  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12310      1.1  christos   }
   12311      1.1  christos }
   12312      1.1  christos }
   12313      1.1  christos 
   12314      1.1  christos   abuf->written = written;
   12315      1.1  christos #undef FLD
   12316      1.1  christos }
   12317      1.1  christos   NEXT (vpc);
   12318      1.1  christos 
   12319      1.1  christos   CASE (sem, INSN_RFE) : /* rfe */
   12320      1.1  christos {
   12321      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12322      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12323      1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   12324      1.1  christos   int UNUSED written = 0;
   12325      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12326      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12327      1.1  christos 
   12328      1.1  christos {
   12329      1.1  christos   USI tmp_oldccs;
   12330      1.1  christos   USI tmp_samebits;
   12331      1.1  christos   USI tmp_shiftbits;
   12332      1.1  christos   USI tmp_keepmask;
   12333      1.1  christos   BI tmp_p1;
   12334      1.1  christos   tmp_oldccs = GET_H_SR (((UINT) 13));
   12335      1.1  christos   tmp_keepmask = 0xc0000000;
   12336      1.1  christos   tmp_samebits = ANDSI (tmp_oldccs, tmp_keepmask);
   12337      1.1  christos   tmp_shiftbits = ANDSI (SRLSI (ANDSI (tmp_oldccs, 1073609728), 10), INVSI (tmp_keepmask));
   12338      1.1  christos   tmp_p1 = NESI (0, ANDSI (tmp_oldccs, 131072));
   12339      1.1  christos   {
   12340      1.1  christos     SI opval = ORSI (ORSI (tmp_samebits, tmp_shiftbits), ((ANDBI (CPU (h_rbit), NOTBI (tmp_p1))) ? (0) : (128)));
   12341      1.1  christos     SET_H_SR (((UINT) 13), opval);
   12342  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12343      1.1  christos   }
   12344      1.1  christos }
   12345      1.1  christos 
   12346      1.1  christos #undef FLD
   12347      1.1  christos }
   12348      1.1  christos   NEXT (vpc);
   12349      1.1  christos 
   12350      1.1  christos   CASE (sem, INSN_SFE) : /* sfe */
   12351      1.1  christos {
   12352      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12353      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12354      1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   12355      1.1  christos   int UNUSED written = 0;
   12356      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12357      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12358      1.1  christos 
   12359      1.1  christos {
   12360      1.1  christos   SI tmp_oldccs;
   12361      1.1  christos   SI tmp_savemask;
   12362      1.1  christos   tmp_savemask = 0xc0000000;
   12363      1.1  christos   tmp_oldccs = GET_H_SR (((UINT) 13));
   12364      1.1  christos   {
   12365      1.1  christos     SI opval = ORSI (ANDSI (tmp_savemask, tmp_oldccs), ANDSI (INVSI (tmp_savemask), SLLSI (tmp_oldccs, 10)));
   12366      1.1  christos     SET_H_SR (((UINT) 13), opval);
   12367  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12368      1.1  christos   }
   12369      1.1  christos }
   12370      1.1  christos 
   12371      1.1  christos #undef FLD
   12372      1.1  christos }
   12373      1.1  christos   NEXT (vpc);
   12374      1.1  christos 
   12375      1.1  christos   CASE (sem, INSN_RFG) : /* rfg */
   12376      1.1  christos {
   12377      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12378      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12379      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   12380      1.1  christos   int UNUSED written = 0;
   12381      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12382      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12383      1.1  christos 
   12384      1.1  christos crisv32f_rfg_handler (current_cpu, pc);
   12385      1.1  christos 
   12386      1.1  christos #undef FLD
   12387      1.1  christos }
   12388      1.1  christos   NEXT (vpc);
   12389      1.1  christos 
   12390      1.1  christos   CASE (sem, INSN_RFN) : /* rfn */
   12391      1.1  christos {
   12392      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12393      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12394      1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   12395      1.1  christos   int UNUSED written = 0;
   12396      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12397      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12398      1.1  christos 
   12399      1.1  christos {
   12400      1.1  christos {
   12401      1.1  christos   USI tmp_oldccs;
   12402      1.1  christos   USI tmp_samebits;
   12403      1.1  christos   USI tmp_shiftbits;
   12404      1.1  christos   USI tmp_keepmask;
   12405      1.1  christos   BI tmp_p1;
   12406      1.1  christos   tmp_oldccs = GET_H_SR (((UINT) 13));
   12407      1.1  christos   tmp_keepmask = 0xc0000000;
   12408      1.1  christos   tmp_samebits = ANDSI (tmp_oldccs, tmp_keepmask);
   12409      1.1  christos   tmp_shiftbits = ANDSI (SRLSI (ANDSI (tmp_oldccs, 1073609728), 10), INVSI (tmp_keepmask));
   12410      1.1  christos   tmp_p1 = NESI (0, ANDSI (tmp_oldccs, 131072));
   12411      1.1  christos   {
   12412      1.1  christos     SI opval = ORSI (ORSI (tmp_samebits, tmp_shiftbits), ((ANDBI (CPU (h_rbit), NOTBI (tmp_p1))) ? (0) : (128)));
   12413      1.1  christos     SET_H_SR (((UINT) 13), opval);
   12414  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12415      1.1  christos   }
   12416      1.1  christos }
   12417      1.1  christos   {
   12418      1.1  christos     BI opval = 1;
   12419      1.1  christos     SET_H_MBIT (opval);
   12420  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "mbit", 'x', opval);
   12421      1.1  christos   }
   12422      1.1  christos }
   12423      1.1  christos 
   12424      1.1  christos #undef FLD
   12425      1.1  christos }
   12426      1.1  christos   NEXT (vpc);
   12427      1.1  christos 
   12428      1.1  christos   CASE (sem, INSN_HALT) : /* halt */
   12429      1.1  christos {
   12430      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12431      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12432      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   12433      1.1  christos   int UNUSED written = 0;
   12434      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12435      1.1  christos   SEM_BRANCH_INIT
   12436      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12437      1.1  christos 
   12438      1.1  christos   {
   12439      1.1  christos     USI opval = crisv32f_halt_handler (current_cpu, pc);
   12440      1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12441  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12442      1.1  christos   }
   12443      1.1  christos 
   12444      1.1  christos   SEM_BRANCH_FINI (vpc);
   12445      1.1  christos #undef FLD
   12446      1.1  christos }
   12447      1.1  christos   NEXT (vpc);
   12448      1.1  christos 
   12449      1.1  christos   CASE (sem, INSN_BCC_B) : /* b${cc} ${o-pcrel} */
   12450      1.1  christos {
   12451      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12452      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12453      1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
   12454      1.1  christos   int UNUSED written = 0;
   12455      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12456      1.1  christos   SEM_BRANCH_INIT
   12457      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12458      1.1  christos 
   12459      1.1  christos {
   12460      1.1  christos   BI tmp_truthval;
   12461      1.1  christos   tmp_truthval = ({   SI tmp_tmpcond;
   12462      1.1  christos   BI tmp_condres;
   12463      1.1  christos   tmp_tmpcond = FLD (f_operand2);
   12464      1.1  christos ; if (EQSI (tmp_tmpcond, 0)) {
   12465      1.1  christos   tmp_condres = NOTBI (CPU (h_cbit));
   12466      1.1  christos }
   12467      1.1  christos  else if (EQSI (tmp_tmpcond, 1)) {
   12468      1.1  christos   tmp_condres = CPU (h_cbit);
   12469      1.1  christos }
   12470      1.1  christos  else if (EQSI (tmp_tmpcond, 2)) {
   12471      1.1  christos   tmp_condres = NOTBI (CPU (h_zbit));
   12472      1.1  christos }
   12473      1.1  christos  else if (EQSI (tmp_tmpcond, 3)) {
   12474      1.1  christos   tmp_condres = CPU (h_zbit);
   12475      1.1  christos }
   12476      1.1  christos  else if (EQSI (tmp_tmpcond, 4)) {
   12477      1.1  christos   tmp_condres = NOTBI (CPU (h_vbit));
   12478      1.1  christos }
   12479      1.1  christos  else if (EQSI (tmp_tmpcond, 5)) {
   12480      1.1  christos   tmp_condres = CPU (h_vbit);
   12481      1.1  christos }
   12482      1.1  christos  else if (EQSI (tmp_tmpcond, 6)) {
   12483      1.1  christos   tmp_condres = NOTBI (CPU (h_nbit));
   12484      1.1  christos }
   12485      1.1  christos  else if (EQSI (tmp_tmpcond, 7)) {
   12486      1.1  christos   tmp_condres = CPU (h_nbit);
   12487      1.1  christos }
   12488      1.1  christos  else if (EQSI (tmp_tmpcond, 8)) {
   12489      1.1  christos   tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
   12490      1.1  christos }
   12491      1.1  christos  else if (EQSI (tmp_tmpcond, 9)) {
   12492      1.1  christos   tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
   12493      1.1  christos }
   12494      1.1  christos  else if (EQSI (tmp_tmpcond, 10)) {
   12495      1.1  christos   tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
   12496      1.1  christos }
   12497      1.1  christos  else if (EQSI (tmp_tmpcond, 11)) {
   12498      1.1  christos   tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
   12499      1.1  christos }
   12500      1.1  christos  else if (EQSI (tmp_tmpcond, 12)) {
   12501      1.1  christos   tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
   12502      1.1  christos }
   12503      1.1  christos  else if (EQSI (tmp_tmpcond, 13)) {
   12504      1.1  christos   tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
   12505      1.1  christos }
   12506      1.1  christos  else if (EQSI (tmp_tmpcond, 14)) {
   12507      1.1  christos   tmp_condres = 1;
   12508      1.1  christos }
   12509      1.1  christos  else if (EQSI (tmp_tmpcond, 15)) {
   12510      1.1  christos   tmp_condres = CPU (h_pbit);
   12511      1.1  christos }
   12512      1.1  christos ; tmp_condres; });
   12513      1.1  christos crisv32f_branch_taken (current_cpu, pc, FLD (i_o_pcrel), tmp_truthval);
   12514      1.1  christos {
   12515      1.1  christos   {
   12516      1.1  christos     BI opval = 0;
   12517      1.1  christos     CPU (h_xbit) = opval;
   12518  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12519      1.1  christos   }
   12520      1.1  christos   {
   12521      1.1  christos     BI opval = 0;
   12522      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12523  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12524      1.1  christos   }
   12525      1.1  christos }
   12526      1.1  christos if (tmp_truthval) {
   12527      1.1  christos {
   12528      1.1  christos   {
   12529      1.1  christos     USI opval = FLD (i_o_pcrel);
   12530      1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12531      1.1  christos     written |= (1 << 8);
   12532  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12533      1.1  christos   }
   12534      1.1  christos }
   12535      1.1  christos }
   12536      1.1  christos }
   12537      1.1  christos 
   12538      1.1  christos   abuf->written = written;
   12539      1.1  christos   SEM_BRANCH_FINI (vpc);
   12540      1.1  christos #undef FLD
   12541      1.1  christos }
   12542      1.1  christos   NEXT (vpc);
   12543      1.1  christos 
   12544      1.1  christos   CASE (sem, INSN_BA_B) : /* ba ${o-pcrel} */
   12545      1.1  christos {
   12546      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12547      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12548      1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
   12549      1.1  christos   int UNUSED written = 0;
   12550      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12551      1.1  christos   SEM_BRANCH_INIT
   12552      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12553      1.1  christos 
   12554      1.1  christos {
   12555      1.1  christos {
   12556      1.1  christos   {
   12557      1.1  christos     BI opval = 0;
   12558      1.1  christos     CPU (h_xbit) = opval;
   12559  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12560      1.1  christos   }
   12561      1.1  christos   {
   12562      1.1  christos     BI opval = 0;
   12563      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12564  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12565      1.1  christos   }
   12566      1.1  christos }
   12567      1.1  christos {
   12568      1.1  christos   {
   12569      1.1  christos     USI opval = FLD (i_o_pcrel);
   12570      1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12571  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12572      1.1  christos   }
   12573      1.1  christos }
   12574      1.1  christos }
   12575      1.1  christos 
   12576      1.1  christos   SEM_BRANCH_FINI (vpc);
   12577      1.1  christos #undef FLD
   12578      1.1  christos }
   12579      1.1  christos   NEXT (vpc);
   12580      1.1  christos 
   12581      1.1  christos   CASE (sem, INSN_BCC_W) : /* b${cc} ${o-word-pcrel} */
   12582      1.1  christos {
   12583      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12584      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12585      1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
   12586      1.1  christos   int UNUSED written = 0;
   12587      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12588      1.1  christos   SEM_BRANCH_INIT
   12589      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   12590      1.1  christos 
   12591      1.1  christos {
   12592      1.1  christos   BI tmp_truthval;
   12593      1.1  christos   tmp_truthval = ({   SI tmp_tmpcond;
   12594      1.1  christos   BI tmp_condres;
   12595      1.1  christos   tmp_tmpcond = FLD (f_operand2);
   12596      1.1  christos ; if (EQSI (tmp_tmpcond, 0)) {
   12597      1.1  christos   tmp_condres = NOTBI (CPU (h_cbit));
   12598      1.1  christos }
   12599      1.1  christos  else if (EQSI (tmp_tmpcond, 1)) {
   12600      1.1  christos   tmp_condres = CPU (h_cbit);
   12601      1.1  christos }
   12602      1.1  christos  else if (EQSI (tmp_tmpcond, 2)) {
   12603      1.1  christos   tmp_condres = NOTBI (CPU (h_zbit));
   12604      1.1  christos }
   12605      1.1  christos  else if (EQSI (tmp_tmpcond, 3)) {
   12606      1.1  christos   tmp_condres = CPU (h_zbit);
   12607      1.1  christos }
   12608      1.1  christos  else if (EQSI (tmp_tmpcond, 4)) {
   12609      1.1  christos   tmp_condres = NOTBI (CPU (h_vbit));
   12610      1.1  christos }
   12611      1.1  christos  else if (EQSI (tmp_tmpcond, 5)) {
   12612      1.1  christos   tmp_condres = CPU (h_vbit);
   12613      1.1  christos }
   12614      1.1  christos  else if (EQSI (tmp_tmpcond, 6)) {
   12615      1.1  christos   tmp_condres = NOTBI (CPU (h_nbit));
   12616      1.1  christos }
   12617      1.1  christos  else if (EQSI (tmp_tmpcond, 7)) {
   12618      1.1  christos   tmp_condres = CPU (h_nbit);
   12619      1.1  christos }
   12620      1.1  christos  else if (EQSI (tmp_tmpcond, 8)) {
   12621      1.1  christos   tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
   12622      1.1  christos }
   12623      1.1  christos  else if (EQSI (tmp_tmpcond, 9)) {
   12624      1.1  christos   tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
   12625      1.1  christos }
   12626      1.1  christos  else if (EQSI (tmp_tmpcond, 10)) {
   12627      1.1  christos   tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
   12628      1.1  christos }
   12629      1.1  christos  else if (EQSI (tmp_tmpcond, 11)) {
   12630      1.1  christos   tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
   12631      1.1  christos }
   12632      1.1  christos  else if (EQSI (tmp_tmpcond, 12)) {
   12633      1.1  christos   tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
   12634      1.1  christos }
   12635      1.1  christos  else if (EQSI (tmp_tmpcond, 13)) {
   12636      1.1  christos   tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
   12637      1.1  christos }
   12638      1.1  christos  else if (EQSI (tmp_tmpcond, 14)) {
   12639      1.1  christos   tmp_condres = 1;
   12640      1.1  christos }
   12641      1.1  christos  else if (EQSI (tmp_tmpcond, 15)) {
   12642      1.1  christos   tmp_condres = CPU (h_pbit);
   12643      1.1  christos }
   12644      1.1  christos ; tmp_condres; });
   12645      1.1  christos crisv32f_branch_taken (current_cpu, pc, FLD (i_o_word_pcrel), tmp_truthval);
   12646      1.1  christos {
   12647      1.1  christos   {
   12648      1.1  christos     BI opval = 0;
   12649      1.1  christos     CPU (h_xbit) = opval;
   12650  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12651      1.1  christos   }
   12652      1.1  christos   {
   12653      1.1  christos     BI opval = 0;
   12654      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12655  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12656      1.1  christos   }
   12657      1.1  christos }
   12658      1.1  christos if (tmp_truthval) {
   12659      1.1  christos {
   12660      1.1  christos   {
   12661      1.1  christos     USI opval = FLD (i_o_word_pcrel);
   12662      1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12663      1.1  christos     written |= (1 << 8);
   12664  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12665      1.1  christos   }
   12666      1.1  christos }
   12667      1.1  christos }
   12668      1.1  christos }
   12669      1.1  christos 
   12670      1.1  christos   abuf->written = written;
   12671      1.1  christos   SEM_BRANCH_FINI (vpc);
   12672      1.1  christos #undef FLD
   12673      1.1  christos }
   12674      1.1  christos   NEXT (vpc);
   12675      1.1  christos 
   12676      1.1  christos   CASE (sem, INSN_BA_W) : /* ba ${o-word-pcrel} */
   12677      1.1  christos {
   12678      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12679      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12680      1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
   12681      1.1  christos   int UNUSED written = 0;
   12682      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12683      1.1  christos   SEM_BRANCH_INIT
   12684      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   12685      1.1  christos 
   12686      1.1  christos {
   12687      1.1  christos {
   12688      1.1  christos   {
   12689      1.1  christos     BI opval = 0;
   12690      1.1  christos     CPU (h_xbit) = opval;
   12691  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12692      1.1  christos   }
   12693      1.1  christos   {
   12694      1.1  christos     BI opval = 0;
   12695      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12696  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12697      1.1  christos   }
   12698      1.1  christos }
   12699      1.1  christos {
   12700      1.1  christos   {
   12701      1.1  christos     USI opval = FLD (i_o_word_pcrel);
   12702      1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12703  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12704      1.1  christos   }
   12705      1.1  christos }
   12706      1.1  christos }
   12707      1.1  christos 
   12708      1.1  christos   SEM_BRANCH_FINI (vpc);
   12709      1.1  christos #undef FLD
   12710      1.1  christos }
   12711      1.1  christos   NEXT (vpc);
   12712      1.1  christos 
   12713      1.1  christos   CASE (sem, INSN_JAS_R) : /* jas ${Rs},${Pd} */
   12714      1.1  christos {
   12715      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12716      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12717      1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   12718      1.1  christos   int UNUSED written = 0;
   12719      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12720      1.1  christos   SEM_BRANCH_INIT
   12721      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12722      1.1  christos 
   12723      1.1  christos {
   12724      1.1  christos {
   12725      1.1  christos   {
   12726      1.1  christos     BI opval = 0;
   12727      1.1  christos     CPU (h_xbit) = opval;
   12728  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12729      1.1  christos   }
   12730      1.1  christos   {
   12731      1.1  christos     BI opval = 0;
   12732      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12733  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12734      1.1  christos   }
   12735      1.1  christos }
   12736      1.1  christos if (ANDIF (EQSI (FLD (f_operand1), 1), EQSI (FLD (f_operand2), 11))) {
   12737      1.1  christos cris_flush_simulator_decode_cache (current_cpu, pc);
   12738      1.1  christos }
   12739      1.1  christos {
   12740      1.1  christos {
   12741      1.1  christos   {
   12742      1.1  christos     SI opval = ADDSI (pc, 4);
   12743      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12744  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12745      1.1  christos   }
   12746      1.1  christos   {
   12747      1.1  christos     USI opval = GET_H_GR (FLD (f_operand1));
   12748      1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12749  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12750      1.1  christos   }
   12751      1.1  christos }
   12752      1.1  christos }
   12753      1.1  christos }
   12754      1.1  christos 
   12755      1.1  christos   SEM_BRANCH_FINI (vpc);
   12756      1.1  christos #undef FLD
   12757      1.1  christos }
   12758      1.1  christos   NEXT (vpc);
   12759      1.1  christos 
   12760      1.1  christos   CASE (sem, INSN_JAS_C) : /* jas ${const32},${Pd} */
   12761      1.1  christos {
   12762      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12763      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12764      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   12765      1.1  christos   int UNUSED written = 0;
   12766      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12767      1.1  christos   SEM_BRANCH_INIT
   12768      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12769      1.1  christos 
   12770      1.1  christos {
   12771      1.1  christos {
   12772      1.1  christos   {
   12773      1.1  christos     BI opval = 0;
   12774      1.1  christos     CPU (h_xbit) = opval;
   12775  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12776      1.1  christos   }
   12777      1.1  christos   {
   12778      1.1  christos     BI opval = 0;
   12779      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12780  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12781      1.1  christos   }
   12782      1.1  christos }
   12783      1.1  christos {
   12784      1.1  christos {
   12785      1.1  christos   {
   12786      1.1  christos     SI opval = ADDSI (pc, 8);
   12787      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12788  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12789      1.1  christos   }
   12790      1.1  christos   {
   12791      1.1  christos     USI opval = FLD (f_indir_pc__dword);
   12792      1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12793  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12794      1.1  christos   }
   12795      1.1  christos }
   12796      1.1  christos }
   12797      1.1  christos }
   12798      1.1  christos 
   12799      1.1  christos   SEM_BRANCH_FINI (vpc);
   12800      1.1  christos #undef FLD
   12801      1.1  christos }
   12802      1.1  christos   NEXT (vpc);
   12803      1.1  christos 
   12804      1.1  christos   CASE (sem, INSN_JUMP_P) : /* jump ${Ps} */
   12805      1.1  christos {
   12806      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12807      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12808      1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   12809      1.1  christos   int UNUSED written = 0;
   12810      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12811      1.1  christos   SEM_BRANCH_INIT
   12812      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12813      1.1  christos 
   12814      1.1  christos {
   12815      1.1  christos {
   12816      1.1  christos   {
   12817      1.1  christos     BI opval = 0;
   12818      1.1  christos     CPU (h_xbit) = opval;
   12819  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12820      1.1  christos   }
   12821      1.1  christos   {
   12822      1.1  christos     BI opval = 0;
   12823      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12824  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12825      1.1  christos   }
   12826      1.1  christos }
   12827      1.1  christos {
   12828      1.1  christos   {
   12829      1.1  christos     USI opval = GET_H_SR (FLD (f_operand2));
   12830      1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12831  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12832      1.1  christos   }
   12833      1.1  christos }
   12834      1.1  christos }
   12835      1.1  christos 
   12836      1.1  christos   SEM_BRANCH_FINI (vpc);
   12837      1.1  christos #undef FLD
   12838      1.1  christos }
   12839      1.1  christos   NEXT (vpc);
   12840      1.1  christos 
   12841      1.1  christos   CASE (sem, INSN_BAS_C) : /* bas ${const32},${Pd} */
   12842      1.1  christos {
   12843      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12844      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12845      1.1  christos #define FLD(f) abuf->fields.sfmt_bas_c.f
   12846      1.1  christos   int UNUSED written = 0;
   12847      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12848      1.1  christos   SEM_BRANCH_INIT
   12849      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12850      1.1  christos 
   12851      1.1  christos {
   12852      1.1  christos {
   12853      1.1  christos   {
   12854      1.1  christos     BI opval = 0;
   12855      1.1  christos     CPU (h_xbit) = opval;
   12856  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12857      1.1  christos   }
   12858      1.1  christos   {
   12859      1.1  christos     BI opval = 0;
   12860      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12861  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12862      1.1  christos   }
   12863      1.1  christos }
   12864      1.1  christos {
   12865      1.1  christos {
   12866      1.1  christos   {
   12867      1.1  christos     SI opval = ADDSI (pc, 8);
   12868      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12869  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12870      1.1  christos   }
   12871      1.1  christos   {
   12872      1.1  christos     USI opval = FLD (i_const32_pcrel);
   12873      1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12874  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12875      1.1  christos   }
   12876      1.1  christos }
   12877      1.1  christos }
   12878      1.1  christos }
   12879      1.1  christos 
   12880      1.1  christos   SEM_BRANCH_FINI (vpc);
   12881      1.1  christos #undef FLD
   12882      1.1  christos }
   12883      1.1  christos   NEXT (vpc);
   12884      1.1  christos 
   12885      1.1  christos   CASE (sem, INSN_JASC_R) : /* jasc ${Rs},${Pd} */
   12886      1.1  christos {
   12887      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12888      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12889      1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   12890      1.1  christos   int UNUSED written = 0;
   12891      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12892      1.1  christos   SEM_BRANCH_INIT
   12893      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12894      1.1  christos 
   12895      1.1  christos {
   12896      1.1  christos {
   12897      1.1  christos   {
   12898      1.1  christos     BI opval = 0;
   12899      1.1  christos     CPU (h_xbit) = opval;
   12900  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12901      1.1  christos   }
   12902      1.1  christos   {
   12903      1.1  christos     BI opval = 0;
   12904      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12905  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12906      1.1  christos   }
   12907      1.1  christos }
   12908      1.1  christos {
   12909      1.1  christos {
   12910      1.1  christos   {
   12911      1.1  christos     SI opval = ADDSI (pc, 8);
   12912      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12913  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12914      1.1  christos   }
   12915      1.1  christos   {
   12916      1.1  christos     USI opval = GET_H_GR (FLD (f_operand1));
   12917      1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12918  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12919      1.1  christos   }
   12920      1.1  christos }
   12921      1.1  christos }
   12922      1.1  christos }
   12923      1.1  christos 
   12924      1.1  christos   SEM_BRANCH_FINI (vpc);
   12925      1.1  christos #undef FLD
   12926      1.1  christos }
   12927      1.1  christos   NEXT (vpc);
   12928      1.1  christos 
   12929      1.1  christos   CASE (sem, INSN_JASC_C) : /* jasc ${const32},${Pd} */
   12930      1.1  christos {
   12931      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12932      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12933      1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   12934      1.1  christos   int UNUSED written = 0;
   12935      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12936      1.1  christos   SEM_BRANCH_INIT
   12937      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12938      1.1  christos 
   12939      1.1  christos {
   12940      1.1  christos {
   12941      1.1  christos   {
   12942      1.1  christos     BI opval = 0;
   12943      1.1  christos     CPU (h_xbit) = opval;
   12944  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12945      1.1  christos   }
   12946      1.1  christos   {
   12947      1.1  christos     BI opval = 0;
   12948      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12949  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12950      1.1  christos   }
   12951      1.1  christos }
   12952      1.1  christos {
   12953      1.1  christos {
   12954      1.1  christos   {
   12955      1.1  christos     SI opval = ADDSI (pc, 12);
   12956      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12957  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12958      1.1  christos   }
   12959      1.1  christos   {
   12960      1.1  christos     USI opval = FLD (f_indir_pc__dword);
   12961      1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12962  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12963      1.1  christos   }
   12964      1.1  christos }
   12965      1.1  christos }
   12966      1.1  christos }
   12967      1.1  christos 
   12968      1.1  christos   SEM_BRANCH_FINI (vpc);
   12969      1.1  christos #undef FLD
   12970      1.1  christos }
   12971      1.1  christos   NEXT (vpc);
   12972      1.1  christos 
   12973      1.1  christos   CASE (sem, INSN_BASC_C) : /* basc ${const32},${Pd} */
   12974      1.1  christos {
   12975      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12976      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12977      1.1  christos #define FLD(f) abuf->fields.sfmt_bas_c.f
   12978      1.1  christos   int UNUSED written = 0;
   12979      1.1  christos   IADDR UNUSED pc = abuf->addr;
   12980      1.1  christos   SEM_BRANCH_INIT
   12981      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12982      1.1  christos 
   12983      1.1  christos {
   12984      1.1  christos {
   12985      1.1  christos   {
   12986      1.1  christos     BI opval = 0;
   12987      1.1  christos     CPU (h_xbit) = opval;
   12988  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12989      1.1  christos   }
   12990      1.1  christos   {
   12991      1.1  christos     BI opval = 0;
   12992      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12993  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12994      1.1  christos   }
   12995      1.1  christos }
   12996      1.1  christos {
   12997      1.1  christos {
   12998      1.1  christos   {
   12999      1.1  christos     SI opval = ADDSI (pc, 12);
   13000      1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   13001  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   13002      1.1  christos   }
   13003      1.1  christos   {
   13004      1.1  christos     USI opval = FLD (i_const32_pcrel);
   13005      1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   13006  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   13007      1.1  christos   }
   13008      1.1  christos }
   13009      1.1  christos }
   13010      1.1  christos }
   13011      1.1  christos 
   13012      1.1  christos   SEM_BRANCH_FINI (vpc);
   13013      1.1  christos #undef FLD
   13014      1.1  christos }
   13015      1.1  christos   NEXT (vpc);
   13016      1.1  christos 
   13017      1.1  christos   CASE (sem, INSN_BREAK) : /* break $n */
   13018      1.1  christos {
   13019      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13020      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13021      1.1  christos #define FLD(f) abuf->fields.sfmt_break.f
   13022      1.1  christos   int UNUSED written = 0;
   13023      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13024      1.1  christos   SEM_BRANCH_INIT
   13025      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13026      1.1  christos 
   13027      1.1  christos {
   13028      1.1  christos {
   13029      1.1  christos   {
   13030      1.1  christos     BI opval = 0;
   13031      1.1  christos     CPU (h_xbit) = opval;
   13032  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13033      1.1  christos   }
   13034      1.1  christos   {
   13035      1.1  christos     BI opval = 0;
   13036      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13037  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13038      1.1  christos   }
   13039      1.1  christos }
   13040      1.1  christos   {
   13041      1.1  christos     USI opval = crisv32f_break_handler (current_cpu, FLD (f_u4), pc);
   13042      1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   13043  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   13044      1.1  christos   }
   13045      1.1  christos }
   13046      1.1  christos 
   13047      1.1  christos   SEM_BRANCH_FINI (vpc);
   13048      1.1  christos #undef FLD
   13049      1.1  christos }
   13050      1.1  christos   NEXT (vpc);
   13051      1.1  christos 
   13052      1.1  christos   CASE (sem, INSN_BOUND_R_B_R) : /* bound-r.b ${Rs},${Rd} */
   13053      1.1  christos {
   13054      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13055      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13056      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13057      1.1  christos   int UNUSED written = 0;
   13058      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13059      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13060      1.1  christos 
   13061      1.1  christos {
   13062      1.1  christos   SI tmp_tmpopd;
   13063      1.1  christos   SI tmp_tmpops;
   13064      1.1  christos   SI tmp_newval;
   13065      1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   13066      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13067      1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13068      1.1  christos   {
   13069      1.1  christos     SI opval = tmp_newval;
   13070      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13071  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13072      1.1  christos   }
   13073      1.1  christos {
   13074      1.1  christos   {
   13075      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13076      1.1  christos     CPU (h_nbit) = opval;
   13077  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13078      1.1  christos   }
   13079      1.1  christos   {
   13080      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13081      1.1  christos     CPU (h_zbit) = opval;
   13082  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13083      1.1  christos   }
   13084      1.1  christos SET_H_CBIT_MOVE (0);
   13085      1.1  christos SET_H_VBIT_MOVE (0);
   13086      1.1  christos {
   13087      1.1  christos   {
   13088      1.1  christos     BI opval = 0;
   13089      1.1  christos     CPU (h_xbit) = opval;
   13090  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13091      1.1  christos   }
   13092      1.1  christos   {
   13093      1.1  christos     BI opval = 0;
   13094      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13095  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13096      1.1  christos   }
   13097      1.1  christos }
   13098      1.1  christos }
   13099      1.1  christos }
   13100      1.1  christos 
   13101      1.1  christos #undef FLD
   13102      1.1  christos }
   13103      1.1  christos   NEXT (vpc);
   13104      1.1  christos 
   13105      1.1  christos   CASE (sem, INSN_BOUND_R_W_R) : /* bound-r.w ${Rs},${Rd} */
   13106      1.1  christos {
   13107      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13108      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13109      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13110      1.1  christos   int UNUSED written = 0;
   13111      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13112      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13113      1.1  christos 
   13114      1.1  christos {
   13115      1.1  christos   SI tmp_tmpopd;
   13116      1.1  christos   SI tmp_tmpops;
   13117      1.1  christos   SI tmp_newval;
   13118      1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   13119      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13120      1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13121      1.1  christos   {
   13122      1.1  christos     SI opval = tmp_newval;
   13123      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13124  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13125      1.1  christos   }
   13126      1.1  christos {
   13127      1.1  christos   {
   13128      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13129      1.1  christos     CPU (h_nbit) = opval;
   13130  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13131      1.1  christos   }
   13132      1.1  christos   {
   13133      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13134      1.1  christos     CPU (h_zbit) = opval;
   13135  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13136      1.1  christos   }
   13137      1.1  christos SET_H_CBIT_MOVE (0);
   13138      1.1  christos SET_H_VBIT_MOVE (0);
   13139      1.1  christos {
   13140      1.1  christos   {
   13141      1.1  christos     BI opval = 0;
   13142      1.1  christos     CPU (h_xbit) = opval;
   13143  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13144      1.1  christos   }
   13145      1.1  christos   {
   13146      1.1  christos     BI opval = 0;
   13147      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13148  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13149      1.1  christos   }
   13150      1.1  christos }
   13151      1.1  christos }
   13152      1.1  christos }
   13153      1.1  christos 
   13154      1.1  christos #undef FLD
   13155      1.1  christos }
   13156      1.1  christos   NEXT (vpc);
   13157      1.1  christos 
   13158      1.1  christos   CASE (sem, INSN_BOUND_R_D_R) : /* bound-r.d ${Rs},${Rd} */
   13159      1.1  christos {
   13160      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13161      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13162      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13163      1.1  christos   int UNUSED written = 0;
   13164      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13165      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13166      1.1  christos 
   13167      1.1  christos {
   13168      1.1  christos   SI tmp_tmpopd;
   13169      1.1  christos   SI tmp_tmpops;
   13170      1.1  christos   SI tmp_newval;
   13171      1.1  christos   tmp_tmpops = TRUNCSISI (GET_H_GR (FLD (f_operand1)));
   13172      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13173      1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13174      1.1  christos   {
   13175      1.1  christos     SI opval = tmp_newval;
   13176      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13177  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13178      1.1  christos   }
   13179      1.1  christos {
   13180      1.1  christos   {
   13181      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13182      1.1  christos     CPU (h_nbit) = opval;
   13183  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13184      1.1  christos   }
   13185      1.1  christos   {
   13186      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13187      1.1  christos     CPU (h_zbit) = opval;
   13188  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13189      1.1  christos   }
   13190      1.1  christos SET_H_CBIT_MOVE (0);
   13191      1.1  christos SET_H_VBIT_MOVE (0);
   13192      1.1  christos {
   13193      1.1  christos   {
   13194      1.1  christos     BI opval = 0;
   13195      1.1  christos     CPU (h_xbit) = opval;
   13196  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13197      1.1  christos   }
   13198      1.1  christos   {
   13199      1.1  christos     BI opval = 0;
   13200      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13201  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13202      1.1  christos   }
   13203      1.1  christos }
   13204      1.1  christos }
   13205      1.1  christos }
   13206      1.1  christos 
   13207      1.1  christos #undef FLD
   13208      1.1  christos }
   13209      1.1  christos   NEXT (vpc);
   13210      1.1  christos 
   13211      1.1  christos   CASE (sem, INSN_BOUND_CB) : /* bound.b [PC+],${Rd} */
   13212      1.1  christos {
   13213      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13214      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13215      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   13216      1.1  christos   int UNUSED written = 0;
   13217      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13218      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13219      1.1  christos 
   13220      1.1  christos {
   13221      1.1  christos   SI tmp_tmpopd;
   13222      1.1  christos   SI tmp_tmpops;
   13223      1.1  christos   SI tmp_newval;
   13224      1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   13225      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13226      1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13227      1.1  christos   {
   13228      1.1  christos     SI opval = tmp_newval;
   13229      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13230  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13231      1.1  christos   }
   13232      1.1  christos {
   13233      1.1  christos   {
   13234      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13235      1.1  christos     CPU (h_nbit) = opval;
   13236  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13237      1.1  christos   }
   13238      1.1  christos   {
   13239      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13240      1.1  christos     CPU (h_zbit) = opval;
   13241  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13242      1.1  christos   }
   13243      1.1  christos SET_H_CBIT_MOVE (0);
   13244      1.1  christos SET_H_VBIT_MOVE (0);
   13245      1.1  christos {
   13246      1.1  christos   {
   13247      1.1  christos     BI opval = 0;
   13248      1.1  christos     CPU (h_xbit) = opval;
   13249  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13250      1.1  christos   }
   13251      1.1  christos   {
   13252      1.1  christos     BI opval = 0;
   13253      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13254  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13255      1.1  christos   }
   13256      1.1  christos }
   13257      1.1  christos }
   13258      1.1  christos }
   13259      1.1  christos 
   13260      1.1  christos #undef FLD
   13261      1.1  christos }
   13262      1.1  christos   NEXT (vpc);
   13263      1.1  christos 
   13264      1.1  christos   CASE (sem, INSN_BOUND_CW) : /* bound.w [PC+],${Rd} */
   13265      1.1  christos {
   13266      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13267      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13268      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   13269      1.1  christos   int UNUSED written = 0;
   13270      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13271      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13272      1.1  christos 
   13273      1.1  christos {
   13274      1.1  christos   SI tmp_tmpopd;
   13275      1.1  christos   SI tmp_tmpops;
   13276      1.1  christos   SI tmp_newval;
   13277      1.1  christos   tmp_tmpops = ZEXTSISI (FLD (f_indir_pc__word));
   13278      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13279      1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13280      1.1  christos   {
   13281      1.1  christos     SI opval = tmp_newval;
   13282      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13283  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13284      1.1  christos   }
   13285      1.1  christos {
   13286      1.1  christos   {
   13287      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13288      1.1  christos     CPU (h_nbit) = opval;
   13289  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13290      1.1  christos   }
   13291      1.1  christos   {
   13292      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13293      1.1  christos     CPU (h_zbit) = opval;
   13294  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13295      1.1  christos   }
   13296      1.1  christos SET_H_CBIT_MOVE (0);
   13297      1.1  christos SET_H_VBIT_MOVE (0);
   13298      1.1  christos {
   13299      1.1  christos   {
   13300      1.1  christos     BI opval = 0;
   13301      1.1  christos     CPU (h_xbit) = opval;
   13302  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13303      1.1  christos   }
   13304      1.1  christos   {
   13305      1.1  christos     BI opval = 0;
   13306      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13307  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13308      1.1  christos   }
   13309      1.1  christos }
   13310      1.1  christos }
   13311      1.1  christos }
   13312      1.1  christos 
   13313      1.1  christos #undef FLD
   13314      1.1  christos }
   13315      1.1  christos   NEXT (vpc);
   13316      1.1  christos 
   13317      1.1  christos   CASE (sem, INSN_BOUND_CD) : /* bound.d [PC+],${Rd} */
   13318      1.1  christos {
   13319      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13320      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13321      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   13322      1.1  christos   int UNUSED written = 0;
   13323      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13324      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   13325      1.1  christos 
   13326      1.1  christos {
   13327      1.1  christos   SI tmp_tmpopd;
   13328      1.1  christos   SI tmp_tmpops;
   13329      1.1  christos   SI tmp_newval;
   13330      1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   13331      1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13332      1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13333      1.1  christos   {
   13334      1.1  christos     SI opval = tmp_newval;
   13335      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13336  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13337      1.1  christos   }
   13338      1.1  christos {
   13339      1.1  christos   {
   13340      1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13341      1.1  christos     CPU (h_nbit) = opval;
   13342  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13343      1.1  christos   }
   13344      1.1  christos   {
   13345      1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13346      1.1  christos     CPU (h_zbit) = opval;
   13347  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13348      1.1  christos   }
   13349      1.1  christos SET_H_CBIT_MOVE (0);
   13350      1.1  christos SET_H_VBIT_MOVE (0);
   13351      1.1  christos {
   13352      1.1  christos   {
   13353      1.1  christos     BI opval = 0;
   13354      1.1  christos     CPU (h_xbit) = opval;
   13355  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13356      1.1  christos   }
   13357      1.1  christos   {
   13358      1.1  christos     BI opval = 0;
   13359      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13360  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13361      1.1  christos   }
   13362      1.1  christos }
   13363      1.1  christos }
   13364      1.1  christos }
   13365      1.1  christos 
   13366      1.1  christos #undef FLD
   13367      1.1  christos }
   13368      1.1  christos   NEXT (vpc);
   13369      1.1  christos 
   13370      1.1  christos   CASE (sem, INSN_SCC) : /* s${cc} ${Rd-sfield} */
   13371      1.1  christos {
   13372      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13373      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13374      1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   13375      1.1  christos   int UNUSED written = 0;
   13376      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13377      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13378      1.1  christos 
   13379      1.1  christos {
   13380      1.1  christos   BI tmp_truthval;
   13381      1.1  christos   tmp_truthval = ({   SI tmp_tmpcond;
   13382      1.1  christos   BI tmp_condres;
   13383      1.1  christos   tmp_tmpcond = FLD (f_operand2);
   13384      1.1  christos ; if (EQSI (tmp_tmpcond, 0)) {
   13385      1.1  christos   tmp_condres = NOTBI (CPU (h_cbit));
   13386      1.1  christos }
   13387      1.1  christos  else if (EQSI (tmp_tmpcond, 1)) {
   13388      1.1  christos   tmp_condres = CPU (h_cbit);
   13389      1.1  christos }
   13390      1.1  christos  else if (EQSI (tmp_tmpcond, 2)) {
   13391      1.1  christos   tmp_condres = NOTBI (CPU (h_zbit));
   13392      1.1  christos }
   13393      1.1  christos  else if (EQSI (tmp_tmpcond, 3)) {
   13394      1.1  christos   tmp_condres = CPU (h_zbit);
   13395      1.1  christos }
   13396      1.1  christos  else if (EQSI (tmp_tmpcond, 4)) {
   13397      1.1  christos   tmp_condres = NOTBI (CPU (h_vbit));
   13398      1.1  christos }
   13399      1.1  christos  else if (EQSI (tmp_tmpcond, 5)) {
   13400      1.1  christos   tmp_condres = CPU (h_vbit);
   13401      1.1  christos }
   13402      1.1  christos  else if (EQSI (tmp_tmpcond, 6)) {
   13403      1.1  christos   tmp_condres = NOTBI (CPU (h_nbit));
   13404      1.1  christos }
   13405      1.1  christos  else if (EQSI (tmp_tmpcond, 7)) {
   13406      1.1  christos   tmp_condres = CPU (h_nbit);
   13407      1.1  christos }
   13408      1.1  christos  else if (EQSI (tmp_tmpcond, 8)) {
   13409      1.1  christos   tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
   13410      1.1  christos }
   13411      1.1  christos  else if (EQSI (tmp_tmpcond, 9)) {
   13412      1.1  christos   tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
   13413      1.1  christos }
   13414      1.1  christos  else if (EQSI (tmp_tmpcond, 10)) {
   13415      1.1  christos   tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
   13416      1.1  christos }
   13417      1.1  christos  else if (EQSI (tmp_tmpcond, 11)) {
   13418      1.1  christos   tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
   13419      1.1  christos }
   13420      1.1  christos  else if (EQSI (tmp_tmpcond, 12)) {
   13421      1.1  christos   tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
   13422      1.1  christos }
   13423      1.1  christos  else if (EQSI (tmp_tmpcond, 13)) {
   13424      1.1  christos   tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
   13425      1.1  christos }
   13426      1.1  christos  else if (EQSI (tmp_tmpcond, 14)) {
   13427      1.1  christos   tmp_condres = 1;
   13428      1.1  christos }
   13429      1.1  christos  else if (EQSI (tmp_tmpcond, 15)) {
   13430      1.1  christos   tmp_condres = CPU (h_pbit);
   13431      1.1  christos }
   13432      1.1  christos ; tmp_condres; });
   13433      1.1  christos   {
   13434      1.1  christos     SI opval = ZEXTBISI (tmp_truthval);
   13435      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13436  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13437      1.1  christos   }
   13438      1.1  christos {
   13439      1.1  christos   {
   13440      1.1  christos     BI opval = 0;
   13441      1.1  christos     CPU (h_xbit) = opval;
   13442  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13443      1.1  christos   }
   13444      1.1  christos   {
   13445      1.1  christos     BI opval = 0;
   13446      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13447  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13448      1.1  christos   }
   13449      1.1  christos }
   13450      1.1  christos }
   13451      1.1  christos 
   13452      1.1  christos #undef FLD
   13453      1.1  christos }
   13454      1.1  christos   NEXT (vpc);
   13455      1.1  christos 
   13456      1.1  christos   CASE (sem, INSN_LZ) : /* lz ${Rs},${Rd} */
   13457      1.1  christos {
   13458      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13459      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13460      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13461      1.1  christos   int UNUSED written = 0;
   13462      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13463      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13464      1.1  christos 
   13465      1.1  christos {
   13466      1.1  christos   SI tmp_tmpd;
   13467      1.1  christos   SI tmp_tmp;
   13468      1.1  christos   tmp_tmp = GET_H_GR (FLD (f_operand1));
   13469      1.1  christos   tmp_tmpd = 0;
   13470      1.1  christos {
   13471      1.1  christos if (GESI (tmp_tmp, 0)) {
   13472      1.1  christos {
   13473      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13474      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13475      1.1  christos }
   13476      1.1  christos }
   13477      1.1  christos if (GESI (tmp_tmp, 0)) {
   13478      1.1  christos {
   13479      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13480      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13481      1.1  christos }
   13482      1.1  christos }
   13483      1.1  christos if (GESI (tmp_tmp, 0)) {
   13484      1.1  christos {
   13485      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13486      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13487      1.1  christos }
   13488      1.1  christos }
   13489      1.1  christos if (GESI (tmp_tmp, 0)) {
   13490      1.1  christos {
   13491      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13492      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13493      1.1  christos }
   13494      1.1  christos }
   13495      1.1  christos if (GESI (tmp_tmp, 0)) {
   13496      1.1  christos {
   13497      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13498      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13499      1.1  christos }
   13500      1.1  christos }
   13501      1.1  christos if (GESI (tmp_tmp, 0)) {
   13502      1.1  christos {
   13503      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13504      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13505      1.1  christos }
   13506      1.1  christos }
   13507      1.1  christos if (GESI (tmp_tmp, 0)) {
   13508      1.1  christos {
   13509      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13510      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13511      1.1  christos }
   13512      1.1  christos }
   13513      1.1  christos if (GESI (tmp_tmp, 0)) {
   13514      1.1  christos {
   13515      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13516      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13517      1.1  christos }
   13518      1.1  christos }
   13519      1.1  christos if (GESI (tmp_tmp, 0)) {
   13520      1.1  christos {
   13521      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13522      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13523      1.1  christos }
   13524      1.1  christos }
   13525      1.1  christos if (GESI (tmp_tmp, 0)) {
   13526      1.1  christos {
   13527      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13528      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13529      1.1  christos }
   13530      1.1  christos }
   13531      1.1  christos if (GESI (tmp_tmp, 0)) {
   13532      1.1  christos {
   13533      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13534      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13535      1.1  christos }
   13536      1.1  christos }
   13537      1.1  christos if (GESI (tmp_tmp, 0)) {
   13538      1.1  christos {
   13539      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13540      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13541      1.1  christos }
   13542      1.1  christos }
   13543      1.1  christos if (GESI (tmp_tmp, 0)) {
   13544      1.1  christos {
   13545      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13546      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13547      1.1  christos }
   13548      1.1  christos }
   13549      1.1  christos if (GESI (tmp_tmp, 0)) {
   13550      1.1  christos {
   13551      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13552      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13553      1.1  christos }
   13554      1.1  christos }
   13555      1.1  christos if (GESI (tmp_tmp, 0)) {
   13556      1.1  christos {
   13557      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13558      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13559      1.1  christos }
   13560      1.1  christos }
   13561      1.1  christos if (GESI (tmp_tmp, 0)) {
   13562      1.1  christos {
   13563      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13564      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13565      1.1  christos }
   13566      1.1  christos }
   13567      1.1  christos if (GESI (tmp_tmp, 0)) {
   13568      1.1  christos {
   13569      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13570      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13571      1.1  christos }
   13572      1.1  christos }
   13573      1.1  christos if (GESI (tmp_tmp, 0)) {
   13574      1.1  christos {
   13575      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13576      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13577      1.1  christos }
   13578      1.1  christos }
   13579      1.1  christos if (GESI (tmp_tmp, 0)) {
   13580      1.1  christos {
   13581      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13582      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13583      1.1  christos }
   13584      1.1  christos }
   13585      1.1  christos if (GESI (tmp_tmp, 0)) {
   13586      1.1  christos {
   13587      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13588      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13589      1.1  christos }
   13590      1.1  christos }
   13591      1.1  christos if (GESI (tmp_tmp, 0)) {
   13592      1.1  christos {
   13593      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13594      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13595      1.1  christos }
   13596      1.1  christos }
   13597      1.1  christos if (GESI (tmp_tmp, 0)) {
   13598      1.1  christos {
   13599      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13600      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13601      1.1  christos }
   13602      1.1  christos }
   13603      1.1  christos if (GESI (tmp_tmp, 0)) {
   13604      1.1  christos {
   13605      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13606      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13607      1.1  christos }
   13608      1.1  christos }
   13609      1.1  christos if (GESI (tmp_tmp, 0)) {
   13610      1.1  christos {
   13611      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13612      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13613      1.1  christos }
   13614      1.1  christos }
   13615      1.1  christos if (GESI (tmp_tmp, 0)) {
   13616      1.1  christos {
   13617      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13618      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13619      1.1  christos }
   13620      1.1  christos }
   13621      1.1  christos if (GESI (tmp_tmp, 0)) {
   13622      1.1  christos {
   13623      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13624      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13625      1.1  christos }
   13626      1.1  christos }
   13627      1.1  christos if (GESI (tmp_tmp, 0)) {
   13628      1.1  christos {
   13629      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13630      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13631      1.1  christos }
   13632      1.1  christos }
   13633      1.1  christos if (GESI (tmp_tmp, 0)) {
   13634      1.1  christos {
   13635      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13636      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13637      1.1  christos }
   13638      1.1  christos }
   13639      1.1  christos if (GESI (tmp_tmp, 0)) {
   13640      1.1  christos {
   13641      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13642      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13643      1.1  christos }
   13644      1.1  christos }
   13645      1.1  christos if (GESI (tmp_tmp, 0)) {
   13646      1.1  christos {
   13647      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13648      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13649      1.1  christos }
   13650      1.1  christos }
   13651      1.1  christos if (GESI (tmp_tmp, 0)) {
   13652      1.1  christos {
   13653      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13654      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13655      1.1  christos }
   13656      1.1  christos }
   13657      1.1  christos if (GESI (tmp_tmp, 0)) {
   13658      1.1  christos {
   13659      1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13660      1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13661      1.1  christos }
   13662      1.1  christos }
   13663      1.1  christos }
   13664      1.1  christos   {
   13665      1.1  christos     SI opval = tmp_tmpd;
   13666      1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13667  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13668      1.1  christos   }
   13669      1.1  christos {
   13670      1.1  christos   {
   13671      1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   13672      1.1  christos     CPU (h_nbit) = opval;
   13673  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13674      1.1  christos   }
   13675      1.1  christos   {
   13676      1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13677      1.1  christos     CPU (h_zbit) = opval;
   13678  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13679      1.1  christos   }
   13680      1.1  christos SET_H_CBIT_MOVE (0);
   13681      1.1  christos SET_H_VBIT_MOVE (0);
   13682      1.1  christos {
   13683      1.1  christos   {
   13684      1.1  christos     BI opval = 0;
   13685      1.1  christos     CPU (h_xbit) = opval;
   13686  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13687      1.1  christos   }
   13688      1.1  christos   {
   13689      1.1  christos     BI opval = 0;
   13690      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13691  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13692      1.1  christos   }
   13693      1.1  christos }
   13694      1.1  christos }
   13695      1.1  christos }
   13696      1.1  christos 
   13697      1.1  christos #undef FLD
   13698      1.1  christos }
   13699      1.1  christos   NEXT (vpc);
   13700      1.1  christos 
   13701      1.1  christos   CASE (sem, INSN_ADDOQ) : /* addoq $o,$Rs,ACR */
   13702      1.1  christos {
   13703      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13704      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13705      1.1  christos #define FLD(f) abuf->fields.sfmt_addoq.f
   13706      1.1  christos   int UNUSED written = 0;
   13707      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13708      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13709      1.1  christos 
   13710      1.1  christos {
   13711      1.1  christos   {
   13712      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s8));
   13713      1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13714  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13715      1.1  christos   }
   13716      1.1  christos   {
   13717      1.1  christos     BI opval = 1;
   13718      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13719  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13720      1.1  christos   }
   13721      1.1  christos }
   13722      1.1  christos 
   13723      1.1  christos #undef FLD
   13724      1.1  christos }
   13725      1.1  christos   NEXT (vpc);
   13726      1.1  christos 
   13727      1.1  christos   CASE (sem, INSN_ADDO_M_B_M) : /* addo-m.b [${Rs}${inc}],$Rd,ACR */
   13728      1.1  christos {
   13729      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13730      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13731      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   13732      1.1  christos   int UNUSED written = 0;
   13733      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13734      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13735      1.1  christos 
   13736      1.1  christos {
   13737      1.1  christos   QI tmp_tmps;
   13738      1.1  christos   tmp_tmps = ({   SI tmp_addr;
   13739      1.1  christos   QI tmp_tmp_mem;
   13740      1.1  christos   BI tmp_postinc;
   13741      1.1  christos   tmp_postinc = FLD (f_memmode);
   13742      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   13743      1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   13744      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   13745      1.1  christos {
   13746      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   13747      1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   13748      1.1  christos }
   13749      1.1  christos   {
   13750      1.1  christos     SI opval = tmp_addr;
   13751      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13752      1.1  christos     written |= (1 << 6);
   13753  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13754      1.1  christos   }
   13755      1.1  christos }
   13756      1.1  christos }
   13757      1.1  christos ; tmp_tmp_mem; });
   13758      1.1  christos   {
   13759      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (tmp_tmps));
   13760      1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13761  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13762      1.1  christos   }
   13763      1.1  christos   {
   13764      1.1  christos     BI opval = 1;
   13765      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13766  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13767      1.1  christos   }
   13768      1.1  christos }
   13769      1.1  christos 
   13770      1.1  christos   abuf->written = written;
   13771      1.1  christos #undef FLD
   13772      1.1  christos }
   13773      1.1  christos   NEXT (vpc);
   13774      1.1  christos 
   13775      1.1  christos   CASE (sem, INSN_ADDO_M_W_M) : /* addo-m.w [${Rs}${inc}],$Rd,ACR */
   13776      1.1  christos {
   13777      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13778      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13779      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   13780      1.1  christos   int UNUSED written = 0;
   13781      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13782      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13783      1.1  christos 
   13784      1.1  christos {
   13785      1.1  christos   HI tmp_tmps;
   13786      1.1  christos   tmp_tmps = ({   SI tmp_addr;
   13787      1.1  christos   HI tmp_tmp_mem;
   13788      1.1  christos   BI tmp_postinc;
   13789      1.1  christos   tmp_postinc = FLD (f_memmode);
   13790      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   13791      1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   13792      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   13793      1.1  christos {
   13794      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   13795      1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   13796      1.1  christos }
   13797      1.1  christos   {
   13798      1.1  christos     SI opval = tmp_addr;
   13799      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13800      1.1  christos     written |= (1 << 6);
   13801  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13802      1.1  christos   }
   13803      1.1  christos }
   13804      1.1  christos }
   13805      1.1  christos ; tmp_tmp_mem; });
   13806      1.1  christos   {
   13807      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (tmp_tmps));
   13808      1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13809  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13810      1.1  christos   }
   13811      1.1  christos   {
   13812      1.1  christos     BI opval = 1;
   13813      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13814  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13815      1.1  christos   }
   13816      1.1  christos }
   13817      1.1  christos 
   13818      1.1  christos   abuf->written = written;
   13819      1.1  christos #undef FLD
   13820      1.1  christos }
   13821      1.1  christos   NEXT (vpc);
   13822      1.1  christos 
   13823      1.1  christos   CASE (sem, INSN_ADDO_M_D_M) : /* addo-m.d [${Rs}${inc}],$Rd,ACR */
   13824      1.1  christos {
   13825      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13826      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13827      1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   13828      1.1  christos   int UNUSED written = 0;
   13829      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13830      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13831      1.1  christos 
   13832      1.1  christos {
   13833      1.1  christos   SI tmp_tmps;
   13834      1.1  christos   tmp_tmps = ({   SI tmp_addr;
   13835      1.1  christos   SI tmp_tmp_mem;
   13836      1.1  christos   BI tmp_postinc;
   13837      1.1  christos   tmp_postinc = FLD (f_memmode);
   13838      1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   13839      1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   13840      1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   13841      1.1  christos {
   13842      1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   13843      1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   13844      1.1  christos }
   13845      1.1  christos   {
   13846      1.1  christos     SI opval = tmp_addr;
   13847      1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13848      1.1  christos     written |= (1 << 6);
   13849  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13850      1.1  christos   }
   13851      1.1  christos }
   13852      1.1  christos }
   13853      1.1  christos ; tmp_tmp_mem; });
   13854      1.1  christos   {
   13855      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), tmp_tmps);
   13856      1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13857  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13858      1.1  christos   }
   13859      1.1  christos   {
   13860      1.1  christos     BI opval = 1;
   13861      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13862  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13863      1.1  christos   }
   13864      1.1  christos }
   13865      1.1  christos 
   13866      1.1  christos   abuf->written = written;
   13867      1.1  christos #undef FLD
   13868      1.1  christos }
   13869      1.1  christos   NEXT (vpc);
   13870      1.1  christos 
   13871      1.1  christos   CASE (sem, INSN_ADDO_CB) : /* addo.b [PC+],$Rd,ACR */
   13872      1.1  christos {
   13873      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13874      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13875      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   13876      1.1  christos   int UNUSED written = 0;
   13877      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13878      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13879      1.1  christos 
   13880      1.1  christos {
   13881      1.1  christos   {
   13882      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))));
   13883      1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13884  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13885      1.1  christos   }
   13886      1.1  christos   {
   13887      1.1  christos     BI opval = 1;
   13888      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13889  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13890      1.1  christos   }
   13891      1.1  christos }
   13892      1.1  christos 
   13893      1.1  christos #undef FLD
   13894      1.1  christos }
   13895      1.1  christos   NEXT (vpc);
   13896      1.1  christos 
   13897      1.1  christos   CASE (sem, INSN_ADDO_CW) : /* addo.w [PC+],$Rd,ACR */
   13898      1.1  christos {
   13899      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13900      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13901      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   13902      1.1  christos   int UNUSED written = 0;
   13903      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13904      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13905      1.1  christos 
   13906      1.1  christos {
   13907      1.1  christos   {
   13908      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))));
   13909      1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13910  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13911      1.1  christos   }
   13912      1.1  christos   {
   13913      1.1  christos     BI opval = 1;
   13914      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13915  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13916      1.1  christos   }
   13917      1.1  christos }
   13918      1.1  christos 
   13919      1.1  christos #undef FLD
   13920      1.1  christos }
   13921      1.1  christos   NEXT (vpc);
   13922      1.1  christos 
   13923      1.1  christos   CASE (sem, INSN_ADDO_CD) : /* addo.d [PC+],$Rd,ACR */
   13924      1.1  christos {
   13925      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13926      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13927      1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   13928      1.1  christos   int UNUSED written = 0;
   13929      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13930      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   13931      1.1  christos 
   13932      1.1  christos {
   13933      1.1  christos   {
   13934      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
   13935      1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13936  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13937      1.1  christos   }
   13938      1.1  christos   {
   13939      1.1  christos     BI opval = 1;
   13940      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13941  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13942      1.1  christos   }
   13943      1.1  christos }
   13944      1.1  christos 
   13945      1.1  christos #undef FLD
   13946      1.1  christos }
   13947      1.1  christos   NEXT (vpc);
   13948      1.1  christos 
   13949      1.1  christos   CASE (sem, INSN_ADDI_ACR_B_R) : /* addi-acr.b ${Rs-dfield}.m,${Rd-sfield},ACR */
   13950      1.1  christos {
   13951      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13952      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13953      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13954      1.1  christos   int UNUSED written = 0;
   13955      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13956      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13957      1.1  christos 
   13958      1.1  christos {
   13959      1.1  christos   {
   13960      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
   13961      1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13962  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13963      1.1  christos   }
   13964      1.1  christos   {
   13965      1.1  christos     BI opval = 1;
   13966      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13967  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13968      1.1  christos   }
   13969      1.1  christos }
   13970      1.1  christos 
   13971      1.1  christos #undef FLD
   13972      1.1  christos }
   13973      1.1  christos   NEXT (vpc);
   13974      1.1  christos 
   13975      1.1  christos   CASE (sem, INSN_ADDI_ACR_W_R) : /* addi-acr.w ${Rs-dfield}.m,${Rd-sfield},ACR */
   13976      1.1  christos {
   13977      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13978      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13979      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13980      1.1  christos   int UNUSED written = 0;
   13981      1.1  christos   IADDR UNUSED pc = abuf->addr;
   13982      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13983      1.1  christos 
   13984      1.1  christos {
   13985      1.1  christos   {
   13986      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
   13987      1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13988  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13989      1.1  christos   }
   13990      1.1  christos   {
   13991      1.1  christos     BI opval = 1;
   13992      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13993  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13994      1.1  christos   }
   13995      1.1  christos }
   13996      1.1  christos 
   13997      1.1  christos #undef FLD
   13998      1.1  christos }
   13999      1.1  christos   NEXT (vpc);
   14000      1.1  christos 
   14001      1.1  christos   CASE (sem, INSN_ADDI_ACR_D_R) : /* addi-acr.d ${Rs-dfield}.m,${Rd-sfield},ACR */
   14002      1.1  christos {
   14003      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14004      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14005      1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   14006      1.1  christos   int UNUSED written = 0;
   14007      1.1  christos   IADDR UNUSED pc = abuf->addr;
   14008      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14009      1.1  christos 
   14010      1.1  christos {
   14011      1.1  christos   {
   14012      1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
   14013      1.1  christos     SET_H_PREFIXREG_V32 (opval);
   14014  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   14015      1.1  christos   }
   14016      1.1  christos   {
   14017      1.1  christos     BI opval = 1;
   14018      1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   14019  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   14020      1.1  christos   }
   14021      1.1  christos }
   14022      1.1  christos 
   14023      1.1  christos #undef FLD
   14024      1.1  christos }
   14025      1.1  christos   NEXT (vpc);
   14026      1.1  christos 
   14027      1.1  christos   CASE (sem, INSN_FIDXI) : /* fidxi [$Rs] */
   14028      1.1  christos {
   14029      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14030      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14031      1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14032      1.1  christos   int UNUSED written = 0;
   14033      1.1  christos   IADDR UNUSED pc = abuf->addr;
   14034      1.1  christos   SEM_BRANCH_INIT
   14035      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14036      1.1  christos 
   14037      1.1  christos   {
   14038      1.1  christos     USI opval = crisv32f_fidxi_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14039      1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14040  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14041      1.1  christos   }
   14042      1.1  christos 
   14043      1.1  christos   SEM_BRANCH_FINI (vpc);
   14044      1.1  christos #undef FLD
   14045      1.1  christos }
   14046      1.1  christos   NEXT (vpc);
   14047      1.1  christos 
   14048      1.1  christos   CASE (sem, INSN_FTAGI) : /* fidxi [$Rs] */
   14049      1.1  christos {
   14050      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14051      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14052      1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14053      1.1  christos   int UNUSED written = 0;
   14054      1.1  christos   IADDR UNUSED pc = abuf->addr;
   14055      1.1  christos   SEM_BRANCH_INIT
   14056      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14057      1.1  christos 
   14058      1.1  christos   {
   14059      1.1  christos     USI opval = crisv32f_ftagi_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14060      1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14061  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14062      1.1  christos   }
   14063      1.1  christos 
   14064      1.1  christos   SEM_BRANCH_FINI (vpc);
   14065      1.1  christos #undef FLD
   14066      1.1  christos }
   14067      1.1  christos   NEXT (vpc);
   14068      1.1  christos 
   14069      1.1  christos   CASE (sem, INSN_FIDXD) : /* fidxd [$Rs] */
   14070      1.1  christos {
   14071      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14072      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14073      1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14074      1.1  christos   int UNUSED written = 0;
   14075      1.1  christos   IADDR UNUSED pc = abuf->addr;
   14076      1.1  christos   SEM_BRANCH_INIT
   14077      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14078      1.1  christos 
   14079      1.1  christos   {
   14080      1.1  christos     USI opval = crisv32f_fidxd_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14081      1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14082  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14083      1.1  christos   }
   14084      1.1  christos 
   14085      1.1  christos   SEM_BRANCH_FINI (vpc);
   14086      1.1  christos #undef FLD
   14087      1.1  christos }
   14088      1.1  christos   NEXT (vpc);
   14089      1.1  christos 
   14090      1.1  christos   CASE (sem, INSN_FTAGD) : /* ftagd [$Rs] */
   14091      1.1  christos {
   14092      1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14093      1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14094      1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14095      1.1  christos   int UNUSED written = 0;
   14096      1.1  christos   IADDR UNUSED pc = abuf->addr;
   14097      1.1  christos   SEM_BRANCH_INIT
   14098      1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14099      1.1  christos 
   14100      1.1  christos   {
   14101      1.1  christos     USI opval = crisv32f_ftagd_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14102      1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14103  1.1.1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14104      1.1  christos   }
   14105      1.1  christos 
   14106      1.1  christos   SEM_BRANCH_FINI (vpc);
   14107      1.1  christos #undef FLD
   14108      1.1  christos }
   14109      1.1  christos   NEXT (vpc);
   14110      1.1  christos 
   14111      1.1  christos 
   14112      1.1  christos     }
   14113      1.1  christos   ENDSWITCH (sem) /* End of semantic switch.  */
   14114      1.1  christos 
   14115      1.1  christos   /* At this point `vpc' contains the next insn to execute.  */
   14116      1.1  christos }
   14117      1.1  christos 
   14118      1.1  christos #undef DEFINE_SWITCH
   14119      1.1  christos #endif /* DEFINE_SWITCH */
   14120