Home | History | Annotate | Line # | Download | only in cris
semcrisv32f-switch.c revision 1.1.1.1
      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  christos Copyright 1996-2010 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  christos    with this program; if not, write to the Free Software Foundation, Inc.,
     21  1.1  christos    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
     22  1.1  christos 
     23  1.1  christos */
     24  1.1  christos 
     25  1.1  christos #ifdef DEFINE_LABELS
     26  1.1  christos 
     27  1.1  christos   /* The labels have the case they have because the enum of insn types
     28  1.1  christos      is all uppercase and in the non-stdc case the insn symbol is built
     29  1.1  christos      into the enum name.  */
     30  1.1  christos 
     31  1.1  christos   static struct {
     32  1.1  christos     int index;
     33  1.1  christos     void *label;
     34  1.1  christos   } labels[] = {
     35  1.1  christos     { CRISV32F_INSN_X_INVALID, && case_sem_INSN_X_INVALID },
     36  1.1  christos     { CRISV32F_INSN_X_AFTER, && case_sem_INSN_X_AFTER },
     37  1.1  christos     { CRISV32F_INSN_X_BEFORE, && case_sem_INSN_X_BEFORE },
     38  1.1  christos     { CRISV32F_INSN_X_CTI_CHAIN, && case_sem_INSN_X_CTI_CHAIN },
     39  1.1  christos     { CRISV32F_INSN_X_CHAIN, && case_sem_INSN_X_CHAIN },
     40  1.1  christos     { CRISV32F_INSN_X_BEGIN, && case_sem_INSN_X_BEGIN },
     41  1.1  christos     { CRISV32F_INSN_MOVE_B_R, && case_sem_INSN_MOVE_B_R },
     42  1.1  christos     { CRISV32F_INSN_MOVE_W_R, && case_sem_INSN_MOVE_W_R },
     43  1.1  christos     { CRISV32F_INSN_MOVE_D_R, && case_sem_INSN_MOVE_D_R },
     44  1.1  christos     { CRISV32F_INSN_MOVEQ, && case_sem_INSN_MOVEQ },
     45  1.1  christos     { CRISV32F_INSN_MOVS_B_R, && case_sem_INSN_MOVS_B_R },
     46  1.1  christos     { CRISV32F_INSN_MOVS_W_R, && case_sem_INSN_MOVS_W_R },
     47  1.1  christos     { CRISV32F_INSN_MOVU_B_R, && case_sem_INSN_MOVU_B_R },
     48  1.1  christos     { CRISV32F_INSN_MOVU_W_R, && case_sem_INSN_MOVU_W_R },
     49  1.1  christos     { CRISV32F_INSN_MOVECBR, && case_sem_INSN_MOVECBR },
     50  1.1  christos     { CRISV32F_INSN_MOVECWR, && case_sem_INSN_MOVECWR },
     51  1.1  christos     { CRISV32F_INSN_MOVECDR, && case_sem_INSN_MOVECDR },
     52  1.1  christos     { CRISV32F_INSN_MOVSCBR, && case_sem_INSN_MOVSCBR },
     53  1.1  christos     { CRISV32F_INSN_MOVSCWR, && case_sem_INSN_MOVSCWR },
     54  1.1  christos     { CRISV32F_INSN_MOVUCBR, && case_sem_INSN_MOVUCBR },
     55  1.1  christos     { CRISV32F_INSN_MOVUCWR, && case_sem_INSN_MOVUCWR },
     56  1.1  christos     { CRISV32F_INSN_ADDQ, && case_sem_INSN_ADDQ },
     57  1.1  christos     { CRISV32F_INSN_SUBQ, && case_sem_INSN_SUBQ },
     58  1.1  christos     { CRISV32F_INSN_CMP_R_B_R, && case_sem_INSN_CMP_R_B_R },
     59  1.1  christos     { CRISV32F_INSN_CMP_R_W_R, && case_sem_INSN_CMP_R_W_R },
     60  1.1  christos     { CRISV32F_INSN_CMP_R_D_R, && case_sem_INSN_CMP_R_D_R },
     61  1.1  christos     { CRISV32F_INSN_CMP_M_B_M, && case_sem_INSN_CMP_M_B_M },
     62  1.1  christos     { CRISV32F_INSN_CMP_M_W_M, && case_sem_INSN_CMP_M_W_M },
     63  1.1  christos     { CRISV32F_INSN_CMP_M_D_M, && case_sem_INSN_CMP_M_D_M },
     64  1.1  christos     { CRISV32F_INSN_CMPCBR, && case_sem_INSN_CMPCBR },
     65  1.1  christos     { CRISV32F_INSN_CMPCWR, && case_sem_INSN_CMPCWR },
     66  1.1  christos     { CRISV32F_INSN_CMPCDR, && case_sem_INSN_CMPCDR },
     67  1.1  christos     { CRISV32F_INSN_CMPQ, && case_sem_INSN_CMPQ },
     68  1.1  christos     { CRISV32F_INSN_CMPS_M_B_M, && case_sem_INSN_CMPS_M_B_M },
     69  1.1  christos     { CRISV32F_INSN_CMPS_M_W_M, && case_sem_INSN_CMPS_M_W_M },
     70  1.1  christos     { CRISV32F_INSN_CMPSCBR, && case_sem_INSN_CMPSCBR },
     71  1.1  christos     { CRISV32F_INSN_CMPSCWR, && case_sem_INSN_CMPSCWR },
     72  1.1  christos     { CRISV32F_INSN_CMPU_M_B_M, && case_sem_INSN_CMPU_M_B_M },
     73  1.1  christos     { CRISV32F_INSN_CMPU_M_W_M, && case_sem_INSN_CMPU_M_W_M },
     74  1.1  christos     { CRISV32F_INSN_CMPUCBR, && case_sem_INSN_CMPUCBR },
     75  1.1  christos     { CRISV32F_INSN_CMPUCWR, && case_sem_INSN_CMPUCWR },
     76  1.1  christos     { CRISV32F_INSN_MOVE_M_B_M, && case_sem_INSN_MOVE_M_B_M },
     77  1.1  christos     { CRISV32F_INSN_MOVE_M_W_M, && case_sem_INSN_MOVE_M_W_M },
     78  1.1  christos     { CRISV32F_INSN_MOVE_M_D_M, && case_sem_INSN_MOVE_M_D_M },
     79  1.1  christos     { CRISV32F_INSN_MOVS_M_B_M, && case_sem_INSN_MOVS_M_B_M },
     80  1.1  christos     { CRISV32F_INSN_MOVS_M_W_M, && case_sem_INSN_MOVS_M_W_M },
     81  1.1  christos     { CRISV32F_INSN_MOVU_M_B_M, && case_sem_INSN_MOVU_M_B_M },
     82  1.1  christos     { CRISV32F_INSN_MOVU_M_W_M, && case_sem_INSN_MOVU_M_W_M },
     83  1.1  christos     { CRISV32F_INSN_MOVE_R_SPRV32, && case_sem_INSN_MOVE_R_SPRV32 },
     84  1.1  christos     { CRISV32F_INSN_MOVE_SPR_RV32, && case_sem_INSN_MOVE_SPR_RV32 },
     85  1.1  christos     { CRISV32F_INSN_MOVE_M_SPRV32, && case_sem_INSN_MOVE_M_SPRV32 },
     86  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P2, && case_sem_INSN_MOVE_C_SPRV32_P2 },
     87  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P3, && case_sem_INSN_MOVE_C_SPRV32_P3 },
     88  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P5, && case_sem_INSN_MOVE_C_SPRV32_P5 },
     89  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P6, && case_sem_INSN_MOVE_C_SPRV32_P6 },
     90  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P7, && case_sem_INSN_MOVE_C_SPRV32_P7 },
     91  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P9, && case_sem_INSN_MOVE_C_SPRV32_P9 },
     92  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P10, && case_sem_INSN_MOVE_C_SPRV32_P10 },
     93  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P11, && case_sem_INSN_MOVE_C_SPRV32_P11 },
     94  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P12, && case_sem_INSN_MOVE_C_SPRV32_P12 },
     95  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P13, && case_sem_INSN_MOVE_C_SPRV32_P13 },
     96  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P14, && case_sem_INSN_MOVE_C_SPRV32_P14 },
     97  1.1  christos     { CRISV32F_INSN_MOVE_C_SPRV32_P15, && case_sem_INSN_MOVE_C_SPRV32_P15 },
     98  1.1  christos     { CRISV32F_INSN_MOVE_SPR_MV32, && case_sem_INSN_MOVE_SPR_MV32 },
     99  1.1  christos     { CRISV32F_INSN_MOVE_SS_R, && case_sem_INSN_MOVE_SS_R },
    100  1.1  christos     { CRISV32F_INSN_MOVE_R_SS, && case_sem_INSN_MOVE_R_SS },
    101  1.1  christos     { CRISV32F_INSN_MOVEM_R_M_V32, && case_sem_INSN_MOVEM_R_M_V32 },
    102  1.1  christos     { CRISV32F_INSN_MOVEM_M_R_V32, && case_sem_INSN_MOVEM_M_R_V32 },
    103  1.1  christos     { CRISV32F_INSN_ADD_B_R, && case_sem_INSN_ADD_B_R },
    104  1.1  christos     { CRISV32F_INSN_ADD_W_R, && case_sem_INSN_ADD_W_R },
    105  1.1  christos     { CRISV32F_INSN_ADD_D_R, && case_sem_INSN_ADD_D_R },
    106  1.1  christos     { CRISV32F_INSN_ADD_M_B_M, && case_sem_INSN_ADD_M_B_M },
    107  1.1  christos     { CRISV32F_INSN_ADD_M_W_M, && case_sem_INSN_ADD_M_W_M },
    108  1.1  christos     { CRISV32F_INSN_ADD_M_D_M, && case_sem_INSN_ADD_M_D_M },
    109  1.1  christos     { CRISV32F_INSN_ADDCBR, && case_sem_INSN_ADDCBR },
    110  1.1  christos     { CRISV32F_INSN_ADDCWR, && case_sem_INSN_ADDCWR },
    111  1.1  christos     { CRISV32F_INSN_ADDCDR, && case_sem_INSN_ADDCDR },
    112  1.1  christos     { CRISV32F_INSN_ADDS_B_R, && case_sem_INSN_ADDS_B_R },
    113  1.1  christos     { CRISV32F_INSN_ADDS_W_R, && case_sem_INSN_ADDS_W_R },
    114  1.1  christos     { CRISV32F_INSN_ADDS_M_B_M, && case_sem_INSN_ADDS_M_B_M },
    115  1.1  christos     { CRISV32F_INSN_ADDS_M_W_M, && case_sem_INSN_ADDS_M_W_M },
    116  1.1  christos     { CRISV32F_INSN_ADDSCBR, && case_sem_INSN_ADDSCBR },
    117  1.1  christos     { CRISV32F_INSN_ADDSCWR, && case_sem_INSN_ADDSCWR },
    118  1.1  christos     { CRISV32F_INSN_ADDU_B_R, && case_sem_INSN_ADDU_B_R },
    119  1.1  christos     { CRISV32F_INSN_ADDU_W_R, && case_sem_INSN_ADDU_W_R },
    120  1.1  christos     { CRISV32F_INSN_ADDU_M_B_M, && case_sem_INSN_ADDU_M_B_M },
    121  1.1  christos     { CRISV32F_INSN_ADDU_M_W_M, && case_sem_INSN_ADDU_M_W_M },
    122  1.1  christos     { CRISV32F_INSN_ADDUCBR, && case_sem_INSN_ADDUCBR },
    123  1.1  christos     { CRISV32F_INSN_ADDUCWR, && case_sem_INSN_ADDUCWR },
    124  1.1  christos     { CRISV32F_INSN_SUB_B_R, && case_sem_INSN_SUB_B_R },
    125  1.1  christos     { CRISV32F_INSN_SUB_W_R, && case_sem_INSN_SUB_W_R },
    126  1.1  christos     { CRISV32F_INSN_SUB_D_R, && case_sem_INSN_SUB_D_R },
    127  1.1  christos     { CRISV32F_INSN_SUB_M_B_M, && case_sem_INSN_SUB_M_B_M },
    128  1.1  christos     { CRISV32F_INSN_SUB_M_W_M, && case_sem_INSN_SUB_M_W_M },
    129  1.1  christos     { CRISV32F_INSN_SUB_M_D_M, && case_sem_INSN_SUB_M_D_M },
    130  1.1  christos     { CRISV32F_INSN_SUBCBR, && case_sem_INSN_SUBCBR },
    131  1.1  christos     { CRISV32F_INSN_SUBCWR, && case_sem_INSN_SUBCWR },
    132  1.1  christos     { CRISV32F_INSN_SUBCDR, && case_sem_INSN_SUBCDR },
    133  1.1  christos     { CRISV32F_INSN_SUBS_B_R, && case_sem_INSN_SUBS_B_R },
    134  1.1  christos     { CRISV32F_INSN_SUBS_W_R, && case_sem_INSN_SUBS_W_R },
    135  1.1  christos     { CRISV32F_INSN_SUBS_M_B_M, && case_sem_INSN_SUBS_M_B_M },
    136  1.1  christos     { CRISV32F_INSN_SUBS_M_W_M, && case_sem_INSN_SUBS_M_W_M },
    137  1.1  christos     { CRISV32F_INSN_SUBSCBR, && case_sem_INSN_SUBSCBR },
    138  1.1  christos     { CRISV32F_INSN_SUBSCWR, && case_sem_INSN_SUBSCWR },
    139  1.1  christos     { CRISV32F_INSN_SUBU_B_R, && case_sem_INSN_SUBU_B_R },
    140  1.1  christos     { CRISV32F_INSN_SUBU_W_R, && case_sem_INSN_SUBU_W_R },
    141  1.1  christos     { CRISV32F_INSN_SUBU_M_B_M, && case_sem_INSN_SUBU_M_B_M },
    142  1.1  christos     { CRISV32F_INSN_SUBU_M_W_M, && case_sem_INSN_SUBU_M_W_M },
    143  1.1  christos     { CRISV32F_INSN_SUBUCBR, && case_sem_INSN_SUBUCBR },
    144  1.1  christos     { CRISV32F_INSN_SUBUCWR, && case_sem_INSN_SUBUCWR },
    145  1.1  christos     { CRISV32F_INSN_ADDC_R, && case_sem_INSN_ADDC_R },
    146  1.1  christos     { CRISV32F_INSN_ADDC_M, && case_sem_INSN_ADDC_M },
    147  1.1  christos     { CRISV32F_INSN_ADDC_C, && case_sem_INSN_ADDC_C },
    148  1.1  christos     { CRISV32F_INSN_LAPC_D, && case_sem_INSN_LAPC_D },
    149  1.1  christos     { CRISV32F_INSN_LAPCQ, && case_sem_INSN_LAPCQ },
    150  1.1  christos     { CRISV32F_INSN_ADDI_B_R, && case_sem_INSN_ADDI_B_R },
    151  1.1  christos     { CRISV32F_INSN_ADDI_W_R, && case_sem_INSN_ADDI_W_R },
    152  1.1  christos     { CRISV32F_INSN_ADDI_D_R, && case_sem_INSN_ADDI_D_R },
    153  1.1  christos     { CRISV32F_INSN_NEG_B_R, && case_sem_INSN_NEG_B_R },
    154  1.1  christos     { CRISV32F_INSN_NEG_W_R, && case_sem_INSN_NEG_W_R },
    155  1.1  christos     { CRISV32F_INSN_NEG_D_R, && case_sem_INSN_NEG_D_R },
    156  1.1  christos     { CRISV32F_INSN_TEST_M_B_M, && case_sem_INSN_TEST_M_B_M },
    157  1.1  christos     { CRISV32F_INSN_TEST_M_W_M, && case_sem_INSN_TEST_M_W_M },
    158  1.1  christos     { CRISV32F_INSN_TEST_M_D_M, && case_sem_INSN_TEST_M_D_M },
    159  1.1  christos     { CRISV32F_INSN_MOVE_R_M_B_M, && case_sem_INSN_MOVE_R_M_B_M },
    160  1.1  christos     { CRISV32F_INSN_MOVE_R_M_W_M, && case_sem_INSN_MOVE_R_M_W_M },
    161  1.1  christos     { CRISV32F_INSN_MOVE_R_M_D_M, && case_sem_INSN_MOVE_R_M_D_M },
    162  1.1  christos     { CRISV32F_INSN_MULS_B, && case_sem_INSN_MULS_B },
    163  1.1  christos     { CRISV32F_INSN_MULS_W, && case_sem_INSN_MULS_W },
    164  1.1  christos     { CRISV32F_INSN_MULS_D, && case_sem_INSN_MULS_D },
    165  1.1  christos     { CRISV32F_INSN_MULU_B, && case_sem_INSN_MULU_B },
    166  1.1  christos     { CRISV32F_INSN_MULU_W, && case_sem_INSN_MULU_W },
    167  1.1  christos     { CRISV32F_INSN_MULU_D, && case_sem_INSN_MULU_D },
    168  1.1  christos     { CRISV32F_INSN_MCP, && case_sem_INSN_MCP },
    169  1.1  christos     { CRISV32F_INSN_DSTEP, && case_sem_INSN_DSTEP },
    170  1.1  christos     { CRISV32F_INSN_ABS, && case_sem_INSN_ABS },
    171  1.1  christos     { CRISV32F_INSN_AND_B_R, && case_sem_INSN_AND_B_R },
    172  1.1  christos     { CRISV32F_INSN_AND_W_R, && case_sem_INSN_AND_W_R },
    173  1.1  christos     { CRISV32F_INSN_AND_D_R, && case_sem_INSN_AND_D_R },
    174  1.1  christos     { CRISV32F_INSN_AND_M_B_M, && case_sem_INSN_AND_M_B_M },
    175  1.1  christos     { CRISV32F_INSN_AND_M_W_M, && case_sem_INSN_AND_M_W_M },
    176  1.1  christos     { CRISV32F_INSN_AND_M_D_M, && case_sem_INSN_AND_M_D_M },
    177  1.1  christos     { CRISV32F_INSN_ANDCBR, && case_sem_INSN_ANDCBR },
    178  1.1  christos     { CRISV32F_INSN_ANDCWR, && case_sem_INSN_ANDCWR },
    179  1.1  christos     { CRISV32F_INSN_ANDCDR, && case_sem_INSN_ANDCDR },
    180  1.1  christos     { CRISV32F_INSN_ANDQ, && case_sem_INSN_ANDQ },
    181  1.1  christos     { CRISV32F_INSN_ORR_B_R, && case_sem_INSN_ORR_B_R },
    182  1.1  christos     { CRISV32F_INSN_ORR_W_R, && case_sem_INSN_ORR_W_R },
    183  1.1  christos     { CRISV32F_INSN_ORR_D_R, && case_sem_INSN_ORR_D_R },
    184  1.1  christos     { CRISV32F_INSN_OR_M_B_M, && case_sem_INSN_OR_M_B_M },
    185  1.1  christos     { CRISV32F_INSN_OR_M_W_M, && case_sem_INSN_OR_M_W_M },
    186  1.1  christos     { CRISV32F_INSN_OR_M_D_M, && case_sem_INSN_OR_M_D_M },
    187  1.1  christos     { CRISV32F_INSN_ORCBR, && case_sem_INSN_ORCBR },
    188  1.1  christos     { CRISV32F_INSN_ORCWR, && case_sem_INSN_ORCWR },
    189  1.1  christos     { CRISV32F_INSN_ORCDR, && case_sem_INSN_ORCDR },
    190  1.1  christos     { CRISV32F_INSN_ORQ, && case_sem_INSN_ORQ },
    191  1.1  christos     { CRISV32F_INSN_XOR, && case_sem_INSN_XOR },
    192  1.1  christos     { CRISV32F_INSN_SWAP, && case_sem_INSN_SWAP },
    193  1.1  christos     { CRISV32F_INSN_ASRR_B_R, && case_sem_INSN_ASRR_B_R },
    194  1.1  christos     { CRISV32F_INSN_ASRR_W_R, && case_sem_INSN_ASRR_W_R },
    195  1.1  christos     { CRISV32F_INSN_ASRR_D_R, && case_sem_INSN_ASRR_D_R },
    196  1.1  christos     { CRISV32F_INSN_ASRQ, && case_sem_INSN_ASRQ },
    197  1.1  christos     { CRISV32F_INSN_LSRR_B_R, && case_sem_INSN_LSRR_B_R },
    198  1.1  christos     { CRISV32F_INSN_LSRR_W_R, && case_sem_INSN_LSRR_W_R },
    199  1.1  christos     { CRISV32F_INSN_LSRR_D_R, && case_sem_INSN_LSRR_D_R },
    200  1.1  christos     { CRISV32F_INSN_LSRQ, && case_sem_INSN_LSRQ },
    201  1.1  christos     { CRISV32F_INSN_LSLR_B_R, && case_sem_INSN_LSLR_B_R },
    202  1.1  christos     { CRISV32F_INSN_LSLR_W_R, && case_sem_INSN_LSLR_W_R },
    203  1.1  christos     { CRISV32F_INSN_LSLR_D_R, && case_sem_INSN_LSLR_D_R },
    204  1.1  christos     { CRISV32F_INSN_LSLQ, && case_sem_INSN_LSLQ },
    205  1.1  christos     { CRISV32F_INSN_BTST, && case_sem_INSN_BTST },
    206  1.1  christos     { CRISV32F_INSN_BTSTQ, && case_sem_INSN_BTSTQ },
    207  1.1  christos     { CRISV32F_INSN_SETF, && case_sem_INSN_SETF },
    208  1.1  christos     { CRISV32F_INSN_CLEARF, && case_sem_INSN_CLEARF },
    209  1.1  christos     { CRISV32F_INSN_RFE, && case_sem_INSN_RFE },
    210  1.1  christos     { CRISV32F_INSN_SFE, && case_sem_INSN_SFE },
    211  1.1  christos     { CRISV32F_INSN_RFG, && case_sem_INSN_RFG },
    212  1.1  christos     { CRISV32F_INSN_RFN, && case_sem_INSN_RFN },
    213  1.1  christos     { CRISV32F_INSN_HALT, && case_sem_INSN_HALT },
    214  1.1  christos     { CRISV32F_INSN_BCC_B, && case_sem_INSN_BCC_B },
    215  1.1  christos     { CRISV32F_INSN_BA_B, && case_sem_INSN_BA_B },
    216  1.1  christos     { CRISV32F_INSN_BCC_W, && case_sem_INSN_BCC_W },
    217  1.1  christos     { CRISV32F_INSN_BA_W, && case_sem_INSN_BA_W },
    218  1.1  christos     { CRISV32F_INSN_JAS_R, && case_sem_INSN_JAS_R },
    219  1.1  christos     { CRISV32F_INSN_JAS_C, && case_sem_INSN_JAS_C },
    220  1.1  christos     { CRISV32F_INSN_JUMP_P, && case_sem_INSN_JUMP_P },
    221  1.1  christos     { CRISV32F_INSN_BAS_C, && case_sem_INSN_BAS_C },
    222  1.1  christos     { CRISV32F_INSN_JASC_R, && case_sem_INSN_JASC_R },
    223  1.1  christos     { CRISV32F_INSN_JASC_C, && case_sem_INSN_JASC_C },
    224  1.1  christos     { CRISV32F_INSN_BASC_C, && case_sem_INSN_BASC_C },
    225  1.1  christos     { CRISV32F_INSN_BREAK, && case_sem_INSN_BREAK },
    226  1.1  christos     { CRISV32F_INSN_BOUND_R_B_R, && case_sem_INSN_BOUND_R_B_R },
    227  1.1  christos     { CRISV32F_INSN_BOUND_R_W_R, && case_sem_INSN_BOUND_R_W_R },
    228  1.1  christos     { CRISV32F_INSN_BOUND_R_D_R, && case_sem_INSN_BOUND_R_D_R },
    229  1.1  christos     { CRISV32F_INSN_BOUND_CB, && case_sem_INSN_BOUND_CB },
    230  1.1  christos     { CRISV32F_INSN_BOUND_CW, && case_sem_INSN_BOUND_CW },
    231  1.1  christos     { CRISV32F_INSN_BOUND_CD, && case_sem_INSN_BOUND_CD },
    232  1.1  christos     { CRISV32F_INSN_SCC, && case_sem_INSN_SCC },
    233  1.1  christos     { CRISV32F_INSN_LZ, && case_sem_INSN_LZ },
    234  1.1  christos     { CRISV32F_INSN_ADDOQ, && case_sem_INSN_ADDOQ },
    235  1.1  christos     { CRISV32F_INSN_ADDO_M_B_M, && case_sem_INSN_ADDO_M_B_M },
    236  1.1  christos     { CRISV32F_INSN_ADDO_M_W_M, && case_sem_INSN_ADDO_M_W_M },
    237  1.1  christos     { CRISV32F_INSN_ADDO_M_D_M, && case_sem_INSN_ADDO_M_D_M },
    238  1.1  christos     { CRISV32F_INSN_ADDO_CB, && case_sem_INSN_ADDO_CB },
    239  1.1  christos     { CRISV32F_INSN_ADDO_CW, && case_sem_INSN_ADDO_CW },
    240  1.1  christos     { CRISV32F_INSN_ADDO_CD, && case_sem_INSN_ADDO_CD },
    241  1.1  christos     { CRISV32F_INSN_ADDI_ACR_B_R, && case_sem_INSN_ADDI_ACR_B_R },
    242  1.1  christos     { CRISV32F_INSN_ADDI_ACR_W_R, && case_sem_INSN_ADDI_ACR_W_R },
    243  1.1  christos     { CRISV32F_INSN_ADDI_ACR_D_R, && case_sem_INSN_ADDI_ACR_D_R },
    244  1.1  christos     { CRISV32F_INSN_FIDXI, && case_sem_INSN_FIDXI },
    245  1.1  christos     { CRISV32F_INSN_FTAGI, && case_sem_INSN_FTAGI },
    246  1.1  christos     { CRISV32F_INSN_FIDXD, && case_sem_INSN_FIDXD },
    247  1.1  christos     { CRISV32F_INSN_FTAGD, && case_sem_INSN_FTAGD },
    248  1.1  christos     { 0, 0 }
    249  1.1  christos   };
    250  1.1  christos   int i;
    251  1.1  christos 
    252  1.1  christos   for (i = 0; labels[i].label != 0; ++i)
    253  1.1  christos     {
    254  1.1  christos #if FAST_P
    255  1.1  christos       CPU_IDESC (current_cpu) [labels[i].index].sem_fast_lab = labels[i].label;
    256  1.1  christos #else
    257  1.1  christos       CPU_IDESC (current_cpu) [labels[i].index].sem_full_lab = labels[i].label;
    258  1.1  christos #endif
    259  1.1  christos     }
    260  1.1  christos 
    261  1.1  christos #undef DEFINE_LABELS
    262  1.1  christos #endif /* DEFINE_LABELS */
    263  1.1  christos 
    264  1.1  christos #ifdef DEFINE_SWITCH
    265  1.1  christos 
    266  1.1  christos /* If hyper-fast [well not unnecessarily slow] execution is selected, turn
    267  1.1  christos    off frills like tracing and profiling.  */
    268  1.1  christos /* FIXME: A better way would be to have TRACE_RESULT check for something
    269  1.1  christos    that can cause it to be optimized out.  Another way would be to emit
    270  1.1  christos    special handlers into the instruction "stream".  */
    271  1.1  christos 
    272  1.1  christos #if FAST_P
    273  1.1  christos #undef TRACE_RESULT
    274  1.1  christos #define TRACE_RESULT(cpu, abuf, name, type, val)
    275  1.1  christos #endif
    276  1.1  christos 
    277  1.1  christos #undef GET_ATTR
    278  1.1  christos #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
    279  1.1  christos 
    280  1.1  christos {
    281  1.1  christos 
    282  1.1  christos #if WITH_SCACHE_PBB
    283  1.1  christos 
    284  1.1  christos /* Branch to next handler without going around main loop.  */
    285  1.1  christos #define NEXT(vpc) goto * SEM_ARGBUF (vpc) -> semantic.sem_case
    286  1.1  christos SWITCH (sem, SEM_ARGBUF (vpc) -> semantic.sem_case)
    287  1.1  christos 
    288  1.1  christos #else /* ! WITH_SCACHE_PBB */
    289  1.1  christos 
    290  1.1  christos #define NEXT(vpc) BREAK (sem)
    291  1.1  christos #ifdef __GNUC__
    292  1.1  christos #if FAST_P
    293  1.1  christos   SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_fast_lab)
    294  1.1  christos #else
    295  1.1  christos   SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_full_lab)
    296  1.1  christos #endif
    297  1.1  christos #else
    298  1.1  christos   SWITCH (sem, SEM_ARGBUF (sc) -> idesc->num)
    299  1.1  christos #endif
    300  1.1  christos 
    301  1.1  christos #endif /* ! WITH_SCACHE_PBB */
    302  1.1  christos 
    303  1.1  christos     {
    304  1.1  christos 
    305  1.1  christos   CASE (sem, INSN_X_INVALID) : /* --invalid-- */
    306  1.1  christos {
    307  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    308  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    309  1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    310  1.1  christos   int UNUSED written = 0;
    311  1.1  christos   IADDR UNUSED pc = abuf->addr;
    312  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    313  1.1  christos 
    314  1.1  christos   {
    315  1.1  christos     /* Update the recorded pc in the cpu state struct.
    316  1.1  christos        Only necessary for WITH_SCACHE case, but to avoid the
    317  1.1  christos        conditional compilation ....  */
    318  1.1  christos     SET_H_PC (pc);
    319  1.1  christos     /* Virtual insns have zero size.  Overwrite vpc with address of next insn
    320  1.1  christos        using the default-insn-bitsize spec.  When executing insns in parallel
    321  1.1  christos        we may want to queue the fault and continue execution.  */
    322  1.1  christos     vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    323  1.1  christos     vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
    324  1.1  christos   }
    325  1.1  christos 
    326  1.1  christos #undef FLD
    327  1.1  christos }
    328  1.1  christos   NEXT (vpc);
    329  1.1  christos 
    330  1.1  christos   CASE (sem, INSN_X_AFTER) : /* --after-- */
    331  1.1  christos {
    332  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    333  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    334  1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    335  1.1  christos   int UNUSED written = 0;
    336  1.1  christos   IADDR UNUSED pc = abuf->addr;
    337  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    338  1.1  christos 
    339  1.1  christos   {
    340  1.1  christos #if WITH_SCACHE_PBB_CRISV32F
    341  1.1  christos     crisv32f_pbb_after (current_cpu, sem_arg);
    342  1.1  christos #endif
    343  1.1  christos   }
    344  1.1  christos 
    345  1.1  christos #undef FLD
    346  1.1  christos }
    347  1.1  christos   NEXT (vpc);
    348  1.1  christos 
    349  1.1  christos   CASE (sem, INSN_X_BEFORE) : /* --before-- */
    350  1.1  christos {
    351  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    352  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    353  1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    354  1.1  christos   int UNUSED written = 0;
    355  1.1  christos   IADDR UNUSED pc = abuf->addr;
    356  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    357  1.1  christos 
    358  1.1  christos   {
    359  1.1  christos #if WITH_SCACHE_PBB_CRISV32F
    360  1.1  christos     crisv32f_pbb_before (current_cpu, sem_arg);
    361  1.1  christos #endif
    362  1.1  christos   }
    363  1.1  christos 
    364  1.1  christos #undef FLD
    365  1.1  christos }
    366  1.1  christos   NEXT (vpc);
    367  1.1  christos 
    368  1.1  christos   CASE (sem, INSN_X_CTI_CHAIN) : /* --cti-chain-- */
    369  1.1  christos {
    370  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    371  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    372  1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    373  1.1  christos   int UNUSED written = 0;
    374  1.1  christos   IADDR UNUSED pc = abuf->addr;
    375  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    376  1.1  christos 
    377  1.1  christos   {
    378  1.1  christos #if WITH_SCACHE_PBB_CRISV32F
    379  1.1  christos #ifdef DEFINE_SWITCH
    380  1.1  christos     vpc = crisv32f_pbb_cti_chain (current_cpu, sem_arg,
    381  1.1  christos 			       pbb_br_type, pbb_br_npc);
    382  1.1  christos     BREAK (sem);
    383  1.1  christos #else
    384  1.1  christos     /* FIXME: Allow provision of explicit ifmt spec in insn spec.  */
    385  1.1  christos     vpc = crisv32f_pbb_cti_chain (current_cpu, sem_arg,
    386  1.1  christos 			       CPU_PBB_BR_TYPE (current_cpu),
    387  1.1  christos 			       CPU_PBB_BR_NPC (current_cpu));
    388  1.1  christos #endif
    389  1.1  christos #endif
    390  1.1  christos   }
    391  1.1  christos 
    392  1.1  christos #undef FLD
    393  1.1  christos }
    394  1.1  christos   NEXT (vpc);
    395  1.1  christos 
    396  1.1  christos   CASE (sem, INSN_X_CHAIN) : /* --chain-- */
    397  1.1  christos {
    398  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    399  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    400  1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    401  1.1  christos   int UNUSED written = 0;
    402  1.1  christos   IADDR UNUSED pc = abuf->addr;
    403  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    404  1.1  christos 
    405  1.1  christos   {
    406  1.1  christos #if WITH_SCACHE_PBB_CRISV32F
    407  1.1  christos     vpc = crisv32f_pbb_chain (current_cpu, sem_arg);
    408  1.1  christos #ifdef DEFINE_SWITCH
    409  1.1  christos     BREAK (sem);
    410  1.1  christos #endif
    411  1.1  christos #endif
    412  1.1  christos   }
    413  1.1  christos 
    414  1.1  christos #undef FLD
    415  1.1  christos }
    416  1.1  christos   NEXT (vpc);
    417  1.1  christos 
    418  1.1  christos   CASE (sem, INSN_X_BEGIN) : /* --begin-- */
    419  1.1  christos {
    420  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    421  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    422  1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
    423  1.1  christos   int UNUSED written = 0;
    424  1.1  christos   IADDR UNUSED pc = abuf->addr;
    425  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    426  1.1  christos 
    427  1.1  christos   {
    428  1.1  christos #if WITH_SCACHE_PBB_CRISV32F
    429  1.1  christos #if defined DEFINE_SWITCH || defined FAST_P
    430  1.1  christos     /* In the switch case FAST_P is a constant, allowing several optimizations
    431  1.1  christos        in any called inline functions.  */
    432  1.1  christos     vpc = crisv32f_pbb_begin (current_cpu, FAST_P);
    433  1.1  christos #else
    434  1.1  christos #if 0 /* cgen engine can't handle dynamic fast/full switching yet.  */
    435  1.1  christos     vpc = crisv32f_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
    436  1.1  christos #else
    437  1.1  christos     vpc = crisv32f_pbb_begin (current_cpu, 0);
    438  1.1  christos #endif
    439  1.1  christos #endif
    440  1.1  christos #endif
    441  1.1  christos   }
    442  1.1  christos 
    443  1.1  christos #undef FLD
    444  1.1  christos }
    445  1.1  christos   NEXT (vpc);
    446  1.1  christos 
    447  1.1  christos   CASE (sem, INSN_MOVE_B_R) : /* move.b move.m ${Rs},${Rd} */
    448  1.1  christos {
    449  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    450  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    451  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
    452  1.1  christos   int UNUSED written = 0;
    453  1.1  christos   IADDR UNUSED pc = abuf->addr;
    454  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    455  1.1  christos 
    456  1.1  christos {
    457  1.1  christos   QI tmp_newval;
    458  1.1  christos   tmp_newval = GET_H_GR (FLD (f_operand1));
    459  1.1  christos {
    460  1.1  christos   SI tmp_oldregval;
    461  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
    462  1.1  christos   {
    463  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
    464  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    465  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    466  1.1  christos   }
    467  1.1  christos }
    468  1.1  christos {
    469  1.1  christos   {
    470  1.1  christos     BI opval = LTQI (tmp_newval, 0);
    471  1.1  christos     CPU (h_nbit) = opval;
    472  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    473  1.1  christos   }
    474  1.1  christos   {
    475  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    476  1.1  christos     CPU (h_zbit) = opval;
    477  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    478  1.1  christos   }
    479  1.1  christos SET_H_CBIT_MOVE (0);
    480  1.1  christos SET_H_VBIT_MOVE (0);
    481  1.1  christos {
    482  1.1  christos   {
    483  1.1  christos     BI opval = 0;
    484  1.1  christos     CPU (h_xbit) = opval;
    485  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    486  1.1  christos   }
    487  1.1  christos   {
    488  1.1  christos     BI opval = 0;
    489  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    490  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    491  1.1  christos   }
    492  1.1  christos }
    493  1.1  christos }
    494  1.1  christos }
    495  1.1  christos 
    496  1.1  christos #undef FLD
    497  1.1  christos }
    498  1.1  christos   NEXT (vpc);
    499  1.1  christos 
    500  1.1  christos   CASE (sem, INSN_MOVE_W_R) : /* move.w move.m ${Rs},${Rd} */
    501  1.1  christos {
    502  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    503  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    504  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
    505  1.1  christos   int UNUSED written = 0;
    506  1.1  christos   IADDR UNUSED pc = abuf->addr;
    507  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    508  1.1  christos 
    509  1.1  christos {
    510  1.1  christos   HI tmp_newval;
    511  1.1  christos   tmp_newval = GET_H_GR (FLD (f_operand1));
    512  1.1  christos {
    513  1.1  christos   SI tmp_oldregval;
    514  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
    515  1.1  christos   {
    516  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
    517  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    518  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    519  1.1  christos   }
    520  1.1  christos }
    521  1.1  christos {
    522  1.1  christos   {
    523  1.1  christos     BI opval = LTHI (tmp_newval, 0);
    524  1.1  christos     CPU (h_nbit) = opval;
    525  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    526  1.1  christos   }
    527  1.1  christos   {
    528  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    529  1.1  christos     CPU (h_zbit) = opval;
    530  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    531  1.1  christos   }
    532  1.1  christos SET_H_CBIT_MOVE (0);
    533  1.1  christos SET_H_VBIT_MOVE (0);
    534  1.1  christos {
    535  1.1  christos   {
    536  1.1  christos     BI opval = 0;
    537  1.1  christos     CPU (h_xbit) = opval;
    538  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    539  1.1  christos   }
    540  1.1  christos   {
    541  1.1  christos     BI opval = 0;
    542  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    543  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    544  1.1  christos   }
    545  1.1  christos }
    546  1.1  christos }
    547  1.1  christos }
    548  1.1  christos 
    549  1.1  christos #undef FLD
    550  1.1  christos }
    551  1.1  christos   NEXT (vpc);
    552  1.1  christos 
    553  1.1  christos   CASE (sem, INSN_MOVE_D_R) : /* move.d move.m ${Rs},${Rd} */
    554  1.1  christos {
    555  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    556  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    557  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
    558  1.1  christos   int UNUSED written = 0;
    559  1.1  christos   IADDR UNUSED pc = abuf->addr;
    560  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    561  1.1  christos 
    562  1.1  christos {
    563  1.1  christos   SI tmp_newval;
    564  1.1  christos   tmp_newval = GET_H_GR (FLD (f_operand1));
    565  1.1  christos   {
    566  1.1  christos     SI opval = tmp_newval;
    567  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    568  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    569  1.1  christos   }
    570  1.1  christos {
    571  1.1  christos   {
    572  1.1  christos     BI opval = LTSI (tmp_newval, 0);
    573  1.1  christos     CPU (h_nbit) = opval;
    574  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    575  1.1  christos   }
    576  1.1  christos   {
    577  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    578  1.1  christos     CPU (h_zbit) = opval;
    579  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    580  1.1  christos   }
    581  1.1  christos SET_H_CBIT_MOVE (0);
    582  1.1  christos SET_H_VBIT_MOVE (0);
    583  1.1  christos {
    584  1.1  christos   {
    585  1.1  christos     BI opval = 0;
    586  1.1  christos     CPU (h_xbit) = opval;
    587  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    588  1.1  christos   }
    589  1.1  christos   {
    590  1.1  christos     BI opval = 0;
    591  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    592  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    593  1.1  christos   }
    594  1.1  christos }
    595  1.1  christos }
    596  1.1  christos }
    597  1.1  christos 
    598  1.1  christos #undef FLD
    599  1.1  christos }
    600  1.1  christos   NEXT (vpc);
    601  1.1  christos 
    602  1.1  christos   CASE (sem, INSN_MOVEQ) : /* moveq $i,$Rd */
    603  1.1  christos {
    604  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    605  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    606  1.1  christos #define FLD(f) abuf->fields.sfmt_moveq.f
    607  1.1  christos   int UNUSED written = 0;
    608  1.1  christos   IADDR UNUSED pc = abuf->addr;
    609  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    610  1.1  christos 
    611  1.1  christos {
    612  1.1  christos   SI tmp_newval;
    613  1.1  christos   tmp_newval = FLD (f_s6);
    614  1.1  christos   {
    615  1.1  christos     SI opval = tmp_newval;
    616  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    617  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    618  1.1  christos   }
    619  1.1  christos {
    620  1.1  christos SET_H_NBIT_MOVE (LTSI (tmp_newval, 0));
    621  1.1  christos SET_H_ZBIT_MOVE (ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))));
    622  1.1  christos SET_H_CBIT_MOVE (0);
    623  1.1  christos SET_H_VBIT_MOVE (0);
    624  1.1  christos {
    625  1.1  christos   {
    626  1.1  christos     BI opval = 0;
    627  1.1  christos     CPU (h_xbit) = opval;
    628  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    629  1.1  christos   }
    630  1.1  christos   {
    631  1.1  christos     BI opval = 0;
    632  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    633  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    634  1.1  christos   }
    635  1.1  christos }
    636  1.1  christos }
    637  1.1  christos }
    638  1.1  christos 
    639  1.1  christos #undef FLD
    640  1.1  christos }
    641  1.1  christos   NEXT (vpc);
    642  1.1  christos 
    643  1.1  christos   CASE (sem, INSN_MOVS_B_R) : /* movs.b movs.m ${Rs},${Rd} */
    644  1.1  christos {
    645  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    646  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    647  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    648  1.1  christos   int UNUSED written = 0;
    649  1.1  christos   IADDR UNUSED pc = abuf->addr;
    650  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    651  1.1  christos 
    652  1.1  christos {
    653  1.1  christos   QI tmp_tmpops;
    654  1.1  christos   SI tmp_newval;
    655  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
    656  1.1  christos   tmp_newval = EXTQISI (tmp_tmpops);
    657  1.1  christos   {
    658  1.1  christos     SI opval = tmp_newval;
    659  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    660  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    661  1.1  christos   }
    662  1.1  christos {
    663  1.1  christos   {
    664  1.1  christos     BI opval = LTSI (tmp_newval, 0);
    665  1.1  christos     CPU (h_nbit) = opval;
    666  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    667  1.1  christos   }
    668  1.1  christos   {
    669  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    670  1.1  christos     CPU (h_zbit) = opval;
    671  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    672  1.1  christos   }
    673  1.1  christos SET_H_CBIT_MOVE (0);
    674  1.1  christos SET_H_VBIT_MOVE (0);
    675  1.1  christos {
    676  1.1  christos   {
    677  1.1  christos     BI opval = 0;
    678  1.1  christos     CPU (h_xbit) = opval;
    679  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    680  1.1  christos   }
    681  1.1  christos   {
    682  1.1  christos     BI opval = 0;
    683  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    684  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    685  1.1  christos   }
    686  1.1  christos }
    687  1.1  christos }
    688  1.1  christos }
    689  1.1  christos 
    690  1.1  christos #undef FLD
    691  1.1  christos }
    692  1.1  christos   NEXT (vpc);
    693  1.1  christos 
    694  1.1  christos   CASE (sem, INSN_MOVS_W_R) : /* movs.w movs.m ${Rs},${Rd} */
    695  1.1  christos {
    696  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    697  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    698  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    699  1.1  christos   int UNUSED written = 0;
    700  1.1  christos   IADDR UNUSED pc = abuf->addr;
    701  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    702  1.1  christos 
    703  1.1  christos {
    704  1.1  christos   HI tmp_tmpops;
    705  1.1  christos   SI tmp_newval;
    706  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
    707  1.1  christos   tmp_newval = EXTHISI (tmp_tmpops);
    708  1.1  christos   {
    709  1.1  christos     SI opval = tmp_newval;
    710  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    711  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    712  1.1  christos   }
    713  1.1  christos {
    714  1.1  christos   {
    715  1.1  christos     BI opval = LTSI (tmp_newval, 0);
    716  1.1  christos     CPU (h_nbit) = opval;
    717  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    718  1.1  christos   }
    719  1.1  christos   {
    720  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    721  1.1  christos     CPU (h_zbit) = opval;
    722  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    723  1.1  christos   }
    724  1.1  christos SET_H_CBIT_MOVE (0);
    725  1.1  christos SET_H_VBIT_MOVE (0);
    726  1.1  christos {
    727  1.1  christos   {
    728  1.1  christos     BI opval = 0;
    729  1.1  christos     CPU (h_xbit) = opval;
    730  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    731  1.1  christos   }
    732  1.1  christos   {
    733  1.1  christos     BI opval = 0;
    734  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    735  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    736  1.1  christos   }
    737  1.1  christos }
    738  1.1  christos }
    739  1.1  christos }
    740  1.1  christos 
    741  1.1  christos #undef FLD
    742  1.1  christos }
    743  1.1  christos   NEXT (vpc);
    744  1.1  christos 
    745  1.1  christos   CASE (sem, INSN_MOVU_B_R) : /* movu.b movu.m ${Rs},${Rd} */
    746  1.1  christos {
    747  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    748  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    749  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    750  1.1  christos   int UNUSED written = 0;
    751  1.1  christos   IADDR UNUSED pc = abuf->addr;
    752  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    753  1.1  christos 
    754  1.1  christos {
    755  1.1  christos   QI tmp_tmpops;
    756  1.1  christos   SI tmp_newval;
    757  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
    758  1.1  christos   tmp_newval = ZEXTQISI (tmp_tmpops);
    759  1.1  christos   {
    760  1.1  christos     SI opval = tmp_newval;
    761  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    762  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    763  1.1  christos   }
    764  1.1  christos {
    765  1.1  christos   {
    766  1.1  christos     BI opval = LTSI (tmp_newval, 0);
    767  1.1  christos     CPU (h_nbit) = opval;
    768  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    769  1.1  christos   }
    770  1.1  christos   {
    771  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    772  1.1  christos     CPU (h_zbit) = opval;
    773  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    774  1.1  christos   }
    775  1.1  christos SET_H_CBIT_MOVE (0);
    776  1.1  christos SET_H_VBIT_MOVE (0);
    777  1.1  christos {
    778  1.1  christos   {
    779  1.1  christos     BI opval = 0;
    780  1.1  christos     CPU (h_xbit) = opval;
    781  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    782  1.1  christos   }
    783  1.1  christos   {
    784  1.1  christos     BI opval = 0;
    785  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    786  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    787  1.1  christos   }
    788  1.1  christos }
    789  1.1  christos }
    790  1.1  christos }
    791  1.1  christos 
    792  1.1  christos #undef FLD
    793  1.1  christos }
    794  1.1  christos   NEXT (vpc);
    795  1.1  christos 
    796  1.1  christos   CASE (sem, INSN_MOVU_W_R) : /* movu.w movu.m ${Rs},${Rd} */
    797  1.1  christos {
    798  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    799  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    800  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    801  1.1  christos   int UNUSED written = 0;
    802  1.1  christos   IADDR UNUSED pc = abuf->addr;
    803  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
    804  1.1  christos 
    805  1.1  christos {
    806  1.1  christos   HI tmp_tmpops;
    807  1.1  christos   SI tmp_newval;
    808  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
    809  1.1  christos   tmp_newval = ZEXTHISI (tmp_tmpops);
    810  1.1  christos   {
    811  1.1  christos     SI opval = tmp_newval;
    812  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    813  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    814  1.1  christos   }
    815  1.1  christos {
    816  1.1  christos   {
    817  1.1  christos     BI opval = LTSI (tmp_newval, 0);
    818  1.1  christos     CPU (h_nbit) = opval;
    819  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    820  1.1  christos   }
    821  1.1  christos   {
    822  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    823  1.1  christos     CPU (h_zbit) = opval;
    824  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    825  1.1  christos   }
    826  1.1  christos SET_H_CBIT_MOVE (0);
    827  1.1  christos SET_H_VBIT_MOVE (0);
    828  1.1  christos {
    829  1.1  christos   {
    830  1.1  christos     BI opval = 0;
    831  1.1  christos     CPU (h_xbit) = opval;
    832  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    833  1.1  christos   }
    834  1.1  christos   {
    835  1.1  christos     BI opval = 0;
    836  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    837  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    838  1.1  christos   }
    839  1.1  christos }
    840  1.1  christos }
    841  1.1  christos }
    842  1.1  christos 
    843  1.1  christos #undef FLD
    844  1.1  christos }
    845  1.1  christos   NEXT (vpc);
    846  1.1  christos 
    847  1.1  christos   CASE (sem, INSN_MOVECBR) : /* move.b ${sconst8},${Rd} */
    848  1.1  christos {
    849  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    850  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    851  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
    852  1.1  christos   int UNUSED written = 0;
    853  1.1  christos   IADDR UNUSED pc = abuf->addr;
    854  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    855  1.1  christos 
    856  1.1  christos {
    857  1.1  christos   QI tmp_newval;
    858  1.1  christos   tmp_newval = FLD (f_indir_pc__byte);
    859  1.1  christos {
    860  1.1  christos   SI tmp_oldregval;
    861  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
    862  1.1  christos   {
    863  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
    864  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    865  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    866  1.1  christos   }
    867  1.1  christos }
    868  1.1  christos {
    869  1.1  christos   {
    870  1.1  christos     BI opval = LTQI (tmp_newval, 0);
    871  1.1  christos     CPU (h_nbit) = opval;
    872  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    873  1.1  christos   }
    874  1.1  christos   {
    875  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    876  1.1  christos     CPU (h_zbit) = opval;
    877  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    878  1.1  christos   }
    879  1.1  christos SET_H_CBIT_MOVE (0);
    880  1.1  christos SET_H_VBIT_MOVE (0);
    881  1.1  christos {
    882  1.1  christos   {
    883  1.1  christos     BI opval = 0;
    884  1.1  christos     CPU (h_xbit) = opval;
    885  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    886  1.1  christos   }
    887  1.1  christos   {
    888  1.1  christos     BI opval = 0;
    889  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    890  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    891  1.1  christos   }
    892  1.1  christos }
    893  1.1  christos }
    894  1.1  christos }
    895  1.1  christos 
    896  1.1  christos #undef FLD
    897  1.1  christos }
    898  1.1  christos   NEXT (vpc);
    899  1.1  christos 
    900  1.1  christos   CASE (sem, INSN_MOVECWR) : /* move.w ${sconst16},${Rd} */
    901  1.1  christos {
    902  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    903  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    904  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
    905  1.1  christos   int UNUSED written = 0;
    906  1.1  christos   IADDR UNUSED pc = abuf->addr;
    907  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    908  1.1  christos 
    909  1.1  christos {
    910  1.1  christos   HI tmp_newval;
    911  1.1  christos   tmp_newval = FLD (f_indir_pc__word);
    912  1.1  christos {
    913  1.1  christos   SI tmp_oldregval;
    914  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
    915  1.1  christos   {
    916  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
    917  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    918  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    919  1.1  christos   }
    920  1.1  christos }
    921  1.1  christos {
    922  1.1  christos   {
    923  1.1  christos     BI opval = LTHI (tmp_newval, 0);
    924  1.1  christos     CPU (h_nbit) = opval;
    925  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    926  1.1  christos   }
    927  1.1  christos   {
    928  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    929  1.1  christos     CPU (h_zbit) = opval;
    930  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    931  1.1  christos   }
    932  1.1  christos SET_H_CBIT_MOVE (0);
    933  1.1  christos SET_H_VBIT_MOVE (0);
    934  1.1  christos {
    935  1.1  christos   {
    936  1.1  christos     BI opval = 0;
    937  1.1  christos     CPU (h_xbit) = opval;
    938  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    939  1.1  christos   }
    940  1.1  christos   {
    941  1.1  christos     BI opval = 0;
    942  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    943  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    944  1.1  christos   }
    945  1.1  christos }
    946  1.1  christos }
    947  1.1  christos }
    948  1.1  christos 
    949  1.1  christos #undef FLD
    950  1.1  christos }
    951  1.1  christos   NEXT (vpc);
    952  1.1  christos 
    953  1.1  christos   CASE (sem, INSN_MOVECDR) : /* move.d ${const32},${Rd} */
    954  1.1  christos {
    955  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
    956  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    957  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
    958  1.1  christos   int UNUSED written = 0;
    959  1.1  christos   IADDR UNUSED pc = abuf->addr;
    960  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
    961  1.1  christos 
    962  1.1  christos {
    963  1.1  christos   SI tmp_newval;
    964  1.1  christos   tmp_newval = FLD (f_indir_pc__dword);
    965  1.1  christos   {
    966  1.1  christos     SI opval = tmp_newval;
    967  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
    968  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
    969  1.1  christos   }
    970  1.1  christos {
    971  1.1  christos   {
    972  1.1  christos     BI opval = LTSI (tmp_newval, 0);
    973  1.1  christos     CPU (h_nbit) = opval;
    974  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
    975  1.1  christos   }
    976  1.1  christos   {
    977  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
    978  1.1  christos     CPU (h_zbit) = opval;
    979  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
    980  1.1  christos   }
    981  1.1  christos SET_H_CBIT_MOVE (0);
    982  1.1  christos SET_H_VBIT_MOVE (0);
    983  1.1  christos {
    984  1.1  christos   {
    985  1.1  christos     BI opval = 0;
    986  1.1  christos     CPU (h_xbit) = opval;
    987  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
    988  1.1  christos   }
    989  1.1  christos   {
    990  1.1  christos     BI opval = 0;
    991  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
    992  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
    993  1.1  christos   }
    994  1.1  christos }
    995  1.1  christos }
    996  1.1  christos }
    997  1.1  christos 
    998  1.1  christos #undef FLD
    999  1.1  christos }
   1000  1.1  christos   NEXT (vpc);
   1001  1.1  christos 
   1002  1.1  christos   CASE (sem, INSN_MOVSCBR) : /* movs.b ${sconst8},${Rd} */
   1003  1.1  christos {
   1004  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1005  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1006  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   1007  1.1  christos   int UNUSED written = 0;
   1008  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1009  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1010  1.1  christos 
   1011  1.1  christos {
   1012  1.1  christos   SI tmp_newval;
   1013  1.1  christos   tmp_newval = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   1014  1.1  christos   {
   1015  1.1  christos     SI opval = tmp_newval;
   1016  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1017  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1018  1.1  christos   }
   1019  1.1  christos {
   1020  1.1  christos   {
   1021  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1022  1.1  christos     CPU (h_nbit) = opval;
   1023  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1024  1.1  christos   }
   1025  1.1  christos   {
   1026  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   1027  1.1  christos     CPU (h_zbit) = opval;
   1028  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1029  1.1  christos   }
   1030  1.1  christos SET_H_CBIT_MOVE (0);
   1031  1.1  christos SET_H_VBIT_MOVE (0);
   1032  1.1  christos {
   1033  1.1  christos   {
   1034  1.1  christos     BI opval = 0;
   1035  1.1  christos     CPU (h_xbit) = opval;
   1036  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1037  1.1  christos   }
   1038  1.1  christos   {
   1039  1.1  christos     BI opval = 0;
   1040  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1041  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1042  1.1  christos   }
   1043  1.1  christos }
   1044  1.1  christos }
   1045  1.1  christos }
   1046  1.1  christos 
   1047  1.1  christos #undef FLD
   1048  1.1  christos }
   1049  1.1  christos   NEXT (vpc);
   1050  1.1  christos 
   1051  1.1  christos   CASE (sem, INSN_MOVSCWR) : /* movs.w ${sconst16},${Rd} */
   1052  1.1  christos {
   1053  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1054  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1055  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   1056  1.1  christos   int UNUSED written = 0;
   1057  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1058  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1059  1.1  christos 
   1060  1.1  christos {
   1061  1.1  christos   SI tmp_newval;
   1062  1.1  christos   tmp_newval = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   1063  1.1  christos   {
   1064  1.1  christos     SI opval = tmp_newval;
   1065  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1066  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1067  1.1  christos   }
   1068  1.1  christos {
   1069  1.1  christos   {
   1070  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1071  1.1  christos     CPU (h_nbit) = opval;
   1072  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1073  1.1  christos   }
   1074  1.1  christos   {
   1075  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   1076  1.1  christos     CPU (h_zbit) = opval;
   1077  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1078  1.1  christos   }
   1079  1.1  christos SET_H_CBIT_MOVE (0);
   1080  1.1  christos SET_H_VBIT_MOVE (0);
   1081  1.1  christos {
   1082  1.1  christos   {
   1083  1.1  christos     BI opval = 0;
   1084  1.1  christos     CPU (h_xbit) = opval;
   1085  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1086  1.1  christos   }
   1087  1.1  christos   {
   1088  1.1  christos     BI opval = 0;
   1089  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1090  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1091  1.1  christos   }
   1092  1.1  christos }
   1093  1.1  christos }
   1094  1.1  christos }
   1095  1.1  christos 
   1096  1.1  christos #undef FLD
   1097  1.1  christos }
   1098  1.1  christos   NEXT (vpc);
   1099  1.1  christos 
   1100  1.1  christos   CASE (sem, INSN_MOVUCBR) : /* movu.b ${uconst8},${Rd} */
   1101  1.1  christos {
   1102  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1103  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1104  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   1105  1.1  christos   int UNUSED written = 0;
   1106  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1107  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1108  1.1  christos 
   1109  1.1  christos {
   1110  1.1  christos   SI tmp_newval;
   1111  1.1  christos   tmp_newval = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   1112  1.1  christos   {
   1113  1.1  christos     SI opval = tmp_newval;
   1114  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1115  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1116  1.1  christos   }
   1117  1.1  christos {
   1118  1.1  christos   {
   1119  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1120  1.1  christos     CPU (h_nbit) = opval;
   1121  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1122  1.1  christos   }
   1123  1.1  christos   {
   1124  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   1125  1.1  christos     CPU (h_zbit) = opval;
   1126  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1127  1.1  christos   }
   1128  1.1  christos SET_H_CBIT_MOVE (0);
   1129  1.1  christos SET_H_VBIT_MOVE (0);
   1130  1.1  christos {
   1131  1.1  christos   {
   1132  1.1  christos     BI opval = 0;
   1133  1.1  christos     CPU (h_xbit) = opval;
   1134  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1135  1.1  christos   }
   1136  1.1  christos   {
   1137  1.1  christos     BI opval = 0;
   1138  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1139  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1140  1.1  christos   }
   1141  1.1  christos }
   1142  1.1  christos }
   1143  1.1  christos }
   1144  1.1  christos 
   1145  1.1  christos #undef FLD
   1146  1.1  christos }
   1147  1.1  christos   NEXT (vpc);
   1148  1.1  christos 
   1149  1.1  christos   CASE (sem, INSN_MOVUCWR) : /* movu.w ${uconst16},${Rd} */
   1150  1.1  christos {
   1151  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1152  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1153  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   1154  1.1  christos   int UNUSED written = 0;
   1155  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1156  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1157  1.1  christos 
   1158  1.1  christos {
   1159  1.1  christos   SI tmp_newval;
   1160  1.1  christos   tmp_newval = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   1161  1.1  christos   {
   1162  1.1  christos     SI opval = tmp_newval;
   1163  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1164  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1165  1.1  christos   }
   1166  1.1  christos {
   1167  1.1  christos   {
   1168  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1169  1.1  christos     CPU (h_nbit) = opval;
   1170  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1171  1.1  christos   }
   1172  1.1  christos   {
   1173  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   1174  1.1  christos     CPU (h_zbit) = opval;
   1175  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1176  1.1  christos   }
   1177  1.1  christos SET_H_CBIT_MOVE (0);
   1178  1.1  christos SET_H_VBIT_MOVE (0);
   1179  1.1  christos {
   1180  1.1  christos   {
   1181  1.1  christos     BI opval = 0;
   1182  1.1  christos     CPU (h_xbit) = opval;
   1183  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1184  1.1  christos   }
   1185  1.1  christos   {
   1186  1.1  christos     BI opval = 0;
   1187  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1188  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1189  1.1  christos   }
   1190  1.1  christos }
   1191  1.1  christos }
   1192  1.1  christos }
   1193  1.1  christos 
   1194  1.1  christos #undef FLD
   1195  1.1  christos }
   1196  1.1  christos   NEXT (vpc);
   1197  1.1  christos 
   1198  1.1  christos   CASE (sem, INSN_ADDQ) : /* addq $j,$Rd */
   1199  1.1  christos {
   1200  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1201  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1202  1.1  christos #define FLD(f) abuf->fields.sfmt_addq.f
   1203  1.1  christos   int UNUSED written = 0;
   1204  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1205  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1206  1.1  christos 
   1207  1.1  christos {
   1208  1.1  christos   SI tmp_tmpopd;
   1209  1.1  christos   SI tmp_tmpops;
   1210  1.1  christos   BI tmp_carry;
   1211  1.1  christos   SI tmp_newval;
   1212  1.1  christos   tmp_tmpops = FLD (f_u6);
   1213  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1214  1.1  christos   tmp_carry = CPU (h_cbit);
   1215  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1216  1.1  christos   {
   1217  1.1  christos     SI opval = tmp_newval;
   1218  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1219  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1220  1.1  christos   }
   1221  1.1  christos {
   1222  1.1  christos   {
   1223  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))));
   1224  1.1  christos     CPU (h_cbit) = opval;
   1225  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1226  1.1  christos   }
   1227  1.1  christos   {
   1228  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1229  1.1  christos     CPU (h_nbit) = opval;
   1230  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1231  1.1  christos   }
   1232  1.1  christos   {
   1233  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1234  1.1  christos     CPU (h_zbit) = opval;
   1235  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1236  1.1  christos   }
   1237  1.1  christos   {
   1238  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)));
   1239  1.1  christos     CPU (h_vbit) = opval;
   1240  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1241  1.1  christos   }
   1242  1.1  christos {
   1243  1.1  christos   {
   1244  1.1  christos     BI opval = 0;
   1245  1.1  christos     CPU (h_xbit) = opval;
   1246  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1247  1.1  christos   }
   1248  1.1  christos   {
   1249  1.1  christos     BI opval = 0;
   1250  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1251  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1252  1.1  christos   }
   1253  1.1  christos }
   1254  1.1  christos }
   1255  1.1  christos }
   1256  1.1  christos 
   1257  1.1  christos #undef FLD
   1258  1.1  christos }
   1259  1.1  christos   NEXT (vpc);
   1260  1.1  christos 
   1261  1.1  christos   CASE (sem, INSN_SUBQ) : /* subq $j,$Rd */
   1262  1.1  christos {
   1263  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1264  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1265  1.1  christos #define FLD(f) abuf->fields.sfmt_addq.f
   1266  1.1  christos   int UNUSED written = 0;
   1267  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1268  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1269  1.1  christos 
   1270  1.1  christos {
   1271  1.1  christos   SI tmp_tmpopd;
   1272  1.1  christos   SI tmp_tmpops;
   1273  1.1  christos   BI tmp_carry;
   1274  1.1  christos   SI tmp_newval;
   1275  1.1  christos   tmp_tmpops = FLD (f_u6);
   1276  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1277  1.1  christos   tmp_carry = CPU (h_cbit);
   1278  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1279  1.1  christos   {
   1280  1.1  christos     SI opval = tmp_newval;
   1281  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   1282  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1283  1.1  christos   }
   1284  1.1  christos {
   1285  1.1  christos   {
   1286  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))));
   1287  1.1  christos     CPU (h_cbit) = opval;
   1288  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1289  1.1  christos   }
   1290  1.1  christos   {
   1291  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1292  1.1  christos     CPU (h_nbit) = opval;
   1293  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1294  1.1  christos   }
   1295  1.1  christos   {
   1296  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1297  1.1  christos     CPU (h_zbit) = opval;
   1298  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1299  1.1  christos   }
   1300  1.1  christos   {
   1301  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)));
   1302  1.1  christos     CPU (h_vbit) = opval;
   1303  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1304  1.1  christos   }
   1305  1.1  christos {
   1306  1.1  christos   {
   1307  1.1  christos     BI opval = 0;
   1308  1.1  christos     CPU (h_xbit) = opval;
   1309  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1310  1.1  christos   }
   1311  1.1  christos   {
   1312  1.1  christos     BI opval = 0;
   1313  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1314  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1315  1.1  christos   }
   1316  1.1  christos }
   1317  1.1  christos }
   1318  1.1  christos }
   1319  1.1  christos 
   1320  1.1  christos #undef FLD
   1321  1.1  christos }
   1322  1.1  christos   NEXT (vpc);
   1323  1.1  christos 
   1324  1.1  christos   CASE (sem, INSN_CMP_R_B_R) : /* cmp-r.b $Rs,$Rd */
   1325  1.1  christos {
   1326  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1327  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1328  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   1329  1.1  christos   int UNUSED written = 0;
   1330  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1331  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1332  1.1  christos 
   1333  1.1  christos {
   1334  1.1  christos   QI tmp_tmpopd;
   1335  1.1  christos   QI tmp_tmpops;
   1336  1.1  christos   BI tmp_carry;
   1337  1.1  christos   QI tmp_newval;
   1338  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   1339  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1340  1.1  christos   tmp_carry = CPU (h_cbit);
   1341  1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1342  1.1  christos ((void) 0); /*nop*/
   1343  1.1  christos {
   1344  1.1  christos   {
   1345  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))));
   1346  1.1  christos     CPU (h_cbit) = opval;
   1347  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1348  1.1  christos   }
   1349  1.1  christos   {
   1350  1.1  christos     BI opval = LTQI (tmp_newval, 0);
   1351  1.1  christos     CPU (h_nbit) = opval;
   1352  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1353  1.1  christos   }
   1354  1.1  christos   {
   1355  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1356  1.1  christos     CPU (h_zbit) = opval;
   1357  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1358  1.1  christos   }
   1359  1.1  christos   {
   1360  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)));
   1361  1.1  christos     CPU (h_vbit) = opval;
   1362  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1363  1.1  christos   }
   1364  1.1  christos {
   1365  1.1  christos   {
   1366  1.1  christos     BI opval = 0;
   1367  1.1  christos     CPU (h_xbit) = opval;
   1368  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1369  1.1  christos   }
   1370  1.1  christos   {
   1371  1.1  christos     BI opval = 0;
   1372  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1373  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1374  1.1  christos   }
   1375  1.1  christos }
   1376  1.1  christos }
   1377  1.1  christos }
   1378  1.1  christos 
   1379  1.1  christos #undef FLD
   1380  1.1  christos }
   1381  1.1  christos   NEXT (vpc);
   1382  1.1  christos 
   1383  1.1  christos   CASE (sem, INSN_CMP_R_W_R) : /* cmp-r.w $Rs,$Rd */
   1384  1.1  christos {
   1385  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1386  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1387  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   1388  1.1  christos   int UNUSED written = 0;
   1389  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1390  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1391  1.1  christos 
   1392  1.1  christos {
   1393  1.1  christos   HI tmp_tmpopd;
   1394  1.1  christos   HI tmp_tmpops;
   1395  1.1  christos   BI tmp_carry;
   1396  1.1  christos   HI tmp_newval;
   1397  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   1398  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1399  1.1  christos   tmp_carry = CPU (h_cbit);
   1400  1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1401  1.1  christos ((void) 0); /*nop*/
   1402  1.1  christos {
   1403  1.1  christos   {
   1404  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))));
   1405  1.1  christos     CPU (h_cbit) = opval;
   1406  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1407  1.1  christos   }
   1408  1.1  christos   {
   1409  1.1  christos     BI opval = LTHI (tmp_newval, 0);
   1410  1.1  christos     CPU (h_nbit) = opval;
   1411  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1412  1.1  christos   }
   1413  1.1  christos   {
   1414  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1415  1.1  christos     CPU (h_zbit) = opval;
   1416  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1417  1.1  christos   }
   1418  1.1  christos   {
   1419  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)));
   1420  1.1  christos     CPU (h_vbit) = opval;
   1421  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1422  1.1  christos   }
   1423  1.1  christos {
   1424  1.1  christos   {
   1425  1.1  christos     BI opval = 0;
   1426  1.1  christos     CPU (h_xbit) = opval;
   1427  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1428  1.1  christos   }
   1429  1.1  christos   {
   1430  1.1  christos     BI opval = 0;
   1431  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1432  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1433  1.1  christos   }
   1434  1.1  christos }
   1435  1.1  christos }
   1436  1.1  christos }
   1437  1.1  christos 
   1438  1.1  christos #undef FLD
   1439  1.1  christos }
   1440  1.1  christos   NEXT (vpc);
   1441  1.1  christos 
   1442  1.1  christos   CASE (sem, INSN_CMP_R_D_R) : /* cmp-r.d $Rs,$Rd */
   1443  1.1  christos {
   1444  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1445  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1446  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   1447  1.1  christos   int UNUSED written = 0;
   1448  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1449  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1450  1.1  christos 
   1451  1.1  christos {
   1452  1.1  christos   SI tmp_tmpopd;
   1453  1.1  christos   SI tmp_tmpops;
   1454  1.1  christos   BI tmp_carry;
   1455  1.1  christos   SI tmp_newval;
   1456  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   1457  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1458  1.1  christos   tmp_carry = CPU (h_cbit);
   1459  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1460  1.1  christos ((void) 0); /*nop*/
   1461  1.1  christos {
   1462  1.1  christos   {
   1463  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))));
   1464  1.1  christos     CPU (h_cbit) = opval;
   1465  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1466  1.1  christos   }
   1467  1.1  christos   {
   1468  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1469  1.1  christos     CPU (h_nbit) = opval;
   1470  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1471  1.1  christos   }
   1472  1.1  christos   {
   1473  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1474  1.1  christos     CPU (h_zbit) = opval;
   1475  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1476  1.1  christos   }
   1477  1.1  christos   {
   1478  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)));
   1479  1.1  christos     CPU (h_vbit) = opval;
   1480  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1481  1.1  christos   }
   1482  1.1  christos {
   1483  1.1  christos   {
   1484  1.1  christos     BI opval = 0;
   1485  1.1  christos     CPU (h_xbit) = opval;
   1486  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1487  1.1  christos   }
   1488  1.1  christos   {
   1489  1.1  christos     BI opval = 0;
   1490  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1491  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1492  1.1  christos   }
   1493  1.1  christos }
   1494  1.1  christos }
   1495  1.1  christos }
   1496  1.1  christos 
   1497  1.1  christos #undef FLD
   1498  1.1  christos }
   1499  1.1  christos   NEXT (vpc);
   1500  1.1  christos 
   1501  1.1  christos   CASE (sem, INSN_CMP_M_B_M) : /* cmp-m.b [${Rs}${inc}],${Rd} */
   1502  1.1  christos {
   1503  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1504  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1505  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   1506  1.1  christos   int UNUSED written = 0;
   1507  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1508  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1509  1.1  christos 
   1510  1.1  christos {
   1511  1.1  christos   QI tmp_tmpopd;
   1512  1.1  christos   QI tmp_tmpops;
   1513  1.1  christos   BI tmp_carry;
   1514  1.1  christos   QI tmp_newval;
   1515  1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   1516  1.1  christos   QI tmp_tmp_mem;
   1517  1.1  christos   BI tmp_postinc;
   1518  1.1  christos   tmp_postinc = FLD (f_memmode);
   1519  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   1520  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   1521  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   1522  1.1  christos {
   1523  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   1524  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   1525  1.1  christos }
   1526  1.1  christos   {
   1527  1.1  christos     SI opval = tmp_addr;
   1528  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   1529  1.1  christos     written |= (1 << 9);
   1530  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1531  1.1  christos   }
   1532  1.1  christos }
   1533  1.1  christos }
   1534  1.1  christos ; tmp_tmp_mem; });
   1535  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1536  1.1  christos   tmp_carry = CPU (h_cbit);
   1537  1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1538  1.1  christos ((void) 0); /*nop*/
   1539  1.1  christos {
   1540  1.1  christos   {
   1541  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))));
   1542  1.1  christos     CPU (h_cbit) = opval;
   1543  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1544  1.1  christos   }
   1545  1.1  christos   {
   1546  1.1  christos     BI opval = LTQI (tmp_newval, 0);
   1547  1.1  christos     CPU (h_nbit) = opval;
   1548  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1549  1.1  christos   }
   1550  1.1  christos   {
   1551  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1552  1.1  christos     CPU (h_zbit) = opval;
   1553  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1554  1.1  christos   }
   1555  1.1  christos   {
   1556  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)));
   1557  1.1  christos     CPU (h_vbit) = opval;
   1558  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1559  1.1  christos   }
   1560  1.1  christos {
   1561  1.1  christos   {
   1562  1.1  christos     BI opval = 0;
   1563  1.1  christos     CPU (h_xbit) = opval;
   1564  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1565  1.1  christos   }
   1566  1.1  christos   {
   1567  1.1  christos     BI opval = 0;
   1568  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1569  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1570  1.1  christos   }
   1571  1.1  christos }
   1572  1.1  christos }
   1573  1.1  christos }
   1574  1.1  christos 
   1575  1.1  christos   abuf->written = written;
   1576  1.1  christos #undef FLD
   1577  1.1  christos }
   1578  1.1  christos   NEXT (vpc);
   1579  1.1  christos 
   1580  1.1  christos   CASE (sem, INSN_CMP_M_W_M) : /* cmp-m.w [${Rs}${inc}],${Rd} */
   1581  1.1  christos {
   1582  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1583  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1584  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   1585  1.1  christos   int UNUSED written = 0;
   1586  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1587  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1588  1.1  christos 
   1589  1.1  christos {
   1590  1.1  christos   HI tmp_tmpopd;
   1591  1.1  christos   HI tmp_tmpops;
   1592  1.1  christos   BI tmp_carry;
   1593  1.1  christos   HI tmp_newval;
   1594  1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   1595  1.1  christos   HI tmp_tmp_mem;
   1596  1.1  christos   BI tmp_postinc;
   1597  1.1  christos   tmp_postinc = FLD (f_memmode);
   1598  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   1599  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   1600  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   1601  1.1  christos {
   1602  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   1603  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   1604  1.1  christos }
   1605  1.1  christos   {
   1606  1.1  christos     SI opval = tmp_addr;
   1607  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   1608  1.1  christos     written |= (1 << 9);
   1609  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1610  1.1  christos   }
   1611  1.1  christos }
   1612  1.1  christos }
   1613  1.1  christos ; tmp_tmp_mem; });
   1614  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1615  1.1  christos   tmp_carry = CPU (h_cbit);
   1616  1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1617  1.1  christos ((void) 0); /*nop*/
   1618  1.1  christos {
   1619  1.1  christos   {
   1620  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))));
   1621  1.1  christos     CPU (h_cbit) = opval;
   1622  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1623  1.1  christos   }
   1624  1.1  christos   {
   1625  1.1  christos     BI opval = LTHI (tmp_newval, 0);
   1626  1.1  christos     CPU (h_nbit) = opval;
   1627  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1628  1.1  christos   }
   1629  1.1  christos   {
   1630  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1631  1.1  christos     CPU (h_zbit) = opval;
   1632  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1633  1.1  christos   }
   1634  1.1  christos   {
   1635  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)));
   1636  1.1  christos     CPU (h_vbit) = opval;
   1637  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1638  1.1  christos   }
   1639  1.1  christos {
   1640  1.1  christos   {
   1641  1.1  christos     BI opval = 0;
   1642  1.1  christos     CPU (h_xbit) = opval;
   1643  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1644  1.1  christos   }
   1645  1.1  christos   {
   1646  1.1  christos     BI opval = 0;
   1647  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1648  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1649  1.1  christos   }
   1650  1.1  christos }
   1651  1.1  christos }
   1652  1.1  christos }
   1653  1.1  christos 
   1654  1.1  christos   abuf->written = written;
   1655  1.1  christos #undef FLD
   1656  1.1  christos }
   1657  1.1  christos   NEXT (vpc);
   1658  1.1  christos 
   1659  1.1  christos   CASE (sem, INSN_CMP_M_D_M) : /* cmp-m.d [${Rs}${inc}],${Rd} */
   1660  1.1  christos {
   1661  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1662  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1663  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   1664  1.1  christos   int UNUSED written = 0;
   1665  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1666  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1667  1.1  christos 
   1668  1.1  christos {
   1669  1.1  christos   SI tmp_tmpopd;
   1670  1.1  christos   SI tmp_tmpops;
   1671  1.1  christos   BI tmp_carry;
   1672  1.1  christos   SI tmp_newval;
   1673  1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   1674  1.1  christos   SI tmp_tmp_mem;
   1675  1.1  christos   BI tmp_postinc;
   1676  1.1  christos   tmp_postinc = FLD (f_memmode);
   1677  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   1678  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   1679  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   1680  1.1  christos {
   1681  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   1682  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   1683  1.1  christos }
   1684  1.1  christos   {
   1685  1.1  christos     SI opval = tmp_addr;
   1686  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   1687  1.1  christos     written |= (1 << 9);
   1688  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   1689  1.1  christos   }
   1690  1.1  christos }
   1691  1.1  christos }
   1692  1.1  christos ; tmp_tmp_mem; });
   1693  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1694  1.1  christos   tmp_carry = CPU (h_cbit);
   1695  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1696  1.1  christos ((void) 0); /*nop*/
   1697  1.1  christos {
   1698  1.1  christos   {
   1699  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))));
   1700  1.1  christos     CPU (h_cbit) = opval;
   1701  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1702  1.1  christos   }
   1703  1.1  christos   {
   1704  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1705  1.1  christos     CPU (h_nbit) = opval;
   1706  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1707  1.1  christos   }
   1708  1.1  christos   {
   1709  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1710  1.1  christos     CPU (h_zbit) = opval;
   1711  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1712  1.1  christos   }
   1713  1.1  christos   {
   1714  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)));
   1715  1.1  christos     CPU (h_vbit) = opval;
   1716  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1717  1.1  christos   }
   1718  1.1  christos {
   1719  1.1  christos   {
   1720  1.1  christos     BI opval = 0;
   1721  1.1  christos     CPU (h_xbit) = opval;
   1722  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1723  1.1  christos   }
   1724  1.1  christos   {
   1725  1.1  christos     BI opval = 0;
   1726  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1727  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1728  1.1  christos   }
   1729  1.1  christos }
   1730  1.1  christos }
   1731  1.1  christos }
   1732  1.1  christos 
   1733  1.1  christos   abuf->written = written;
   1734  1.1  christos #undef FLD
   1735  1.1  christos }
   1736  1.1  christos   NEXT (vpc);
   1737  1.1  christos 
   1738  1.1  christos   CASE (sem, INSN_CMPCBR) : /* cmp.b $sconst8,$Rd */
   1739  1.1  christos {
   1740  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1741  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1742  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   1743  1.1  christos   int UNUSED written = 0;
   1744  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1745  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1746  1.1  christos 
   1747  1.1  christos {
   1748  1.1  christos   QI tmp_tmpopd;
   1749  1.1  christos   QI tmp_tmpops;
   1750  1.1  christos   BI tmp_carry;
   1751  1.1  christos   QI tmp_newval;
   1752  1.1  christos   tmp_tmpops = TRUNCSIQI (FLD (f_indir_pc__byte));
   1753  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1754  1.1  christos   tmp_carry = CPU (h_cbit);
   1755  1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1756  1.1  christos ((void) 0); /*nop*/
   1757  1.1  christos {
   1758  1.1  christos   {
   1759  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))));
   1760  1.1  christos     CPU (h_cbit) = opval;
   1761  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1762  1.1  christos   }
   1763  1.1  christos   {
   1764  1.1  christos     BI opval = LTQI (tmp_newval, 0);
   1765  1.1  christos     CPU (h_nbit) = opval;
   1766  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1767  1.1  christos   }
   1768  1.1  christos   {
   1769  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1770  1.1  christos     CPU (h_zbit) = opval;
   1771  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1772  1.1  christos   }
   1773  1.1  christos   {
   1774  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)));
   1775  1.1  christos     CPU (h_vbit) = opval;
   1776  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1777  1.1  christos   }
   1778  1.1  christos {
   1779  1.1  christos   {
   1780  1.1  christos     BI opval = 0;
   1781  1.1  christos     CPU (h_xbit) = opval;
   1782  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1783  1.1  christos   }
   1784  1.1  christos   {
   1785  1.1  christos     BI opval = 0;
   1786  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1787  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1788  1.1  christos   }
   1789  1.1  christos }
   1790  1.1  christos }
   1791  1.1  christos }
   1792  1.1  christos 
   1793  1.1  christos #undef FLD
   1794  1.1  christos }
   1795  1.1  christos   NEXT (vpc);
   1796  1.1  christos 
   1797  1.1  christos   CASE (sem, INSN_CMPCWR) : /* cmp.w $sconst16,$Rd */
   1798  1.1  christos {
   1799  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1800  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1801  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   1802  1.1  christos   int UNUSED written = 0;
   1803  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1804  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1805  1.1  christos 
   1806  1.1  christos {
   1807  1.1  christos   HI tmp_tmpopd;
   1808  1.1  christos   HI tmp_tmpops;
   1809  1.1  christos   BI tmp_carry;
   1810  1.1  christos   HI tmp_newval;
   1811  1.1  christos   tmp_tmpops = TRUNCSIHI (FLD (f_indir_pc__word));
   1812  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1813  1.1  christos   tmp_carry = CPU (h_cbit);
   1814  1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1815  1.1  christos ((void) 0); /*nop*/
   1816  1.1  christos {
   1817  1.1  christos   {
   1818  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))));
   1819  1.1  christos     CPU (h_cbit) = opval;
   1820  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1821  1.1  christos   }
   1822  1.1  christos   {
   1823  1.1  christos     BI opval = LTHI (tmp_newval, 0);
   1824  1.1  christos     CPU (h_nbit) = opval;
   1825  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1826  1.1  christos   }
   1827  1.1  christos   {
   1828  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1829  1.1  christos     CPU (h_zbit) = opval;
   1830  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1831  1.1  christos   }
   1832  1.1  christos   {
   1833  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)));
   1834  1.1  christos     CPU (h_vbit) = opval;
   1835  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1836  1.1  christos   }
   1837  1.1  christos {
   1838  1.1  christos   {
   1839  1.1  christos     BI opval = 0;
   1840  1.1  christos     CPU (h_xbit) = opval;
   1841  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1842  1.1  christos   }
   1843  1.1  christos   {
   1844  1.1  christos     BI opval = 0;
   1845  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1846  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1847  1.1  christos   }
   1848  1.1  christos }
   1849  1.1  christos }
   1850  1.1  christos }
   1851  1.1  christos 
   1852  1.1  christos #undef FLD
   1853  1.1  christos }
   1854  1.1  christos   NEXT (vpc);
   1855  1.1  christos 
   1856  1.1  christos   CASE (sem, INSN_CMPCDR) : /* cmp.d $const32,$Rd */
   1857  1.1  christos {
   1858  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1859  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1860  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   1861  1.1  christos   int UNUSED written = 0;
   1862  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1863  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   1864  1.1  christos 
   1865  1.1  christos {
   1866  1.1  christos   SI tmp_tmpopd;
   1867  1.1  christos   SI tmp_tmpops;
   1868  1.1  christos   BI tmp_carry;
   1869  1.1  christos   SI tmp_newval;
   1870  1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   1871  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1872  1.1  christos   tmp_carry = CPU (h_cbit);
   1873  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1874  1.1  christos ((void) 0); /*nop*/
   1875  1.1  christos {
   1876  1.1  christos   {
   1877  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))));
   1878  1.1  christos     CPU (h_cbit) = opval;
   1879  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1880  1.1  christos   }
   1881  1.1  christos   {
   1882  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1883  1.1  christos     CPU (h_nbit) = opval;
   1884  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1885  1.1  christos   }
   1886  1.1  christos   {
   1887  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1888  1.1  christos     CPU (h_zbit) = opval;
   1889  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1890  1.1  christos   }
   1891  1.1  christos   {
   1892  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)));
   1893  1.1  christos     CPU (h_vbit) = opval;
   1894  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1895  1.1  christos   }
   1896  1.1  christos {
   1897  1.1  christos   {
   1898  1.1  christos     BI opval = 0;
   1899  1.1  christos     CPU (h_xbit) = opval;
   1900  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1901  1.1  christos   }
   1902  1.1  christos   {
   1903  1.1  christos     BI opval = 0;
   1904  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1905  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1906  1.1  christos   }
   1907  1.1  christos }
   1908  1.1  christos }
   1909  1.1  christos }
   1910  1.1  christos 
   1911  1.1  christos #undef FLD
   1912  1.1  christos }
   1913  1.1  christos   NEXT (vpc);
   1914  1.1  christos 
   1915  1.1  christos   CASE (sem, INSN_CMPQ) : /* cmpq $i,$Rd */
   1916  1.1  christos {
   1917  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1918  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1919  1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   1920  1.1  christos   int UNUSED written = 0;
   1921  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1922  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1923  1.1  christos 
   1924  1.1  christos {
   1925  1.1  christos   SI tmp_tmpopd;
   1926  1.1  christos   SI tmp_tmpops;
   1927  1.1  christos   BI tmp_carry;
   1928  1.1  christos   SI tmp_newval;
   1929  1.1  christos   tmp_tmpops = FLD (f_s6);
   1930  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   1931  1.1  christos   tmp_carry = CPU (h_cbit);
   1932  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   1933  1.1  christos ((void) 0); /*nop*/
   1934  1.1  christos {
   1935  1.1  christos   {
   1936  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))));
   1937  1.1  christos     CPU (h_cbit) = opval;
   1938  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   1939  1.1  christos   }
   1940  1.1  christos   {
   1941  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   1942  1.1  christos     CPU (h_nbit) = opval;
   1943  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   1944  1.1  christos   }
   1945  1.1  christos   {
   1946  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   1947  1.1  christos     CPU (h_zbit) = opval;
   1948  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   1949  1.1  christos   }
   1950  1.1  christos   {
   1951  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)));
   1952  1.1  christos     CPU (h_vbit) = opval;
   1953  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   1954  1.1  christos   }
   1955  1.1  christos {
   1956  1.1  christos   {
   1957  1.1  christos     BI opval = 0;
   1958  1.1  christos     CPU (h_xbit) = opval;
   1959  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   1960  1.1  christos   }
   1961  1.1  christos   {
   1962  1.1  christos     BI opval = 0;
   1963  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   1964  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   1965  1.1  christos   }
   1966  1.1  christos }
   1967  1.1  christos }
   1968  1.1  christos }
   1969  1.1  christos 
   1970  1.1  christos #undef FLD
   1971  1.1  christos }
   1972  1.1  christos   NEXT (vpc);
   1973  1.1  christos 
   1974  1.1  christos   CASE (sem, INSN_CMPS_M_B_M) : /* cmps-m.b [${Rs}${inc}],$Rd */
   1975  1.1  christos {
   1976  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   1977  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1978  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   1979  1.1  christos   int UNUSED written = 0;
   1980  1.1  christos   IADDR UNUSED pc = abuf->addr;
   1981  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   1982  1.1  christos 
   1983  1.1  christos {
   1984  1.1  christos   SI tmp_tmpopd;
   1985  1.1  christos   SI tmp_tmpops;
   1986  1.1  christos   BI tmp_carry;
   1987  1.1  christos   SI tmp_newval;
   1988  1.1  christos   tmp_tmpops = EXTQISI (({   SI tmp_addr;
   1989  1.1  christos   QI tmp_tmp_mem;
   1990  1.1  christos   BI tmp_postinc;
   1991  1.1  christos   tmp_postinc = FLD (f_memmode);
   1992  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   1993  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   1994  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   1995  1.1  christos {
   1996  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   1997  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   1998  1.1  christos }
   1999  1.1  christos   {
   2000  1.1  christos     SI opval = tmp_addr;
   2001  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2002  1.1  christos     written |= (1 << 9);
   2003  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2004  1.1  christos   }
   2005  1.1  christos }
   2006  1.1  christos }
   2007  1.1  christos ; tmp_tmp_mem; }));
   2008  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2009  1.1  christos   tmp_carry = CPU (h_cbit);
   2010  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2011  1.1  christos ((void) 0); /*nop*/
   2012  1.1  christos {
   2013  1.1  christos   {
   2014  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))));
   2015  1.1  christos     CPU (h_cbit) = opval;
   2016  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2017  1.1  christos   }
   2018  1.1  christos   {
   2019  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2020  1.1  christos     CPU (h_nbit) = opval;
   2021  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2022  1.1  christos   }
   2023  1.1  christos   {
   2024  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2025  1.1  christos     CPU (h_zbit) = opval;
   2026  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2027  1.1  christos   }
   2028  1.1  christos   {
   2029  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)));
   2030  1.1  christos     CPU (h_vbit) = opval;
   2031  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2032  1.1  christos   }
   2033  1.1  christos {
   2034  1.1  christos   {
   2035  1.1  christos     BI opval = 0;
   2036  1.1  christos     CPU (h_xbit) = opval;
   2037  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2038  1.1  christos   }
   2039  1.1  christos   {
   2040  1.1  christos     BI opval = 0;
   2041  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2042  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2043  1.1  christos   }
   2044  1.1  christos }
   2045  1.1  christos }
   2046  1.1  christos }
   2047  1.1  christos 
   2048  1.1  christos   abuf->written = written;
   2049  1.1  christos #undef FLD
   2050  1.1  christos }
   2051  1.1  christos   NEXT (vpc);
   2052  1.1  christos 
   2053  1.1  christos   CASE (sem, INSN_CMPS_M_W_M) : /* cmps-m.w [${Rs}${inc}],$Rd */
   2054  1.1  christos {
   2055  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2056  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2057  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   2058  1.1  christos   int UNUSED written = 0;
   2059  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2060  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2061  1.1  christos 
   2062  1.1  christos {
   2063  1.1  christos   SI tmp_tmpopd;
   2064  1.1  christos   SI tmp_tmpops;
   2065  1.1  christos   BI tmp_carry;
   2066  1.1  christos   SI tmp_newval;
   2067  1.1  christos   tmp_tmpops = EXTHISI (({   SI tmp_addr;
   2068  1.1  christos   HI tmp_tmp_mem;
   2069  1.1  christos   BI tmp_postinc;
   2070  1.1  christos   tmp_postinc = FLD (f_memmode);
   2071  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2072  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   2073  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2074  1.1  christos {
   2075  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2076  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   2077  1.1  christos }
   2078  1.1  christos   {
   2079  1.1  christos     SI opval = tmp_addr;
   2080  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2081  1.1  christos     written |= (1 << 9);
   2082  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2083  1.1  christos   }
   2084  1.1  christos }
   2085  1.1  christos }
   2086  1.1  christos ; tmp_tmp_mem; }));
   2087  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2088  1.1  christos   tmp_carry = CPU (h_cbit);
   2089  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2090  1.1  christos ((void) 0); /*nop*/
   2091  1.1  christos {
   2092  1.1  christos   {
   2093  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))));
   2094  1.1  christos     CPU (h_cbit) = opval;
   2095  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2096  1.1  christos   }
   2097  1.1  christos   {
   2098  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2099  1.1  christos     CPU (h_nbit) = opval;
   2100  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2101  1.1  christos   }
   2102  1.1  christos   {
   2103  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2104  1.1  christos     CPU (h_zbit) = opval;
   2105  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2106  1.1  christos   }
   2107  1.1  christos   {
   2108  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)));
   2109  1.1  christos     CPU (h_vbit) = opval;
   2110  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2111  1.1  christos   }
   2112  1.1  christos {
   2113  1.1  christos   {
   2114  1.1  christos     BI opval = 0;
   2115  1.1  christos     CPU (h_xbit) = opval;
   2116  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2117  1.1  christos   }
   2118  1.1  christos   {
   2119  1.1  christos     BI opval = 0;
   2120  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2121  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2122  1.1  christos   }
   2123  1.1  christos }
   2124  1.1  christos }
   2125  1.1  christos }
   2126  1.1  christos 
   2127  1.1  christos   abuf->written = written;
   2128  1.1  christos #undef FLD
   2129  1.1  christos }
   2130  1.1  christos   NEXT (vpc);
   2131  1.1  christos 
   2132  1.1  christos   CASE (sem, INSN_CMPSCBR) : /* [${Rs}${inc}],$Rd */
   2133  1.1  christos {
   2134  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2135  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2136  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   2137  1.1  christos   int UNUSED written = 0;
   2138  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2139  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2140  1.1  christos 
   2141  1.1  christos {
   2142  1.1  christos   SI tmp_tmpopd;
   2143  1.1  christos   SI tmp_tmpops;
   2144  1.1  christos   BI tmp_carry;
   2145  1.1  christos   SI tmp_newval;
   2146  1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   2147  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2148  1.1  christos   tmp_carry = CPU (h_cbit);
   2149  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2150  1.1  christos ((void) 0); /*nop*/
   2151  1.1  christos {
   2152  1.1  christos   {
   2153  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))));
   2154  1.1  christos     CPU (h_cbit) = opval;
   2155  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2156  1.1  christos   }
   2157  1.1  christos   {
   2158  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2159  1.1  christos     CPU (h_nbit) = opval;
   2160  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2161  1.1  christos   }
   2162  1.1  christos   {
   2163  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2164  1.1  christos     CPU (h_zbit) = opval;
   2165  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2166  1.1  christos   }
   2167  1.1  christos   {
   2168  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)));
   2169  1.1  christos     CPU (h_vbit) = opval;
   2170  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2171  1.1  christos   }
   2172  1.1  christos {
   2173  1.1  christos   {
   2174  1.1  christos     BI opval = 0;
   2175  1.1  christos     CPU (h_xbit) = opval;
   2176  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2177  1.1  christos   }
   2178  1.1  christos   {
   2179  1.1  christos     BI opval = 0;
   2180  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2181  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2182  1.1  christos   }
   2183  1.1  christos }
   2184  1.1  christos }
   2185  1.1  christos }
   2186  1.1  christos 
   2187  1.1  christos #undef FLD
   2188  1.1  christos }
   2189  1.1  christos   NEXT (vpc);
   2190  1.1  christos 
   2191  1.1  christos   CASE (sem, INSN_CMPSCWR) : /* [${Rs}${inc}],$Rd */
   2192  1.1  christos {
   2193  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2194  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2195  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   2196  1.1  christos   int UNUSED written = 0;
   2197  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2198  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2199  1.1  christos 
   2200  1.1  christos {
   2201  1.1  christos   SI tmp_tmpopd;
   2202  1.1  christos   SI tmp_tmpops;
   2203  1.1  christos   BI tmp_carry;
   2204  1.1  christos   SI tmp_newval;
   2205  1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   2206  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2207  1.1  christos   tmp_carry = CPU (h_cbit);
   2208  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2209  1.1  christos ((void) 0); /*nop*/
   2210  1.1  christos {
   2211  1.1  christos   {
   2212  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))));
   2213  1.1  christos     CPU (h_cbit) = opval;
   2214  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2215  1.1  christos   }
   2216  1.1  christos   {
   2217  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2218  1.1  christos     CPU (h_nbit) = opval;
   2219  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2220  1.1  christos   }
   2221  1.1  christos   {
   2222  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2223  1.1  christos     CPU (h_zbit) = opval;
   2224  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2225  1.1  christos   }
   2226  1.1  christos   {
   2227  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)));
   2228  1.1  christos     CPU (h_vbit) = opval;
   2229  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2230  1.1  christos   }
   2231  1.1  christos {
   2232  1.1  christos   {
   2233  1.1  christos     BI opval = 0;
   2234  1.1  christos     CPU (h_xbit) = opval;
   2235  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2236  1.1  christos   }
   2237  1.1  christos   {
   2238  1.1  christos     BI opval = 0;
   2239  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2240  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2241  1.1  christos   }
   2242  1.1  christos }
   2243  1.1  christos }
   2244  1.1  christos }
   2245  1.1  christos 
   2246  1.1  christos #undef FLD
   2247  1.1  christos }
   2248  1.1  christos   NEXT (vpc);
   2249  1.1  christos 
   2250  1.1  christos   CASE (sem, INSN_CMPU_M_B_M) : /* cmpu-m.b [${Rs}${inc}],$Rd */
   2251  1.1  christos {
   2252  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2253  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2254  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   2255  1.1  christos   int UNUSED written = 0;
   2256  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2257  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2258  1.1  christos 
   2259  1.1  christos {
   2260  1.1  christos   SI tmp_tmpopd;
   2261  1.1  christos   SI tmp_tmpops;
   2262  1.1  christos   BI tmp_carry;
   2263  1.1  christos   SI tmp_newval;
   2264  1.1  christos   tmp_tmpops = ZEXTQISI (({   SI tmp_addr;
   2265  1.1  christos   QI tmp_tmp_mem;
   2266  1.1  christos   BI tmp_postinc;
   2267  1.1  christos   tmp_postinc = FLD (f_memmode);
   2268  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2269  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   2270  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2271  1.1  christos {
   2272  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2273  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   2274  1.1  christos }
   2275  1.1  christos   {
   2276  1.1  christos     SI opval = tmp_addr;
   2277  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2278  1.1  christos     written |= (1 << 9);
   2279  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2280  1.1  christos   }
   2281  1.1  christos }
   2282  1.1  christos }
   2283  1.1  christos ; tmp_tmp_mem; }));
   2284  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2285  1.1  christos   tmp_carry = CPU (h_cbit);
   2286  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2287  1.1  christos ((void) 0); /*nop*/
   2288  1.1  christos {
   2289  1.1  christos   {
   2290  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))));
   2291  1.1  christos     CPU (h_cbit) = opval;
   2292  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2293  1.1  christos   }
   2294  1.1  christos   {
   2295  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2296  1.1  christos     CPU (h_nbit) = opval;
   2297  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2298  1.1  christos   }
   2299  1.1  christos   {
   2300  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2301  1.1  christos     CPU (h_zbit) = opval;
   2302  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2303  1.1  christos   }
   2304  1.1  christos   {
   2305  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)));
   2306  1.1  christos     CPU (h_vbit) = opval;
   2307  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2308  1.1  christos   }
   2309  1.1  christos {
   2310  1.1  christos   {
   2311  1.1  christos     BI opval = 0;
   2312  1.1  christos     CPU (h_xbit) = opval;
   2313  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2314  1.1  christos   }
   2315  1.1  christos   {
   2316  1.1  christos     BI opval = 0;
   2317  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2318  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2319  1.1  christos   }
   2320  1.1  christos }
   2321  1.1  christos }
   2322  1.1  christos }
   2323  1.1  christos 
   2324  1.1  christos   abuf->written = written;
   2325  1.1  christos #undef FLD
   2326  1.1  christos }
   2327  1.1  christos   NEXT (vpc);
   2328  1.1  christos 
   2329  1.1  christos   CASE (sem, INSN_CMPU_M_W_M) : /* cmpu-m.w [${Rs}${inc}],$Rd */
   2330  1.1  christos {
   2331  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2332  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2333  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   2334  1.1  christos   int UNUSED written = 0;
   2335  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2336  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2337  1.1  christos 
   2338  1.1  christos {
   2339  1.1  christos   SI tmp_tmpopd;
   2340  1.1  christos   SI tmp_tmpops;
   2341  1.1  christos   BI tmp_carry;
   2342  1.1  christos   SI tmp_newval;
   2343  1.1  christos   tmp_tmpops = ZEXTHISI (({   SI tmp_addr;
   2344  1.1  christos   HI tmp_tmp_mem;
   2345  1.1  christos   BI tmp_postinc;
   2346  1.1  christos   tmp_postinc = FLD (f_memmode);
   2347  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2348  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   2349  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2350  1.1  christos {
   2351  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2352  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   2353  1.1  christos }
   2354  1.1  christos   {
   2355  1.1  christos     SI opval = tmp_addr;
   2356  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2357  1.1  christos     written |= (1 << 9);
   2358  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2359  1.1  christos   }
   2360  1.1  christos }
   2361  1.1  christos }
   2362  1.1  christos ; tmp_tmp_mem; }));
   2363  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2364  1.1  christos   tmp_carry = CPU (h_cbit);
   2365  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2366  1.1  christos ((void) 0); /*nop*/
   2367  1.1  christos {
   2368  1.1  christos   {
   2369  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))));
   2370  1.1  christos     CPU (h_cbit) = opval;
   2371  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2372  1.1  christos   }
   2373  1.1  christos   {
   2374  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2375  1.1  christos     CPU (h_nbit) = opval;
   2376  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2377  1.1  christos   }
   2378  1.1  christos   {
   2379  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2380  1.1  christos     CPU (h_zbit) = opval;
   2381  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2382  1.1  christos   }
   2383  1.1  christos   {
   2384  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)));
   2385  1.1  christos     CPU (h_vbit) = opval;
   2386  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2387  1.1  christos   }
   2388  1.1  christos {
   2389  1.1  christos   {
   2390  1.1  christos     BI opval = 0;
   2391  1.1  christos     CPU (h_xbit) = opval;
   2392  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2393  1.1  christos   }
   2394  1.1  christos   {
   2395  1.1  christos     BI opval = 0;
   2396  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2397  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2398  1.1  christos   }
   2399  1.1  christos }
   2400  1.1  christos }
   2401  1.1  christos }
   2402  1.1  christos 
   2403  1.1  christos   abuf->written = written;
   2404  1.1  christos #undef FLD
   2405  1.1  christos }
   2406  1.1  christos   NEXT (vpc);
   2407  1.1  christos 
   2408  1.1  christos   CASE (sem, INSN_CMPUCBR) : /* [${Rs}${inc}],$Rd */
   2409  1.1  christos {
   2410  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2411  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2412  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   2413  1.1  christos   int UNUSED written = 0;
   2414  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2415  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2416  1.1  christos 
   2417  1.1  christos {
   2418  1.1  christos   SI tmp_tmpopd;
   2419  1.1  christos   SI tmp_tmpops;
   2420  1.1  christos   BI tmp_carry;
   2421  1.1  christos   SI tmp_newval;
   2422  1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   2423  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2424  1.1  christos   tmp_carry = CPU (h_cbit);
   2425  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2426  1.1  christos ((void) 0); /*nop*/
   2427  1.1  christos {
   2428  1.1  christos   {
   2429  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))));
   2430  1.1  christos     CPU (h_cbit) = opval;
   2431  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2432  1.1  christos   }
   2433  1.1  christos   {
   2434  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2435  1.1  christos     CPU (h_nbit) = opval;
   2436  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2437  1.1  christos   }
   2438  1.1  christos   {
   2439  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2440  1.1  christos     CPU (h_zbit) = opval;
   2441  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2442  1.1  christos   }
   2443  1.1  christos   {
   2444  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)));
   2445  1.1  christos     CPU (h_vbit) = opval;
   2446  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2447  1.1  christos   }
   2448  1.1  christos {
   2449  1.1  christos   {
   2450  1.1  christos     BI opval = 0;
   2451  1.1  christos     CPU (h_xbit) = opval;
   2452  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2453  1.1  christos   }
   2454  1.1  christos   {
   2455  1.1  christos     BI opval = 0;
   2456  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2457  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2458  1.1  christos   }
   2459  1.1  christos }
   2460  1.1  christos }
   2461  1.1  christos }
   2462  1.1  christos 
   2463  1.1  christos #undef FLD
   2464  1.1  christos }
   2465  1.1  christos   NEXT (vpc);
   2466  1.1  christos 
   2467  1.1  christos   CASE (sem, INSN_CMPUCWR) : /* [${Rs}${inc}],$Rd */
   2468  1.1  christos {
   2469  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2470  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2471  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   2472  1.1  christos   int UNUSED written = 0;
   2473  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2474  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2475  1.1  christos 
   2476  1.1  christos {
   2477  1.1  christos   SI tmp_tmpopd;
   2478  1.1  christos   SI tmp_tmpops;
   2479  1.1  christos   BI tmp_carry;
   2480  1.1  christos   SI tmp_newval;
   2481  1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   2482  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   2483  1.1  christos   tmp_carry = CPU (h_cbit);
   2484  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   2485  1.1  christos ((void) 0); /*nop*/
   2486  1.1  christos {
   2487  1.1  christos   {
   2488  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))));
   2489  1.1  christos     CPU (h_cbit) = opval;
   2490  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   2491  1.1  christos   }
   2492  1.1  christos   {
   2493  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   2494  1.1  christos     CPU (h_nbit) = opval;
   2495  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2496  1.1  christos   }
   2497  1.1  christos   {
   2498  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   2499  1.1  christos     CPU (h_zbit) = opval;
   2500  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2501  1.1  christos   }
   2502  1.1  christos   {
   2503  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)));
   2504  1.1  christos     CPU (h_vbit) = opval;
   2505  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   2506  1.1  christos   }
   2507  1.1  christos {
   2508  1.1  christos   {
   2509  1.1  christos     BI opval = 0;
   2510  1.1  christos     CPU (h_xbit) = opval;
   2511  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2512  1.1  christos   }
   2513  1.1  christos   {
   2514  1.1  christos     BI opval = 0;
   2515  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2516  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2517  1.1  christos   }
   2518  1.1  christos }
   2519  1.1  christos }
   2520  1.1  christos }
   2521  1.1  christos 
   2522  1.1  christos #undef FLD
   2523  1.1  christos }
   2524  1.1  christos   NEXT (vpc);
   2525  1.1  christos 
   2526  1.1  christos   CASE (sem, INSN_MOVE_M_B_M) : /* move-m.b [${Rs}${inc}],${Rd} */
   2527  1.1  christos {
   2528  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2529  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2530  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2531  1.1  christos   int UNUSED written = 0;
   2532  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2533  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2534  1.1  christos 
   2535  1.1  christos {
   2536  1.1  christos   SI tmp_tmp;
   2537  1.1  christos   tmp_tmp = ({   SI tmp_addr;
   2538  1.1  christos   QI tmp_tmp_mem;
   2539  1.1  christos   BI tmp_postinc;
   2540  1.1  christos   tmp_postinc = FLD (f_memmode);
   2541  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2542  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   2543  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2544  1.1  christos {
   2545  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2546  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   2547  1.1  christos }
   2548  1.1  christos   {
   2549  1.1  christos     SI opval = tmp_addr;
   2550  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2551  1.1  christos     written |= (1 << 10);
   2552  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2553  1.1  christos   }
   2554  1.1  christos }
   2555  1.1  christos }
   2556  1.1  christos ; tmp_tmp_mem; });
   2557  1.1  christos {
   2558  1.1  christos   SI tmp_oldregval;
   2559  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))));
   2560  1.1  christos   {
   2561  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmp, 255), ANDSI (tmp_oldregval, 0xffffff00));
   2562  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   2563  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2564  1.1  christos   }
   2565  1.1  christos }
   2566  1.1  christos {
   2567  1.1  christos   {
   2568  1.1  christos     BI opval = LTQI (tmp_tmp, 0);
   2569  1.1  christos     CPU (h_nbit) = opval;
   2570  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2571  1.1  christos   }
   2572  1.1  christos   {
   2573  1.1  christos     BI opval = ANDIF (EQQI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2574  1.1  christos     CPU (h_zbit) = opval;
   2575  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2576  1.1  christos   }
   2577  1.1  christos SET_H_CBIT_MOVE (0);
   2578  1.1  christos SET_H_VBIT_MOVE (0);
   2579  1.1  christos {
   2580  1.1  christos   {
   2581  1.1  christos     BI opval = 0;
   2582  1.1  christos     CPU (h_xbit) = opval;
   2583  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2584  1.1  christos   }
   2585  1.1  christos   {
   2586  1.1  christos     BI opval = 0;
   2587  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2588  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2589  1.1  christos   }
   2590  1.1  christos }
   2591  1.1  christos }
   2592  1.1  christos }
   2593  1.1  christos 
   2594  1.1  christos   abuf->written = written;
   2595  1.1  christos #undef FLD
   2596  1.1  christos }
   2597  1.1  christos   NEXT (vpc);
   2598  1.1  christos 
   2599  1.1  christos   CASE (sem, INSN_MOVE_M_W_M) : /* move-m.w [${Rs}${inc}],${Rd} */
   2600  1.1  christos {
   2601  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2602  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2603  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2604  1.1  christos   int UNUSED written = 0;
   2605  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2606  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2607  1.1  christos 
   2608  1.1  christos {
   2609  1.1  christos   SI tmp_tmp;
   2610  1.1  christos   tmp_tmp = ({   SI tmp_addr;
   2611  1.1  christos   HI tmp_tmp_mem;
   2612  1.1  christos   BI tmp_postinc;
   2613  1.1  christos   tmp_postinc = FLD (f_memmode);
   2614  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2615  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   2616  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2617  1.1  christos {
   2618  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2619  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   2620  1.1  christos }
   2621  1.1  christos   {
   2622  1.1  christos     SI opval = tmp_addr;
   2623  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2624  1.1  christos     written |= (1 << 10);
   2625  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2626  1.1  christos   }
   2627  1.1  christos }
   2628  1.1  christos }
   2629  1.1  christos ; tmp_tmp_mem; });
   2630  1.1  christos {
   2631  1.1  christos   SI tmp_oldregval;
   2632  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))));
   2633  1.1  christos   {
   2634  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmp, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   2635  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   2636  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2637  1.1  christos   }
   2638  1.1  christos }
   2639  1.1  christos {
   2640  1.1  christos   {
   2641  1.1  christos     BI opval = LTHI (tmp_tmp, 0);
   2642  1.1  christos     CPU (h_nbit) = opval;
   2643  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2644  1.1  christos   }
   2645  1.1  christos   {
   2646  1.1  christos     BI opval = ANDIF (EQHI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2647  1.1  christos     CPU (h_zbit) = opval;
   2648  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2649  1.1  christos   }
   2650  1.1  christos SET_H_CBIT_MOVE (0);
   2651  1.1  christos SET_H_VBIT_MOVE (0);
   2652  1.1  christos {
   2653  1.1  christos   {
   2654  1.1  christos     BI opval = 0;
   2655  1.1  christos     CPU (h_xbit) = opval;
   2656  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2657  1.1  christos   }
   2658  1.1  christos   {
   2659  1.1  christos     BI opval = 0;
   2660  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2661  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2662  1.1  christos   }
   2663  1.1  christos }
   2664  1.1  christos }
   2665  1.1  christos }
   2666  1.1  christos 
   2667  1.1  christos   abuf->written = written;
   2668  1.1  christos #undef FLD
   2669  1.1  christos }
   2670  1.1  christos   NEXT (vpc);
   2671  1.1  christos 
   2672  1.1  christos   CASE (sem, INSN_MOVE_M_D_M) : /* move-m.d [${Rs}${inc}],${Rd} */
   2673  1.1  christos {
   2674  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2675  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2676  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2677  1.1  christos   int UNUSED written = 0;
   2678  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2679  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2680  1.1  christos 
   2681  1.1  christos {
   2682  1.1  christos   SI tmp_tmp;
   2683  1.1  christos   tmp_tmp = ({   SI tmp_addr;
   2684  1.1  christos   SI tmp_tmp_mem;
   2685  1.1  christos   BI tmp_postinc;
   2686  1.1  christos   tmp_postinc = FLD (f_memmode);
   2687  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2688  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   2689  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2690  1.1  christos {
   2691  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2692  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   2693  1.1  christos }
   2694  1.1  christos   {
   2695  1.1  christos     SI opval = tmp_addr;
   2696  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2697  1.1  christos     written |= (1 << 9);
   2698  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2699  1.1  christos   }
   2700  1.1  christos }
   2701  1.1  christos }
   2702  1.1  christos ; tmp_tmp_mem; });
   2703  1.1  christos   {
   2704  1.1  christos     SI opval = tmp_tmp;
   2705  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   2706  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2707  1.1  christos   }
   2708  1.1  christos {
   2709  1.1  christos   {
   2710  1.1  christos     BI opval = LTSI (tmp_tmp, 0);
   2711  1.1  christos     CPU (h_nbit) = opval;
   2712  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2713  1.1  christos   }
   2714  1.1  christos   {
   2715  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2716  1.1  christos     CPU (h_zbit) = opval;
   2717  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2718  1.1  christos   }
   2719  1.1  christos SET_H_CBIT_MOVE (0);
   2720  1.1  christos SET_H_VBIT_MOVE (0);
   2721  1.1  christos {
   2722  1.1  christos   {
   2723  1.1  christos     BI opval = 0;
   2724  1.1  christos     CPU (h_xbit) = opval;
   2725  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2726  1.1  christos   }
   2727  1.1  christos   {
   2728  1.1  christos     BI opval = 0;
   2729  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2730  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2731  1.1  christos   }
   2732  1.1  christos }
   2733  1.1  christos }
   2734  1.1  christos }
   2735  1.1  christos 
   2736  1.1  christos   abuf->written = written;
   2737  1.1  christos #undef FLD
   2738  1.1  christos }
   2739  1.1  christos   NEXT (vpc);
   2740  1.1  christos 
   2741  1.1  christos   CASE (sem, INSN_MOVS_M_B_M) : /* movs-m.b [${Rs}${inc}],${Rd} */
   2742  1.1  christos {
   2743  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2744  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2745  1.1  christos #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   2746  1.1  christos   int UNUSED written = 0;
   2747  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2748  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2749  1.1  christos 
   2750  1.1  christos {
   2751  1.1  christos   SI tmp_tmp;
   2752  1.1  christos   tmp_tmp = EXTQISI (({   SI tmp_addr;
   2753  1.1  christos   QI tmp_tmp_mem;
   2754  1.1  christos   BI tmp_postinc;
   2755  1.1  christos   tmp_postinc = FLD (f_memmode);
   2756  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2757  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   2758  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2759  1.1  christos {
   2760  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2761  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   2762  1.1  christos }
   2763  1.1  christos   {
   2764  1.1  christos     SI opval = tmp_addr;
   2765  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2766  1.1  christos     written |= (1 << 8);
   2767  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2768  1.1  christos   }
   2769  1.1  christos }
   2770  1.1  christos }
   2771  1.1  christos ; tmp_tmp_mem; }));
   2772  1.1  christos if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
   2773  1.1  christos   {
   2774  1.1  christos     SI opval = tmp_tmp;
   2775  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2776  1.1  christos     written |= (1 << 8);
   2777  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2778  1.1  christos   }
   2779  1.1  christos } else {
   2780  1.1  christos   {
   2781  1.1  christos     SI opval = tmp_tmp;
   2782  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   2783  1.1  christos     written |= (1 << 7);
   2784  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2785  1.1  christos   }
   2786  1.1  christos }
   2787  1.1  christos {
   2788  1.1  christos   {
   2789  1.1  christos     BI opval = LTSI (tmp_tmp, 0);
   2790  1.1  christos     CPU (h_nbit) = opval;
   2791  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2792  1.1  christos   }
   2793  1.1  christos   {
   2794  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2795  1.1  christos     CPU (h_zbit) = opval;
   2796  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2797  1.1  christos   }
   2798  1.1  christos SET_H_CBIT_MOVE (0);
   2799  1.1  christos SET_H_VBIT_MOVE (0);
   2800  1.1  christos {
   2801  1.1  christos   {
   2802  1.1  christos     BI opval = 0;
   2803  1.1  christos     CPU (h_xbit) = opval;
   2804  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2805  1.1  christos   }
   2806  1.1  christos   {
   2807  1.1  christos     BI opval = 0;
   2808  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2809  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2810  1.1  christos   }
   2811  1.1  christos }
   2812  1.1  christos }
   2813  1.1  christos }
   2814  1.1  christos 
   2815  1.1  christos   abuf->written = written;
   2816  1.1  christos #undef FLD
   2817  1.1  christos }
   2818  1.1  christos   NEXT (vpc);
   2819  1.1  christos 
   2820  1.1  christos   CASE (sem, INSN_MOVS_M_W_M) : /* movs-m.w [${Rs}${inc}],${Rd} */
   2821  1.1  christos {
   2822  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2823  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2824  1.1  christos #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   2825  1.1  christos   int UNUSED written = 0;
   2826  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2827  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2828  1.1  christos 
   2829  1.1  christos {
   2830  1.1  christos   SI tmp_tmp;
   2831  1.1  christos   tmp_tmp = EXTHISI (({   SI tmp_addr;
   2832  1.1  christos   HI tmp_tmp_mem;
   2833  1.1  christos   BI tmp_postinc;
   2834  1.1  christos   tmp_postinc = FLD (f_memmode);
   2835  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2836  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   2837  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2838  1.1  christos {
   2839  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2840  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   2841  1.1  christos }
   2842  1.1  christos   {
   2843  1.1  christos     SI opval = tmp_addr;
   2844  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2845  1.1  christos     written |= (1 << 8);
   2846  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2847  1.1  christos   }
   2848  1.1  christos }
   2849  1.1  christos }
   2850  1.1  christos ; tmp_tmp_mem; }));
   2851  1.1  christos if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
   2852  1.1  christos   {
   2853  1.1  christos     SI opval = tmp_tmp;
   2854  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2855  1.1  christos     written |= (1 << 8);
   2856  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2857  1.1  christos   }
   2858  1.1  christos } else {
   2859  1.1  christos   {
   2860  1.1  christos     SI opval = tmp_tmp;
   2861  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   2862  1.1  christos     written |= (1 << 7);
   2863  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2864  1.1  christos   }
   2865  1.1  christos }
   2866  1.1  christos {
   2867  1.1  christos   {
   2868  1.1  christos     BI opval = LTSI (tmp_tmp, 0);
   2869  1.1  christos     CPU (h_nbit) = opval;
   2870  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2871  1.1  christos   }
   2872  1.1  christos   {
   2873  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2874  1.1  christos     CPU (h_zbit) = opval;
   2875  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2876  1.1  christos   }
   2877  1.1  christos SET_H_CBIT_MOVE (0);
   2878  1.1  christos SET_H_VBIT_MOVE (0);
   2879  1.1  christos {
   2880  1.1  christos   {
   2881  1.1  christos     BI opval = 0;
   2882  1.1  christos     CPU (h_xbit) = opval;
   2883  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2884  1.1  christos   }
   2885  1.1  christos   {
   2886  1.1  christos     BI opval = 0;
   2887  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2888  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2889  1.1  christos   }
   2890  1.1  christos }
   2891  1.1  christos }
   2892  1.1  christos }
   2893  1.1  christos 
   2894  1.1  christos   abuf->written = written;
   2895  1.1  christos #undef FLD
   2896  1.1  christos }
   2897  1.1  christos   NEXT (vpc);
   2898  1.1  christos 
   2899  1.1  christos   CASE (sem, INSN_MOVU_M_B_M) : /* movu-m.b [${Rs}${inc}],${Rd} */
   2900  1.1  christos {
   2901  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2902  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2903  1.1  christos #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   2904  1.1  christos   int UNUSED written = 0;
   2905  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2906  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2907  1.1  christos 
   2908  1.1  christos {
   2909  1.1  christos   SI tmp_tmp;
   2910  1.1  christos   tmp_tmp = ZEXTQISI (({   SI tmp_addr;
   2911  1.1  christos   QI tmp_tmp_mem;
   2912  1.1  christos   BI tmp_postinc;
   2913  1.1  christos   tmp_postinc = FLD (f_memmode);
   2914  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2915  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   2916  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2917  1.1  christos {
   2918  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2919  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   2920  1.1  christos }
   2921  1.1  christos   {
   2922  1.1  christos     SI opval = tmp_addr;
   2923  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2924  1.1  christos     written |= (1 << 8);
   2925  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2926  1.1  christos   }
   2927  1.1  christos }
   2928  1.1  christos }
   2929  1.1  christos ; tmp_tmp_mem; }));
   2930  1.1  christos if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
   2931  1.1  christos   {
   2932  1.1  christos     SI opval = tmp_tmp;
   2933  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   2934  1.1  christos     written |= (1 << 8);
   2935  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2936  1.1  christos   }
   2937  1.1  christos } else {
   2938  1.1  christos   {
   2939  1.1  christos     SI opval = tmp_tmp;
   2940  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   2941  1.1  christos     written |= (1 << 7);
   2942  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   2943  1.1  christos   }
   2944  1.1  christos }
   2945  1.1  christos {
   2946  1.1  christos   {
   2947  1.1  christos     BI opval = LTSI (tmp_tmp, 0);
   2948  1.1  christos     CPU (h_nbit) = opval;
   2949  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   2950  1.1  christos   }
   2951  1.1  christos   {
   2952  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   2953  1.1  christos     CPU (h_zbit) = opval;
   2954  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   2955  1.1  christos   }
   2956  1.1  christos SET_H_CBIT_MOVE (0);
   2957  1.1  christos SET_H_VBIT_MOVE (0);
   2958  1.1  christos {
   2959  1.1  christos   {
   2960  1.1  christos     BI opval = 0;
   2961  1.1  christos     CPU (h_xbit) = opval;
   2962  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   2963  1.1  christos   }
   2964  1.1  christos   {
   2965  1.1  christos     BI opval = 0;
   2966  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   2967  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   2968  1.1  christos   }
   2969  1.1  christos }
   2970  1.1  christos }
   2971  1.1  christos }
   2972  1.1  christos 
   2973  1.1  christos   abuf->written = written;
   2974  1.1  christos #undef FLD
   2975  1.1  christos }
   2976  1.1  christos   NEXT (vpc);
   2977  1.1  christos 
   2978  1.1  christos   CASE (sem, INSN_MOVU_M_W_M) : /* movu-m.w [${Rs}${inc}],${Rd} */
   2979  1.1  christos {
   2980  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   2981  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2982  1.1  christos #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   2983  1.1  christos   int UNUSED written = 0;
   2984  1.1  christos   IADDR UNUSED pc = abuf->addr;
   2985  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   2986  1.1  christos 
   2987  1.1  christos {
   2988  1.1  christos   SI tmp_tmp;
   2989  1.1  christos   tmp_tmp = ZEXTHISI (({   SI tmp_addr;
   2990  1.1  christos   HI tmp_tmp_mem;
   2991  1.1  christos   BI tmp_postinc;
   2992  1.1  christos   tmp_postinc = FLD (f_memmode);
   2993  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   2994  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   2995  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   2996  1.1  christos {
   2997  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   2998  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   2999  1.1  christos }
   3000  1.1  christos   {
   3001  1.1  christos     SI opval = tmp_addr;
   3002  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3003  1.1  christos     written |= (1 << 8);
   3004  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3005  1.1  christos   }
   3006  1.1  christos }
   3007  1.1  christos }
   3008  1.1  christos ; tmp_tmp_mem; }));
   3009  1.1  christos if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
   3010  1.1  christos   {
   3011  1.1  christos     SI opval = tmp_tmp;
   3012  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3013  1.1  christos     written |= (1 << 8);
   3014  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3015  1.1  christos   }
   3016  1.1  christos } else {
   3017  1.1  christos   {
   3018  1.1  christos     SI opval = tmp_tmp;
   3019  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   3020  1.1  christos     written |= (1 << 7);
   3021  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3022  1.1  christos   }
   3023  1.1  christos }
   3024  1.1  christos {
   3025  1.1  christos   {
   3026  1.1  christos     BI opval = LTSI (tmp_tmp, 0);
   3027  1.1  christos     CPU (h_nbit) = opval;
   3028  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   3029  1.1  christos   }
   3030  1.1  christos   {
   3031  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   3032  1.1  christos     CPU (h_zbit) = opval;
   3033  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   3034  1.1  christos   }
   3035  1.1  christos SET_H_CBIT_MOVE (0);
   3036  1.1  christos SET_H_VBIT_MOVE (0);
   3037  1.1  christos {
   3038  1.1  christos   {
   3039  1.1  christos     BI opval = 0;
   3040  1.1  christos     CPU (h_xbit) = opval;
   3041  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3042  1.1  christos   }
   3043  1.1  christos   {
   3044  1.1  christos     BI opval = 0;
   3045  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3046  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3047  1.1  christos   }
   3048  1.1  christos }
   3049  1.1  christos }
   3050  1.1  christos }
   3051  1.1  christos 
   3052  1.1  christos   abuf->written = written;
   3053  1.1  christos #undef FLD
   3054  1.1  christos }
   3055  1.1  christos   NEXT (vpc);
   3056  1.1  christos 
   3057  1.1  christos   CASE (sem, INSN_MOVE_R_SPRV32) : /* move ${Rs},${Pd} */
   3058  1.1  christos {
   3059  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3060  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3061  1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   3062  1.1  christos   int UNUSED written = 0;
   3063  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3064  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   3065  1.1  christos 
   3066  1.1  christos {
   3067  1.1  christos   SI tmp_tmp;
   3068  1.1  christos   SI tmp_rno;
   3069  1.1  christos   tmp_tmp = GET_H_GR (FLD (f_operand1));
   3070  1.1  christos   tmp_rno = FLD (f_operand2);
   3071  1.1  christos if (ORIF (ORIF (EQSI (tmp_rno, 0), EQSI (tmp_rno, 1)), ORIF (EQSI (tmp_rno, 4), EQSI (tmp_rno, 8)))) {
   3072  1.1  christos cgen_rtx_error (current_cpu, "move-r-spr: trying to set a read-only special register");
   3073  1.1  christos }
   3074  1.1  christos  else {
   3075  1.1  christos   {
   3076  1.1  christos     SI opval = tmp_tmp;
   3077  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3078  1.1  christos     written |= (1 << 2);
   3079  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3080  1.1  christos   }
   3081  1.1  christos }
   3082  1.1  christos {
   3083  1.1  christos   {
   3084  1.1  christos     BI opval = 0;
   3085  1.1  christos     CPU (h_xbit) = opval;
   3086  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3087  1.1  christos   }
   3088  1.1  christos   {
   3089  1.1  christos     BI opval = 0;
   3090  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3091  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3092  1.1  christos   }
   3093  1.1  christos }
   3094  1.1  christos }
   3095  1.1  christos 
   3096  1.1  christos   abuf->written = written;
   3097  1.1  christos #undef FLD
   3098  1.1  christos }
   3099  1.1  christos   NEXT (vpc);
   3100  1.1  christos 
   3101  1.1  christos   CASE (sem, INSN_MOVE_SPR_RV32) : /* move ${Ps},${Rd-sfield} */
   3102  1.1  christos {
   3103  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3104  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3105  1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   3106  1.1  christos   int UNUSED written = 0;
   3107  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3108  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   3109  1.1  christos 
   3110  1.1  christos {
   3111  1.1  christos   SI tmp_grno;
   3112  1.1  christos   SI tmp_prno;
   3113  1.1  christos   SI tmp_newval;
   3114  1.1  christos   tmp_prno = FLD (f_operand2);
   3115  1.1  christos   tmp_newval = GET_H_SR (FLD (f_operand2));
   3116  1.1  christos if (EQSI (tmp_prno, 2)) {
   3117  1.1  christos   {
   3118  1.1  christos     SI opval = tmp_newval;
   3119  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3120  1.1  christos     written |= (1 << 4);
   3121  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3122  1.1  christos   }
   3123  1.1  christos }
   3124  1.1  christos  else if (EQSI (tmp_prno, 3)) {
   3125  1.1  christos {
   3126  1.1  christos   SI tmp_oldregval;
   3127  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3128  1.1  christos   {
   3129  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   3130  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3131  1.1  christos     written |= (1 << 4);
   3132  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3133  1.1  christos   }
   3134  1.1  christos }
   3135  1.1  christos }
   3136  1.1  christos  else if (EQSI (tmp_prno, 5)) {
   3137  1.1  christos   {
   3138  1.1  christos     SI opval = tmp_newval;
   3139  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3140  1.1  christos     written |= (1 << 4);
   3141  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3142  1.1  christos   }
   3143  1.1  christos }
   3144  1.1  christos  else if (EQSI (tmp_prno, 6)) {
   3145  1.1  christos   {
   3146  1.1  christos     SI opval = tmp_newval;
   3147  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3148  1.1  christos     written |= (1 << 4);
   3149  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3150  1.1  christos   }
   3151  1.1  christos }
   3152  1.1  christos  else if (EQSI (tmp_prno, 7)) {
   3153  1.1  christos   {
   3154  1.1  christos     SI opval = tmp_newval;
   3155  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3156  1.1  christos     written |= (1 << 4);
   3157  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3158  1.1  christos   }
   3159  1.1  christos }
   3160  1.1  christos  else if (EQSI (tmp_prno, 9)) {
   3161  1.1  christos   {
   3162  1.1  christos     SI opval = tmp_newval;
   3163  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3164  1.1  christos     written |= (1 << 4);
   3165  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3166  1.1  christos   }
   3167  1.1  christos }
   3168  1.1  christos  else if (EQSI (tmp_prno, 10)) {
   3169  1.1  christos   {
   3170  1.1  christos     SI opval = tmp_newval;
   3171  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3172  1.1  christos     written |= (1 << 4);
   3173  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3174  1.1  christos   }
   3175  1.1  christos }
   3176  1.1  christos  else if (EQSI (tmp_prno, 11)) {
   3177  1.1  christos   {
   3178  1.1  christos     SI opval = tmp_newval;
   3179  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3180  1.1  christos     written |= (1 << 4);
   3181  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3182  1.1  christos   }
   3183  1.1  christos }
   3184  1.1  christos  else if (EQSI (tmp_prno, 12)) {
   3185  1.1  christos   {
   3186  1.1  christos     SI opval = tmp_newval;
   3187  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3188  1.1  christos     written |= (1 << 4);
   3189  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3190  1.1  christos   }
   3191  1.1  christos }
   3192  1.1  christos  else if (EQSI (tmp_prno, 13)) {
   3193  1.1  christos   {
   3194  1.1  christos     SI opval = tmp_newval;
   3195  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3196  1.1  christos     written |= (1 << 4);
   3197  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3198  1.1  christos   }
   3199  1.1  christos }
   3200  1.1  christos  else if (EQSI (tmp_prno, 14)) {
   3201  1.1  christos   {
   3202  1.1  christos     SI opval = tmp_newval;
   3203  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3204  1.1  christos     written |= (1 << 4);
   3205  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3206  1.1  christos   }
   3207  1.1  christos }
   3208  1.1  christos  else if (EQSI (tmp_prno, 15)) {
   3209  1.1  christos   {
   3210  1.1  christos     SI opval = tmp_newval;
   3211  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3212  1.1  christos     written |= (1 << 4);
   3213  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3214  1.1  christos   }
   3215  1.1  christos }
   3216  1.1  christos  else if (EQSI (tmp_prno, 0)) {
   3217  1.1  christos {
   3218  1.1  christos   SI tmp_oldregval;
   3219  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3220  1.1  christos   {
   3221  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   3222  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3223  1.1  christos     written |= (1 << 4);
   3224  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3225  1.1  christos   }
   3226  1.1  christos }
   3227  1.1  christos }
   3228  1.1  christos  else if (EQSI (tmp_prno, 1)) {
   3229  1.1  christos {
   3230  1.1  christos   SI tmp_oldregval;
   3231  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3232  1.1  christos   {
   3233  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   3234  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3235  1.1  christos     written |= (1 << 4);
   3236  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3237  1.1  christos   }
   3238  1.1  christos }
   3239  1.1  christos }
   3240  1.1  christos  else if (EQSI (tmp_prno, 4)) {
   3241  1.1  christos {
   3242  1.1  christos   SI tmp_oldregval;
   3243  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3244  1.1  christos   {
   3245  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   3246  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3247  1.1  christos     written |= (1 << 4);
   3248  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3249  1.1  christos   }
   3250  1.1  christos }
   3251  1.1  christos }
   3252  1.1  christos  else if (EQSI (tmp_prno, 8)) {
   3253  1.1  christos   {
   3254  1.1  christos     SI opval = tmp_newval;
   3255  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3256  1.1  christos     written |= (1 << 4);
   3257  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3258  1.1  christos   }
   3259  1.1  christos }
   3260  1.1  christos  else {
   3261  1.1  christos cgen_rtx_error (current_cpu, "move-spr-r from unimplemented register");
   3262  1.1  christos }
   3263  1.1  christos {
   3264  1.1  christos   {
   3265  1.1  christos     BI opval = 0;
   3266  1.1  christos     CPU (h_xbit) = opval;
   3267  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3268  1.1  christos   }
   3269  1.1  christos   {
   3270  1.1  christos     BI opval = 0;
   3271  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3272  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3273  1.1  christos   }
   3274  1.1  christos }
   3275  1.1  christos }
   3276  1.1  christos 
   3277  1.1  christos   abuf->written = written;
   3278  1.1  christos #undef FLD
   3279  1.1  christos }
   3280  1.1  christos   NEXT (vpc);
   3281  1.1  christos 
   3282  1.1  christos   CASE (sem, INSN_MOVE_M_SPRV32) : /* move [${Rs}${inc}],${Pd} */
   3283  1.1  christos {
   3284  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3285  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3286  1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   3287  1.1  christos   int UNUSED written = 0;
   3288  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3289  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   3290  1.1  christos 
   3291  1.1  christos {
   3292  1.1  christos   SI tmp_rno;
   3293  1.1  christos   SI tmp_newval;
   3294  1.1  christos   tmp_rno = FLD (f_operand2);
   3295  1.1  christos if (EQSI (tmp_rno, 2)) {
   3296  1.1  christos   tmp_newval = ({   SI tmp_addr;
   3297  1.1  christos   SI tmp_tmp_mem;
   3298  1.1  christos   BI tmp_postinc;
   3299  1.1  christos   tmp_postinc = FLD (f_memmode);
   3300  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3301  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3302  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3303  1.1  christos {
   3304  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3305  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3306  1.1  christos }
   3307  1.1  christos   {
   3308  1.1  christos     SI opval = tmp_addr;
   3309  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3310  1.1  christos     written |= (1 << 8);
   3311  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3312  1.1  christos   }
   3313  1.1  christos }
   3314  1.1  christos }
   3315  1.1  christos ; tmp_tmp_mem; });
   3316  1.1  christos }
   3317  1.1  christos  else if (EQSI (tmp_rno, 3)) {
   3318  1.1  christos   tmp_newval = EXTQISI (({   SI tmp_addr;
   3319  1.1  christos   QI tmp_tmp_mem;
   3320  1.1  christos   BI tmp_postinc;
   3321  1.1  christos   tmp_postinc = FLD (f_memmode);
   3322  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3323  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   3324  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3325  1.1  christos {
   3326  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3327  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   3328  1.1  christos }
   3329  1.1  christos   {
   3330  1.1  christos     SI opval = tmp_addr;
   3331  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3332  1.1  christos     written |= (1 << 8);
   3333  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3334  1.1  christos   }
   3335  1.1  christos }
   3336  1.1  christos }
   3337  1.1  christos ; tmp_tmp_mem; }));
   3338  1.1  christos }
   3339  1.1  christos  else if (EQSI (tmp_rno, 5)) {
   3340  1.1  christos   tmp_newval = ({   SI tmp_addr;
   3341  1.1  christos   SI tmp_tmp_mem;
   3342  1.1  christos   BI tmp_postinc;
   3343  1.1  christos   tmp_postinc = FLD (f_memmode);
   3344  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3345  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3346  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3347  1.1  christos {
   3348  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3349  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3350  1.1  christos }
   3351  1.1  christos   {
   3352  1.1  christos     SI opval = tmp_addr;
   3353  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3354  1.1  christos     written |= (1 << 8);
   3355  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3356  1.1  christos   }
   3357  1.1  christos }
   3358  1.1  christos }
   3359  1.1  christos ; tmp_tmp_mem; });
   3360  1.1  christos }
   3361  1.1  christos  else if (EQSI (tmp_rno, 6)) {
   3362  1.1  christos   tmp_newval = ({   SI tmp_addr;
   3363  1.1  christos   SI tmp_tmp_mem;
   3364  1.1  christos   BI tmp_postinc;
   3365  1.1  christos   tmp_postinc = FLD (f_memmode);
   3366  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3367  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3368  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3369  1.1  christos {
   3370  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3371  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3372  1.1  christos }
   3373  1.1  christos   {
   3374  1.1  christos     SI opval = tmp_addr;
   3375  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3376  1.1  christos     written |= (1 << 8);
   3377  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3378  1.1  christos   }
   3379  1.1  christos }
   3380  1.1  christos }
   3381  1.1  christos ; tmp_tmp_mem; });
   3382  1.1  christos }
   3383  1.1  christos  else if (EQSI (tmp_rno, 7)) {
   3384  1.1  christos   tmp_newval = ({   SI tmp_addr;
   3385  1.1  christos   SI tmp_tmp_mem;
   3386  1.1  christos   BI tmp_postinc;
   3387  1.1  christos   tmp_postinc = FLD (f_memmode);
   3388  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3389  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3390  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3391  1.1  christos {
   3392  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3393  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3394  1.1  christos }
   3395  1.1  christos   {
   3396  1.1  christos     SI opval = tmp_addr;
   3397  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3398  1.1  christos     written |= (1 << 8);
   3399  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3400  1.1  christos   }
   3401  1.1  christos }
   3402  1.1  christos }
   3403  1.1  christos ; tmp_tmp_mem; });
   3404  1.1  christos }
   3405  1.1  christos  else if (EQSI (tmp_rno, 9)) {
   3406  1.1  christos   tmp_newval = ({   SI tmp_addr;
   3407  1.1  christos   SI tmp_tmp_mem;
   3408  1.1  christos   BI tmp_postinc;
   3409  1.1  christos   tmp_postinc = FLD (f_memmode);
   3410  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3411  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3412  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3413  1.1  christos {
   3414  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3415  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3416  1.1  christos }
   3417  1.1  christos   {
   3418  1.1  christos     SI opval = tmp_addr;
   3419  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3420  1.1  christos     written |= (1 << 8);
   3421  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3422  1.1  christos   }
   3423  1.1  christos }
   3424  1.1  christos }
   3425  1.1  christos ; tmp_tmp_mem; });
   3426  1.1  christos }
   3427  1.1  christos  else if (EQSI (tmp_rno, 10)) {
   3428  1.1  christos   tmp_newval = ({   SI tmp_addr;
   3429  1.1  christos   SI tmp_tmp_mem;
   3430  1.1  christos   BI tmp_postinc;
   3431  1.1  christos   tmp_postinc = FLD (f_memmode);
   3432  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3433  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3434  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3435  1.1  christos {
   3436  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3437  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3438  1.1  christos }
   3439  1.1  christos   {
   3440  1.1  christos     SI opval = tmp_addr;
   3441  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3442  1.1  christos     written |= (1 << 8);
   3443  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3444  1.1  christos   }
   3445  1.1  christos }
   3446  1.1  christos }
   3447  1.1  christos ; tmp_tmp_mem; });
   3448  1.1  christos }
   3449  1.1  christos  else if (EQSI (tmp_rno, 11)) {
   3450  1.1  christos   tmp_newval = ({   SI tmp_addr;
   3451  1.1  christos   SI tmp_tmp_mem;
   3452  1.1  christos   BI tmp_postinc;
   3453  1.1  christos   tmp_postinc = FLD (f_memmode);
   3454  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3455  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3456  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3457  1.1  christos {
   3458  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3459  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3460  1.1  christos }
   3461  1.1  christos   {
   3462  1.1  christos     SI opval = tmp_addr;
   3463  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3464  1.1  christos     written |= (1 << 8);
   3465  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3466  1.1  christos   }
   3467  1.1  christos }
   3468  1.1  christos }
   3469  1.1  christos ; tmp_tmp_mem; });
   3470  1.1  christos }
   3471  1.1  christos  else if (EQSI (tmp_rno, 12)) {
   3472  1.1  christos   tmp_newval = ({   SI tmp_addr;
   3473  1.1  christos   SI tmp_tmp_mem;
   3474  1.1  christos   BI tmp_postinc;
   3475  1.1  christos   tmp_postinc = FLD (f_memmode);
   3476  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3477  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3478  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3479  1.1  christos {
   3480  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3481  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3482  1.1  christos }
   3483  1.1  christos   {
   3484  1.1  christos     SI opval = tmp_addr;
   3485  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3486  1.1  christos     written |= (1 << 8);
   3487  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3488  1.1  christos   }
   3489  1.1  christos }
   3490  1.1  christos }
   3491  1.1  christos ; tmp_tmp_mem; });
   3492  1.1  christos }
   3493  1.1  christos  else if (EQSI (tmp_rno, 13)) {
   3494  1.1  christos   tmp_newval = ({   SI tmp_addr;
   3495  1.1  christos   SI tmp_tmp_mem;
   3496  1.1  christos   BI tmp_postinc;
   3497  1.1  christos   tmp_postinc = FLD (f_memmode);
   3498  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3499  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3500  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3501  1.1  christos {
   3502  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3503  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3504  1.1  christos }
   3505  1.1  christos   {
   3506  1.1  christos     SI opval = tmp_addr;
   3507  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3508  1.1  christos     written |= (1 << 8);
   3509  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3510  1.1  christos   }
   3511  1.1  christos }
   3512  1.1  christos }
   3513  1.1  christos ; tmp_tmp_mem; });
   3514  1.1  christos }
   3515  1.1  christos  else if (EQSI (tmp_rno, 14)) {
   3516  1.1  christos   tmp_newval = ({   SI tmp_addr;
   3517  1.1  christos   SI tmp_tmp_mem;
   3518  1.1  christos   BI tmp_postinc;
   3519  1.1  christos   tmp_postinc = FLD (f_memmode);
   3520  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3521  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3522  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3523  1.1  christos {
   3524  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3525  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3526  1.1  christos }
   3527  1.1  christos   {
   3528  1.1  christos     SI opval = tmp_addr;
   3529  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3530  1.1  christos     written |= (1 << 8);
   3531  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3532  1.1  christos   }
   3533  1.1  christos }
   3534  1.1  christos }
   3535  1.1  christos ; tmp_tmp_mem; });
   3536  1.1  christos }
   3537  1.1  christos  else if (EQSI (tmp_rno, 15)) {
   3538  1.1  christos   tmp_newval = ({   SI tmp_addr;
   3539  1.1  christos   SI tmp_tmp_mem;
   3540  1.1  christos   BI tmp_postinc;
   3541  1.1  christos   tmp_postinc = FLD (f_memmode);
   3542  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3543  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3544  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3545  1.1  christos {
   3546  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3547  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3548  1.1  christos }
   3549  1.1  christos   {
   3550  1.1  christos     SI opval = tmp_addr;
   3551  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3552  1.1  christos     written |= (1 << 8);
   3553  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3554  1.1  christos   }
   3555  1.1  christos }
   3556  1.1  christos }
   3557  1.1  christos ; tmp_tmp_mem; });
   3558  1.1  christos }
   3559  1.1  christos  else {
   3560  1.1  christos cgen_rtx_error (current_cpu, "Trying to set unimplemented special register");
   3561  1.1  christos }
   3562  1.1  christos   {
   3563  1.1  christos     SI opval = tmp_newval;
   3564  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3565  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3566  1.1  christos   }
   3567  1.1  christos {
   3568  1.1  christos   {
   3569  1.1  christos     BI opval = 0;
   3570  1.1  christos     CPU (h_xbit) = opval;
   3571  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3572  1.1  christos   }
   3573  1.1  christos   {
   3574  1.1  christos     BI opval = 0;
   3575  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3576  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3577  1.1  christos   }
   3578  1.1  christos }
   3579  1.1  christos }
   3580  1.1  christos 
   3581  1.1  christos   abuf->written = written;
   3582  1.1  christos #undef FLD
   3583  1.1  christos }
   3584  1.1  christos   NEXT (vpc);
   3585  1.1  christos 
   3586  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P2) : /* move ${const32},${Pd} */
   3587  1.1  christos {
   3588  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3589  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3590  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3591  1.1  christos   int UNUSED written = 0;
   3592  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3593  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3594  1.1  christos 
   3595  1.1  christos {
   3596  1.1  christos   {
   3597  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3598  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3599  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3600  1.1  christos   }
   3601  1.1  christos {
   3602  1.1  christos   {
   3603  1.1  christos     BI opval = 0;
   3604  1.1  christos     CPU (h_xbit) = opval;
   3605  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3606  1.1  christos   }
   3607  1.1  christos   {
   3608  1.1  christos     BI opval = 0;
   3609  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3610  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3611  1.1  christos   }
   3612  1.1  christos }
   3613  1.1  christos }
   3614  1.1  christos 
   3615  1.1  christos #undef FLD
   3616  1.1  christos }
   3617  1.1  christos   NEXT (vpc);
   3618  1.1  christos 
   3619  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P3) : /* move ${const32},${Pd} */
   3620  1.1  christos {
   3621  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3622  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3623  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3624  1.1  christos   int UNUSED written = 0;
   3625  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3626  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3627  1.1  christos 
   3628  1.1  christos {
   3629  1.1  christos   {
   3630  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3631  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3632  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3633  1.1  christos   }
   3634  1.1  christos {
   3635  1.1  christos   {
   3636  1.1  christos     BI opval = 0;
   3637  1.1  christos     CPU (h_xbit) = opval;
   3638  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3639  1.1  christos   }
   3640  1.1  christos   {
   3641  1.1  christos     BI opval = 0;
   3642  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3643  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3644  1.1  christos   }
   3645  1.1  christos }
   3646  1.1  christos }
   3647  1.1  christos 
   3648  1.1  christos #undef FLD
   3649  1.1  christos }
   3650  1.1  christos   NEXT (vpc);
   3651  1.1  christos 
   3652  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P5) : /* move ${const32},${Pd} */
   3653  1.1  christos {
   3654  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3655  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3656  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3657  1.1  christos   int UNUSED written = 0;
   3658  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3659  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3660  1.1  christos 
   3661  1.1  christos {
   3662  1.1  christos   {
   3663  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3664  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3665  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3666  1.1  christos   }
   3667  1.1  christos {
   3668  1.1  christos   {
   3669  1.1  christos     BI opval = 0;
   3670  1.1  christos     CPU (h_xbit) = opval;
   3671  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3672  1.1  christos   }
   3673  1.1  christos   {
   3674  1.1  christos     BI opval = 0;
   3675  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3676  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3677  1.1  christos   }
   3678  1.1  christos }
   3679  1.1  christos }
   3680  1.1  christos 
   3681  1.1  christos #undef FLD
   3682  1.1  christos }
   3683  1.1  christos   NEXT (vpc);
   3684  1.1  christos 
   3685  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P6) : /* move ${const32},${Pd} */
   3686  1.1  christos {
   3687  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3688  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3689  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3690  1.1  christos   int UNUSED written = 0;
   3691  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3692  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3693  1.1  christos 
   3694  1.1  christos {
   3695  1.1  christos   {
   3696  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3697  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3698  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3699  1.1  christos   }
   3700  1.1  christos {
   3701  1.1  christos   {
   3702  1.1  christos     BI opval = 0;
   3703  1.1  christos     CPU (h_xbit) = opval;
   3704  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3705  1.1  christos   }
   3706  1.1  christos   {
   3707  1.1  christos     BI opval = 0;
   3708  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3709  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3710  1.1  christos   }
   3711  1.1  christos }
   3712  1.1  christos }
   3713  1.1  christos 
   3714  1.1  christos #undef FLD
   3715  1.1  christos }
   3716  1.1  christos   NEXT (vpc);
   3717  1.1  christos 
   3718  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P7) : /* move ${const32},${Pd} */
   3719  1.1  christos {
   3720  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3721  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3722  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3723  1.1  christos   int UNUSED written = 0;
   3724  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3725  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3726  1.1  christos 
   3727  1.1  christos {
   3728  1.1  christos   {
   3729  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3730  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3731  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3732  1.1  christos   }
   3733  1.1  christos {
   3734  1.1  christos   {
   3735  1.1  christos     BI opval = 0;
   3736  1.1  christos     CPU (h_xbit) = opval;
   3737  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3738  1.1  christos   }
   3739  1.1  christos   {
   3740  1.1  christos     BI opval = 0;
   3741  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3742  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3743  1.1  christos   }
   3744  1.1  christos }
   3745  1.1  christos }
   3746  1.1  christos 
   3747  1.1  christos #undef FLD
   3748  1.1  christos }
   3749  1.1  christos   NEXT (vpc);
   3750  1.1  christos 
   3751  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P9) : /* move ${const32},${Pd} */
   3752  1.1  christos {
   3753  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3754  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3755  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3756  1.1  christos   int UNUSED written = 0;
   3757  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3758  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3759  1.1  christos 
   3760  1.1  christos {
   3761  1.1  christos   {
   3762  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3763  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3764  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3765  1.1  christos   }
   3766  1.1  christos {
   3767  1.1  christos   {
   3768  1.1  christos     BI opval = 0;
   3769  1.1  christos     CPU (h_xbit) = opval;
   3770  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3771  1.1  christos   }
   3772  1.1  christos   {
   3773  1.1  christos     BI opval = 0;
   3774  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3775  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3776  1.1  christos   }
   3777  1.1  christos }
   3778  1.1  christos }
   3779  1.1  christos 
   3780  1.1  christos #undef FLD
   3781  1.1  christos }
   3782  1.1  christos   NEXT (vpc);
   3783  1.1  christos 
   3784  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P10) : /* move ${const32},${Pd} */
   3785  1.1  christos {
   3786  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3787  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3788  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3789  1.1  christos   int UNUSED written = 0;
   3790  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3791  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3792  1.1  christos 
   3793  1.1  christos {
   3794  1.1  christos   {
   3795  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3796  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3797  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3798  1.1  christos   }
   3799  1.1  christos {
   3800  1.1  christos   {
   3801  1.1  christos     BI opval = 0;
   3802  1.1  christos     CPU (h_xbit) = opval;
   3803  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3804  1.1  christos   }
   3805  1.1  christos   {
   3806  1.1  christos     BI opval = 0;
   3807  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3808  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3809  1.1  christos   }
   3810  1.1  christos }
   3811  1.1  christos }
   3812  1.1  christos 
   3813  1.1  christos #undef FLD
   3814  1.1  christos }
   3815  1.1  christos   NEXT (vpc);
   3816  1.1  christos 
   3817  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P11) : /* move ${const32},${Pd} */
   3818  1.1  christos {
   3819  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3820  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3821  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3822  1.1  christos   int UNUSED written = 0;
   3823  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3824  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3825  1.1  christos 
   3826  1.1  christos {
   3827  1.1  christos   {
   3828  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3829  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3830  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3831  1.1  christos   }
   3832  1.1  christos {
   3833  1.1  christos   {
   3834  1.1  christos     BI opval = 0;
   3835  1.1  christos     CPU (h_xbit) = opval;
   3836  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3837  1.1  christos   }
   3838  1.1  christos   {
   3839  1.1  christos     BI opval = 0;
   3840  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3841  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3842  1.1  christos   }
   3843  1.1  christos }
   3844  1.1  christos }
   3845  1.1  christos 
   3846  1.1  christos #undef FLD
   3847  1.1  christos }
   3848  1.1  christos   NEXT (vpc);
   3849  1.1  christos 
   3850  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P12) : /* move ${const32},${Pd} */
   3851  1.1  christos {
   3852  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3853  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3854  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3855  1.1  christos   int UNUSED written = 0;
   3856  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3857  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3858  1.1  christos 
   3859  1.1  christos {
   3860  1.1  christos   {
   3861  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3862  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3863  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3864  1.1  christos   }
   3865  1.1  christos {
   3866  1.1  christos   {
   3867  1.1  christos     BI opval = 0;
   3868  1.1  christos     CPU (h_xbit) = opval;
   3869  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3870  1.1  christos   }
   3871  1.1  christos   {
   3872  1.1  christos     BI opval = 0;
   3873  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3874  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3875  1.1  christos   }
   3876  1.1  christos }
   3877  1.1  christos }
   3878  1.1  christos 
   3879  1.1  christos #undef FLD
   3880  1.1  christos }
   3881  1.1  christos   NEXT (vpc);
   3882  1.1  christos 
   3883  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P13) : /* move ${const32},${Pd} */
   3884  1.1  christos {
   3885  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3886  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3887  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3888  1.1  christos   int UNUSED written = 0;
   3889  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3890  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3891  1.1  christos 
   3892  1.1  christos {
   3893  1.1  christos   {
   3894  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3895  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3896  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3897  1.1  christos   }
   3898  1.1  christos {
   3899  1.1  christos   {
   3900  1.1  christos     BI opval = 0;
   3901  1.1  christos     CPU (h_xbit) = opval;
   3902  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3903  1.1  christos   }
   3904  1.1  christos   {
   3905  1.1  christos     BI opval = 0;
   3906  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3907  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3908  1.1  christos   }
   3909  1.1  christos }
   3910  1.1  christos }
   3911  1.1  christos 
   3912  1.1  christos #undef FLD
   3913  1.1  christos }
   3914  1.1  christos   NEXT (vpc);
   3915  1.1  christos 
   3916  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P14) : /* move ${const32},${Pd} */
   3917  1.1  christos {
   3918  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3919  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3920  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3921  1.1  christos   int UNUSED written = 0;
   3922  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3923  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3924  1.1  christos 
   3925  1.1  christos {
   3926  1.1  christos   {
   3927  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3928  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3929  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3930  1.1  christos   }
   3931  1.1  christos {
   3932  1.1  christos   {
   3933  1.1  christos     BI opval = 0;
   3934  1.1  christos     CPU (h_xbit) = opval;
   3935  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3936  1.1  christos   }
   3937  1.1  christos   {
   3938  1.1  christos     BI opval = 0;
   3939  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3940  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3941  1.1  christos   }
   3942  1.1  christos }
   3943  1.1  christos }
   3944  1.1  christos 
   3945  1.1  christos #undef FLD
   3946  1.1  christos }
   3947  1.1  christos   NEXT (vpc);
   3948  1.1  christos 
   3949  1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P15) : /* move ${const32},${Pd} */
   3950  1.1  christos {
   3951  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3952  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3953  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3954  1.1  christos   int UNUSED written = 0;
   3955  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3956  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3957  1.1  christos 
   3958  1.1  christos {
   3959  1.1  christos   {
   3960  1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3961  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3962  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3963  1.1  christos   }
   3964  1.1  christos {
   3965  1.1  christos   {
   3966  1.1  christos     BI opval = 0;
   3967  1.1  christos     CPU (h_xbit) = opval;
   3968  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3969  1.1  christos   }
   3970  1.1  christos   {
   3971  1.1  christos     BI opval = 0;
   3972  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3973  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3974  1.1  christos   }
   3975  1.1  christos }
   3976  1.1  christos }
   3977  1.1  christos 
   3978  1.1  christos #undef FLD
   3979  1.1  christos }
   3980  1.1  christos   NEXT (vpc);
   3981  1.1  christos 
   3982  1.1  christos   CASE (sem, INSN_MOVE_SPR_MV32) : /* move ${Ps},[${Rd-sfield}${inc}] */
   3983  1.1  christos {
   3984  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3985  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3986  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   3987  1.1  christos   int UNUSED written = 0;
   3988  1.1  christos   IADDR UNUSED pc = abuf->addr;
   3989  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   3990  1.1  christos 
   3991  1.1  christos {
   3992  1.1  christos   SI tmp_rno;
   3993  1.1  christos   tmp_rno = FLD (f_operand2);
   3994  1.1  christos if (EQSI (tmp_rno, 2)) {
   3995  1.1  christos {
   3996  1.1  christos   SI tmp_addr;
   3997  1.1  christos   BI tmp_postinc;
   3998  1.1  christos   tmp_postinc = FLD (f_memmode);
   3999  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4000  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4001  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4002  1.1  christos {
   4003  1.1  christos   {
   4004  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4005  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4006  1.1  christos     written |= (1 << 13);
   4007  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4008  1.1  christos   }
   4009  1.1  christos   {
   4010  1.1  christos     BI opval = CPU (h_pbit);
   4011  1.1  christos     CPU (h_cbit) = opval;
   4012  1.1  christos     written |= (1 << 10);
   4013  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4014  1.1  christos   }
   4015  1.1  christos }
   4016  1.1  christos } else {
   4017  1.1  christos   {
   4018  1.1  christos     BI opval = 1;
   4019  1.1  christos     CPU (h_cbit) = opval;
   4020  1.1  christos     written |= (1 << 10);
   4021  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4022  1.1  christos   }
   4023  1.1  christos }
   4024  1.1  christos } else {
   4025  1.1  christos   {
   4026  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4027  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4028  1.1  christos     written |= (1 << 13);
   4029  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4030  1.1  christos   }
   4031  1.1  christos }
   4032  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4033  1.1  christos {
   4034  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4035  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4036  1.1  christos }
   4037  1.1  christos   {
   4038  1.1  christos     SI opval = tmp_addr;
   4039  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4040  1.1  christos     written |= (1 << 9);
   4041  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4042  1.1  christos   }
   4043  1.1  christos }
   4044  1.1  christos }
   4045  1.1  christos }
   4046  1.1  christos }
   4047  1.1  christos  else if (EQSI (tmp_rno, 3)) {
   4048  1.1  christos {
   4049  1.1  christos   SI tmp_addr;
   4050  1.1  christos   BI tmp_postinc;
   4051  1.1  christos   tmp_postinc = FLD (f_memmode);
   4052  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4053  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4054  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4055  1.1  christos {
   4056  1.1  christos   {
   4057  1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4058  1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4059  1.1  christos     written |= (1 << 12);
   4060  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4061  1.1  christos   }
   4062  1.1  christos   {
   4063  1.1  christos     BI opval = CPU (h_pbit);
   4064  1.1  christos     CPU (h_cbit) = opval;
   4065  1.1  christos     written |= (1 << 10);
   4066  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4067  1.1  christos   }
   4068  1.1  christos }
   4069  1.1  christos } else {
   4070  1.1  christos   {
   4071  1.1  christos     BI opval = 1;
   4072  1.1  christos     CPU (h_cbit) = opval;
   4073  1.1  christos     written |= (1 << 10);
   4074  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4075  1.1  christos   }
   4076  1.1  christos }
   4077  1.1  christos } else {
   4078  1.1  christos   {
   4079  1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4080  1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4081  1.1  christos     written |= (1 << 12);
   4082  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4083  1.1  christos   }
   4084  1.1  christos }
   4085  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4086  1.1  christos {
   4087  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4088  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   4089  1.1  christos }
   4090  1.1  christos   {
   4091  1.1  christos     SI opval = tmp_addr;
   4092  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4093  1.1  christos     written |= (1 << 9);
   4094  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4095  1.1  christos   }
   4096  1.1  christos }
   4097  1.1  christos }
   4098  1.1  christos }
   4099  1.1  christos }
   4100  1.1  christos  else if (EQSI (tmp_rno, 5)) {
   4101  1.1  christos {
   4102  1.1  christos   SI tmp_addr;
   4103  1.1  christos   BI tmp_postinc;
   4104  1.1  christos   tmp_postinc = FLD (f_memmode);
   4105  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4106  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4107  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4108  1.1  christos {
   4109  1.1  christos   {
   4110  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4111  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4112  1.1  christos     written |= (1 << 13);
   4113  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4114  1.1  christos   }
   4115  1.1  christos   {
   4116  1.1  christos     BI opval = CPU (h_pbit);
   4117  1.1  christos     CPU (h_cbit) = opval;
   4118  1.1  christos     written |= (1 << 10);
   4119  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4120  1.1  christos   }
   4121  1.1  christos }
   4122  1.1  christos } else {
   4123  1.1  christos   {
   4124  1.1  christos     BI opval = 1;
   4125  1.1  christos     CPU (h_cbit) = opval;
   4126  1.1  christos     written |= (1 << 10);
   4127  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4128  1.1  christos   }
   4129  1.1  christos }
   4130  1.1  christos } else {
   4131  1.1  christos   {
   4132  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4133  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4134  1.1  christos     written |= (1 << 13);
   4135  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4136  1.1  christos   }
   4137  1.1  christos }
   4138  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4139  1.1  christos {
   4140  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4141  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4142  1.1  christos }
   4143  1.1  christos   {
   4144  1.1  christos     SI opval = tmp_addr;
   4145  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4146  1.1  christos     written |= (1 << 9);
   4147  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4148  1.1  christos   }
   4149  1.1  christos }
   4150  1.1  christos }
   4151  1.1  christos }
   4152  1.1  christos }
   4153  1.1  christos  else if (EQSI (tmp_rno, 6)) {
   4154  1.1  christos {
   4155  1.1  christos   SI tmp_addr;
   4156  1.1  christos   BI tmp_postinc;
   4157  1.1  christos   tmp_postinc = FLD (f_memmode);
   4158  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4159  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4160  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4161  1.1  christos {
   4162  1.1  christos   {
   4163  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4164  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4165  1.1  christos     written |= (1 << 13);
   4166  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4167  1.1  christos   }
   4168  1.1  christos   {
   4169  1.1  christos     BI opval = CPU (h_pbit);
   4170  1.1  christos     CPU (h_cbit) = opval;
   4171  1.1  christos     written |= (1 << 10);
   4172  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4173  1.1  christos   }
   4174  1.1  christos }
   4175  1.1  christos } else {
   4176  1.1  christos   {
   4177  1.1  christos     BI opval = 1;
   4178  1.1  christos     CPU (h_cbit) = opval;
   4179  1.1  christos     written |= (1 << 10);
   4180  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4181  1.1  christos   }
   4182  1.1  christos }
   4183  1.1  christos } else {
   4184  1.1  christos   {
   4185  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4186  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4187  1.1  christos     written |= (1 << 13);
   4188  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4189  1.1  christos   }
   4190  1.1  christos }
   4191  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4192  1.1  christos {
   4193  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4194  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4195  1.1  christos }
   4196  1.1  christos   {
   4197  1.1  christos     SI opval = tmp_addr;
   4198  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4199  1.1  christos     written |= (1 << 9);
   4200  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4201  1.1  christos   }
   4202  1.1  christos }
   4203  1.1  christos }
   4204  1.1  christos }
   4205  1.1  christos }
   4206  1.1  christos  else if (EQSI (tmp_rno, 7)) {
   4207  1.1  christos {
   4208  1.1  christos   SI tmp_addr;
   4209  1.1  christos   BI tmp_postinc;
   4210  1.1  christos   tmp_postinc = FLD (f_memmode);
   4211  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4212  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4213  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4214  1.1  christos {
   4215  1.1  christos   {
   4216  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4217  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4218  1.1  christos     written |= (1 << 13);
   4219  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4220  1.1  christos   }
   4221  1.1  christos   {
   4222  1.1  christos     BI opval = CPU (h_pbit);
   4223  1.1  christos     CPU (h_cbit) = opval;
   4224  1.1  christos     written |= (1 << 10);
   4225  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4226  1.1  christos   }
   4227  1.1  christos }
   4228  1.1  christos } else {
   4229  1.1  christos   {
   4230  1.1  christos     BI opval = 1;
   4231  1.1  christos     CPU (h_cbit) = opval;
   4232  1.1  christos     written |= (1 << 10);
   4233  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4234  1.1  christos   }
   4235  1.1  christos }
   4236  1.1  christos } else {
   4237  1.1  christos   {
   4238  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4239  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4240  1.1  christos     written |= (1 << 13);
   4241  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4242  1.1  christos   }
   4243  1.1  christos }
   4244  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4245  1.1  christos {
   4246  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4247  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4248  1.1  christos }
   4249  1.1  christos   {
   4250  1.1  christos     SI opval = tmp_addr;
   4251  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4252  1.1  christos     written |= (1 << 9);
   4253  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4254  1.1  christos   }
   4255  1.1  christos }
   4256  1.1  christos }
   4257  1.1  christos }
   4258  1.1  christos }
   4259  1.1  christos  else if (EQSI (tmp_rno, 9)) {
   4260  1.1  christos {
   4261  1.1  christos   SI tmp_addr;
   4262  1.1  christos   BI tmp_postinc;
   4263  1.1  christos   tmp_postinc = FLD (f_memmode);
   4264  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4265  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4266  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4267  1.1  christos {
   4268  1.1  christos   {
   4269  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4270  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4271  1.1  christos     written |= (1 << 13);
   4272  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4273  1.1  christos   }
   4274  1.1  christos   {
   4275  1.1  christos     BI opval = CPU (h_pbit);
   4276  1.1  christos     CPU (h_cbit) = opval;
   4277  1.1  christos     written |= (1 << 10);
   4278  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4279  1.1  christos   }
   4280  1.1  christos }
   4281  1.1  christos } else {
   4282  1.1  christos   {
   4283  1.1  christos     BI opval = 1;
   4284  1.1  christos     CPU (h_cbit) = opval;
   4285  1.1  christos     written |= (1 << 10);
   4286  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4287  1.1  christos   }
   4288  1.1  christos }
   4289  1.1  christos } else {
   4290  1.1  christos   {
   4291  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4292  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4293  1.1  christos     written |= (1 << 13);
   4294  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4295  1.1  christos   }
   4296  1.1  christos }
   4297  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4298  1.1  christos {
   4299  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4300  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4301  1.1  christos }
   4302  1.1  christos   {
   4303  1.1  christos     SI opval = tmp_addr;
   4304  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4305  1.1  christos     written |= (1 << 9);
   4306  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4307  1.1  christos   }
   4308  1.1  christos }
   4309  1.1  christos }
   4310  1.1  christos }
   4311  1.1  christos }
   4312  1.1  christos  else if (EQSI (tmp_rno, 10)) {
   4313  1.1  christos {
   4314  1.1  christos   SI tmp_addr;
   4315  1.1  christos   BI tmp_postinc;
   4316  1.1  christos   tmp_postinc = FLD (f_memmode);
   4317  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4318  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4319  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4320  1.1  christos {
   4321  1.1  christos   {
   4322  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4323  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4324  1.1  christos     written |= (1 << 13);
   4325  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4326  1.1  christos   }
   4327  1.1  christos   {
   4328  1.1  christos     BI opval = CPU (h_pbit);
   4329  1.1  christos     CPU (h_cbit) = opval;
   4330  1.1  christos     written |= (1 << 10);
   4331  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4332  1.1  christos   }
   4333  1.1  christos }
   4334  1.1  christos } else {
   4335  1.1  christos   {
   4336  1.1  christos     BI opval = 1;
   4337  1.1  christos     CPU (h_cbit) = opval;
   4338  1.1  christos     written |= (1 << 10);
   4339  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4340  1.1  christos   }
   4341  1.1  christos }
   4342  1.1  christos } else {
   4343  1.1  christos   {
   4344  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4345  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4346  1.1  christos     written |= (1 << 13);
   4347  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4348  1.1  christos   }
   4349  1.1  christos }
   4350  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4351  1.1  christos {
   4352  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4353  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4354  1.1  christos }
   4355  1.1  christos   {
   4356  1.1  christos     SI opval = tmp_addr;
   4357  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4358  1.1  christos     written |= (1 << 9);
   4359  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4360  1.1  christos   }
   4361  1.1  christos }
   4362  1.1  christos }
   4363  1.1  christos }
   4364  1.1  christos }
   4365  1.1  christos  else if (EQSI (tmp_rno, 11)) {
   4366  1.1  christos {
   4367  1.1  christos   SI tmp_addr;
   4368  1.1  christos   BI tmp_postinc;
   4369  1.1  christos   tmp_postinc = FLD (f_memmode);
   4370  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4371  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4372  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4373  1.1  christos {
   4374  1.1  christos   {
   4375  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4376  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4377  1.1  christos     written |= (1 << 13);
   4378  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4379  1.1  christos   }
   4380  1.1  christos   {
   4381  1.1  christos     BI opval = CPU (h_pbit);
   4382  1.1  christos     CPU (h_cbit) = opval;
   4383  1.1  christos     written |= (1 << 10);
   4384  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4385  1.1  christos   }
   4386  1.1  christos }
   4387  1.1  christos } else {
   4388  1.1  christos   {
   4389  1.1  christos     BI opval = 1;
   4390  1.1  christos     CPU (h_cbit) = opval;
   4391  1.1  christos     written |= (1 << 10);
   4392  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4393  1.1  christos   }
   4394  1.1  christos }
   4395  1.1  christos } else {
   4396  1.1  christos   {
   4397  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4398  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4399  1.1  christos     written |= (1 << 13);
   4400  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4401  1.1  christos   }
   4402  1.1  christos }
   4403  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4404  1.1  christos {
   4405  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4406  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4407  1.1  christos }
   4408  1.1  christos   {
   4409  1.1  christos     SI opval = tmp_addr;
   4410  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4411  1.1  christos     written |= (1 << 9);
   4412  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4413  1.1  christos   }
   4414  1.1  christos }
   4415  1.1  christos }
   4416  1.1  christos }
   4417  1.1  christos }
   4418  1.1  christos  else if (EQSI (tmp_rno, 12)) {
   4419  1.1  christos {
   4420  1.1  christos   SI tmp_addr;
   4421  1.1  christos   BI tmp_postinc;
   4422  1.1  christos   tmp_postinc = FLD (f_memmode);
   4423  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4424  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4425  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4426  1.1  christos {
   4427  1.1  christos   {
   4428  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4429  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4430  1.1  christos     written |= (1 << 13);
   4431  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4432  1.1  christos   }
   4433  1.1  christos   {
   4434  1.1  christos     BI opval = CPU (h_pbit);
   4435  1.1  christos     CPU (h_cbit) = opval;
   4436  1.1  christos     written |= (1 << 10);
   4437  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4438  1.1  christos   }
   4439  1.1  christos }
   4440  1.1  christos } else {
   4441  1.1  christos   {
   4442  1.1  christos     BI opval = 1;
   4443  1.1  christos     CPU (h_cbit) = opval;
   4444  1.1  christos     written |= (1 << 10);
   4445  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4446  1.1  christos   }
   4447  1.1  christos }
   4448  1.1  christos } else {
   4449  1.1  christos   {
   4450  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4451  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4452  1.1  christos     written |= (1 << 13);
   4453  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4454  1.1  christos   }
   4455  1.1  christos }
   4456  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4457  1.1  christos {
   4458  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4459  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4460  1.1  christos }
   4461  1.1  christos   {
   4462  1.1  christos     SI opval = tmp_addr;
   4463  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4464  1.1  christos     written |= (1 << 9);
   4465  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4466  1.1  christos   }
   4467  1.1  christos }
   4468  1.1  christos }
   4469  1.1  christos }
   4470  1.1  christos }
   4471  1.1  christos  else if (EQSI (tmp_rno, 13)) {
   4472  1.1  christos {
   4473  1.1  christos   SI tmp_addr;
   4474  1.1  christos   BI tmp_postinc;
   4475  1.1  christos   tmp_postinc = FLD (f_memmode);
   4476  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4477  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4478  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4479  1.1  christos {
   4480  1.1  christos   {
   4481  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4482  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4483  1.1  christos     written |= (1 << 13);
   4484  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4485  1.1  christos   }
   4486  1.1  christos   {
   4487  1.1  christos     BI opval = CPU (h_pbit);
   4488  1.1  christos     CPU (h_cbit) = opval;
   4489  1.1  christos     written |= (1 << 10);
   4490  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4491  1.1  christos   }
   4492  1.1  christos }
   4493  1.1  christos } else {
   4494  1.1  christos   {
   4495  1.1  christos     BI opval = 1;
   4496  1.1  christos     CPU (h_cbit) = opval;
   4497  1.1  christos     written |= (1 << 10);
   4498  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4499  1.1  christos   }
   4500  1.1  christos }
   4501  1.1  christos } else {
   4502  1.1  christos   {
   4503  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4504  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4505  1.1  christos     written |= (1 << 13);
   4506  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4507  1.1  christos   }
   4508  1.1  christos }
   4509  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4510  1.1  christos {
   4511  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4512  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4513  1.1  christos }
   4514  1.1  christos   {
   4515  1.1  christos     SI opval = tmp_addr;
   4516  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4517  1.1  christos     written |= (1 << 9);
   4518  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4519  1.1  christos   }
   4520  1.1  christos }
   4521  1.1  christos }
   4522  1.1  christos }
   4523  1.1  christos }
   4524  1.1  christos  else if (EQSI (tmp_rno, 14)) {
   4525  1.1  christos {
   4526  1.1  christos   SI tmp_addr;
   4527  1.1  christos   BI tmp_postinc;
   4528  1.1  christos   tmp_postinc = FLD (f_memmode);
   4529  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4530  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4531  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4532  1.1  christos {
   4533  1.1  christos   {
   4534  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4535  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4536  1.1  christos     written |= (1 << 13);
   4537  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4538  1.1  christos   }
   4539  1.1  christos   {
   4540  1.1  christos     BI opval = CPU (h_pbit);
   4541  1.1  christos     CPU (h_cbit) = opval;
   4542  1.1  christos     written |= (1 << 10);
   4543  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4544  1.1  christos   }
   4545  1.1  christos }
   4546  1.1  christos } else {
   4547  1.1  christos   {
   4548  1.1  christos     BI opval = 1;
   4549  1.1  christos     CPU (h_cbit) = opval;
   4550  1.1  christos     written |= (1 << 10);
   4551  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4552  1.1  christos   }
   4553  1.1  christos }
   4554  1.1  christos } else {
   4555  1.1  christos   {
   4556  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4557  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4558  1.1  christos     written |= (1 << 13);
   4559  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4560  1.1  christos   }
   4561  1.1  christos }
   4562  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4563  1.1  christos {
   4564  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4565  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4566  1.1  christos }
   4567  1.1  christos   {
   4568  1.1  christos     SI opval = tmp_addr;
   4569  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4570  1.1  christos     written |= (1 << 9);
   4571  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4572  1.1  christos   }
   4573  1.1  christos }
   4574  1.1  christos }
   4575  1.1  christos }
   4576  1.1  christos }
   4577  1.1  christos  else if (EQSI (tmp_rno, 15)) {
   4578  1.1  christos {
   4579  1.1  christos   SI tmp_addr;
   4580  1.1  christos   BI tmp_postinc;
   4581  1.1  christos   tmp_postinc = FLD (f_memmode);
   4582  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4583  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4584  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4585  1.1  christos {
   4586  1.1  christos   {
   4587  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4588  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4589  1.1  christos     written |= (1 << 13);
   4590  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4591  1.1  christos   }
   4592  1.1  christos   {
   4593  1.1  christos     BI opval = CPU (h_pbit);
   4594  1.1  christos     CPU (h_cbit) = opval;
   4595  1.1  christos     written |= (1 << 10);
   4596  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4597  1.1  christos   }
   4598  1.1  christos }
   4599  1.1  christos } else {
   4600  1.1  christos   {
   4601  1.1  christos     BI opval = 1;
   4602  1.1  christos     CPU (h_cbit) = opval;
   4603  1.1  christos     written |= (1 << 10);
   4604  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4605  1.1  christos   }
   4606  1.1  christos }
   4607  1.1  christos } else {
   4608  1.1  christos   {
   4609  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4610  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4611  1.1  christos     written |= (1 << 13);
   4612  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4613  1.1  christos   }
   4614  1.1  christos }
   4615  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4616  1.1  christos {
   4617  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4618  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4619  1.1  christos }
   4620  1.1  christos   {
   4621  1.1  christos     SI opval = tmp_addr;
   4622  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4623  1.1  christos     written |= (1 << 9);
   4624  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4625  1.1  christos   }
   4626  1.1  christos }
   4627  1.1  christos }
   4628  1.1  christos }
   4629  1.1  christos }
   4630  1.1  christos  else if (EQSI (tmp_rno, 0)) {
   4631  1.1  christos {
   4632  1.1  christos   SI tmp_addr;
   4633  1.1  christos   BI tmp_postinc;
   4634  1.1  christos   tmp_postinc = FLD (f_memmode);
   4635  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4636  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4637  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4638  1.1  christos {
   4639  1.1  christos   {
   4640  1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4641  1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4642  1.1  christos     written |= (1 << 12);
   4643  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4644  1.1  christos   }
   4645  1.1  christos   {
   4646  1.1  christos     BI opval = CPU (h_pbit);
   4647  1.1  christos     CPU (h_cbit) = opval;
   4648  1.1  christos     written |= (1 << 10);
   4649  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4650  1.1  christos   }
   4651  1.1  christos }
   4652  1.1  christos } else {
   4653  1.1  christos   {
   4654  1.1  christos     BI opval = 1;
   4655  1.1  christos     CPU (h_cbit) = opval;
   4656  1.1  christos     written |= (1 << 10);
   4657  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4658  1.1  christos   }
   4659  1.1  christos }
   4660  1.1  christos } else {
   4661  1.1  christos   {
   4662  1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4663  1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4664  1.1  christos     written |= (1 << 12);
   4665  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4666  1.1  christos   }
   4667  1.1  christos }
   4668  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4669  1.1  christos {
   4670  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4671  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   4672  1.1  christos }
   4673  1.1  christos   {
   4674  1.1  christos     SI opval = tmp_addr;
   4675  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4676  1.1  christos     written |= (1 << 9);
   4677  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4678  1.1  christos   }
   4679  1.1  christos }
   4680  1.1  christos }
   4681  1.1  christos }
   4682  1.1  christos }
   4683  1.1  christos  else if (EQSI (tmp_rno, 1)) {
   4684  1.1  christos {
   4685  1.1  christos   SI tmp_addr;
   4686  1.1  christos   BI tmp_postinc;
   4687  1.1  christos   tmp_postinc = FLD (f_memmode);
   4688  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4689  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4690  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4691  1.1  christos {
   4692  1.1  christos   {
   4693  1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4694  1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4695  1.1  christos     written |= (1 << 12);
   4696  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4697  1.1  christos   }
   4698  1.1  christos   {
   4699  1.1  christos     BI opval = CPU (h_pbit);
   4700  1.1  christos     CPU (h_cbit) = opval;
   4701  1.1  christos     written |= (1 << 10);
   4702  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4703  1.1  christos   }
   4704  1.1  christos }
   4705  1.1  christos } else {
   4706  1.1  christos   {
   4707  1.1  christos     BI opval = 1;
   4708  1.1  christos     CPU (h_cbit) = opval;
   4709  1.1  christos     written |= (1 << 10);
   4710  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4711  1.1  christos   }
   4712  1.1  christos }
   4713  1.1  christos } else {
   4714  1.1  christos   {
   4715  1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4716  1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4717  1.1  christos     written |= (1 << 12);
   4718  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4719  1.1  christos   }
   4720  1.1  christos }
   4721  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4722  1.1  christos {
   4723  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4724  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   4725  1.1  christos }
   4726  1.1  christos   {
   4727  1.1  christos     SI opval = tmp_addr;
   4728  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4729  1.1  christos     written |= (1 << 9);
   4730  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4731  1.1  christos   }
   4732  1.1  christos }
   4733  1.1  christos }
   4734  1.1  christos }
   4735  1.1  christos }
   4736  1.1  christos  else if (EQSI (tmp_rno, 4)) {
   4737  1.1  christos {
   4738  1.1  christos   SI tmp_addr;
   4739  1.1  christos   BI tmp_postinc;
   4740  1.1  christos   tmp_postinc = FLD (f_memmode);
   4741  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4742  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4743  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4744  1.1  christos {
   4745  1.1  christos   {
   4746  1.1  christos     HI opval = GET_H_SR (FLD (f_operand2));
   4747  1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   4748  1.1  christos     written |= (1 << 11);
   4749  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4750  1.1  christos   }
   4751  1.1  christos   {
   4752  1.1  christos     BI opval = CPU (h_pbit);
   4753  1.1  christos     CPU (h_cbit) = opval;
   4754  1.1  christos     written |= (1 << 10);
   4755  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4756  1.1  christos   }
   4757  1.1  christos }
   4758  1.1  christos } else {
   4759  1.1  christos   {
   4760  1.1  christos     BI opval = 1;
   4761  1.1  christos     CPU (h_cbit) = opval;
   4762  1.1  christos     written |= (1 << 10);
   4763  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4764  1.1  christos   }
   4765  1.1  christos }
   4766  1.1  christos } else {
   4767  1.1  christos   {
   4768  1.1  christos     HI opval = GET_H_SR (FLD (f_operand2));
   4769  1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   4770  1.1  christos     written |= (1 << 11);
   4771  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4772  1.1  christos   }
   4773  1.1  christos }
   4774  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4775  1.1  christos {
   4776  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4777  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   4778  1.1  christos }
   4779  1.1  christos   {
   4780  1.1  christos     SI opval = tmp_addr;
   4781  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4782  1.1  christos     written |= (1 << 9);
   4783  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4784  1.1  christos   }
   4785  1.1  christos }
   4786  1.1  christos }
   4787  1.1  christos }
   4788  1.1  christos }
   4789  1.1  christos  else if (EQSI (tmp_rno, 8)) {
   4790  1.1  christos {
   4791  1.1  christos   SI tmp_addr;
   4792  1.1  christos   BI tmp_postinc;
   4793  1.1  christos   tmp_postinc = FLD (f_memmode);
   4794  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4795  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4796  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4797  1.1  christos {
   4798  1.1  christos   {
   4799  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4800  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4801  1.1  christos     written |= (1 << 13);
   4802  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4803  1.1  christos   }
   4804  1.1  christos   {
   4805  1.1  christos     BI opval = CPU (h_pbit);
   4806  1.1  christos     CPU (h_cbit) = opval;
   4807  1.1  christos     written |= (1 << 10);
   4808  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4809  1.1  christos   }
   4810  1.1  christos }
   4811  1.1  christos } else {
   4812  1.1  christos   {
   4813  1.1  christos     BI opval = 1;
   4814  1.1  christos     CPU (h_cbit) = opval;
   4815  1.1  christos     written |= (1 << 10);
   4816  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4817  1.1  christos   }
   4818  1.1  christos }
   4819  1.1  christos } else {
   4820  1.1  christos   {
   4821  1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4822  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4823  1.1  christos     written |= (1 << 13);
   4824  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4825  1.1  christos   }
   4826  1.1  christos }
   4827  1.1  christos if (NEBI (tmp_postinc, 0)) {
   4828  1.1  christos {
   4829  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4830  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4831  1.1  christos }
   4832  1.1  christos   {
   4833  1.1  christos     SI opval = tmp_addr;
   4834  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4835  1.1  christos     written |= (1 << 9);
   4836  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4837  1.1  christos   }
   4838  1.1  christos }
   4839  1.1  christos }
   4840  1.1  christos }
   4841  1.1  christos }
   4842  1.1  christos  else {
   4843  1.1  christos cgen_rtx_error (current_cpu, "write from unimplemented special register");
   4844  1.1  christos }
   4845  1.1  christos {
   4846  1.1  christos   {
   4847  1.1  christos     BI opval = 0;
   4848  1.1  christos     CPU (h_xbit) = opval;
   4849  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   4850  1.1  christos   }
   4851  1.1  christos   {
   4852  1.1  christos     BI opval = 0;
   4853  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   4854  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   4855  1.1  christos   }
   4856  1.1  christos }
   4857  1.1  christos }
   4858  1.1  christos 
   4859  1.1  christos   abuf->written = written;
   4860  1.1  christos #undef FLD
   4861  1.1  christos }
   4862  1.1  christos   NEXT (vpc);
   4863  1.1  christos 
   4864  1.1  christos   CASE (sem, INSN_MOVE_SS_R) : /* move ${Ss},${Rd-sfield} */
   4865  1.1  christos {
   4866  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   4867  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   4868  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   4869  1.1  christos   int UNUSED written = 0;
   4870  1.1  christos   IADDR UNUSED pc = abuf->addr;
   4871  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   4872  1.1  christos 
   4873  1.1  christos {
   4874  1.1  christos   {
   4875  1.1  christos     SI opval = GET_H_SUPR (FLD (f_operand2));
   4876  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4877  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4878  1.1  christos   }
   4879  1.1  christos {
   4880  1.1  christos   {
   4881  1.1  christos     BI opval = 0;
   4882  1.1  christos     CPU (h_xbit) = opval;
   4883  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   4884  1.1  christos   }
   4885  1.1  christos   {
   4886  1.1  christos     BI opval = 0;
   4887  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   4888  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   4889  1.1  christos   }
   4890  1.1  christos }
   4891  1.1  christos }
   4892  1.1  christos 
   4893  1.1  christos #undef FLD
   4894  1.1  christos }
   4895  1.1  christos   NEXT (vpc);
   4896  1.1  christos 
   4897  1.1  christos   CASE (sem, INSN_MOVE_R_SS) : /* move ${Rs},${Sd} */
   4898  1.1  christos {
   4899  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   4900  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   4901  1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   4902  1.1  christos   int UNUSED written = 0;
   4903  1.1  christos   IADDR UNUSED pc = abuf->addr;
   4904  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   4905  1.1  christos 
   4906  1.1  christos {
   4907  1.1  christos   {
   4908  1.1  christos     SI opval = GET_H_GR (FLD (f_operand1));
   4909  1.1  christos     SET_H_SUPR (FLD (f_operand2), opval);
   4910  1.1  christos     TRACE_RESULT (current_cpu, abuf, "supr", 'x', opval);
   4911  1.1  christos   }
   4912  1.1  christos {
   4913  1.1  christos   {
   4914  1.1  christos     BI opval = 0;
   4915  1.1  christos     CPU (h_xbit) = opval;
   4916  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   4917  1.1  christos   }
   4918  1.1  christos   {
   4919  1.1  christos     BI opval = 0;
   4920  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   4921  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   4922  1.1  christos   }
   4923  1.1  christos }
   4924  1.1  christos }
   4925  1.1  christos 
   4926  1.1  christos #undef FLD
   4927  1.1  christos }
   4928  1.1  christos   NEXT (vpc);
   4929  1.1  christos 
   4930  1.1  christos   CASE (sem, INSN_MOVEM_R_M_V32) : /* movem ${Rs-dfield},[${Rd-sfield}${inc}] */
   4931  1.1  christos {
   4932  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   4933  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   4934  1.1  christos #define FLD(f) abuf->fields.sfmt_movem_r_m_v32.f
   4935  1.1  christos   int UNUSED written = 0;
   4936  1.1  christos   IADDR UNUSED pc = abuf->addr;
   4937  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   4938  1.1  christos 
   4939  1.1  christos {
   4940  1.1  christos   SI tmp_addr;
   4941  1.1  christos   BI tmp_postinc;
   4942  1.1  christos   tmp_postinc = FLD (f_memmode);
   4943  1.1  christos {
   4944  1.1  christos   SI tmp_dummy;
   4945  1.1  christos   tmp_dummy = GET_H_GR (FLD (f_operand2));
   4946  1.1  christos }
   4947  1.1  christos   tmp_addr = GET_H_GR (FLD (f_operand1));
   4948  1.1  christos {
   4949  1.1  christos if (GESI (FLD (f_operand2), 0)) {
   4950  1.1  christos {
   4951  1.1  christos   SI tmp_tmp;
   4952  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 0));
   4953  1.1  christos   {
   4954  1.1  christos     SI opval = tmp_tmp;
   4955  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4956  1.1  christos     written |= (1 << 21);
   4957  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4958  1.1  christos   }
   4959  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4960  1.1  christos }
   4961  1.1  christos }
   4962  1.1  christos if (GESI (FLD (f_operand2), 1)) {
   4963  1.1  christos {
   4964  1.1  christos   SI tmp_tmp;
   4965  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 1));
   4966  1.1  christos   {
   4967  1.1  christos     SI opval = tmp_tmp;
   4968  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4969  1.1  christos     written |= (1 << 21);
   4970  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4971  1.1  christos   }
   4972  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4973  1.1  christos }
   4974  1.1  christos }
   4975  1.1  christos if (GESI (FLD (f_operand2), 2)) {
   4976  1.1  christos {
   4977  1.1  christos   SI tmp_tmp;
   4978  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 2));
   4979  1.1  christos   {
   4980  1.1  christos     SI opval = tmp_tmp;
   4981  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4982  1.1  christos     written |= (1 << 21);
   4983  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4984  1.1  christos   }
   4985  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4986  1.1  christos }
   4987  1.1  christos }
   4988  1.1  christos if (GESI (FLD (f_operand2), 3)) {
   4989  1.1  christos {
   4990  1.1  christos   SI tmp_tmp;
   4991  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 3));
   4992  1.1  christos   {
   4993  1.1  christos     SI opval = tmp_tmp;
   4994  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4995  1.1  christos     written |= (1 << 21);
   4996  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4997  1.1  christos   }
   4998  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4999  1.1  christos }
   5000  1.1  christos }
   5001  1.1  christos if (GESI (FLD (f_operand2), 4)) {
   5002  1.1  christos {
   5003  1.1  christos   SI tmp_tmp;
   5004  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 4));
   5005  1.1  christos   {
   5006  1.1  christos     SI opval = tmp_tmp;
   5007  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5008  1.1  christos     written |= (1 << 21);
   5009  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5010  1.1  christos   }
   5011  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5012  1.1  christos }
   5013  1.1  christos }
   5014  1.1  christos if (GESI (FLD (f_operand2), 5)) {
   5015  1.1  christos {
   5016  1.1  christos   SI tmp_tmp;
   5017  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 5));
   5018  1.1  christos   {
   5019  1.1  christos     SI opval = tmp_tmp;
   5020  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5021  1.1  christos     written |= (1 << 21);
   5022  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5023  1.1  christos   }
   5024  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5025  1.1  christos }
   5026  1.1  christos }
   5027  1.1  christos if (GESI (FLD (f_operand2), 6)) {
   5028  1.1  christos {
   5029  1.1  christos   SI tmp_tmp;
   5030  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 6));
   5031  1.1  christos   {
   5032  1.1  christos     SI opval = tmp_tmp;
   5033  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5034  1.1  christos     written |= (1 << 21);
   5035  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5036  1.1  christos   }
   5037  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5038  1.1  christos }
   5039  1.1  christos }
   5040  1.1  christos if (GESI (FLD (f_operand2), 7)) {
   5041  1.1  christos {
   5042  1.1  christos   SI tmp_tmp;
   5043  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 7));
   5044  1.1  christos   {
   5045  1.1  christos     SI opval = tmp_tmp;
   5046  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5047  1.1  christos     written |= (1 << 21);
   5048  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5049  1.1  christos   }
   5050  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5051  1.1  christos }
   5052  1.1  christos }
   5053  1.1  christos if (GESI (FLD (f_operand2), 8)) {
   5054  1.1  christos {
   5055  1.1  christos   SI tmp_tmp;
   5056  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 8));
   5057  1.1  christos   {
   5058  1.1  christos     SI opval = tmp_tmp;
   5059  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5060  1.1  christos     written |= (1 << 21);
   5061  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5062  1.1  christos   }
   5063  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5064  1.1  christos }
   5065  1.1  christos }
   5066  1.1  christos if (GESI (FLD (f_operand2), 9)) {
   5067  1.1  christos {
   5068  1.1  christos   SI tmp_tmp;
   5069  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 9));
   5070  1.1  christos   {
   5071  1.1  christos     SI opval = tmp_tmp;
   5072  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5073  1.1  christos     written |= (1 << 21);
   5074  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5075  1.1  christos   }
   5076  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5077  1.1  christos }
   5078  1.1  christos }
   5079  1.1  christos if (GESI (FLD (f_operand2), 10)) {
   5080  1.1  christos {
   5081  1.1  christos   SI tmp_tmp;
   5082  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 10));
   5083  1.1  christos   {
   5084  1.1  christos     SI opval = tmp_tmp;
   5085  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5086  1.1  christos     written |= (1 << 21);
   5087  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5088  1.1  christos   }
   5089  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5090  1.1  christos }
   5091  1.1  christos }
   5092  1.1  christos if (GESI (FLD (f_operand2), 11)) {
   5093  1.1  christos {
   5094  1.1  christos   SI tmp_tmp;
   5095  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 11));
   5096  1.1  christos   {
   5097  1.1  christos     SI opval = tmp_tmp;
   5098  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5099  1.1  christos     written |= (1 << 21);
   5100  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5101  1.1  christos   }
   5102  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5103  1.1  christos }
   5104  1.1  christos }
   5105  1.1  christos if (GESI (FLD (f_operand2), 12)) {
   5106  1.1  christos {
   5107  1.1  christos   SI tmp_tmp;
   5108  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 12));
   5109  1.1  christos   {
   5110  1.1  christos     SI opval = tmp_tmp;
   5111  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5112  1.1  christos     written |= (1 << 21);
   5113  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5114  1.1  christos   }
   5115  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5116  1.1  christos }
   5117  1.1  christos }
   5118  1.1  christos if (GESI (FLD (f_operand2), 13)) {
   5119  1.1  christos {
   5120  1.1  christos   SI tmp_tmp;
   5121  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 13));
   5122  1.1  christos   {
   5123  1.1  christos     SI opval = tmp_tmp;
   5124  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5125  1.1  christos     written |= (1 << 21);
   5126  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5127  1.1  christos   }
   5128  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5129  1.1  christos }
   5130  1.1  christos }
   5131  1.1  christos if (GESI (FLD (f_operand2), 14)) {
   5132  1.1  christos {
   5133  1.1  christos   SI tmp_tmp;
   5134  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 14));
   5135  1.1  christos   {
   5136  1.1  christos     SI opval = tmp_tmp;
   5137  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5138  1.1  christos     written |= (1 << 21);
   5139  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5140  1.1  christos   }
   5141  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5142  1.1  christos }
   5143  1.1  christos }
   5144  1.1  christos if (GESI (FLD (f_operand2), 15)) {
   5145  1.1  christos {
   5146  1.1  christos   SI tmp_tmp;
   5147  1.1  christos   tmp_tmp = GET_H_GR (((UINT) 15));
   5148  1.1  christos   {
   5149  1.1  christos     SI opval = tmp_tmp;
   5150  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5151  1.1  christos     written |= (1 << 21);
   5152  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5153  1.1  christos   }
   5154  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5155  1.1  christos }
   5156  1.1  christos }
   5157  1.1  christos }
   5158  1.1  christos if (NEBI (tmp_postinc, 0)) {
   5159  1.1  christos   {
   5160  1.1  christos     SI opval = tmp_addr;
   5161  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5162  1.1  christos     written |= (1 << 20);
   5163  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5164  1.1  christos   }
   5165  1.1  christos }
   5166  1.1  christos {
   5167  1.1  christos   {
   5168  1.1  christos     BI opval = 0;
   5169  1.1  christos     CPU (h_xbit) = opval;
   5170  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5171  1.1  christos   }
   5172  1.1  christos   {
   5173  1.1  christos     BI opval = 0;
   5174  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5175  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5176  1.1  christos   }
   5177  1.1  christos }
   5178  1.1  christos }
   5179  1.1  christos 
   5180  1.1  christos   abuf->written = written;
   5181  1.1  christos #undef FLD
   5182  1.1  christos }
   5183  1.1  christos   NEXT (vpc);
   5184  1.1  christos 
   5185  1.1  christos   CASE (sem, INSN_MOVEM_M_R_V32) : /* movem [${Rs}${inc}],${Rd} */
   5186  1.1  christos {
   5187  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5188  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5189  1.1  christos #define FLD(f) abuf->fields.sfmt_movem_m_r_v32.f
   5190  1.1  christos   int UNUSED written = 0;
   5191  1.1  christos   IADDR UNUSED pc = abuf->addr;
   5192  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5193  1.1  christos 
   5194  1.1  christos {
   5195  1.1  christos   SI tmp_addr;
   5196  1.1  christos   BI tmp_postinc;
   5197  1.1  christos   tmp_postinc = FLD (f_memmode);
   5198  1.1  christos   tmp_addr = GET_H_GR (FLD (f_operand1));
   5199  1.1  christos {
   5200  1.1  christos   SI tmp_dummy;
   5201  1.1  christos   tmp_dummy = GET_H_GR (FLD (f_operand2));
   5202  1.1  christos }
   5203  1.1  christos {
   5204  1.1  christos if (GESI (FLD (f_operand2), 0)) {
   5205  1.1  christos {
   5206  1.1  christos   SI tmp_tmp;
   5207  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5208  1.1  christos   {
   5209  1.1  christos     SI opval = tmp_tmp;
   5210  1.1  christos     SET_H_GR (((UINT) 0), opval);
   5211  1.1  christos     written |= (1 << 6);
   5212  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5213  1.1  christos   }
   5214  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5215  1.1  christos }
   5216  1.1  christos }
   5217  1.1  christos if (GESI (FLD (f_operand2), 1)) {
   5218  1.1  christos {
   5219  1.1  christos   SI tmp_tmp;
   5220  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5221  1.1  christos   {
   5222  1.1  christos     SI opval = tmp_tmp;
   5223  1.1  christos     SET_H_GR (((UINT) 1), opval);
   5224  1.1  christos     written |= (1 << 7);
   5225  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5226  1.1  christos   }
   5227  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5228  1.1  christos }
   5229  1.1  christos }
   5230  1.1  christos if (GESI (FLD (f_operand2), 2)) {
   5231  1.1  christos {
   5232  1.1  christos   SI tmp_tmp;
   5233  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5234  1.1  christos   {
   5235  1.1  christos     SI opval = tmp_tmp;
   5236  1.1  christos     SET_H_GR (((UINT) 2), opval);
   5237  1.1  christos     written |= (1 << 14);
   5238  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5239  1.1  christos   }
   5240  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5241  1.1  christos }
   5242  1.1  christos }
   5243  1.1  christos if (GESI (FLD (f_operand2), 3)) {
   5244  1.1  christos {
   5245  1.1  christos   SI tmp_tmp;
   5246  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5247  1.1  christos   {
   5248  1.1  christos     SI opval = tmp_tmp;
   5249  1.1  christos     SET_H_GR (((UINT) 3), opval);
   5250  1.1  christos     written |= (1 << 15);
   5251  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5252  1.1  christos   }
   5253  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5254  1.1  christos }
   5255  1.1  christos }
   5256  1.1  christos if (GESI (FLD (f_operand2), 4)) {
   5257  1.1  christos {
   5258  1.1  christos   SI tmp_tmp;
   5259  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5260  1.1  christos   {
   5261  1.1  christos     SI opval = tmp_tmp;
   5262  1.1  christos     SET_H_GR (((UINT) 4), opval);
   5263  1.1  christos     written |= (1 << 16);
   5264  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5265  1.1  christos   }
   5266  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5267  1.1  christos }
   5268  1.1  christos }
   5269  1.1  christos if (GESI (FLD (f_operand2), 5)) {
   5270  1.1  christos {
   5271  1.1  christos   SI tmp_tmp;
   5272  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5273  1.1  christos   {
   5274  1.1  christos     SI opval = tmp_tmp;
   5275  1.1  christos     SET_H_GR (((UINT) 5), opval);
   5276  1.1  christos     written |= (1 << 17);
   5277  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5278  1.1  christos   }
   5279  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5280  1.1  christos }
   5281  1.1  christos }
   5282  1.1  christos if (GESI (FLD (f_operand2), 6)) {
   5283  1.1  christos {
   5284  1.1  christos   SI tmp_tmp;
   5285  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5286  1.1  christos   {
   5287  1.1  christos     SI opval = tmp_tmp;
   5288  1.1  christos     SET_H_GR (((UINT) 6), opval);
   5289  1.1  christos     written |= (1 << 18);
   5290  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5291  1.1  christos   }
   5292  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5293  1.1  christos }
   5294  1.1  christos }
   5295  1.1  christos if (GESI (FLD (f_operand2), 7)) {
   5296  1.1  christos {
   5297  1.1  christos   SI tmp_tmp;
   5298  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5299  1.1  christos   {
   5300  1.1  christos     SI opval = tmp_tmp;
   5301  1.1  christos     SET_H_GR (((UINT) 7), opval);
   5302  1.1  christos     written |= (1 << 19);
   5303  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5304  1.1  christos   }
   5305  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5306  1.1  christos }
   5307  1.1  christos }
   5308  1.1  christos if (GESI (FLD (f_operand2), 8)) {
   5309  1.1  christos {
   5310  1.1  christos   SI tmp_tmp;
   5311  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5312  1.1  christos   {
   5313  1.1  christos     SI opval = tmp_tmp;
   5314  1.1  christos     SET_H_GR (((UINT) 8), opval);
   5315  1.1  christos     written |= (1 << 20);
   5316  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5317  1.1  christos   }
   5318  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5319  1.1  christos }
   5320  1.1  christos }
   5321  1.1  christos if (GESI (FLD (f_operand2), 9)) {
   5322  1.1  christos {
   5323  1.1  christos   SI tmp_tmp;
   5324  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5325  1.1  christos   {
   5326  1.1  christos     SI opval = tmp_tmp;
   5327  1.1  christos     SET_H_GR (((UINT) 9), opval);
   5328  1.1  christos     written |= (1 << 21);
   5329  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5330  1.1  christos   }
   5331  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5332  1.1  christos }
   5333  1.1  christos }
   5334  1.1  christos if (GESI (FLD (f_operand2), 10)) {
   5335  1.1  christos {
   5336  1.1  christos   SI tmp_tmp;
   5337  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5338  1.1  christos   {
   5339  1.1  christos     SI opval = tmp_tmp;
   5340  1.1  christos     SET_H_GR (((UINT) 10), opval);
   5341  1.1  christos     written |= (1 << 8);
   5342  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5343  1.1  christos   }
   5344  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5345  1.1  christos }
   5346  1.1  christos }
   5347  1.1  christos if (GESI (FLD (f_operand2), 11)) {
   5348  1.1  christos {
   5349  1.1  christos   SI tmp_tmp;
   5350  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5351  1.1  christos   {
   5352  1.1  christos     SI opval = tmp_tmp;
   5353  1.1  christos     SET_H_GR (((UINT) 11), opval);
   5354  1.1  christos     written |= (1 << 9);
   5355  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5356  1.1  christos   }
   5357  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5358  1.1  christos }
   5359  1.1  christos }
   5360  1.1  christos if (GESI (FLD (f_operand2), 12)) {
   5361  1.1  christos {
   5362  1.1  christos   SI tmp_tmp;
   5363  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5364  1.1  christos   {
   5365  1.1  christos     SI opval = tmp_tmp;
   5366  1.1  christos     SET_H_GR (((UINT) 12), opval);
   5367  1.1  christos     written |= (1 << 10);
   5368  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5369  1.1  christos   }
   5370  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5371  1.1  christos }
   5372  1.1  christos }
   5373  1.1  christos if (GESI (FLD (f_operand2), 13)) {
   5374  1.1  christos {
   5375  1.1  christos   SI tmp_tmp;
   5376  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5377  1.1  christos   {
   5378  1.1  christos     SI opval = tmp_tmp;
   5379  1.1  christos     SET_H_GR (((UINT) 13), opval);
   5380  1.1  christos     written |= (1 << 11);
   5381  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5382  1.1  christos   }
   5383  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5384  1.1  christos }
   5385  1.1  christos }
   5386  1.1  christos if (GESI (FLD (f_operand2), 14)) {
   5387  1.1  christos {
   5388  1.1  christos   SI tmp_tmp;
   5389  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5390  1.1  christos   {
   5391  1.1  christos     SI opval = tmp_tmp;
   5392  1.1  christos     SET_H_GR (((UINT) 14), opval);
   5393  1.1  christos     written |= (1 << 12);
   5394  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5395  1.1  christos   }
   5396  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5397  1.1  christos }
   5398  1.1  christos }
   5399  1.1  christos if (GESI (FLD (f_operand2), 15)) {
   5400  1.1  christos {
   5401  1.1  christos   SI tmp_tmp;
   5402  1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5403  1.1  christos   {
   5404  1.1  christos     SI opval = tmp_tmp;
   5405  1.1  christos     SET_H_GR (((UINT) 15), opval);
   5406  1.1  christos     written |= (1 << 13);
   5407  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5408  1.1  christos   }
   5409  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5410  1.1  christos }
   5411  1.1  christos }
   5412  1.1  christos }
   5413  1.1  christos if (NEBI (tmp_postinc, 0)) {
   5414  1.1  christos   {
   5415  1.1  christos     SI opval = tmp_addr;
   5416  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5417  1.1  christos     written |= (1 << 5);
   5418  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5419  1.1  christos   }
   5420  1.1  christos }
   5421  1.1  christos {
   5422  1.1  christos   {
   5423  1.1  christos     BI opval = 0;
   5424  1.1  christos     CPU (h_xbit) = opval;
   5425  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5426  1.1  christos   }
   5427  1.1  christos   {
   5428  1.1  christos     BI opval = 0;
   5429  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5430  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5431  1.1  christos   }
   5432  1.1  christos }
   5433  1.1  christos }
   5434  1.1  christos 
   5435  1.1  christos   abuf->written = written;
   5436  1.1  christos #undef FLD
   5437  1.1  christos }
   5438  1.1  christos   NEXT (vpc);
   5439  1.1  christos 
   5440  1.1  christos   CASE (sem, INSN_ADD_B_R) : /* add.b $Rs,$Rd */
   5441  1.1  christos {
   5442  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5443  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5444  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   5445  1.1  christos   int UNUSED written = 0;
   5446  1.1  christos   IADDR UNUSED pc = abuf->addr;
   5447  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5448  1.1  christos 
   5449  1.1  christos {
   5450  1.1  christos   QI tmp_tmpopd;
   5451  1.1  christos   QI tmp_tmpops;
   5452  1.1  christos   BI tmp_carry;
   5453  1.1  christos   QI tmp_newval;
   5454  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   5455  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5456  1.1  christos   tmp_carry = CPU (h_cbit);
   5457  1.1  christos   tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5458  1.1  christos {
   5459  1.1  christos   SI tmp_oldregval;
   5460  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5461  1.1  christos   {
   5462  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   5463  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5464  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5465  1.1  christos   }
   5466  1.1  christos }
   5467  1.1  christos {
   5468  1.1  christos   {
   5469  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))));
   5470  1.1  christos     CPU (h_cbit) = opval;
   5471  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5472  1.1  christos   }
   5473  1.1  christos   {
   5474  1.1  christos     BI opval = LTQI (tmp_newval, 0);
   5475  1.1  christos     CPU (h_nbit) = opval;
   5476  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5477  1.1  christos   }
   5478  1.1  christos   {
   5479  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5480  1.1  christos     CPU (h_zbit) = opval;
   5481  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5482  1.1  christos   }
   5483  1.1  christos   {
   5484  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)));
   5485  1.1  christos     CPU (h_vbit) = opval;
   5486  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5487  1.1  christos   }
   5488  1.1  christos {
   5489  1.1  christos   {
   5490  1.1  christos     BI opval = 0;
   5491  1.1  christos     CPU (h_xbit) = opval;
   5492  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5493  1.1  christos   }
   5494  1.1  christos   {
   5495  1.1  christos     BI opval = 0;
   5496  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5497  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5498  1.1  christos   }
   5499  1.1  christos }
   5500  1.1  christos }
   5501  1.1  christos }
   5502  1.1  christos 
   5503  1.1  christos #undef FLD
   5504  1.1  christos }
   5505  1.1  christos   NEXT (vpc);
   5506  1.1  christos 
   5507  1.1  christos   CASE (sem, INSN_ADD_W_R) : /* add.w $Rs,$Rd */
   5508  1.1  christos {
   5509  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5510  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5511  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   5512  1.1  christos   int UNUSED written = 0;
   5513  1.1  christos   IADDR UNUSED pc = abuf->addr;
   5514  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5515  1.1  christos 
   5516  1.1  christos {
   5517  1.1  christos   HI tmp_tmpopd;
   5518  1.1  christos   HI tmp_tmpops;
   5519  1.1  christos   BI tmp_carry;
   5520  1.1  christos   HI tmp_newval;
   5521  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   5522  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5523  1.1  christos   tmp_carry = CPU (h_cbit);
   5524  1.1  christos   tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5525  1.1  christos {
   5526  1.1  christos   SI tmp_oldregval;
   5527  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5528  1.1  christos   {
   5529  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   5530  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5531  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5532  1.1  christos   }
   5533  1.1  christos }
   5534  1.1  christos {
   5535  1.1  christos   {
   5536  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))));
   5537  1.1  christos     CPU (h_cbit) = opval;
   5538  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5539  1.1  christos   }
   5540  1.1  christos   {
   5541  1.1  christos     BI opval = LTHI (tmp_newval, 0);
   5542  1.1  christos     CPU (h_nbit) = opval;
   5543  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5544  1.1  christos   }
   5545  1.1  christos   {
   5546  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5547  1.1  christos     CPU (h_zbit) = opval;
   5548  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5549  1.1  christos   }
   5550  1.1  christos   {
   5551  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)));
   5552  1.1  christos     CPU (h_vbit) = opval;
   5553  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5554  1.1  christos   }
   5555  1.1  christos {
   5556  1.1  christos   {
   5557  1.1  christos     BI opval = 0;
   5558  1.1  christos     CPU (h_xbit) = opval;
   5559  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5560  1.1  christos   }
   5561  1.1  christos   {
   5562  1.1  christos     BI opval = 0;
   5563  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5564  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5565  1.1  christos   }
   5566  1.1  christos }
   5567  1.1  christos }
   5568  1.1  christos }
   5569  1.1  christos 
   5570  1.1  christos #undef FLD
   5571  1.1  christos }
   5572  1.1  christos   NEXT (vpc);
   5573  1.1  christos 
   5574  1.1  christos   CASE (sem, INSN_ADD_D_R) : /* add.d $Rs,$Rd */
   5575  1.1  christos {
   5576  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5577  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5578  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   5579  1.1  christos   int UNUSED written = 0;
   5580  1.1  christos   IADDR UNUSED pc = abuf->addr;
   5581  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5582  1.1  christos 
   5583  1.1  christos {
   5584  1.1  christos   SI tmp_tmpopd;
   5585  1.1  christos   SI tmp_tmpops;
   5586  1.1  christos   BI tmp_carry;
   5587  1.1  christos   SI tmp_newval;
   5588  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   5589  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5590  1.1  christos   tmp_carry = CPU (h_cbit);
   5591  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5592  1.1  christos   {
   5593  1.1  christos     SI opval = tmp_newval;
   5594  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5595  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5596  1.1  christos   }
   5597  1.1  christos {
   5598  1.1  christos   {
   5599  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))));
   5600  1.1  christos     CPU (h_cbit) = opval;
   5601  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5602  1.1  christos   }
   5603  1.1  christos   {
   5604  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   5605  1.1  christos     CPU (h_nbit) = opval;
   5606  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5607  1.1  christos   }
   5608  1.1  christos   {
   5609  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5610  1.1  christos     CPU (h_zbit) = opval;
   5611  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5612  1.1  christos   }
   5613  1.1  christos   {
   5614  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)));
   5615  1.1  christos     CPU (h_vbit) = opval;
   5616  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5617  1.1  christos   }
   5618  1.1  christos {
   5619  1.1  christos   {
   5620  1.1  christos     BI opval = 0;
   5621  1.1  christos     CPU (h_xbit) = opval;
   5622  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5623  1.1  christos   }
   5624  1.1  christos   {
   5625  1.1  christos     BI opval = 0;
   5626  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5627  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5628  1.1  christos   }
   5629  1.1  christos }
   5630  1.1  christos }
   5631  1.1  christos }
   5632  1.1  christos 
   5633  1.1  christos #undef FLD
   5634  1.1  christos }
   5635  1.1  christos   NEXT (vpc);
   5636  1.1  christos 
   5637  1.1  christos   CASE (sem, INSN_ADD_M_B_M) : /* add-m.b [${Rs}${inc}],${Rd} */
   5638  1.1  christos {
   5639  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5640  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5641  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   5642  1.1  christos   int UNUSED written = 0;
   5643  1.1  christos   IADDR UNUSED pc = abuf->addr;
   5644  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5645  1.1  christos 
   5646  1.1  christos {
   5647  1.1  christos   QI tmp_tmpopd;
   5648  1.1  christos   QI tmp_tmpops;
   5649  1.1  christos   BI tmp_carry;
   5650  1.1  christos   QI tmp_newval;
   5651  1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   5652  1.1  christos   QI tmp_tmp_mem;
   5653  1.1  christos   BI tmp_postinc;
   5654  1.1  christos   tmp_postinc = FLD (f_memmode);
   5655  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   5656  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   5657  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   5658  1.1  christos {
   5659  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   5660  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   5661  1.1  christos }
   5662  1.1  christos   {
   5663  1.1  christos     SI opval = tmp_addr;
   5664  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5665  1.1  christos     written |= (1 << 12);
   5666  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5667  1.1  christos   }
   5668  1.1  christos }
   5669  1.1  christos }
   5670  1.1  christos ; tmp_tmp_mem; });
   5671  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5672  1.1  christos   tmp_carry = CPU (h_cbit);
   5673  1.1  christos   tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5674  1.1  christos {
   5675  1.1  christos   SI tmp_oldregval;
   5676  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))));
   5677  1.1  christos   {
   5678  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   5679  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   5680  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5681  1.1  christos   }
   5682  1.1  christos }
   5683  1.1  christos {
   5684  1.1  christos   {
   5685  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))));
   5686  1.1  christos     CPU (h_cbit) = opval;
   5687  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5688  1.1  christos   }
   5689  1.1  christos   {
   5690  1.1  christos     BI opval = LTQI (tmp_newval, 0);
   5691  1.1  christos     CPU (h_nbit) = opval;
   5692  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5693  1.1  christos   }
   5694  1.1  christos   {
   5695  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5696  1.1  christos     CPU (h_zbit) = opval;
   5697  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5698  1.1  christos   }
   5699  1.1  christos   {
   5700  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)));
   5701  1.1  christos     CPU (h_vbit) = opval;
   5702  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5703  1.1  christos   }
   5704  1.1  christos {
   5705  1.1  christos   {
   5706  1.1  christos     BI opval = 0;
   5707  1.1  christos     CPU (h_xbit) = opval;
   5708  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5709  1.1  christos   }
   5710  1.1  christos   {
   5711  1.1  christos     BI opval = 0;
   5712  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5713  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5714  1.1  christos   }
   5715  1.1  christos }
   5716  1.1  christos }
   5717  1.1  christos }
   5718  1.1  christos 
   5719  1.1  christos   abuf->written = written;
   5720  1.1  christos #undef FLD
   5721  1.1  christos }
   5722  1.1  christos   NEXT (vpc);
   5723  1.1  christos 
   5724  1.1  christos   CASE (sem, INSN_ADD_M_W_M) : /* add-m.w [${Rs}${inc}],${Rd} */
   5725  1.1  christos {
   5726  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5727  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5728  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   5729  1.1  christos   int UNUSED written = 0;
   5730  1.1  christos   IADDR UNUSED pc = abuf->addr;
   5731  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5732  1.1  christos 
   5733  1.1  christos {
   5734  1.1  christos   HI tmp_tmpopd;
   5735  1.1  christos   HI tmp_tmpops;
   5736  1.1  christos   BI tmp_carry;
   5737  1.1  christos   HI tmp_newval;
   5738  1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   5739  1.1  christos   HI tmp_tmp_mem;
   5740  1.1  christos   BI tmp_postinc;
   5741  1.1  christos   tmp_postinc = FLD (f_memmode);
   5742  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   5743  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   5744  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   5745  1.1  christos {
   5746  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   5747  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   5748  1.1  christos }
   5749  1.1  christos   {
   5750  1.1  christos     SI opval = tmp_addr;
   5751  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5752  1.1  christos     written |= (1 << 12);
   5753  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5754  1.1  christos   }
   5755  1.1  christos }
   5756  1.1  christos }
   5757  1.1  christos ; tmp_tmp_mem; });
   5758  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5759  1.1  christos   tmp_carry = CPU (h_cbit);
   5760  1.1  christos   tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5761  1.1  christos {
   5762  1.1  christos   SI tmp_oldregval;
   5763  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))));
   5764  1.1  christos   {
   5765  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   5766  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   5767  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5768  1.1  christos   }
   5769  1.1  christos }
   5770  1.1  christos {
   5771  1.1  christos   {
   5772  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))));
   5773  1.1  christos     CPU (h_cbit) = opval;
   5774  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5775  1.1  christos   }
   5776  1.1  christos   {
   5777  1.1  christos     BI opval = LTHI (tmp_newval, 0);
   5778  1.1  christos     CPU (h_nbit) = opval;
   5779  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5780  1.1  christos   }
   5781  1.1  christos   {
   5782  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5783  1.1  christos     CPU (h_zbit) = opval;
   5784  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5785  1.1  christos   }
   5786  1.1  christos   {
   5787  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)));
   5788  1.1  christos     CPU (h_vbit) = opval;
   5789  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5790  1.1  christos   }
   5791  1.1  christos {
   5792  1.1  christos   {
   5793  1.1  christos     BI opval = 0;
   5794  1.1  christos     CPU (h_xbit) = opval;
   5795  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5796  1.1  christos   }
   5797  1.1  christos   {
   5798  1.1  christos     BI opval = 0;
   5799  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5800  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5801  1.1  christos   }
   5802  1.1  christos }
   5803  1.1  christos }
   5804  1.1  christos }
   5805  1.1  christos 
   5806  1.1  christos   abuf->written = written;
   5807  1.1  christos #undef FLD
   5808  1.1  christos }
   5809  1.1  christos   NEXT (vpc);
   5810  1.1  christos 
   5811  1.1  christos   CASE (sem, INSN_ADD_M_D_M) : /* add-m.d [${Rs}${inc}],${Rd} */
   5812  1.1  christos {
   5813  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5814  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5815  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   5816  1.1  christos   int UNUSED written = 0;
   5817  1.1  christos   IADDR UNUSED pc = abuf->addr;
   5818  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5819  1.1  christos 
   5820  1.1  christos {
   5821  1.1  christos   SI tmp_tmpopd;
   5822  1.1  christos   SI tmp_tmpops;
   5823  1.1  christos   BI tmp_carry;
   5824  1.1  christos   SI tmp_newval;
   5825  1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   5826  1.1  christos   SI tmp_tmp_mem;
   5827  1.1  christos   BI tmp_postinc;
   5828  1.1  christos   tmp_postinc = FLD (f_memmode);
   5829  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   5830  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   5831  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   5832  1.1  christos {
   5833  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   5834  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5835  1.1  christos }
   5836  1.1  christos   {
   5837  1.1  christos     SI opval = tmp_addr;
   5838  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5839  1.1  christos     written |= (1 << 11);
   5840  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5841  1.1  christos   }
   5842  1.1  christos }
   5843  1.1  christos }
   5844  1.1  christos ; tmp_tmp_mem; });
   5845  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5846  1.1  christos   tmp_carry = CPU (h_cbit);
   5847  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5848  1.1  christos   {
   5849  1.1  christos     SI opval = tmp_newval;
   5850  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   5851  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5852  1.1  christos   }
   5853  1.1  christos {
   5854  1.1  christos   {
   5855  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))));
   5856  1.1  christos     CPU (h_cbit) = opval;
   5857  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5858  1.1  christos   }
   5859  1.1  christos   {
   5860  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   5861  1.1  christos     CPU (h_nbit) = opval;
   5862  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5863  1.1  christos   }
   5864  1.1  christos   {
   5865  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5866  1.1  christos     CPU (h_zbit) = opval;
   5867  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5868  1.1  christos   }
   5869  1.1  christos   {
   5870  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)));
   5871  1.1  christos     CPU (h_vbit) = opval;
   5872  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5873  1.1  christos   }
   5874  1.1  christos {
   5875  1.1  christos   {
   5876  1.1  christos     BI opval = 0;
   5877  1.1  christos     CPU (h_xbit) = opval;
   5878  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5879  1.1  christos   }
   5880  1.1  christos   {
   5881  1.1  christos     BI opval = 0;
   5882  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5883  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5884  1.1  christos   }
   5885  1.1  christos }
   5886  1.1  christos }
   5887  1.1  christos }
   5888  1.1  christos 
   5889  1.1  christos   abuf->written = written;
   5890  1.1  christos #undef FLD
   5891  1.1  christos }
   5892  1.1  christos   NEXT (vpc);
   5893  1.1  christos 
   5894  1.1  christos   CASE (sem, INSN_ADDCBR) : /* add.b ${sconst8}],${Rd} */
   5895  1.1  christos {
   5896  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5897  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5898  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   5899  1.1  christos   int UNUSED written = 0;
   5900  1.1  christos   IADDR UNUSED pc = abuf->addr;
   5901  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   5902  1.1  christos 
   5903  1.1  christos {
   5904  1.1  christos   QI tmp_tmpopd;
   5905  1.1  christos   QI tmp_tmpops;
   5906  1.1  christos   BI tmp_carry;
   5907  1.1  christos   QI tmp_newval;
   5908  1.1  christos   tmp_tmpops = FLD (f_indir_pc__byte);
   5909  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5910  1.1  christos   tmp_carry = CPU (h_cbit);
   5911  1.1  christos   tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5912  1.1  christos {
   5913  1.1  christos   SI tmp_oldregval;
   5914  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5915  1.1  christos   {
   5916  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   5917  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5918  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5919  1.1  christos   }
   5920  1.1  christos }
   5921  1.1  christos {
   5922  1.1  christos   {
   5923  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))));
   5924  1.1  christos     CPU (h_cbit) = opval;
   5925  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5926  1.1  christos   }
   5927  1.1  christos   {
   5928  1.1  christos     BI opval = LTQI (tmp_newval, 0);
   5929  1.1  christos     CPU (h_nbit) = opval;
   5930  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5931  1.1  christos   }
   5932  1.1  christos   {
   5933  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5934  1.1  christos     CPU (h_zbit) = opval;
   5935  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5936  1.1  christos   }
   5937  1.1  christos   {
   5938  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)));
   5939  1.1  christos     CPU (h_vbit) = opval;
   5940  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5941  1.1  christos   }
   5942  1.1  christos {
   5943  1.1  christos   {
   5944  1.1  christos     BI opval = 0;
   5945  1.1  christos     CPU (h_xbit) = opval;
   5946  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5947  1.1  christos   }
   5948  1.1  christos   {
   5949  1.1  christos     BI opval = 0;
   5950  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5951  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5952  1.1  christos   }
   5953  1.1  christos }
   5954  1.1  christos }
   5955  1.1  christos }
   5956  1.1  christos 
   5957  1.1  christos #undef FLD
   5958  1.1  christos }
   5959  1.1  christos   NEXT (vpc);
   5960  1.1  christos 
   5961  1.1  christos   CASE (sem, INSN_ADDCWR) : /* add.w ${sconst16}],${Rd} */
   5962  1.1  christos {
   5963  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5964  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5965  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   5966  1.1  christos   int UNUSED written = 0;
   5967  1.1  christos   IADDR UNUSED pc = abuf->addr;
   5968  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   5969  1.1  christos 
   5970  1.1  christos {
   5971  1.1  christos   HI tmp_tmpopd;
   5972  1.1  christos   HI tmp_tmpops;
   5973  1.1  christos   BI tmp_carry;
   5974  1.1  christos   HI tmp_newval;
   5975  1.1  christos   tmp_tmpops = FLD (f_indir_pc__word);
   5976  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5977  1.1  christos   tmp_carry = CPU (h_cbit);
   5978  1.1  christos   tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5979  1.1  christos {
   5980  1.1  christos   SI tmp_oldregval;
   5981  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5982  1.1  christos   {
   5983  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   5984  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5985  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5986  1.1  christos   }
   5987  1.1  christos }
   5988  1.1  christos {
   5989  1.1  christos   {
   5990  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))));
   5991  1.1  christos     CPU (h_cbit) = opval;
   5992  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5993  1.1  christos   }
   5994  1.1  christos   {
   5995  1.1  christos     BI opval = LTHI (tmp_newval, 0);
   5996  1.1  christos     CPU (h_nbit) = opval;
   5997  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5998  1.1  christos   }
   5999  1.1  christos   {
   6000  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6001  1.1  christos     CPU (h_zbit) = opval;
   6002  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6003  1.1  christos   }
   6004  1.1  christos   {
   6005  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)));
   6006  1.1  christos     CPU (h_vbit) = opval;
   6007  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6008  1.1  christos   }
   6009  1.1  christos {
   6010  1.1  christos   {
   6011  1.1  christos     BI opval = 0;
   6012  1.1  christos     CPU (h_xbit) = opval;
   6013  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6014  1.1  christos   }
   6015  1.1  christos   {
   6016  1.1  christos     BI opval = 0;
   6017  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6018  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6019  1.1  christos   }
   6020  1.1  christos }
   6021  1.1  christos }
   6022  1.1  christos }
   6023  1.1  christos 
   6024  1.1  christos #undef FLD
   6025  1.1  christos }
   6026  1.1  christos   NEXT (vpc);
   6027  1.1  christos 
   6028  1.1  christos   CASE (sem, INSN_ADDCDR) : /* add.d ${const32}],${Rd} */
   6029  1.1  christos {
   6030  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6031  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6032  1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   6033  1.1  christos   int UNUSED written = 0;
   6034  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6035  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   6036  1.1  christos 
   6037  1.1  christos {
   6038  1.1  christos   SI tmp_tmpopd;
   6039  1.1  christos   SI tmp_tmpops;
   6040  1.1  christos   BI tmp_carry;
   6041  1.1  christos   SI tmp_newval;
   6042  1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   6043  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6044  1.1  christos   tmp_carry = CPU (h_cbit);
   6045  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6046  1.1  christos   {
   6047  1.1  christos     SI opval = tmp_newval;
   6048  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6049  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6050  1.1  christos   }
   6051  1.1  christos {
   6052  1.1  christos   {
   6053  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))));
   6054  1.1  christos     CPU (h_cbit) = opval;
   6055  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6056  1.1  christos   }
   6057  1.1  christos   {
   6058  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6059  1.1  christos     CPU (h_nbit) = opval;
   6060  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6061  1.1  christos   }
   6062  1.1  christos   {
   6063  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6064  1.1  christos     CPU (h_zbit) = opval;
   6065  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6066  1.1  christos   }
   6067  1.1  christos   {
   6068  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)));
   6069  1.1  christos     CPU (h_vbit) = opval;
   6070  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6071  1.1  christos   }
   6072  1.1  christos {
   6073  1.1  christos   {
   6074  1.1  christos     BI opval = 0;
   6075  1.1  christos     CPU (h_xbit) = opval;
   6076  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6077  1.1  christos   }
   6078  1.1  christos   {
   6079  1.1  christos     BI opval = 0;
   6080  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6081  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6082  1.1  christos   }
   6083  1.1  christos }
   6084  1.1  christos }
   6085  1.1  christos }
   6086  1.1  christos 
   6087  1.1  christos #undef FLD
   6088  1.1  christos }
   6089  1.1  christos   NEXT (vpc);
   6090  1.1  christos 
   6091  1.1  christos   CASE (sem, INSN_ADDS_B_R) : /* adds.b $Rs,$Rd */
   6092  1.1  christos {
   6093  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6094  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6095  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6096  1.1  christos   int UNUSED written = 0;
   6097  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6098  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6099  1.1  christos 
   6100  1.1  christos {
   6101  1.1  christos   SI tmp_tmpopd;
   6102  1.1  christos   SI tmp_tmpops;
   6103  1.1  christos   BI tmp_carry;
   6104  1.1  christos   SI tmp_newval;
   6105  1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   6106  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6107  1.1  christos   tmp_carry = CPU (h_cbit);
   6108  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6109  1.1  christos   {
   6110  1.1  christos     SI opval = tmp_newval;
   6111  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6112  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6113  1.1  christos   }
   6114  1.1  christos {
   6115  1.1  christos   {
   6116  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))));
   6117  1.1  christos     CPU (h_cbit) = opval;
   6118  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6119  1.1  christos   }
   6120  1.1  christos   {
   6121  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6122  1.1  christos     CPU (h_nbit) = opval;
   6123  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6124  1.1  christos   }
   6125  1.1  christos   {
   6126  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6127  1.1  christos     CPU (h_zbit) = opval;
   6128  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6129  1.1  christos   }
   6130  1.1  christos   {
   6131  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)));
   6132  1.1  christos     CPU (h_vbit) = opval;
   6133  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6134  1.1  christos   }
   6135  1.1  christos {
   6136  1.1  christos   {
   6137  1.1  christos     BI opval = 0;
   6138  1.1  christos     CPU (h_xbit) = opval;
   6139  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6140  1.1  christos   }
   6141  1.1  christos   {
   6142  1.1  christos     BI opval = 0;
   6143  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6144  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6145  1.1  christos   }
   6146  1.1  christos }
   6147  1.1  christos }
   6148  1.1  christos }
   6149  1.1  christos 
   6150  1.1  christos #undef FLD
   6151  1.1  christos }
   6152  1.1  christos   NEXT (vpc);
   6153  1.1  christos 
   6154  1.1  christos   CASE (sem, INSN_ADDS_W_R) : /* adds.w $Rs,$Rd */
   6155  1.1  christos {
   6156  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6157  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6158  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6159  1.1  christos   int UNUSED written = 0;
   6160  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6161  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6162  1.1  christos 
   6163  1.1  christos {
   6164  1.1  christos   SI tmp_tmpopd;
   6165  1.1  christos   SI tmp_tmpops;
   6166  1.1  christos   BI tmp_carry;
   6167  1.1  christos   SI tmp_newval;
   6168  1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   6169  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6170  1.1  christos   tmp_carry = CPU (h_cbit);
   6171  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6172  1.1  christos   {
   6173  1.1  christos     SI opval = tmp_newval;
   6174  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6175  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6176  1.1  christos   }
   6177  1.1  christos {
   6178  1.1  christos   {
   6179  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))));
   6180  1.1  christos     CPU (h_cbit) = opval;
   6181  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6182  1.1  christos   }
   6183  1.1  christos   {
   6184  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6185  1.1  christos     CPU (h_nbit) = opval;
   6186  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6187  1.1  christos   }
   6188  1.1  christos   {
   6189  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6190  1.1  christos     CPU (h_zbit) = opval;
   6191  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6192  1.1  christos   }
   6193  1.1  christos   {
   6194  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)));
   6195  1.1  christos     CPU (h_vbit) = opval;
   6196  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6197  1.1  christos   }
   6198  1.1  christos {
   6199  1.1  christos   {
   6200  1.1  christos     BI opval = 0;
   6201  1.1  christos     CPU (h_xbit) = opval;
   6202  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6203  1.1  christos   }
   6204  1.1  christos   {
   6205  1.1  christos     BI opval = 0;
   6206  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6207  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6208  1.1  christos   }
   6209  1.1  christos }
   6210  1.1  christos }
   6211  1.1  christos }
   6212  1.1  christos 
   6213  1.1  christos #undef FLD
   6214  1.1  christos }
   6215  1.1  christos   NEXT (vpc);
   6216  1.1  christos 
   6217  1.1  christos   CASE (sem, INSN_ADDS_M_B_M) : /* adds-m.b [${Rs}${inc}],$Rd */
   6218  1.1  christos {
   6219  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6220  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6221  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6222  1.1  christos   int UNUSED written = 0;
   6223  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6224  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6225  1.1  christos 
   6226  1.1  christos {
   6227  1.1  christos   SI tmp_tmpopd;
   6228  1.1  christos   SI tmp_tmpops;
   6229  1.1  christos   BI tmp_carry;
   6230  1.1  christos   SI tmp_newval;
   6231  1.1  christos   tmp_tmpops = EXTQISI (({   SI tmp_addr;
   6232  1.1  christos   QI tmp_tmp_mem;
   6233  1.1  christos   BI tmp_postinc;
   6234  1.1  christos   tmp_postinc = FLD (f_memmode);
   6235  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6236  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   6237  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6238  1.1  christos {
   6239  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6240  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   6241  1.1  christos }
   6242  1.1  christos   {
   6243  1.1  christos     SI opval = tmp_addr;
   6244  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6245  1.1  christos     written |= (1 << 11);
   6246  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6247  1.1  christos   }
   6248  1.1  christos }
   6249  1.1  christos }
   6250  1.1  christos ; tmp_tmp_mem; }));
   6251  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6252  1.1  christos   tmp_carry = CPU (h_cbit);
   6253  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6254  1.1  christos   {
   6255  1.1  christos     SI opval = tmp_newval;
   6256  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6257  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6258  1.1  christos   }
   6259  1.1  christos {
   6260  1.1  christos   {
   6261  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))));
   6262  1.1  christos     CPU (h_cbit) = opval;
   6263  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6264  1.1  christos   }
   6265  1.1  christos   {
   6266  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6267  1.1  christos     CPU (h_nbit) = opval;
   6268  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6269  1.1  christos   }
   6270  1.1  christos   {
   6271  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6272  1.1  christos     CPU (h_zbit) = opval;
   6273  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6274  1.1  christos   }
   6275  1.1  christos   {
   6276  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)));
   6277  1.1  christos     CPU (h_vbit) = opval;
   6278  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6279  1.1  christos   }
   6280  1.1  christos {
   6281  1.1  christos   {
   6282  1.1  christos     BI opval = 0;
   6283  1.1  christos     CPU (h_xbit) = opval;
   6284  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6285  1.1  christos   }
   6286  1.1  christos   {
   6287  1.1  christos     BI opval = 0;
   6288  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6289  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6290  1.1  christos   }
   6291  1.1  christos }
   6292  1.1  christos }
   6293  1.1  christos }
   6294  1.1  christos 
   6295  1.1  christos   abuf->written = written;
   6296  1.1  christos #undef FLD
   6297  1.1  christos }
   6298  1.1  christos   NEXT (vpc);
   6299  1.1  christos 
   6300  1.1  christos   CASE (sem, INSN_ADDS_M_W_M) : /* adds-m.w [${Rs}${inc}],$Rd */
   6301  1.1  christos {
   6302  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6303  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6304  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6305  1.1  christos   int UNUSED written = 0;
   6306  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6307  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6308  1.1  christos 
   6309  1.1  christos {
   6310  1.1  christos   SI tmp_tmpopd;
   6311  1.1  christos   SI tmp_tmpops;
   6312  1.1  christos   BI tmp_carry;
   6313  1.1  christos   SI tmp_newval;
   6314  1.1  christos   tmp_tmpops = EXTHISI (({   SI tmp_addr;
   6315  1.1  christos   HI tmp_tmp_mem;
   6316  1.1  christos   BI tmp_postinc;
   6317  1.1  christos   tmp_postinc = FLD (f_memmode);
   6318  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6319  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   6320  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6321  1.1  christos {
   6322  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6323  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   6324  1.1  christos }
   6325  1.1  christos   {
   6326  1.1  christos     SI opval = tmp_addr;
   6327  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6328  1.1  christos     written |= (1 << 11);
   6329  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6330  1.1  christos   }
   6331  1.1  christos }
   6332  1.1  christos }
   6333  1.1  christos ; tmp_tmp_mem; }));
   6334  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6335  1.1  christos   tmp_carry = CPU (h_cbit);
   6336  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6337  1.1  christos   {
   6338  1.1  christos     SI opval = tmp_newval;
   6339  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6340  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6341  1.1  christos   }
   6342  1.1  christos {
   6343  1.1  christos   {
   6344  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))));
   6345  1.1  christos     CPU (h_cbit) = opval;
   6346  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6347  1.1  christos   }
   6348  1.1  christos   {
   6349  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6350  1.1  christos     CPU (h_nbit) = opval;
   6351  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6352  1.1  christos   }
   6353  1.1  christos   {
   6354  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6355  1.1  christos     CPU (h_zbit) = opval;
   6356  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6357  1.1  christos   }
   6358  1.1  christos   {
   6359  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)));
   6360  1.1  christos     CPU (h_vbit) = opval;
   6361  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6362  1.1  christos   }
   6363  1.1  christos {
   6364  1.1  christos   {
   6365  1.1  christos     BI opval = 0;
   6366  1.1  christos     CPU (h_xbit) = opval;
   6367  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6368  1.1  christos   }
   6369  1.1  christos   {
   6370  1.1  christos     BI opval = 0;
   6371  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6372  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6373  1.1  christos   }
   6374  1.1  christos }
   6375  1.1  christos }
   6376  1.1  christos }
   6377  1.1  christos 
   6378  1.1  christos   abuf->written = written;
   6379  1.1  christos #undef FLD
   6380  1.1  christos }
   6381  1.1  christos   NEXT (vpc);
   6382  1.1  christos 
   6383  1.1  christos   CASE (sem, INSN_ADDSCBR) : /* [${Rs}${inc}],$Rd */
   6384  1.1  christos {
   6385  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6386  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6387  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   6388  1.1  christos   int UNUSED written = 0;
   6389  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6390  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6391  1.1  christos 
   6392  1.1  christos {
   6393  1.1  christos   SI tmp_tmpopd;
   6394  1.1  christos   SI tmp_tmpops;
   6395  1.1  christos   BI tmp_carry;
   6396  1.1  christos   SI tmp_newval;
   6397  1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   6398  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6399  1.1  christos   tmp_carry = CPU (h_cbit);
   6400  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6401  1.1  christos   {
   6402  1.1  christos     SI opval = tmp_newval;
   6403  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6404  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6405  1.1  christos   }
   6406  1.1  christos {
   6407  1.1  christos   {
   6408  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))));
   6409  1.1  christos     CPU (h_cbit) = opval;
   6410  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6411  1.1  christos   }
   6412  1.1  christos   {
   6413  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6414  1.1  christos     CPU (h_nbit) = opval;
   6415  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6416  1.1  christos   }
   6417  1.1  christos   {
   6418  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6419  1.1  christos     CPU (h_zbit) = opval;
   6420  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6421  1.1  christos   }
   6422  1.1  christos   {
   6423  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)));
   6424  1.1  christos     CPU (h_vbit) = opval;
   6425  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6426  1.1  christos   }
   6427  1.1  christos {
   6428  1.1  christos   {
   6429  1.1  christos     BI opval = 0;
   6430  1.1  christos     CPU (h_xbit) = opval;
   6431  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6432  1.1  christos   }
   6433  1.1  christos   {
   6434  1.1  christos     BI opval = 0;
   6435  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6436  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6437  1.1  christos   }
   6438  1.1  christos }
   6439  1.1  christos }
   6440  1.1  christos }
   6441  1.1  christos 
   6442  1.1  christos #undef FLD
   6443  1.1  christos }
   6444  1.1  christos   NEXT (vpc);
   6445  1.1  christos 
   6446  1.1  christos   CASE (sem, INSN_ADDSCWR) : /* [${Rs}${inc}],$Rd */
   6447  1.1  christos {
   6448  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6449  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6450  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   6451  1.1  christos   int UNUSED written = 0;
   6452  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6453  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6454  1.1  christos 
   6455  1.1  christos {
   6456  1.1  christos   SI tmp_tmpopd;
   6457  1.1  christos   SI tmp_tmpops;
   6458  1.1  christos   BI tmp_carry;
   6459  1.1  christos   SI tmp_newval;
   6460  1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   6461  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6462  1.1  christos   tmp_carry = CPU (h_cbit);
   6463  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6464  1.1  christos   {
   6465  1.1  christos     SI opval = tmp_newval;
   6466  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6467  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6468  1.1  christos   }
   6469  1.1  christos {
   6470  1.1  christos   {
   6471  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))));
   6472  1.1  christos     CPU (h_cbit) = opval;
   6473  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6474  1.1  christos   }
   6475  1.1  christos   {
   6476  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6477  1.1  christos     CPU (h_nbit) = opval;
   6478  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6479  1.1  christos   }
   6480  1.1  christos   {
   6481  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6482  1.1  christos     CPU (h_zbit) = opval;
   6483  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6484  1.1  christos   }
   6485  1.1  christos   {
   6486  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)));
   6487  1.1  christos     CPU (h_vbit) = opval;
   6488  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6489  1.1  christos   }
   6490  1.1  christos {
   6491  1.1  christos   {
   6492  1.1  christos     BI opval = 0;
   6493  1.1  christos     CPU (h_xbit) = opval;
   6494  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6495  1.1  christos   }
   6496  1.1  christos   {
   6497  1.1  christos     BI opval = 0;
   6498  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6499  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6500  1.1  christos   }
   6501  1.1  christos }
   6502  1.1  christos }
   6503  1.1  christos }
   6504  1.1  christos 
   6505  1.1  christos #undef FLD
   6506  1.1  christos }
   6507  1.1  christos   NEXT (vpc);
   6508  1.1  christos 
   6509  1.1  christos   CASE (sem, INSN_ADDU_B_R) : /* addu.b $Rs,$Rd */
   6510  1.1  christos {
   6511  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6512  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6513  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6514  1.1  christos   int UNUSED written = 0;
   6515  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6516  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6517  1.1  christos 
   6518  1.1  christos {
   6519  1.1  christos   SI tmp_tmpopd;
   6520  1.1  christos   SI tmp_tmpops;
   6521  1.1  christos   BI tmp_carry;
   6522  1.1  christos   SI tmp_newval;
   6523  1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   6524  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6525  1.1  christos   tmp_carry = CPU (h_cbit);
   6526  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6527  1.1  christos   {
   6528  1.1  christos     SI opval = tmp_newval;
   6529  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6530  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6531  1.1  christos   }
   6532  1.1  christos {
   6533  1.1  christos   {
   6534  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))));
   6535  1.1  christos     CPU (h_cbit) = opval;
   6536  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6537  1.1  christos   }
   6538  1.1  christos   {
   6539  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6540  1.1  christos     CPU (h_nbit) = opval;
   6541  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6542  1.1  christos   }
   6543  1.1  christos   {
   6544  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6545  1.1  christos     CPU (h_zbit) = opval;
   6546  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6547  1.1  christos   }
   6548  1.1  christos   {
   6549  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)));
   6550  1.1  christos     CPU (h_vbit) = opval;
   6551  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6552  1.1  christos   }
   6553  1.1  christos {
   6554  1.1  christos   {
   6555  1.1  christos     BI opval = 0;
   6556  1.1  christos     CPU (h_xbit) = opval;
   6557  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6558  1.1  christos   }
   6559  1.1  christos   {
   6560  1.1  christos     BI opval = 0;
   6561  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6562  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6563  1.1  christos   }
   6564  1.1  christos }
   6565  1.1  christos }
   6566  1.1  christos }
   6567  1.1  christos 
   6568  1.1  christos #undef FLD
   6569  1.1  christos }
   6570  1.1  christos   NEXT (vpc);
   6571  1.1  christos 
   6572  1.1  christos   CASE (sem, INSN_ADDU_W_R) : /* addu.w $Rs,$Rd */
   6573  1.1  christos {
   6574  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6575  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6576  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6577  1.1  christos   int UNUSED written = 0;
   6578  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6579  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6580  1.1  christos 
   6581  1.1  christos {
   6582  1.1  christos   SI tmp_tmpopd;
   6583  1.1  christos   SI tmp_tmpops;
   6584  1.1  christos   BI tmp_carry;
   6585  1.1  christos   SI tmp_newval;
   6586  1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   6587  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6588  1.1  christos   tmp_carry = CPU (h_cbit);
   6589  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6590  1.1  christos   {
   6591  1.1  christos     SI opval = tmp_newval;
   6592  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6593  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6594  1.1  christos   }
   6595  1.1  christos {
   6596  1.1  christos   {
   6597  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))));
   6598  1.1  christos     CPU (h_cbit) = opval;
   6599  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6600  1.1  christos   }
   6601  1.1  christos   {
   6602  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6603  1.1  christos     CPU (h_nbit) = opval;
   6604  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6605  1.1  christos   }
   6606  1.1  christos   {
   6607  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6608  1.1  christos     CPU (h_zbit) = opval;
   6609  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6610  1.1  christos   }
   6611  1.1  christos   {
   6612  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)));
   6613  1.1  christos     CPU (h_vbit) = opval;
   6614  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6615  1.1  christos   }
   6616  1.1  christos {
   6617  1.1  christos   {
   6618  1.1  christos     BI opval = 0;
   6619  1.1  christos     CPU (h_xbit) = opval;
   6620  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6621  1.1  christos   }
   6622  1.1  christos   {
   6623  1.1  christos     BI opval = 0;
   6624  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6625  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6626  1.1  christos   }
   6627  1.1  christos }
   6628  1.1  christos }
   6629  1.1  christos }
   6630  1.1  christos 
   6631  1.1  christos #undef FLD
   6632  1.1  christos }
   6633  1.1  christos   NEXT (vpc);
   6634  1.1  christos 
   6635  1.1  christos   CASE (sem, INSN_ADDU_M_B_M) : /* addu-m.b [${Rs}${inc}],$Rd */
   6636  1.1  christos {
   6637  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6638  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6639  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6640  1.1  christos   int UNUSED written = 0;
   6641  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6642  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6643  1.1  christos 
   6644  1.1  christos {
   6645  1.1  christos   SI tmp_tmpopd;
   6646  1.1  christos   SI tmp_tmpops;
   6647  1.1  christos   BI tmp_carry;
   6648  1.1  christos   SI tmp_newval;
   6649  1.1  christos   tmp_tmpops = ZEXTQISI (({   SI tmp_addr;
   6650  1.1  christos   QI tmp_tmp_mem;
   6651  1.1  christos   BI tmp_postinc;
   6652  1.1  christos   tmp_postinc = FLD (f_memmode);
   6653  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6654  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   6655  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6656  1.1  christos {
   6657  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6658  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   6659  1.1  christos }
   6660  1.1  christos   {
   6661  1.1  christos     SI opval = tmp_addr;
   6662  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6663  1.1  christos     written |= (1 << 11);
   6664  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6665  1.1  christos   }
   6666  1.1  christos }
   6667  1.1  christos }
   6668  1.1  christos ; tmp_tmp_mem; }));
   6669  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6670  1.1  christos   tmp_carry = CPU (h_cbit);
   6671  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6672  1.1  christos   {
   6673  1.1  christos     SI opval = tmp_newval;
   6674  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6675  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6676  1.1  christos   }
   6677  1.1  christos {
   6678  1.1  christos   {
   6679  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))));
   6680  1.1  christos     CPU (h_cbit) = opval;
   6681  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6682  1.1  christos   }
   6683  1.1  christos   {
   6684  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6685  1.1  christos     CPU (h_nbit) = opval;
   6686  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6687  1.1  christos   }
   6688  1.1  christos   {
   6689  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6690  1.1  christos     CPU (h_zbit) = opval;
   6691  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6692  1.1  christos   }
   6693  1.1  christos   {
   6694  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)));
   6695  1.1  christos     CPU (h_vbit) = opval;
   6696  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6697  1.1  christos   }
   6698  1.1  christos {
   6699  1.1  christos   {
   6700  1.1  christos     BI opval = 0;
   6701  1.1  christos     CPU (h_xbit) = opval;
   6702  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6703  1.1  christos   }
   6704  1.1  christos   {
   6705  1.1  christos     BI opval = 0;
   6706  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6707  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6708  1.1  christos   }
   6709  1.1  christos }
   6710  1.1  christos }
   6711  1.1  christos }
   6712  1.1  christos 
   6713  1.1  christos   abuf->written = written;
   6714  1.1  christos #undef FLD
   6715  1.1  christos }
   6716  1.1  christos   NEXT (vpc);
   6717  1.1  christos 
   6718  1.1  christos   CASE (sem, INSN_ADDU_M_W_M) : /* addu-m.w [${Rs}${inc}],$Rd */
   6719  1.1  christos {
   6720  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6721  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6722  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6723  1.1  christos   int UNUSED written = 0;
   6724  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6725  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6726  1.1  christos 
   6727  1.1  christos {
   6728  1.1  christos   SI tmp_tmpopd;
   6729  1.1  christos   SI tmp_tmpops;
   6730  1.1  christos   BI tmp_carry;
   6731  1.1  christos   SI tmp_newval;
   6732  1.1  christos   tmp_tmpops = ZEXTHISI (({   SI tmp_addr;
   6733  1.1  christos   HI tmp_tmp_mem;
   6734  1.1  christos   BI tmp_postinc;
   6735  1.1  christos   tmp_postinc = FLD (f_memmode);
   6736  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6737  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   6738  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6739  1.1  christos {
   6740  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6741  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   6742  1.1  christos }
   6743  1.1  christos   {
   6744  1.1  christos     SI opval = tmp_addr;
   6745  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6746  1.1  christos     written |= (1 << 11);
   6747  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6748  1.1  christos   }
   6749  1.1  christos }
   6750  1.1  christos }
   6751  1.1  christos ; tmp_tmp_mem; }));
   6752  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6753  1.1  christos   tmp_carry = CPU (h_cbit);
   6754  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6755  1.1  christos   {
   6756  1.1  christos     SI opval = tmp_newval;
   6757  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6758  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6759  1.1  christos   }
   6760  1.1  christos {
   6761  1.1  christos   {
   6762  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))));
   6763  1.1  christos     CPU (h_cbit) = opval;
   6764  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6765  1.1  christos   }
   6766  1.1  christos   {
   6767  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6768  1.1  christos     CPU (h_nbit) = opval;
   6769  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6770  1.1  christos   }
   6771  1.1  christos   {
   6772  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6773  1.1  christos     CPU (h_zbit) = opval;
   6774  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6775  1.1  christos   }
   6776  1.1  christos   {
   6777  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)));
   6778  1.1  christos     CPU (h_vbit) = opval;
   6779  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6780  1.1  christos   }
   6781  1.1  christos {
   6782  1.1  christos   {
   6783  1.1  christos     BI opval = 0;
   6784  1.1  christos     CPU (h_xbit) = opval;
   6785  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6786  1.1  christos   }
   6787  1.1  christos   {
   6788  1.1  christos     BI opval = 0;
   6789  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6790  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6791  1.1  christos   }
   6792  1.1  christos }
   6793  1.1  christos }
   6794  1.1  christos }
   6795  1.1  christos 
   6796  1.1  christos   abuf->written = written;
   6797  1.1  christos #undef FLD
   6798  1.1  christos }
   6799  1.1  christos   NEXT (vpc);
   6800  1.1  christos 
   6801  1.1  christos   CASE (sem, INSN_ADDUCBR) : /* [${Rs}${inc}],$Rd */
   6802  1.1  christos {
   6803  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6804  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6805  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   6806  1.1  christos   int UNUSED written = 0;
   6807  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6808  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6809  1.1  christos 
   6810  1.1  christos {
   6811  1.1  christos   SI tmp_tmpopd;
   6812  1.1  christos   SI tmp_tmpops;
   6813  1.1  christos   BI tmp_carry;
   6814  1.1  christos   SI tmp_newval;
   6815  1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   6816  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6817  1.1  christos   tmp_carry = CPU (h_cbit);
   6818  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6819  1.1  christos   {
   6820  1.1  christos     SI opval = tmp_newval;
   6821  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6822  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6823  1.1  christos   }
   6824  1.1  christos {
   6825  1.1  christos   {
   6826  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))));
   6827  1.1  christos     CPU (h_cbit) = opval;
   6828  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6829  1.1  christos   }
   6830  1.1  christos   {
   6831  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6832  1.1  christos     CPU (h_nbit) = opval;
   6833  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6834  1.1  christos   }
   6835  1.1  christos   {
   6836  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6837  1.1  christos     CPU (h_zbit) = opval;
   6838  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6839  1.1  christos   }
   6840  1.1  christos   {
   6841  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)));
   6842  1.1  christos     CPU (h_vbit) = opval;
   6843  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6844  1.1  christos   }
   6845  1.1  christos {
   6846  1.1  christos   {
   6847  1.1  christos     BI opval = 0;
   6848  1.1  christos     CPU (h_xbit) = opval;
   6849  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6850  1.1  christos   }
   6851  1.1  christos   {
   6852  1.1  christos     BI opval = 0;
   6853  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6854  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6855  1.1  christos   }
   6856  1.1  christos }
   6857  1.1  christos }
   6858  1.1  christos }
   6859  1.1  christos 
   6860  1.1  christos #undef FLD
   6861  1.1  christos }
   6862  1.1  christos   NEXT (vpc);
   6863  1.1  christos 
   6864  1.1  christos   CASE (sem, INSN_ADDUCWR) : /* [${Rs}${inc}],$Rd */
   6865  1.1  christos {
   6866  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6867  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6868  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   6869  1.1  christos   int UNUSED written = 0;
   6870  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6871  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6872  1.1  christos 
   6873  1.1  christos {
   6874  1.1  christos   SI tmp_tmpopd;
   6875  1.1  christos   SI tmp_tmpops;
   6876  1.1  christos   BI tmp_carry;
   6877  1.1  christos   SI tmp_newval;
   6878  1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   6879  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6880  1.1  christos   tmp_carry = CPU (h_cbit);
   6881  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6882  1.1  christos   {
   6883  1.1  christos     SI opval = tmp_newval;
   6884  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6885  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6886  1.1  christos   }
   6887  1.1  christos {
   6888  1.1  christos   {
   6889  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))));
   6890  1.1  christos     CPU (h_cbit) = opval;
   6891  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6892  1.1  christos   }
   6893  1.1  christos   {
   6894  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6895  1.1  christos     CPU (h_nbit) = opval;
   6896  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6897  1.1  christos   }
   6898  1.1  christos   {
   6899  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6900  1.1  christos     CPU (h_zbit) = opval;
   6901  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6902  1.1  christos   }
   6903  1.1  christos   {
   6904  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)));
   6905  1.1  christos     CPU (h_vbit) = opval;
   6906  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6907  1.1  christos   }
   6908  1.1  christos {
   6909  1.1  christos   {
   6910  1.1  christos     BI opval = 0;
   6911  1.1  christos     CPU (h_xbit) = opval;
   6912  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6913  1.1  christos   }
   6914  1.1  christos   {
   6915  1.1  christos     BI opval = 0;
   6916  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6917  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6918  1.1  christos   }
   6919  1.1  christos }
   6920  1.1  christos }
   6921  1.1  christos }
   6922  1.1  christos 
   6923  1.1  christos #undef FLD
   6924  1.1  christos }
   6925  1.1  christos   NEXT (vpc);
   6926  1.1  christos 
   6927  1.1  christos   CASE (sem, INSN_SUB_B_R) : /* sub.b $Rs,$Rd */
   6928  1.1  christos {
   6929  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6930  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6931  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6932  1.1  christos   int UNUSED written = 0;
   6933  1.1  christos   IADDR UNUSED pc = abuf->addr;
   6934  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6935  1.1  christos 
   6936  1.1  christos {
   6937  1.1  christos   QI tmp_tmpopd;
   6938  1.1  christos   QI tmp_tmpops;
   6939  1.1  christos   BI tmp_carry;
   6940  1.1  christos   QI tmp_newval;
   6941  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   6942  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6943  1.1  christos   tmp_carry = CPU (h_cbit);
   6944  1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6945  1.1  christos {
   6946  1.1  christos   SI tmp_oldregval;
   6947  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   6948  1.1  christos   {
   6949  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   6950  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6951  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6952  1.1  christos   }
   6953  1.1  christos }
   6954  1.1  christos {
   6955  1.1  christos   {
   6956  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))));
   6957  1.1  christos     CPU (h_cbit) = opval;
   6958  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6959  1.1  christos   }
   6960  1.1  christos   {
   6961  1.1  christos     BI opval = LTQI (tmp_newval, 0);
   6962  1.1  christos     CPU (h_nbit) = opval;
   6963  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6964  1.1  christos   }
   6965  1.1  christos   {
   6966  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6967  1.1  christos     CPU (h_zbit) = opval;
   6968  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6969  1.1  christos   }
   6970  1.1  christos   {
   6971  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)));
   6972  1.1  christos     CPU (h_vbit) = opval;
   6973  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6974  1.1  christos   }
   6975  1.1  christos {
   6976  1.1  christos   {
   6977  1.1  christos     BI opval = 0;
   6978  1.1  christos     CPU (h_xbit) = opval;
   6979  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6980  1.1  christos   }
   6981  1.1  christos   {
   6982  1.1  christos     BI opval = 0;
   6983  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6984  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6985  1.1  christos   }
   6986  1.1  christos }
   6987  1.1  christos }
   6988  1.1  christos }
   6989  1.1  christos 
   6990  1.1  christos #undef FLD
   6991  1.1  christos }
   6992  1.1  christos   NEXT (vpc);
   6993  1.1  christos 
   6994  1.1  christos   CASE (sem, INSN_SUB_W_R) : /* sub.w $Rs,$Rd */
   6995  1.1  christos {
   6996  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6997  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6998  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6999  1.1  christos   int UNUSED written = 0;
   7000  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7001  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7002  1.1  christos 
   7003  1.1  christos {
   7004  1.1  christos   HI tmp_tmpopd;
   7005  1.1  christos   HI tmp_tmpops;
   7006  1.1  christos   BI tmp_carry;
   7007  1.1  christos   HI tmp_newval;
   7008  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   7009  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7010  1.1  christos   tmp_carry = CPU (h_cbit);
   7011  1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7012  1.1  christos {
   7013  1.1  christos   SI tmp_oldregval;
   7014  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   7015  1.1  christos   {
   7016  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   7017  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7018  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7019  1.1  christos   }
   7020  1.1  christos }
   7021  1.1  christos {
   7022  1.1  christos   {
   7023  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))));
   7024  1.1  christos     CPU (h_cbit) = opval;
   7025  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7026  1.1  christos   }
   7027  1.1  christos   {
   7028  1.1  christos     BI opval = LTHI (tmp_newval, 0);
   7029  1.1  christos     CPU (h_nbit) = opval;
   7030  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7031  1.1  christos   }
   7032  1.1  christos   {
   7033  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7034  1.1  christos     CPU (h_zbit) = opval;
   7035  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7036  1.1  christos   }
   7037  1.1  christos   {
   7038  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)));
   7039  1.1  christos     CPU (h_vbit) = opval;
   7040  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7041  1.1  christos   }
   7042  1.1  christos {
   7043  1.1  christos   {
   7044  1.1  christos     BI opval = 0;
   7045  1.1  christos     CPU (h_xbit) = opval;
   7046  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7047  1.1  christos   }
   7048  1.1  christos   {
   7049  1.1  christos     BI opval = 0;
   7050  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7051  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7052  1.1  christos   }
   7053  1.1  christos }
   7054  1.1  christos }
   7055  1.1  christos }
   7056  1.1  christos 
   7057  1.1  christos #undef FLD
   7058  1.1  christos }
   7059  1.1  christos   NEXT (vpc);
   7060  1.1  christos 
   7061  1.1  christos   CASE (sem, INSN_SUB_D_R) : /* sub.d $Rs,$Rd */
   7062  1.1  christos {
   7063  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7064  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7065  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   7066  1.1  christos   int UNUSED written = 0;
   7067  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7068  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7069  1.1  christos 
   7070  1.1  christos {
   7071  1.1  christos   SI tmp_tmpopd;
   7072  1.1  christos   SI tmp_tmpops;
   7073  1.1  christos   BI tmp_carry;
   7074  1.1  christos   SI tmp_newval;
   7075  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   7076  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7077  1.1  christos   tmp_carry = CPU (h_cbit);
   7078  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7079  1.1  christos   {
   7080  1.1  christos     SI opval = tmp_newval;
   7081  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7082  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7083  1.1  christos   }
   7084  1.1  christos {
   7085  1.1  christos   {
   7086  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))));
   7087  1.1  christos     CPU (h_cbit) = opval;
   7088  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7089  1.1  christos   }
   7090  1.1  christos   {
   7091  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7092  1.1  christos     CPU (h_nbit) = opval;
   7093  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7094  1.1  christos   }
   7095  1.1  christos   {
   7096  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7097  1.1  christos     CPU (h_zbit) = opval;
   7098  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7099  1.1  christos   }
   7100  1.1  christos   {
   7101  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)));
   7102  1.1  christos     CPU (h_vbit) = opval;
   7103  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7104  1.1  christos   }
   7105  1.1  christos {
   7106  1.1  christos   {
   7107  1.1  christos     BI opval = 0;
   7108  1.1  christos     CPU (h_xbit) = opval;
   7109  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7110  1.1  christos   }
   7111  1.1  christos   {
   7112  1.1  christos     BI opval = 0;
   7113  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7114  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7115  1.1  christos   }
   7116  1.1  christos }
   7117  1.1  christos }
   7118  1.1  christos }
   7119  1.1  christos 
   7120  1.1  christos #undef FLD
   7121  1.1  christos }
   7122  1.1  christos   NEXT (vpc);
   7123  1.1  christos 
   7124  1.1  christos   CASE (sem, INSN_SUB_M_B_M) : /* sub-m.b [${Rs}${inc}],${Rd} */
   7125  1.1  christos {
   7126  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7127  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7128  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7129  1.1  christos   int UNUSED written = 0;
   7130  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7131  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7132  1.1  christos 
   7133  1.1  christos {
   7134  1.1  christos   QI tmp_tmpopd;
   7135  1.1  christos   QI tmp_tmpops;
   7136  1.1  christos   BI tmp_carry;
   7137  1.1  christos   QI tmp_newval;
   7138  1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   7139  1.1  christos   QI tmp_tmp_mem;
   7140  1.1  christos   BI tmp_postinc;
   7141  1.1  christos   tmp_postinc = FLD (f_memmode);
   7142  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7143  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   7144  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7145  1.1  christos {
   7146  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7147  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   7148  1.1  christos }
   7149  1.1  christos   {
   7150  1.1  christos     SI opval = tmp_addr;
   7151  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7152  1.1  christos     written |= (1 << 12);
   7153  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7154  1.1  christos   }
   7155  1.1  christos }
   7156  1.1  christos }
   7157  1.1  christos ; tmp_tmp_mem; });
   7158  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7159  1.1  christos   tmp_carry = CPU (h_cbit);
   7160  1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7161  1.1  christos {
   7162  1.1  christos   SI tmp_oldregval;
   7163  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))));
   7164  1.1  christos   {
   7165  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   7166  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7167  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7168  1.1  christos   }
   7169  1.1  christos }
   7170  1.1  christos {
   7171  1.1  christos   {
   7172  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))));
   7173  1.1  christos     CPU (h_cbit) = opval;
   7174  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7175  1.1  christos   }
   7176  1.1  christos   {
   7177  1.1  christos     BI opval = LTQI (tmp_newval, 0);
   7178  1.1  christos     CPU (h_nbit) = opval;
   7179  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7180  1.1  christos   }
   7181  1.1  christos   {
   7182  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7183  1.1  christos     CPU (h_zbit) = opval;
   7184  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7185  1.1  christos   }
   7186  1.1  christos   {
   7187  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)));
   7188  1.1  christos     CPU (h_vbit) = opval;
   7189  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7190  1.1  christos   }
   7191  1.1  christos {
   7192  1.1  christos   {
   7193  1.1  christos     BI opval = 0;
   7194  1.1  christos     CPU (h_xbit) = opval;
   7195  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7196  1.1  christos   }
   7197  1.1  christos   {
   7198  1.1  christos     BI opval = 0;
   7199  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7200  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7201  1.1  christos   }
   7202  1.1  christos }
   7203  1.1  christos }
   7204  1.1  christos }
   7205  1.1  christos 
   7206  1.1  christos   abuf->written = written;
   7207  1.1  christos #undef FLD
   7208  1.1  christos }
   7209  1.1  christos   NEXT (vpc);
   7210  1.1  christos 
   7211  1.1  christos   CASE (sem, INSN_SUB_M_W_M) : /* sub-m.w [${Rs}${inc}],${Rd} */
   7212  1.1  christos {
   7213  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7214  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7215  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7216  1.1  christos   int UNUSED written = 0;
   7217  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7218  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7219  1.1  christos 
   7220  1.1  christos {
   7221  1.1  christos   HI tmp_tmpopd;
   7222  1.1  christos   HI tmp_tmpops;
   7223  1.1  christos   BI tmp_carry;
   7224  1.1  christos   HI tmp_newval;
   7225  1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   7226  1.1  christos   HI tmp_tmp_mem;
   7227  1.1  christos   BI tmp_postinc;
   7228  1.1  christos   tmp_postinc = FLD (f_memmode);
   7229  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7230  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   7231  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7232  1.1  christos {
   7233  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7234  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   7235  1.1  christos }
   7236  1.1  christos   {
   7237  1.1  christos     SI opval = tmp_addr;
   7238  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7239  1.1  christos     written |= (1 << 12);
   7240  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7241  1.1  christos   }
   7242  1.1  christos }
   7243  1.1  christos }
   7244  1.1  christos ; tmp_tmp_mem; });
   7245  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7246  1.1  christos   tmp_carry = CPU (h_cbit);
   7247  1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7248  1.1  christos {
   7249  1.1  christos   SI tmp_oldregval;
   7250  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))));
   7251  1.1  christos   {
   7252  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   7253  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7254  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7255  1.1  christos   }
   7256  1.1  christos }
   7257  1.1  christos {
   7258  1.1  christos   {
   7259  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))));
   7260  1.1  christos     CPU (h_cbit) = opval;
   7261  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7262  1.1  christos   }
   7263  1.1  christos   {
   7264  1.1  christos     BI opval = LTHI (tmp_newval, 0);
   7265  1.1  christos     CPU (h_nbit) = opval;
   7266  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7267  1.1  christos   }
   7268  1.1  christos   {
   7269  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7270  1.1  christos     CPU (h_zbit) = opval;
   7271  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7272  1.1  christos   }
   7273  1.1  christos   {
   7274  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)));
   7275  1.1  christos     CPU (h_vbit) = opval;
   7276  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7277  1.1  christos   }
   7278  1.1  christos {
   7279  1.1  christos   {
   7280  1.1  christos     BI opval = 0;
   7281  1.1  christos     CPU (h_xbit) = opval;
   7282  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7283  1.1  christos   }
   7284  1.1  christos   {
   7285  1.1  christos     BI opval = 0;
   7286  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7287  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7288  1.1  christos   }
   7289  1.1  christos }
   7290  1.1  christos }
   7291  1.1  christos }
   7292  1.1  christos 
   7293  1.1  christos   abuf->written = written;
   7294  1.1  christos #undef FLD
   7295  1.1  christos }
   7296  1.1  christos   NEXT (vpc);
   7297  1.1  christos 
   7298  1.1  christos   CASE (sem, INSN_SUB_M_D_M) : /* sub-m.d [${Rs}${inc}],${Rd} */
   7299  1.1  christos {
   7300  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7301  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7302  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7303  1.1  christos   int UNUSED written = 0;
   7304  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7305  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7306  1.1  christos 
   7307  1.1  christos {
   7308  1.1  christos   SI tmp_tmpopd;
   7309  1.1  christos   SI tmp_tmpops;
   7310  1.1  christos   BI tmp_carry;
   7311  1.1  christos   SI tmp_newval;
   7312  1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   7313  1.1  christos   SI tmp_tmp_mem;
   7314  1.1  christos   BI tmp_postinc;
   7315  1.1  christos   tmp_postinc = FLD (f_memmode);
   7316  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7317  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   7318  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7319  1.1  christos {
   7320  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7321  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   7322  1.1  christos }
   7323  1.1  christos   {
   7324  1.1  christos     SI opval = tmp_addr;
   7325  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7326  1.1  christos     written |= (1 << 11);
   7327  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7328  1.1  christos   }
   7329  1.1  christos }
   7330  1.1  christos }
   7331  1.1  christos ; tmp_tmp_mem; });
   7332  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7333  1.1  christos   tmp_carry = CPU (h_cbit);
   7334  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7335  1.1  christos   {
   7336  1.1  christos     SI opval = tmp_newval;
   7337  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7338  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7339  1.1  christos   }
   7340  1.1  christos {
   7341  1.1  christos   {
   7342  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))));
   7343  1.1  christos     CPU (h_cbit) = opval;
   7344  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7345  1.1  christos   }
   7346  1.1  christos   {
   7347  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7348  1.1  christos     CPU (h_nbit) = opval;
   7349  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7350  1.1  christos   }
   7351  1.1  christos   {
   7352  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7353  1.1  christos     CPU (h_zbit) = opval;
   7354  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7355  1.1  christos   }
   7356  1.1  christos   {
   7357  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)));
   7358  1.1  christos     CPU (h_vbit) = opval;
   7359  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7360  1.1  christos   }
   7361  1.1  christos {
   7362  1.1  christos   {
   7363  1.1  christos     BI opval = 0;
   7364  1.1  christos     CPU (h_xbit) = opval;
   7365  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7366  1.1  christos   }
   7367  1.1  christos   {
   7368  1.1  christos     BI opval = 0;
   7369  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7370  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7371  1.1  christos   }
   7372  1.1  christos }
   7373  1.1  christos }
   7374  1.1  christos }
   7375  1.1  christos 
   7376  1.1  christos   abuf->written = written;
   7377  1.1  christos #undef FLD
   7378  1.1  christos }
   7379  1.1  christos   NEXT (vpc);
   7380  1.1  christos 
   7381  1.1  christos   CASE (sem, INSN_SUBCBR) : /* sub.b ${sconst8}],${Rd} */
   7382  1.1  christos {
   7383  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7384  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7385  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   7386  1.1  christos   int UNUSED written = 0;
   7387  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7388  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7389  1.1  christos 
   7390  1.1  christos {
   7391  1.1  christos   QI tmp_tmpopd;
   7392  1.1  christos   QI tmp_tmpops;
   7393  1.1  christos   BI tmp_carry;
   7394  1.1  christos   QI tmp_newval;
   7395  1.1  christos   tmp_tmpops = FLD (f_indir_pc__byte);
   7396  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7397  1.1  christos   tmp_carry = CPU (h_cbit);
   7398  1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7399  1.1  christos {
   7400  1.1  christos   SI tmp_oldregval;
   7401  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   7402  1.1  christos   {
   7403  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   7404  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7405  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7406  1.1  christos   }
   7407  1.1  christos }
   7408  1.1  christos {
   7409  1.1  christos   {
   7410  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))));
   7411  1.1  christos     CPU (h_cbit) = opval;
   7412  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7413  1.1  christos   }
   7414  1.1  christos   {
   7415  1.1  christos     BI opval = LTQI (tmp_newval, 0);
   7416  1.1  christos     CPU (h_nbit) = opval;
   7417  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7418  1.1  christos   }
   7419  1.1  christos   {
   7420  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7421  1.1  christos     CPU (h_zbit) = opval;
   7422  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7423  1.1  christos   }
   7424  1.1  christos   {
   7425  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)));
   7426  1.1  christos     CPU (h_vbit) = opval;
   7427  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7428  1.1  christos   }
   7429  1.1  christos {
   7430  1.1  christos   {
   7431  1.1  christos     BI opval = 0;
   7432  1.1  christos     CPU (h_xbit) = opval;
   7433  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7434  1.1  christos   }
   7435  1.1  christos   {
   7436  1.1  christos     BI opval = 0;
   7437  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7438  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7439  1.1  christos   }
   7440  1.1  christos }
   7441  1.1  christos }
   7442  1.1  christos }
   7443  1.1  christos 
   7444  1.1  christos #undef FLD
   7445  1.1  christos }
   7446  1.1  christos   NEXT (vpc);
   7447  1.1  christos 
   7448  1.1  christos   CASE (sem, INSN_SUBCWR) : /* sub.w ${sconst16}],${Rd} */
   7449  1.1  christos {
   7450  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7451  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7452  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   7453  1.1  christos   int UNUSED written = 0;
   7454  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7455  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7456  1.1  christos 
   7457  1.1  christos {
   7458  1.1  christos   HI tmp_tmpopd;
   7459  1.1  christos   HI tmp_tmpops;
   7460  1.1  christos   BI tmp_carry;
   7461  1.1  christos   HI tmp_newval;
   7462  1.1  christos   tmp_tmpops = FLD (f_indir_pc__word);
   7463  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7464  1.1  christos   tmp_carry = CPU (h_cbit);
   7465  1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7466  1.1  christos {
   7467  1.1  christos   SI tmp_oldregval;
   7468  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   7469  1.1  christos   {
   7470  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   7471  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7472  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7473  1.1  christos   }
   7474  1.1  christos }
   7475  1.1  christos {
   7476  1.1  christos   {
   7477  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))));
   7478  1.1  christos     CPU (h_cbit) = opval;
   7479  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7480  1.1  christos   }
   7481  1.1  christos   {
   7482  1.1  christos     BI opval = LTHI (tmp_newval, 0);
   7483  1.1  christos     CPU (h_nbit) = opval;
   7484  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7485  1.1  christos   }
   7486  1.1  christos   {
   7487  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7488  1.1  christos     CPU (h_zbit) = opval;
   7489  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7490  1.1  christos   }
   7491  1.1  christos   {
   7492  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)));
   7493  1.1  christos     CPU (h_vbit) = opval;
   7494  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7495  1.1  christos   }
   7496  1.1  christos {
   7497  1.1  christos   {
   7498  1.1  christos     BI opval = 0;
   7499  1.1  christos     CPU (h_xbit) = opval;
   7500  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7501  1.1  christos   }
   7502  1.1  christos   {
   7503  1.1  christos     BI opval = 0;
   7504  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7505  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7506  1.1  christos   }
   7507  1.1  christos }
   7508  1.1  christos }
   7509  1.1  christos }
   7510  1.1  christos 
   7511  1.1  christos #undef FLD
   7512  1.1  christos }
   7513  1.1  christos   NEXT (vpc);
   7514  1.1  christos 
   7515  1.1  christos   CASE (sem, INSN_SUBCDR) : /* sub.d ${const32}],${Rd} */
   7516  1.1  christos {
   7517  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7518  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7519  1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   7520  1.1  christos   int UNUSED written = 0;
   7521  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7522  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   7523  1.1  christos 
   7524  1.1  christos {
   7525  1.1  christos   SI tmp_tmpopd;
   7526  1.1  christos   SI tmp_tmpops;
   7527  1.1  christos   BI tmp_carry;
   7528  1.1  christos   SI tmp_newval;
   7529  1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   7530  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7531  1.1  christos   tmp_carry = CPU (h_cbit);
   7532  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7533  1.1  christos   {
   7534  1.1  christos     SI opval = tmp_newval;
   7535  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7536  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7537  1.1  christos   }
   7538  1.1  christos {
   7539  1.1  christos   {
   7540  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))));
   7541  1.1  christos     CPU (h_cbit) = opval;
   7542  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7543  1.1  christos   }
   7544  1.1  christos   {
   7545  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7546  1.1  christos     CPU (h_nbit) = opval;
   7547  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7548  1.1  christos   }
   7549  1.1  christos   {
   7550  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7551  1.1  christos     CPU (h_zbit) = opval;
   7552  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7553  1.1  christos   }
   7554  1.1  christos   {
   7555  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)));
   7556  1.1  christos     CPU (h_vbit) = opval;
   7557  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7558  1.1  christos   }
   7559  1.1  christos {
   7560  1.1  christos   {
   7561  1.1  christos     BI opval = 0;
   7562  1.1  christos     CPU (h_xbit) = opval;
   7563  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7564  1.1  christos   }
   7565  1.1  christos   {
   7566  1.1  christos     BI opval = 0;
   7567  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7568  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7569  1.1  christos   }
   7570  1.1  christos }
   7571  1.1  christos }
   7572  1.1  christos }
   7573  1.1  christos 
   7574  1.1  christos #undef FLD
   7575  1.1  christos }
   7576  1.1  christos   NEXT (vpc);
   7577  1.1  christos 
   7578  1.1  christos   CASE (sem, INSN_SUBS_B_R) : /* subs.b $Rs,$Rd */
   7579  1.1  christos {
   7580  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7581  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7582  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   7583  1.1  christos   int UNUSED written = 0;
   7584  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7585  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7586  1.1  christos 
   7587  1.1  christos {
   7588  1.1  christos   SI tmp_tmpopd;
   7589  1.1  christos   SI tmp_tmpops;
   7590  1.1  christos   BI tmp_carry;
   7591  1.1  christos   SI tmp_newval;
   7592  1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   7593  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7594  1.1  christos   tmp_carry = CPU (h_cbit);
   7595  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7596  1.1  christos   {
   7597  1.1  christos     SI opval = tmp_newval;
   7598  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7599  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7600  1.1  christos   }
   7601  1.1  christos {
   7602  1.1  christos   {
   7603  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))));
   7604  1.1  christos     CPU (h_cbit) = opval;
   7605  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7606  1.1  christos   }
   7607  1.1  christos   {
   7608  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7609  1.1  christos     CPU (h_nbit) = opval;
   7610  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7611  1.1  christos   }
   7612  1.1  christos   {
   7613  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7614  1.1  christos     CPU (h_zbit) = opval;
   7615  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7616  1.1  christos   }
   7617  1.1  christos   {
   7618  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)));
   7619  1.1  christos     CPU (h_vbit) = opval;
   7620  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7621  1.1  christos   }
   7622  1.1  christos {
   7623  1.1  christos   {
   7624  1.1  christos     BI opval = 0;
   7625  1.1  christos     CPU (h_xbit) = opval;
   7626  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7627  1.1  christos   }
   7628  1.1  christos   {
   7629  1.1  christos     BI opval = 0;
   7630  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7631  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7632  1.1  christos   }
   7633  1.1  christos }
   7634  1.1  christos }
   7635  1.1  christos }
   7636  1.1  christos 
   7637  1.1  christos #undef FLD
   7638  1.1  christos }
   7639  1.1  christos   NEXT (vpc);
   7640  1.1  christos 
   7641  1.1  christos   CASE (sem, INSN_SUBS_W_R) : /* subs.w $Rs,$Rd */
   7642  1.1  christos {
   7643  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7644  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7645  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   7646  1.1  christos   int UNUSED written = 0;
   7647  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7648  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7649  1.1  christos 
   7650  1.1  christos {
   7651  1.1  christos   SI tmp_tmpopd;
   7652  1.1  christos   SI tmp_tmpops;
   7653  1.1  christos   BI tmp_carry;
   7654  1.1  christos   SI tmp_newval;
   7655  1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   7656  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7657  1.1  christos   tmp_carry = CPU (h_cbit);
   7658  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7659  1.1  christos   {
   7660  1.1  christos     SI opval = tmp_newval;
   7661  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7662  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7663  1.1  christos   }
   7664  1.1  christos {
   7665  1.1  christos   {
   7666  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))));
   7667  1.1  christos     CPU (h_cbit) = opval;
   7668  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7669  1.1  christos   }
   7670  1.1  christos   {
   7671  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7672  1.1  christos     CPU (h_nbit) = opval;
   7673  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7674  1.1  christos   }
   7675  1.1  christos   {
   7676  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7677  1.1  christos     CPU (h_zbit) = opval;
   7678  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7679  1.1  christos   }
   7680  1.1  christos   {
   7681  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)));
   7682  1.1  christos     CPU (h_vbit) = opval;
   7683  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7684  1.1  christos   }
   7685  1.1  christos {
   7686  1.1  christos   {
   7687  1.1  christos     BI opval = 0;
   7688  1.1  christos     CPU (h_xbit) = opval;
   7689  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7690  1.1  christos   }
   7691  1.1  christos   {
   7692  1.1  christos     BI opval = 0;
   7693  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7694  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7695  1.1  christos   }
   7696  1.1  christos }
   7697  1.1  christos }
   7698  1.1  christos }
   7699  1.1  christos 
   7700  1.1  christos #undef FLD
   7701  1.1  christos }
   7702  1.1  christos   NEXT (vpc);
   7703  1.1  christos 
   7704  1.1  christos   CASE (sem, INSN_SUBS_M_B_M) : /* subs-m.b [${Rs}${inc}],$Rd */
   7705  1.1  christos {
   7706  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7707  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7708  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7709  1.1  christos   int UNUSED written = 0;
   7710  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7711  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7712  1.1  christos 
   7713  1.1  christos {
   7714  1.1  christos   SI tmp_tmpopd;
   7715  1.1  christos   SI tmp_tmpops;
   7716  1.1  christos   BI tmp_carry;
   7717  1.1  christos   SI tmp_newval;
   7718  1.1  christos   tmp_tmpops = EXTQISI (({   SI tmp_addr;
   7719  1.1  christos   QI tmp_tmp_mem;
   7720  1.1  christos   BI tmp_postinc;
   7721  1.1  christos   tmp_postinc = FLD (f_memmode);
   7722  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7723  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   7724  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7725  1.1  christos {
   7726  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7727  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   7728  1.1  christos }
   7729  1.1  christos   {
   7730  1.1  christos     SI opval = tmp_addr;
   7731  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7732  1.1  christos     written |= (1 << 11);
   7733  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7734  1.1  christos   }
   7735  1.1  christos }
   7736  1.1  christos }
   7737  1.1  christos ; tmp_tmp_mem; }));
   7738  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7739  1.1  christos   tmp_carry = CPU (h_cbit);
   7740  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7741  1.1  christos   {
   7742  1.1  christos     SI opval = tmp_newval;
   7743  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7744  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7745  1.1  christos   }
   7746  1.1  christos {
   7747  1.1  christos   {
   7748  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))));
   7749  1.1  christos     CPU (h_cbit) = opval;
   7750  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7751  1.1  christos   }
   7752  1.1  christos   {
   7753  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7754  1.1  christos     CPU (h_nbit) = opval;
   7755  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7756  1.1  christos   }
   7757  1.1  christos   {
   7758  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7759  1.1  christos     CPU (h_zbit) = opval;
   7760  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7761  1.1  christos   }
   7762  1.1  christos   {
   7763  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)));
   7764  1.1  christos     CPU (h_vbit) = opval;
   7765  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7766  1.1  christos   }
   7767  1.1  christos {
   7768  1.1  christos   {
   7769  1.1  christos     BI opval = 0;
   7770  1.1  christos     CPU (h_xbit) = opval;
   7771  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7772  1.1  christos   }
   7773  1.1  christos   {
   7774  1.1  christos     BI opval = 0;
   7775  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7776  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7777  1.1  christos   }
   7778  1.1  christos }
   7779  1.1  christos }
   7780  1.1  christos }
   7781  1.1  christos 
   7782  1.1  christos   abuf->written = written;
   7783  1.1  christos #undef FLD
   7784  1.1  christos }
   7785  1.1  christos   NEXT (vpc);
   7786  1.1  christos 
   7787  1.1  christos   CASE (sem, INSN_SUBS_M_W_M) : /* subs-m.w [${Rs}${inc}],$Rd */
   7788  1.1  christos {
   7789  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7790  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7791  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7792  1.1  christos   int UNUSED written = 0;
   7793  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7794  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7795  1.1  christos 
   7796  1.1  christos {
   7797  1.1  christos   SI tmp_tmpopd;
   7798  1.1  christos   SI tmp_tmpops;
   7799  1.1  christos   BI tmp_carry;
   7800  1.1  christos   SI tmp_newval;
   7801  1.1  christos   tmp_tmpops = EXTHISI (({   SI tmp_addr;
   7802  1.1  christos   HI tmp_tmp_mem;
   7803  1.1  christos   BI tmp_postinc;
   7804  1.1  christos   tmp_postinc = FLD (f_memmode);
   7805  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7806  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   7807  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7808  1.1  christos {
   7809  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7810  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   7811  1.1  christos }
   7812  1.1  christos   {
   7813  1.1  christos     SI opval = tmp_addr;
   7814  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7815  1.1  christos     written |= (1 << 11);
   7816  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7817  1.1  christos   }
   7818  1.1  christos }
   7819  1.1  christos }
   7820  1.1  christos ; tmp_tmp_mem; }));
   7821  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7822  1.1  christos   tmp_carry = CPU (h_cbit);
   7823  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7824  1.1  christos   {
   7825  1.1  christos     SI opval = tmp_newval;
   7826  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7827  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7828  1.1  christos   }
   7829  1.1  christos {
   7830  1.1  christos   {
   7831  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))));
   7832  1.1  christos     CPU (h_cbit) = opval;
   7833  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7834  1.1  christos   }
   7835  1.1  christos   {
   7836  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7837  1.1  christos     CPU (h_nbit) = opval;
   7838  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7839  1.1  christos   }
   7840  1.1  christos   {
   7841  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7842  1.1  christos     CPU (h_zbit) = opval;
   7843  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7844  1.1  christos   }
   7845  1.1  christos   {
   7846  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)));
   7847  1.1  christos     CPU (h_vbit) = opval;
   7848  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7849  1.1  christos   }
   7850  1.1  christos {
   7851  1.1  christos   {
   7852  1.1  christos     BI opval = 0;
   7853  1.1  christos     CPU (h_xbit) = opval;
   7854  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7855  1.1  christos   }
   7856  1.1  christos   {
   7857  1.1  christos     BI opval = 0;
   7858  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7859  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7860  1.1  christos   }
   7861  1.1  christos }
   7862  1.1  christos }
   7863  1.1  christos }
   7864  1.1  christos 
   7865  1.1  christos   abuf->written = written;
   7866  1.1  christos #undef FLD
   7867  1.1  christos }
   7868  1.1  christos   NEXT (vpc);
   7869  1.1  christos 
   7870  1.1  christos   CASE (sem, INSN_SUBSCBR) : /* [${Rs}${inc}],$Rd */
   7871  1.1  christos {
   7872  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7873  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7874  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   7875  1.1  christos   int UNUSED written = 0;
   7876  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7877  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7878  1.1  christos 
   7879  1.1  christos {
   7880  1.1  christos   SI tmp_tmpopd;
   7881  1.1  christos   SI tmp_tmpops;
   7882  1.1  christos   BI tmp_carry;
   7883  1.1  christos   SI tmp_newval;
   7884  1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   7885  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7886  1.1  christos   tmp_carry = CPU (h_cbit);
   7887  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7888  1.1  christos   {
   7889  1.1  christos     SI opval = tmp_newval;
   7890  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7891  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7892  1.1  christos   }
   7893  1.1  christos {
   7894  1.1  christos   {
   7895  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))));
   7896  1.1  christos     CPU (h_cbit) = opval;
   7897  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7898  1.1  christos   }
   7899  1.1  christos   {
   7900  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7901  1.1  christos     CPU (h_nbit) = opval;
   7902  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7903  1.1  christos   }
   7904  1.1  christos   {
   7905  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7906  1.1  christos     CPU (h_zbit) = opval;
   7907  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7908  1.1  christos   }
   7909  1.1  christos   {
   7910  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)));
   7911  1.1  christos     CPU (h_vbit) = opval;
   7912  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7913  1.1  christos   }
   7914  1.1  christos {
   7915  1.1  christos   {
   7916  1.1  christos     BI opval = 0;
   7917  1.1  christos     CPU (h_xbit) = opval;
   7918  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7919  1.1  christos   }
   7920  1.1  christos   {
   7921  1.1  christos     BI opval = 0;
   7922  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7923  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7924  1.1  christos   }
   7925  1.1  christos }
   7926  1.1  christos }
   7927  1.1  christos }
   7928  1.1  christos 
   7929  1.1  christos #undef FLD
   7930  1.1  christos }
   7931  1.1  christos   NEXT (vpc);
   7932  1.1  christos 
   7933  1.1  christos   CASE (sem, INSN_SUBSCWR) : /* [${Rs}${inc}],$Rd */
   7934  1.1  christos {
   7935  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7936  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7937  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   7938  1.1  christos   int UNUSED written = 0;
   7939  1.1  christos   IADDR UNUSED pc = abuf->addr;
   7940  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7941  1.1  christos 
   7942  1.1  christos {
   7943  1.1  christos   SI tmp_tmpopd;
   7944  1.1  christos   SI tmp_tmpops;
   7945  1.1  christos   BI tmp_carry;
   7946  1.1  christos   SI tmp_newval;
   7947  1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   7948  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7949  1.1  christos   tmp_carry = CPU (h_cbit);
   7950  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7951  1.1  christos   {
   7952  1.1  christos     SI opval = tmp_newval;
   7953  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7954  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7955  1.1  christos   }
   7956  1.1  christos {
   7957  1.1  christos   {
   7958  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))));
   7959  1.1  christos     CPU (h_cbit) = opval;
   7960  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7961  1.1  christos   }
   7962  1.1  christos   {
   7963  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7964  1.1  christos     CPU (h_nbit) = opval;
   7965  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7966  1.1  christos   }
   7967  1.1  christos   {
   7968  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7969  1.1  christos     CPU (h_zbit) = opval;
   7970  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7971  1.1  christos   }
   7972  1.1  christos   {
   7973  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)));
   7974  1.1  christos     CPU (h_vbit) = opval;
   7975  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7976  1.1  christos   }
   7977  1.1  christos {
   7978  1.1  christos   {
   7979  1.1  christos     BI opval = 0;
   7980  1.1  christos     CPU (h_xbit) = opval;
   7981  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7982  1.1  christos   }
   7983  1.1  christos   {
   7984  1.1  christos     BI opval = 0;
   7985  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7986  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7987  1.1  christos   }
   7988  1.1  christos }
   7989  1.1  christos }
   7990  1.1  christos }
   7991  1.1  christos 
   7992  1.1  christos #undef FLD
   7993  1.1  christos }
   7994  1.1  christos   NEXT (vpc);
   7995  1.1  christos 
   7996  1.1  christos   CASE (sem, INSN_SUBU_B_R) : /* subu.b $Rs,$Rd */
   7997  1.1  christos {
   7998  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7999  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8000  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8001  1.1  christos   int UNUSED written = 0;
   8002  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8003  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8004  1.1  christos 
   8005  1.1  christos {
   8006  1.1  christos   SI tmp_tmpopd;
   8007  1.1  christos   SI tmp_tmpops;
   8008  1.1  christos   BI tmp_carry;
   8009  1.1  christos   SI tmp_newval;
   8010  1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   8011  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8012  1.1  christos   tmp_carry = CPU (h_cbit);
   8013  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8014  1.1  christos   {
   8015  1.1  christos     SI opval = tmp_newval;
   8016  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8017  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8018  1.1  christos   }
   8019  1.1  christos {
   8020  1.1  christos   {
   8021  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))));
   8022  1.1  christos     CPU (h_cbit) = opval;
   8023  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8024  1.1  christos   }
   8025  1.1  christos   {
   8026  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8027  1.1  christos     CPU (h_nbit) = opval;
   8028  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8029  1.1  christos   }
   8030  1.1  christos   {
   8031  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8032  1.1  christos     CPU (h_zbit) = opval;
   8033  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8034  1.1  christos   }
   8035  1.1  christos   {
   8036  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)));
   8037  1.1  christos     CPU (h_vbit) = opval;
   8038  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8039  1.1  christos   }
   8040  1.1  christos {
   8041  1.1  christos   {
   8042  1.1  christos     BI opval = 0;
   8043  1.1  christos     CPU (h_xbit) = opval;
   8044  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8045  1.1  christos   }
   8046  1.1  christos   {
   8047  1.1  christos     BI opval = 0;
   8048  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8049  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8050  1.1  christos   }
   8051  1.1  christos }
   8052  1.1  christos }
   8053  1.1  christos }
   8054  1.1  christos 
   8055  1.1  christos #undef FLD
   8056  1.1  christos }
   8057  1.1  christos   NEXT (vpc);
   8058  1.1  christos 
   8059  1.1  christos   CASE (sem, INSN_SUBU_W_R) : /* subu.w $Rs,$Rd */
   8060  1.1  christos {
   8061  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8062  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8063  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8064  1.1  christos   int UNUSED written = 0;
   8065  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8066  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8067  1.1  christos 
   8068  1.1  christos {
   8069  1.1  christos   SI tmp_tmpopd;
   8070  1.1  christos   SI tmp_tmpops;
   8071  1.1  christos   BI tmp_carry;
   8072  1.1  christos   SI tmp_newval;
   8073  1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   8074  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8075  1.1  christos   tmp_carry = CPU (h_cbit);
   8076  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8077  1.1  christos   {
   8078  1.1  christos     SI opval = tmp_newval;
   8079  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8080  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8081  1.1  christos   }
   8082  1.1  christos {
   8083  1.1  christos   {
   8084  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))));
   8085  1.1  christos     CPU (h_cbit) = opval;
   8086  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8087  1.1  christos   }
   8088  1.1  christos   {
   8089  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8090  1.1  christos     CPU (h_nbit) = opval;
   8091  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8092  1.1  christos   }
   8093  1.1  christos   {
   8094  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8095  1.1  christos     CPU (h_zbit) = opval;
   8096  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8097  1.1  christos   }
   8098  1.1  christos   {
   8099  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)));
   8100  1.1  christos     CPU (h_vbit) = opval;
   8101  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8102  1.1  christos   }
   8103  1.1  christos {
   8104  1.1  christos   {
   8105  1.1  christos     BI opval = 0;
   8106  1.1  christos     CPU (h_xbit) = opval;
   8107  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8108  1.1  christos   }
   8109  1.1  christos   {
   8110  1.1  christos     BI opval = 0;
   8111  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8112  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8113  1.1  christos   }
   8114  1.1  christos }
   8115  1.1  christos }
   8116  1.1  christos }
   8117  1.1  christos 
   8118  1.1  christos #undef FLD
   8119  1.1  christos }
   8120  1.1  christos   NEXT (vpc);
   8121  1.1  christos 
   8122  1.1  christos   CASE (sem, INSN_SUBU_M_B_M) : /* subu-m.b [${Rs}${inc}],$Rd */
   8123  1.1  christos {
   8124  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8125  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8126  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   8127  1.1  christos   int UNUSED written = 0;
   8128  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8129  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8130  1.1  christos 
   8131  1.1  christos {
   8132  1.1  christos   SI tmp_tmpopd;
   8133  1.1  christos   SI tmp_tmpops;
   8134  1.1  christos   BI tmp_carry;
   8135  1.1  christos   SI tmp_newval;
   8136  1.1  christos   tmp_tmpops = ZEXTQISI (({   SI tmp_addr;
   8137  1.1  christos   QI tmp_tmp_mem;
   8138  1.1  christos   BI tmp_postinc;
   8139  1.1  christos   tmp_postinc = FLD (f_memmode);
   8140  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   8141  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   8142  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   8143  1.1  christos {
   8144  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   8145  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   8146  1.1  christos }
   8147  1.1  christos   {
   8148  1.1  christos     SI opval = tmp_addr;
   8149  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8150  1.1  christos     written |= (1 << 11);
   8151  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8152  1.1  christos   }
   8153  1.1  christos }
   8154  1.1  christos }
   8155  1.1  christos ; tmp_tmp_mem; }));
   8156  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8157  1.1  christos   tmp_carry = CPU (h_cbit);
   8158  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8159  1.1  christos   {
   8160  1.1  christos     SI opval = tmp_newval;
   8161  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   8162  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8163  1.1  christos   }
   8164  1.1  christos {
   8165  1.1  christos   {
   8166  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))));
   8167  1.1  christos     CPU (h_cbit) = opval;
   8168  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8169  1.1  christos   }
   8170  1.1  christos   {
   8171  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8172  1.1  christos     CPU (h_nbit) = opval;
   8173  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8174  1.1  christos   }
   8175  1.1  christos   {
   8176  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8177  1.1  christos     CPU (h_zbit) = opval;
   8178  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8179  1.1  christos   }
   8180  1.1  christos   {
   8181  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)));
   8182  1.1  christos     CPU (h_vbit) = opval;
   8183  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8184  1.1  christos   }
   8185  1.1  christos {
   8186  1.1  christos   {
   8187  1.1  christos     BI opval = 0;
   8188  1.1  christos     CPU (h_xbit) = opval;
   8189  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8190  1.1  christos   }
   8191  1.1  christos   {
   8192  1.1  christos     BI opval = 0;
   8193  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8194  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8195  1.1  christos   }
   8196  1.1  christos }
   8197  1.1  christos }
   8198  1.1  christos }
   8199  1.1  christos 
   8200  1.1  christos   abuf->written = written;
   8201  1.1  christos #undef FLD
   8202  1.1  christos }
   8203  1.1  christos   NEXT (vpc);
   8204  1.1  christos 
   8205  1.1  christos   CASE (sem, INSN_SUBU_M_W_M) : /* subu-m.w [${Rs}${inc}],$Rd */
   8206  1.1  christos {
   8207  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8208  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8209  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   8210  1.1  christos   int UNUSED written = 0;
   8211  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8212  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8213  1.1  christos 
   8214  1.1  christos {
   8215  1.1  christos   SI tmp_tmpopd;
   8216  1.1  christos   SI tmp_tmpops;
   8217  1.1  christos   BI tmp_carry;
   8218  1.1  christos   SI tmp_newval;
   8219  1.1  christos   tmp_tmpops = ZEXTHISI (({   SI tmp_addr;
   8220  1.1  christos   HI tmp_tmp_mem;
   8221  1.1  christos   BI tmp_postinc;
   8222  1.1  christos   tmp_postinc = FLD (f_memmode);
   8223  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   8224  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   8225  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   8226  1.1  christos {
   8227  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   8228  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   8229  1.1  christos }
   8230  1.1  christos   {
   8231  1.1  christos     SI opval = tmp_addr;
   8232  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8233  1.1  christos     written |= (1 << 11);
   8234  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8235  1.1  christos   }
   8236  1.1  christos }
   8237  1.1  christos }
   8238  1.1  christos ; tmp_tmp_mem; }));
   8239  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8240  1.1  christos   tmp_carry = CPU (h_cbit);
   8241  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8242  1.1  christos   {
   8243  1.1  christos     SI opval = tmp_newval;
   8244  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   8245  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8246  1.1  christos   }
   8247  1.1  christos {
   8248  1.1  christos   {
   8249  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))));
   8250  1.1  christos     CPU (h_cbit) = opval;
   8251  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8252  1.1  christos   }
   8253  1.1  christos   {
   8254  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8255  1.1  christos     CPU (h_nbit) = opval;
   8256  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8257  1.1  christos   }
   8258  1.1  christos   {
   8259  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8260  1.1  christos     CPU (h_zbit) = opval;
   8261  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8262  1.1  christos   }
   8263  1.1  christos   {
   8264  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)));
   8265  1.1  christos     CPU (h_vbit) = opval;
   8266  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8267  1.1  christos   }
   8268  1.1  christos {
   8269  1.1  christos   {
   8270  1.1  christos     BI opval = 0;
   8271  1.1  christos     CPU (h_xbit) = opval;
   8272  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8273  1.1  christos   }
   8274  1.1  christos   {
   8275  1.1  christos     BI opval = 0;
   8276  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8277  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8278  1.1  christos   }
   8279  1.1  christos }
   8280  1.1  christos }
   8281  1.1  christos }
   8282  1.1  christos 
   8283  1.1  christos   abuf->written = written;
   8284  1.1  christos #undef FLD
   8285  1.1  christos }
   8286  1.1  christos   NEXT (vpc);
   8287  1.1  christos 
   8288  1.1  christos   CASE (sem, INSN_SUBUCBR) : /* [${Rs}${inc}],$Rd */
   8289  1.1  christos {
   8290  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8291  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8292  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   8293  1.1  christos   int UNUSED written = 0;
   8294  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8295  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   8296  1.1  christos 
   8297  1.1  christos {
   8298  1.1  christos   SI tmp_tmpopd;
   8299  1.1  christos   SI tmp_tmpops;
   8300  1.1  christos   BI tmp_carry;
   8301  1.1  christos   SI tmp_newval;
   8302  1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   8303  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8304  1.1  christos   tmp_carry = CPU (h_cbit);
   8305  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8306  1.1  christos   {
   8307  1.1  christos     SI opval = tmp_newval;
   8308  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8309  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8310  1.1  christos   }
   8311  1.1  christos {
   8312  1.1  christos   {
   8313  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))));
   8314  1.1  christos     CPU (h_cbit) = opval;
   8315  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8316  1.1  christos   }
   8317  1.1  christos   {
   8318  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8319  1.1  christos     CPU (h_nbit) = opval;
   8320  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8321  1.1  christos   }
   8322  1.1  christos   {
   8323  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8324  1.1  christos     CPU (h_zbit) = opval;
   8325  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8326  1.1  christos   }
   8327  1.1  christos   {
   8328  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)));
   8329  1.1  christos     CPU (h_vbit) = opval;
   8330  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8331  1.1  christos   }
   8332  1.1  christos {
   8333  1.1  christos   {
   8334  1.1  christos     BI opval = 0;
   8335  1.1  christos     CPU (h_xbit) = opval;
   8336  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8337  1.1  christos   }
   8338  1.1  christos   {
   8339  1.1  christos     BI opval = 0;
   8340  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8341  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8342  1.1  christos   }
   8343  1.1  christos }
   8344  1.1  christos }
   8345  1.1  christos }
   8346  1.1  christos 
   8347  1.1  christos #undef FLD
   8348  1.1  christos }
   8349  1.1  christos   NEXT (vpc);
   8350  1.1  christos 
   8351  1.1  christos   CASE (sem, INSN_SUBUCWR) : /* [${Rs}${inc}],$Rd */
   8352  1.1  christos {
   8353  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8354  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8355  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   8356  1.1  christos   int UNUSED written = 0;
   8357  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8358  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   8359  1.1  christos 
   8360  1.1  christos {
   8361  1.1  christos   SI tmp_tmpopd;
   8362  1.1  christos   SI tmp_tmpops;
   8363  1.1  christos   BI tmp_carry;
   8364  1.1  christos   SI tmp_newval;
   8365  1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   8366  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8367  1.1  christos   tmp_carry = CPU (h_cbit);
   8368  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8369  1.1  christos   {
   8370  1.1  christos     SI opval = tmp_newval;
   8371  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8372  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8373  1.1  christos   }
   8374  1.1  christos {
   8375  1.1  christos   {
   8376  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))));
   8377  1.1  christos     CPU (h_cbit) = opval;
   8378  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8379  1.1  christos   }
   8380  1.1  christos   {
   8381  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8382  1.1  christos     CPU (h_nbit) = opval;
   8383  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8384  1.1  christos   }
   8385  1.1  christos   {
   8386  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8387  1.1  christos     CPU (h_zbit) = opval;
   8388  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8389  1.1  christos   }
   8390  1.1  christos   {
   8391  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)));
   8392  1.1  christos     CPU (h_vbit) = opval;
   8393  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8394  1.1  christos   }
   8395  1.1  christos {
   8396  1.1  christos   {
   8397  1.1  christos     BI opval = 0;
   8398  1.1  christos     CPU (h_xbit) = opval;
   8399  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8400  1.1  christos   }
   8401  1.1  christos   {
   8402  1.1  christos     BI opval = 0;
   8403  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8404  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8405  1.1  christos   }
   8406  1.1  christos }
   8407  1.1  christos }
   8408  1.1  christos }
   8409  1.1  christos 
   8410  1.1  christos #undef FLD
   8411  1.1  christos }
   8412  1.1  christos   NEXT (vpc);
   8413  1.1  christos 
   8414  1.1  christos   CASE (sem, INSN_ADDC_R) : /* addc $Rs,$Rd */
   8415  1.1  christos {
   8416  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8417  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8418  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8419  1.1  christos   int UNUSED written = 0;
   8420  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8421  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8422  1.1  christos 
   8423  1.1  christos {
   8424  1.1  christos CPU (h_xbit) = 1;
   8425  1.1  christos {
   8426  1.1  christos   SI tmp_tmpopd;
   8427  1.1  christos   SI tmp_tmpops;
   8428  1.1  christos   BI tmp_carry;
   8429  1.1  christos   SI tmp_newval;
   8430  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8431  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8432  1.1  christos   tmp_carry = CPU (h_cbit);
   8433  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8434  1.1  christos   {
   8435  1.1  christos     SI opval = tmp_newval;
   8436  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8437  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8438  1.1  christos   }
   8439  1.1  christos {
   8440  1.1  christos   {
   8441  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))));
   8442  1.1  christos     CPU (h_cbit) = opval;
   8443  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8444  1.1  christos   }
   8445  1.1  christos   {
   8446  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8447  1.1  christos     CPU (h_nbit) = opval;
   8448  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8449  1.1  christos   }
   8450  1.1  christos   {
   8451  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8452  1.1  christos     CPU (h_zbit) = opval;
   8453  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8454  1.1  christos   }
   8455  1.1  christos   {
   8456  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)));
   8457  1.1  christos     CPU (h_vbit) = opval;
   8458  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8459  1.1  christos   }
   8460  1.1  christos {
   8461  1.1  christos   {
   8462  1.1  christos     BI opval = 0;
   8463  1.1  christos     CPU (h_xbit) = opval;
   8464  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8465  1.1  christos   }
   8466  1.1  christos   {
   8467  1.1  christos     BI opval = 0;
   8468  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8469  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8470  1.1  christos   }
   8471  1.1  christos }
   8472  1.1  christos }
   8473  1.1  christos }
   8474  1.1  christos }
   8475  1.1  christos 
   8476  1.1  christos #undef FLD
   8477  1.1  christos }
   8478  1.1  christos   NEXT (vpc);
   8479  1.1  christos 
   8480  1.1  christos   CASE (sem, INSN_ADDC_M) : /* addc [${Rs}${inc}],${Rd} */
   8481  1.1  christos {
   8482  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8483  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8484  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8485  1.1  christos   int UNUSED written = 0;
   8486  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8487  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8488  1.1  christos 
   8489  1.1  christos {
   8490  1.1  christos CPU (h_xbit) = 1;
   8491  1.1  christos {
   8492  1.1  christos   SI tmp_tmpopd;
   8493  1.1  christos   SI tmp_tmpops;
   8494  1.1  christos   BI tmp_carry;
   8495  1.1  christos   SI tmp_newval;
   8496  1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   8497  1.1  christos   SI tmp_tmp_mem;
   8498  1.1  christos   BI tmp_postinc;
   8499  1.1  christos   tmp_postinc = FLD (f_memmode);
   8500  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   8501  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   8502  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   8503  1.1  christos {
   8504  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   8505  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   8506  1.1  christos }
   8507  1.1  christos   {
   8508  1.1  christos     SI opval = tmp_addr;
   8509  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8510  1.1  christos     written |= (1 << 10);
   8511  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8512  1.1  christos   }
   8513  1.1  christos }
   8514  1.1  christos }
   8515  1.1  christos ; tmp_tmp_mem; });
   8516  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8517  1.1  christos   tmp_carry = CPU (h_cbit);
   8518  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8519  1.1  christos   {
   8520  1.1  christos     SI opval = tmp_newval;
   8521  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8522  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8523  1.1  christos   }
   8524  1.1  christos {
   8525  1.1  christos   {
   8526  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))));
   8527  1.1  christos     CPU (h_cbit) = opval;
   8528  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8529  1.1  christos   }
   8530  1.1  christos   {
   8531  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8532  1.1  christos     CPU (h_nbit) = opval;
   8533  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8534  1.1  christos   }
   8535  1.1  christos   {
   8536  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8537  1.1  christos     CPU (h_zbit) = opval;
   8538  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8539  1.1  christos   }
   8540  1.1  christos   {
   8541  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)));
   8542  1.1  christos     CPU (h_vbit) = opval;
   8543  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8544  1.1  christos   }
   8545  1.1  christos {
   8546  1.1  christos   {
   8547  1.1  christos     BI opval = 0;
   8548  1.1  christos     CPU (h_xbit) = opval;
   8549  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8550  1.1  christos   }
   8551  1.1  christos   {
   8552  1.1  christos     BI opval = 0;
   8553  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8554  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8555  1.1  christos   }
   8556  1.1  christos }
   8557  1.1  christos }
   8558  1.1  christos }
   8559  1.1  christos }
   8560  1.1  christos 
   8561  1.1  christos   abuf->written = written;
   8562  1.1  christos #undef FLD
   8563  1.1  christos }
   8564  1.1  christos   NEXT (vpc);
   8565  1.1  christos 
   8566  1.1  christos   CASE (sem, INSN_ADDC_C) : /* addc ${const32},${Rd} */
   8567  1.1  christos {
   8568  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8569  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8570  1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   8571  1.1  christos   int UNUSED written = 0;
   8572  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8573  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   8574  1.1  christos 
   8575  1.1  christos {
   8576  1.1  christos CPU (h_xbit) = 1;
   8577  1.1  christos {
   8578  1.1  christos   SI tmp_tmpopd;
   8579  1.1  christos   SI tmp_tmpops;
   8580  1.1  christos   BI tmp_carry;
   8581  1.1  christos   SI tmp_newval;
   8582  1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   8583  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8584  1.1  christos   tmp_carry = CPU (h_cbit);
   8585  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8586  1.1  christos   {
   8587  1.1  christos     SI opval = tmp_newval;
   8588  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8589  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8590  1.1  christos   }
   8591  1.1  christos {
   8592  1.1  christos   {
   8593  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))));
   8594  1.1  christos     CPU (h_cbit) = opval;
   8595  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8596  1.1  christos   }
   8597  1.1  christos   {
   8598  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8599  1.1  christos     CPU (h_nbit) = opval;
   8600  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8601  1.1  christos   }
   8602  1.1  christos   {
   8603  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8604  1.1  christos     CPU (h_zbit) = opval;
   8605  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8606  1.1  christos   }
   8607  1.1  christos   {
   8608  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)));
   8609  1.1  christos     CPU (h_vbit) = opval;
   8610  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8611  1.1  christos   }
   8612  1.1  christos {
   8613  1.1  christos   {
   8614  1.1  christos     BI opval = 0;
   8615  1.1  christos     CPU (h_xbit) = opval;
   8616  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8617  1.1  christos   }
   8618  1.1  christos   {
   8619  1.1  christos     BI opval = 0;
   8620  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8621  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8622  1.1  christos   }
   8623  1.1  christos }
   8624  1.1  christos }
   8625  1.1  christos }
   8626  1.1  christos }
   8627  1.1  christos 
   8628  1.1  christos #undef FLD
   8629  1.1  christos }
   8630  1.1  christos   NEXT (vpc);
   8631  1.1  christos 
   8632  1.1  christos   CASE (sem, INSN_LAPC_D) : /* lapc.d ${const32-pcrel},${Rd} */
   8633  1.1  christos {
   8634  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8635  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8636  1.1  christos #define FLD(f) abuf->fields.sfmt_lapc_d.f
   8637  1.1  christos   int UNUSED written = 0;
   8638  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8639  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   8640  1.1  christos 
   8641  1.1  christos {
   8642  1.1  christos   {
   8643  1.1  christos     SI opval = FLD (i_const32_pcrel);
   8644  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8645  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8646  1.1  christos   }
   8647  1.1  christos {
   8648  1.1  christos   {
   8649  1.1  christos     BI opval = 0;
   8650  1.1  christos     CPU (h_xbit) = opval;
   8651  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8652  1.1  christos   }
   8653  1.1  christos   {
   8654  1.1  christos     BI opval = 0;
   8655  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8656  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8657  1.1  christos   }
   8658  1.1  christos }
   8659  1.1  christos }
   8660  1.1  christos 
   8661  1.1  christos #undef FLD
   8662  1.1  christos }
   8663  1.1  christos   NEXT (vpc);
   8664  1.1  christos 
   8665  1.1  christos   CASE (sem, INSN_LAPCQ) : /* lapcq ${qo},${Rd} */
   8666  1.1  christos {
   8667  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8668  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8669  1.1  christos #define FLD(f) abuf->fields.sfmt_lapcq.f
   8670  1.1  christos   int UNUSED written = 0;
   8671  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8672  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8673  1.1  christos 
   8674  1.1  christos {
   8675  1.1  christos   {
   8676  1.1  christos     SI opval = FLD (i_qo);
   8677  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8678  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8679  1.1  christos   }
   8680  1.1  christos {
   8681  1.1  christos   {
   8682  1.1  christos     BI opval = 0;
   8683  1.1  christos     CPU (h_xbit) = opval;
   8684  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8685  1.1  christos   }
   8686  1.1  christos   {
   8687  1.1  christos     BI opval = 0;
   8688  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8689  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8690  1.1  christos   }
   8691  1.1  christos }
   8692  1.1  christos }
   8693  1.1  christos 
   8694  1.1  christos #undef FLD
   8695  1.1  christos }
   8696  1.1  christos   NEXT (vpc);
   8697  1.1  christos 
   8698  1.1  christos   CASE (sem, INSN_ADDI_B_R) : /* addi.b ${Rs-dfield}.m,${Rd-sfield} */
   8699  1.1  christos {
   8700  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8701  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8702  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8703  1.1  christos   int UNUSED written = 0;
   8704  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8705  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8706  1.1  christos 
   8707  1.1  christos {
   8708  1.1  christos   {
   8709  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
   8710  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8711  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8712  1.1  christos   }
   8713  1.1  christos {
   8714  1.1  christos   {
   8715  1.1  christos     BI opval = 0;
   8716  1.1  christos     CPU (h_xbit) = opval;
   8717  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8718  1.1  christos   }
   8719  1.1  christos   {
   8720  1.1  christos     BI opval = 0;
   8721  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8722  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8723  1.1  christos   }
   8724  1.1  christos }
   8725  1.1  christos }
   8726  1.1  christos 
   8727  1.1  christos #undef FLD
   8728  1.1  christos }
   8729  1.1  christos   NEXT (vpc);
   8730  1.1  christos 
   8731  1.1  christos   CASE (sem, INSN_ADDI_W_R) : /* addi.w ${Rs-dfield}.m,${Rd-sfield} */
   8732  1.1  christos {
   8733  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8734  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8735  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8736  1.1  christos   int UNUSED written = 0;
   8737  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8738  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8739  1.1  christos 
   8740  1.1  christos {
   8741  1.1  christos   {
   8742  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
   8743  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8744  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8745  1.1  christos   }
   8746  1.1  christos {
   8747  1.1  christos   {
   8748  1.1  christos     BI opval = 0;
   8749  1.1  christos     CPU (h_xbit) = opval;
   8750  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8751  1.1  christos   }
   8752  1.1  christos   {
   8753  1.1  christos     BI opval = 0;
   8754  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8755  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8756  1.1  christos   }
   8757  1.1  christos }
   8758  1.1  christos }
   8759  1.1  christos 
   8760  1.1  christos #undef FLD
   8761  1.1  christos }
   8762  1.1  christos   NEXT (vpc);
   8763  1.1  christos 
   8764  1.1  christos   CASE (sem, INSN_ADDI_D_R) : /* addi.d ${Rs-dfield}.m,${Rd-sfield} */
   8765  1.1  christos {
   8766  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8767  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8768  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8769  1.1  christos   int UNUSED written = 0;
   8770  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8771  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8772  1.1  christos 
   8773  1.1  christos {
   8774  1.1  christos   {
   8775  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
   8776  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8777  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8778  1.1  christos   }
   8779  1.1  christos {
   8780  1.1  christos   {
   8781  1.1  christos     BI opval = 0;
   8782  1.1  christos     CPU (h_xbit) = opval;
   8783  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8784  1.1  christos   }
   8785  1.1  christos   {
   8786  1.1  christos     BI opval = 0;
   8787  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8788  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8789  1.1  christos   }
   8790  1.1  christos }
   8791  1.1  christos }
   8792  1.1  christos 
   8793  1.1  christos #undef FLD
   8794  1.1  christos }
   8795  1.1  christos   NEXT (vpc);
   8796  1.1  christos 
   8797  1.1  christos   CASE (sem, INSN_NEG_B_R) : /* neg.b $Rs,$Rd */
   8798  1.1  christos {
   8799  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8800  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8801  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8802  1.1  christos   int UNUSED written = 0;
   8803  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8804  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8805  1.1  christos 
   8806  1.1  christos {
   8807  1.1  christos   QI tmp_tmpopd;
   8808  1.1  christos   QI tmp_tmpops;
   8809  1.1  christos   BI tmp_carry;
   8810  1.1  christos   QI tmp_newval;
   8811  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8812  1.1  christos   tmp_tmpopd = 0;
   8813  1.1  christos   tmp_carry = CPU (h_cbit);
   8814  1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8815  1.1  christos {
   8816  1.1  christos   SI tmp_oldregval;
   8817  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   8818  1.1  christos   {
   8819  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   8820  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8821  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8822  1.1  christos   }
   8823  1.1  christos }
   8824  1.1  christos {
   8825  1.1  christos   {
   8826  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))));
   8827  1.1  christos     CPU (h_cbit) = opval;
   8828  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8829  1.1  christos   }
   8830  1.1  christos   {
   8831  1.1  christos     BI opval = LTQI (tmp_newval, 0);
   8832  1.1  christos     CPU (h_nbit) = opval;
   8833  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8834  1.1  christos   }
   8835  1.1  christos   {
   8836  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8837  1.1  christos     CPU (h_zbit) = opval;
   8838  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8839  1.1  christos   }
   8840  1.1  christos   {
   8841  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)));
   8842  1.1  christos     CPU (h_vbit) = opval;
   8843  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8844  1.1  christos   }
   8845  1.1  christos {
   8846  1.1  christos   {
   8847  1.1  christos     BI opval = 0;
   8848  1.1  christos     CPU (h_xbit) = opval;
   8849  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8850  1.1  christos   }
   8851  1.1  christos   {
   8852  1.1  christos     BI opval = 0;
   8853  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8854  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8855  1.1  christos   }
   8856  1.1  christos }
   8857  1.1  christos }
   8858  1.1  christos }
   8859  1.1  christos 
   8860  1.1  christos #undef FLD
   8861  1.1  christos }
   8862  1.1  christos   NEXT (vpc);
   8863  1.1  christos 
   8864  1.1  christos   CASE (sem, INSN_NEG_W_R) : /* neg.w $Rs,$Rd */
   8865  1.1  christos {
   8866  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8867  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8868  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8869  1.1  christos   int UNUSED written = 0;
   8870  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8871  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8872  1.1  christos 
   8873  1.1  christos {
   8874  1.1  christos   HI tmp_tmpopd;
   8875  1.1  christos   HI tmp_tmpops;
   8876  1.1  christos   BI tmp_carry;
   8877  1.1  christos   HI tmp_newval;
   8878  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8879  1.1  christos   tmp_tmpopd = 0;
   8880  1.1  christos   tmp_carry = CPU (h_cbit);
   8881  1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8882  1.1  christos {
   8883  1.1  christos   SI tmp_oldregval;
   8884  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   8885  1.1  christos   {
   8886  1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   8887  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8888  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8889  1.1  christos   }
   8890  1.1  christos }
   8891  1.1  christos {
   8892  1.1  christos   {
   8893  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))));
   8894  1.1  christos     CPU (h_cbit) = opval;
   8895  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8896  1.1  christos   }
   8897  1.1  christos   {
   8898  1.1  christos     BI opval = LTHI (tmp_newval, 0);
   8899  1.1  christos     CPU (h_nbit) = opval;
   8900  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8901  1.1  christos   }
   8902  1.1  christos   {
   8903  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8904  1.1  christos     CPU (h_zbit) = opval;
   8905  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8906  1.1  christos   }
   8907  1.1  christos   {
   8908  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)));
   8909  1.1  christos     CPU (h_vbit) = opval;
   8910  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8911  1.1  christos   }
   8912  1.1  christos {
   8913  1.1  christos   {
   8914  1.1  christos     BI opval = 0;
   8915  1.1  christos     CPU (h_xbit) = opval;
   8916  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8917  1.1  christos   }
   8918  1.1  christos   {
   8919  1.1  christos     BI opval = 0;
   8920  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8921  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8922  1.1  christos   }
   8923  1.1  christos }
   8924  1.1  christos }
   8925  1.1  christos }
   8926  1.1  christos 
   8927  1.1  christos #undef FLD
   8928  1.1  christos }
   8929  1.1  christos   NEXT (vpc);
   8930  1.1  christos 
   8931  1.1  christos   CASE (sem, INSN_NEG_D_R) : /* neg.d $Rs,$Rd */
   8932  1.1  christos {
   8933  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8934  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8935  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8936  1.1  christos   int UNUSED written = 0;
   8937  1.1  christos   IADDR UNUSED pc = abuf->addr;
   8938  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8939  1.1  christos 
   8940  1.1  christos {
   8941  1.1  christos   SI tmp_tmpopd;
   8942  1.1  christos   SI tmp_tmpops;
   8943  1.1  christos   BI tmp_carry;
   8944  1.1  christos   SI tmp_newval;
   8945  1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8946  1.1  christos   tmp_tmpopd = 0;
   8947  1.1  christos   tmp_carry = CPU (h_cbit);
   8948  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8949  1.1  christos   {
   8950  1.1  christos     SI opval = tmp_newval;
   8951  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8952  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8953  1.1  christos   }
   8954  1.1  christos {
   8955  1.1  christos   {
   8956  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))));
   8957  1.1  christos     CPU (h_cbit) = opval;
   8958  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8959  1.1  christos   }
   8960  1.1  christos   {
   8961  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8962  1.1  christos     CPU (h_nbit) = opval;
   8963  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8964  1.1  christos   }
   8965  1.1  christos   {
   8966  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8967  1.1  christos     CPU (h_zbit) = opval;
   8968  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8969  1.1  christos   }
   8970  1.1  christos   {
   8971  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)));
   8972  1.1  christos     CPU (h_vbit) = opval;
   8973  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8974  1.1  christos   }
   8975  1.1  christos {
   8976  1.1  christos   {
   8977  1.1  christos     BI opval = 0;
   8978  1.1  christos     CPU (h_xbit) = opval;
   8979  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8980  1.1  christos   }
   8981  1.1  christos   {
   8982  1.1  christos     BI opval = 0;
   8983  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8984  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8985  1.1  christos   }
   8986  1.1  christos }
   8987  1.1  christos }
   8988  1.1  christos }
   8989  1.1  christos 
   8990  1.1  christos #undef FLD
   8991  1.1  christos }
   8992  1.1  christos   NEXT (vpc);
   8993  1.1  christos 
   8994  1.1  christos   CASE (sem, INSN_TEST_M_B_M) : /* test-m.b [${Rs}${inc}] */
   8995  1.1  christos {
   8996  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8997  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8998  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   8999  1.1  christos   int UNUSED written = 0;
   9000  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9001  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9002  1.1  christos 
   9003  1.1  christos {
   9004  1.1  christos   QI tmp_tmpd;
   9005  1.1  christos   tmp_tmpd = ({   SI tmp_addr;
   9006  1.1  christos   QI tmp_tmp_mem;
   9007  1.1  christos   BI tmp_postinc;
   9008  1.1  christos   tmp_postinc = FLD (f_memmode);
   9009  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9010  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   9011  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   9012  1.1  christos {
   9013  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9014  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   9015  1.1  christos }
   9016  1.1  christos   {
   9017  1.1  christos     SI opval = tmp_addr;
   9018  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9019  1.1  christos     written |= (1 << 8);
   9020  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9021  1.1  christos   }
   9022  1.1  christos }
   9023  1.1  christos }
   9024  1.1  christos ; tmp_tmp_mem; });
   9025  1.1  christos {
   9026  1.1  christos   QI tmp_tmpopd;
   9027  1.1  christos   QI tmp_tmpops;
   9028  1.1  christos   BI tmp_carry;
   9029  1.1  christos   QI tmp_newval;
   9030  1.1  christos   tmp_tmpops = 0;
   9031  1.1  christos   tmp_tmpopd = tmp_tmpd;
   9032  1.1  christos   tmp_carry = CPU (h_cbit);
   9033  1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9034  1.1  christos ((void) 0); /*nop*/
   9035  1.1  christos {
   9036  1.1  christos   {
   9037  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))));
   9038  1.1  christos     CPU (h_cbit) = opval;
   9039  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9040  1.1  christos   }
   9041  1.1  christos   {
   9042  1.1  christos     BI opval = LTQI (tmp_newval, 0);
   9043  1.1  christos     CPU (h_nbit) = opval;
   9044  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9045  1.1  christos   }
   9046  1.1  christos   {
   9047  1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9048  1.1  christos     CPU (h_zbit) = opval;
   9049  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9050  1.1  christos   }
   9051  1.1  christos   {
   9052  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)));
   9053  1.1  christos     CPU (h_vbit) = opval;
   9054  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9055  1.1  christos   }
   9056  1.1  christos {
   9057  1.1  christos   {
   9058  1.1  christos     BI opval = 0;
   9059  1.1  christos     CPU (h_xbit) = opval;
   9060  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9061  1.1  christos   }
   9062  1.1  christos   {
   9063  1.1  christos     BI opval = 0;
   9064  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9065  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9066  1.1  christos   }
   9067  1.1  christos }
   9068  1.1  christos }
   9069  1.1  christos }
   9070  1.1  christos }
   9071  1.1  christos 
   9072  1.1  christos   abuf->written = written;
   9073  1.1  christos #undef FLD
   9074  1.1  christos }
   9075  1.1  christos   NEXT (vpc);
   9076  1.1  christos 
   9077  1.1  christos   CASE (sem, INSN_TEST_M_W_M) : /* test-m.w [${Rs}${inc}] */
   9078  1.1  christos {
   9079  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9080  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9081  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   9082  1.1  christos   int UNUSED written = 0;
   9083  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9084  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9085  1.1  christos 
   9086  1.1  christos {
   9087  1.1  christos   HI tmp_tmpd;
   9088  1.1  christos   tmp_tmpd = ({   SI tmp_addr;
   9089  1.1  christos   HI tmp_tmp_mem;
   9090  1.1  christos   BI tmp_postinc;
   9091  1.1  christos   tmp_postinc = FLD (f_memmode);
   9092  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9093  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   9094  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   9095  1.1  christos {
   9096  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9097  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   9098  1.1  christos }
   9099  1.1  christos   {
   9100  1.1  christos     SI opval = tmp_addr;
   9101  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9102  1.1  christos     written |= (1 << 8);
   9103  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9104  1.1  christos   }
   9105  1.1  christos }
   9106  1.1  christos }
   9107  1.1  christos ; tmp_tmp_mem; });
   9108  1.1  christos {
   9109  1.1  christos   HI tmp_tmpopd;
   9110  1.1  christos   HI tmp_tmpops;
   9111  1.1  christos   BI tmp_carry;
   9112  1.1  christos   HI tmp_newval;
   9113  1.1  christos   tmp_tmpops = 0;
   9114  1.1  christos   tmp_tmpopd = tmp_tmpd;
   9115  1.1  christos   tmp_carry = CPU (h_cbit);
   9116  1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9117  1.1  christos ((void) 0); /*nop*/
   9118  1.1  christos {
   9119  1.1  christos   {
   9120  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))));
   9121  1.1  christos     CPU (h_cbit) = opval;
   9122  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9123  1.1  christos   }
   9124  1.1  christos   {
   9125  1.1  christos     BI opval = LTHI (tmp_newval, 0);
   9126  1.1  christos     CPU (h_nbit) = opval;
   9127  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9128  1.1  christos   }
   9129  1.1  christos   {
   9130  1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9131  1.1  christos     CPU (h_zbit) = opval;
   9132  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9133  1.1  christos   }
   9134  1.1  christos   {
   9135  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)));
   9136  1.1  christos     CPU (h_vbit) = opval;
   9137  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9138  1.1  christos   }
   9139  1.1  christos {
   9140  1.1  christos   {
   9141  1.1  christos     BI opval = 0;
   9142  1.1  christos     CPU (h_xbit) = opval;
   9143  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9144  1.1  christos   }
   9145  1.1  christos   {
   9146  1.1  christos     BI opval = 0;
   9147  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9148  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9149  1.1  christos   }
   9150  1.1  christos }
   9151  1.1  christos }
   9152  1.1  christos }
   9153  1.1  christos }
   9154  1.1  christos 
   9155  1.1  christos   abuf->written = written;
   9156  1.1  christos #undef FLD
   9157  1.1  christos }
   9158  1.1  christos   NEXT (vpc);
   9159  1.1  christos 
   9160  1.1  christos   CASE (sem, INSN_TEST_M_D_M) : /* test-m.d [${Rs}${inc}] */
   9161  1.1  christos {
   9162  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9163  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9164  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   9165  1.1  christos   int UNUSED written = 0;
   9166  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9167  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9168  1.1  christos 
   9169  1.1  christos {
   9170  1.1  christos   SI tmp_tmpd;
   9171  1.1  christos   tmp_tmpd = ({   SI tmp_addr;
   9172  1.1  christos   SI tmp_tmp_mem;
   9173  1.1  christos   BI tmp_postinc;
   9174  1.1  christos   tmp_postinc = FLD (f_memmode);
   9175  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9176  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   9177  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   9178  1.1  christos {
   9179  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9180  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   9181  1.1  christos }
   9182  1.1  christos   {
   9183  1.1  christos     SI opval = tmp_addr;
   9184  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9185  1.1  christos     written |= (1 << 8);
   9186  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9187  1.1  christos   }
   9188  1.1  christos }
   9189  1.1  christos }
   9190  1.1  christos ; tmp_tmp_mem; });
   9191  1.1  christos {
   9192  1.1  christos   SI tmp_tmpopd;
   9193  1.1  christos   SI tmp_tmpops;
   9194  1.1  christos   BI tmp_carry;
   9195  1.1  christos   SI tmp_newval;
   9196  1.1  christos   tmp_tmpops = 0;
   9197  1.1  christos   tmp_tmpopd = tmp_tmpd;
   9198  1.1  christos   tmp_carry = CPU (h_cbit);
   9199  1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9200  1.1  christos ((void) 0); /*nop*/
   9201  1.1  christos {
   9202  1.1  christos   {
   9203  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))));
   9204  1.1  christos     CPU (h_cbit) = opval;
   9205  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9206  1.1  christos   }
   9207  1.1  christos   {
   9208  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   9209  1.1  christos     CPU (h_nbit) = opval;
   9210  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9211  1.1  christos   }
   9212  1.1  christos   {
   9213  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9214  1.1  christos     CPU (h_zbit) = opval;
   9215  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9216  1.1  christos   }
   9217  1.1  christos   {
   9218  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)));
   9219  1.1  christos     CPU (h_vbit) = opval;
   9220  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9221  1.1  christos   }
   9222  1.1  christos {
   9223  1.1  christos   {
   9224  1.1  christos     BI opval = 0;
   9225  1.1  christos     CPU (h_xbit) = opval;
   9226  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9227  1.1  christos   }
   9228  1.1  christos   {
   9229  1.1  christos     BI opval = 0;
   9230  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9231  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9232  1.1  christos   }
   9233  1.1  christos }
   9234  1.1  christos }
   9235  1.1  christos }
   9236  1.1  christos }
   9237  1.1  christos 
   9238  1.1  christos   abuf->written = written;
   9239  1.1  christos #undef FLD
   9240  1.1  christos }
   9241  1.1  christos   NEXT (vpc);
   9242  1.1  christos 
   9243  1.1  christos   CASE (sem, INSN_MOVE_R_M_B_M) : /* move-r-m.b ${Rs-dfield},[${Rd-sfield}${inc}] */
   9244  1.1  christos {
   9245  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9246  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9247  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   9248  1.1  christos   int UNUSED written = 0;
   9249  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9250  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9251  1.1  christos 
   9252  1.1  christos {
   9253  1.1  christos   QI tmp_tmpd;
   9254  1.1  christos   tmp_tmpd = GET_H_GR (FLD (f_operand2));
   9255  1.1  christos {
   9256  1.1  christos   SI tmp_addr;
   9257  1.1  christos   BI tmp_postinc;
   9258  1.1  christos   tmp_postinc = FLD (f_memmode);
   9259  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9260  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   9261  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   9262  1.1  christos {
   9263  1.1  christos   {
   9264  1.1  christos     QI opval = tmp_tmpd;
   9265  1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   9266  1.1  christos     written |= (1 << 10);
   9267  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9268  1.1  christos   }
   9269  1.1  christos   {
   9270  1.1  christos     BI opval = CPU (h_pbit);
   9271  1.1  christos     CPU (h_cbit) = opval;
   9272  1.1  christos     written |= (1 << 9);
   9273  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9274  1.1  christos   }
   9275  1.1  christos }
   9276  1.1  christos } else {
   9277  1.1  christos   {
   9278  1.1  christos     BI opval = 1;
   9279  1.1  christos     CPU (h_cbit) = opval;
   9280  1.1  christos     written |= (1 << 9);
   9281  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9282  1.1  christos   }
   9283  1.1  christos }
   9284  1.1  christos } else {
   9285  1.1  christos   {
   9286  1.1  christos     QI opval = tmp_tmpd;
   9287  1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   9288  1.1  christos     written |= (1 << 10);
   9289  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9290  1.1  christos   }
   9291  1.1  christos }
   9292  1.1  christos if (NEBI (tmp_postinc, 0)) {
   9293  1.1  christos {
   9294  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9295  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   9296  1.1  christos }
   9297  1.1  christos   {
   9298  1.1  christos     SI opval = tmp_addr;
   9299  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9300  1.1  christos     written |= (1 << 8);
   9301  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9302  1.1  christos   }
   9303  1.1  christos }
   9304  1.1  christos }
   9305  1.1  christos }
   9306  1.1  christos {
   9307  1.1  christos   {
   9308  1.1  christos     BI opval = 0;
   9309  1.1  christos     CPU (h_xbit) = opval;
   9310  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9311  1.1  christos   }
   9312  1.1  christos   {
   9313  1.1  christos     BI opval = 0;
   9314  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9315  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9316  1.1  christos   }
   9317  1.1  christos }
   9318  1.1  christos }
   9319  1.1  christos 
   9320  1.1  christos   abuf->written = written;
   9321  1.1  christos #undef FLD
   9322  1.1  christos }
   9323  1.1  christos   NEXT (vpc);
   9324  1.1  christos 
   9325  1.1  christos   CASE (sem, INSN_MOVE_R_M_W_M) : /* move-r-m.w ${Rs-dfield},[${Rd-sfield}${inc}] */
   9326  1.1  christos {
   9327  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9328  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9329  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   9330  1.1  christos   int UNUSED written = 0;
   9331  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9332  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9333  1.1  christos 
   9334  1.1  christos {
   9335  1.1  christos   HI tmp_tmpd;
   9336  1.1  christos   tmp_tmpd = GET_H_GR (FLD (f_operand2));
   9337  1.1  christos {
   9338  1.1  christos   SI tmp_addr;
   9339  1.1  christos   BI tmp_postinc;
   9340  1.1  christos   tmp_postinc = FLD (f_memmode);
   9341  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9342  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   9343  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   9344  1.1  christos {
   9345  1.1  christos   {
   9346  1.1  christos     HI opval = tmp_tmpd;
   9347  1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   9348  1.1  christos     written |= (1 << 10);
   9349  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9350  1.1  christos   }
   9351  1.1  christos   {
   9352  1.1  christos     BI opval = CPU (h_pbit);
   9353  1.1  christos     CPU (h_cbit) = opval;
   9354  1.1  christos     written |= (1 << 9);
   9355  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9356  1.1  christos   }
   9357  1.1  christos }
   9358  1.1  christos } else {
   9359  1.1  christos   {
   9360  1.1  christos     BI opval = 1;
   9361  1.1  christos     CPU (h_cbit) = opval;
   9362  1.1  christos     written |= (1 << 9);
   9363  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9364  1.1  christos   }
   9365  1.1  christos }
   9366  1.1  christos } else {
   9367  1.1  christos   {
   9368  1.1  christos     HI opval = tmp_tmpd;
   9369  1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   9370  1.1  christos     written |= (1 << 10);
   9371  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9372  1.1  christos   }
   9373  1.1  christos }
   9374  1.1  christos if (NEBI (tmp_postinc, 0)) {
   9375  1.1  christos {
   9376  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9377  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   9378  1.1  christos }
   9379  1.1  christos   {
   9380  1.1  christos     SI opval = tmp_addr;
   9381  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9382  1.1  christos     written |= (1 << 8);
   9383  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9384  1.1  christos   }
   9385  1.1  christos }
   9386  1.1  christos }
   9387  1.1  christos }
   9388  1.1  christos {
   9389  1.1  christos   {
   9390  1.1  christos     BI opval = 0;
   9391  1.1  christos     CPU (h_xbit) = opval;
   9392  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9393  1.1  christos   }
   9394  1.1  christos   {
   9395  1.1  christos     BI opval = 0;
   9396  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9397  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9398  1.1  christos   }
   9399  1.1  christos }
   9400  1.1  christos }
   9401  1.1  christos 
   9402  1.1  christos   abuf->written = written;
   9403  1.1  christos #undef FLD
   9404  1.1  christos }
   9405  1.1  christos   NEXT (vpc);
   9406  1.1  christos 
   9407  1.1  christos   CASE (sem, INSN_MOVE_R_M_D_M) : /* move-r-m.d ${Rs-dfield},[${Rd-sfield}${inc}] */
   9408  1.1  christos {
   9409  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9410  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9411  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   9412  1.1  christos   int UNUSED written = 0;
   9413  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9414  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9415  1.1  christos 
   9416  1.1  christos {
   9417  1.1  christos   SI tmp_tmpd;
   9418  1.1  christos   tmp_tmpd = GET_H_GR (FLD (f_operand2));
   9419  1.1  christos {
   9420  1.1  christos   SI tmp_addr;
   9421  1.1  christos   BI tmp_postinc;
   9422  1.1  christos   tmp_postinc = FLD (f_memmode);
   9423  1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9424  1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   9425  1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   9426  1.1  christos {
   9427  1.1  christos   {
   9428  1.1  christos     SI opval = tmp_tmpd;
   9429  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   9430  1.1  christos     written |= (1 << 10);
   9431  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9432  1.1  christos   }
   9433  1.1  christos   {
   9434  1.1  christos     BI opval = CPU (h_pbit);
   9435  1.1  christos     CPU (h_cbit) = opval;
   9436  1.1  christos     written |= (1 << 9);
   9437  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9438  1.1  christos   }
   9439  1.1  christos }
   9440  1.1  christos } else {
   9441  1.1  christos   {
   9442  1.1  christos     BI opval = 1;
   9443  1.1  christos     CPU (h_cbit) = opval;
   9444  1.1  christos     written |= (1 << 9);
   9445  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9446  1.1  christos   }
   9447  1.1  christos }
   9448  1.1  christos } else {
   9449  1.1  christos   {
   9450  1.1  christos     SI opval = tmp_tmpd;
   9451  1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   9452  1.1  christos     written |= (1 << 10);
   9453  1.1  christos     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9454  1.1  christos   }
   9455  1.1  christos }
   9456  1.1  christos if (NEBI (tmp_postinc, 0)) {
   9457  1.1  christos {
   9458  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9459  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   9460  1.1  christos }
   9461  1.1  christos   {
   9462  1.1  christos     SI opval = tmp_addr;
   9463  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9464  1.1  christos     written |= (1 << 8);
   9465  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9466  1.1  christos   }
   9467  1.1  christos }
   9468  1.1  christos }
   9469  1.1  christos }
   9470  1.1  christos {
   9471  1.1  christos   {
   9472  1.1  christos     BI opval = 0;
   9473  1.1  christos     CPU (h_xbit) = opval;
   9474  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9475  1.1  christos   }
   9476  1.1  christos   {
   9477  1.1  christos     BI opval = 0;
   9478  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9479  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9480  1.1  christos   }
   9481  1.1  christos }
   9482  1.1  christos }
   9483  1.1  christos 
   9484  1.1  christos   abuf->written = written;
   9485  1.1  christos #undef FLD
   9486  1.1  christos }
   9487  1.1  christos   NEXT (vpc);
   9488  1.1  christos 
   9489  1.1  christos   CASE (sem, INSN_MULS_B) : /* muls.b $Rs,$Rd */
   9490  1.1  christos {
   9491  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9492  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9493  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9494  1.1  christos   int UNUSED written = 0;
   9495  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9496  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9497  1.1  christos 
   9498  1.1  christos {
   9499  1.1  christos   DI tmp_src1;
   9500  1.1  christos   DI tmp_src2;
   9501  1.1  christos   DI tmp_tmpr;
   9502  1.1  christos   tmp_src1 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   9503  1.1  christos   tmp_src2 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
   9504  1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9505  1.1  christos   {
   9506  1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9507  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9508  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9509  1.1  christos   }
   9510  1.1  christos   {
   9511  1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9512  1.1  christos     SET_H_SR (((UINT) 7), opval);
   9513  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9514  1.1  christos   }
   9515  1.1  christos {
   9516  1.1  christos   {
   9517  1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9518  1.1  christos     CPU (h_cbit) = opval;
   9519  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9520  1.1  christos   }
   9521  1.1  christos   {
   9522  1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9523  1.1  christos     CPU (h_nbit) = opval;
   9524  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9525  1.1  christos   }
   9526  1.1  christos   {
   9527  1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9528  1.1  christos     CPU (h_zbit) = opval;
   9529  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9530  1.1  christos   }
   9531  1.1  christos   {
   9532  1.1  christos     BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
   9533  1.1  christos     CPU (h_vbit) = opval;
   9534  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9535  1.1  christos   }
   9536  1.1  christos {
   9537  1.1  christos   {
   9538  1.1  christos     BI opval = 0;
   9539  1.1  christos     CPU (h_xbit) = opval;
   9540  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9541  1.1  christos   }
   9542  1.1  christos   {
   9543  1.1  christos     BI opval = 0;
   9544  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9545  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9546  1.1  christos   }
   9547  1.1  christos }
   9548  1.1  christos }
   9549  1.1  christos }
   9550  1.1  christos 
   9551  1.1  christos #undef FLD
   9552  1.1  christos }
   9553  1.1  christos   NEXT (vpc);
   9554  1.1  christos 
   9555  1.1  christos   CASE (sem, INSN_MULS_W) : /* muls.w $Rs,$Rd */
   9556  1.1  christos {
   9557  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9558  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9559  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9560  1.1  christos   int UNUSED written = 0;
   9561  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9562  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9563  1.1  christos 
   9564  1.1  christos {
   9565  1.1  christos   DI tmp_src1;
   9566  1.1  christos   DI tmp_src2;
   9567  1.1  christos   DI tmp_tmpr;
   9568  1.1  christos   tmp_src1 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   9569  1.1  christos   tmp_src2 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
   9570  1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9571  1.1  christos   {
   9572  1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9573  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9574  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9575  1.1  christos   }
   9576  1.1  christos   {
   9577  1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9578  1.1  christos     SET_H_SR (((UINT) 7), opval);
   9579  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9580  1.1  christos   }
   9581  1.1  christos {
   9582  1.1  christos   {
   9583  1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9584  1.1  christos     CPU (h_cbit) = opval;
   9585  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9586  1.1  christos   }
   9587  1.1  christos   {
   9588  1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9589  1.1  christos     CPU (h_nbit) = opval;
   9590  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9591  1.1  christos   }
   9592  1.1  christos   {
   9593  1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9594  1.1  christos     CPU (h_zbit) = opval;
   9595  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9596  1.1  christos   }
   9597  1.1  christos   {
   9598  1.1  christos     BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
   9599  1.1  christos     CPU (h_vbit) = opval;
   9600  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9601  1.1  christos   }
   9602  1.1  christos {
   9603  1.1  christos   {
   9604  1.1  christos     BI opval = 0;
   9605  1.1  christos     CPU (h_xbit) = opval;
   9606  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9607  1.1  christos   }
   9608  1.1  christos   {
   9609  1.1  christos     BI opval = 0;
   9610  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9611  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9612  1.1  christos   }
   9613  1.1  christos }
   9614  1.1  christos }
   9615  1.1  christos }
   9616  1.1  christos 
   9617  1.1  christos #undef FLD
   9618  1.1  christos }
   9619  1.1  christos   NEXT (vpc);
   9620  1.1  christos 
   9621  1.1  christos   CASE (sem, INSN_MULS_D) : /* muls.d $Rs,$Rd */
   9622  1.1  christos {
   9623  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9624  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9625  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9626  1.1  christos   int UNUSED written = 0;
   9627  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9628  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9629  1.1  christos 
   9630  1.1  christos {
   9631  1.1  christos   DI tmp_src1;
   9632  1.1  christos   DI tmp_src2;
   9633  1.1  christos   DI tmp_tmpr;
   9634  1.1  christos   tmp_src1 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
   9635  1.1  christos   tmp_src2 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
   9636  1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9637  1.1  christos   {
   9638  1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9639  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9640  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9641  1.1  christos   }
   9642  1.1  christos   {
   9643  1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9644  1.1  christos     SET_H_SR (((UINT) 7), opval);
   9645  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9646  1.1  christos   }
   9647  1.1  christos {
   9648  1.1  christos   {
   9649  1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9650  1.1  christos     CPU (h_cbit) = opval;
   9651  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9652  1.1  christos   }
   9653  1.1  christos   {
   9654  1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9655  1.1  christos     CPU (h_nbit) = opval;
   9656  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9657  1.1  christos   }
   9658  1.1  christos   {
   9659  1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9660  1.1  christos     CPU (h_zbit) = opval;
   9661  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9662  1.1  christos   }
   9663  1.1  christos   {
   9664  1.1  christos     BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
   9665  1.1  christos     CPU (h_vbit) = opval;
   9666  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9667  1.1  christos   }
   9668  1.1  christos {
   9669  1.1  christos   {
   9670  1.1  christos     BI opval = 0;
   9671  1.1  christos     CPU (h_xbit) = opval;
   9672  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9673  1.1  christos   }
   9674  1.1  christos   {
   9675  1.1  christos     BI opval = 0;
   9676  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9677  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9678  1.1  christos   }
   9679  1.1  christos }
   9680  1.1  christos }
   9681  1.1  christos }
   9682  1.1  christos 
   9683  1.1  christos #undef FLD
   9684  1.1  christos }
   9685  1.1  christos   NEXT (vpc);
   9686  1.1  christos 
   9687  1.1  christos   CASE (sem, INSN_MULU_B) : /* mulu.b $Rs,$Rd */
   9688  1.1  christos {
   9689  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9690  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9691  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9692  1.1  christos   int UNUSED written = 0;
   9693  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9694  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9695  1.1  christos 
   9696  1.1  christos {
   9697  1.1  christos   DI tmp_src1;
   9698  1.1  christos   DI tmp_src2;
   9699  1.1  christos   DI tmp_tmpr;
   9700  1.1  christos   tmp_src1 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   9701  1.1  christos   tmp_src2 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
   9702  1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9703  1.1  christos   {
   9704  1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9705  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9706  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9707  1.1  christos   }
   9708  1.1  christos   {
   9709  1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9710  1.1  christos     SET_H_SR (((UINT) 7), opval);
   9711  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9712  1.1  christos   }
   9713  1.1  christos {
   9714  1.1  christos   {
   9715  1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9716  1.1  christos     CPU (h_cbit) = opval;
   9717  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9718  1.1  christos   }
   9719  1.1  christos   {
   9720  1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9721  1.1  christos     CPU (h_nbit) = opval;
   9722  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9723  1.1  christos   }
   9724  1.1  christos   {
   9725  1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9726  1.1  christos     CPU (h_zbit) = opval;
   9727  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9728  1.1  christos   }
   9729  1.1  christos   {
   9730  1.1  christos     BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
   9731  1.1  christos     CPU (h_vbit) = opval;
   9732  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9733  1.1  christos   }
   9734  1.1  christos {
   9735  1.1  christos   {
   9736  1.1  christos     BI opval = 0;
   9737  1.1  christos     CPU (h_xbit) = opval;
   9738  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9739  1.1  christos   }
   9740  1.1  christos   {
   9741  1.1  christos     BI opval = 0;
   9742  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9743  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9744  1.1  christos   }
   9745  1.1  christos }
   9746  1.1  christos }
   9747  1.1  christos }
   9748  1.1  christos 
   9749  1.1  christos #undef FLD
   9750  1.1  christos }
   9751  1.1  christos   NEXT (vpc);
   9752  1.1  christos 
   9753  1.1  christos   CASE (sem, INSN_MULU_W) : /* mulu.w $Rs,$Rd */
   9754  1.1  christos {
   9755  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9756  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9757  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9758  1.1  christos   int UNUSED written = 0;
   9759  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9760  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9761  1.1  christos 
   9762  1.1  christos {
   9763  1.1  christos   DI tmp_src1;
   9764  1.1  christos   DI tmp_src2;
   9765  1.1  christos   DI tmp_tmpr;
   9766  1.1  christos   tmp_src1 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   9767  1.1  christos   tmp_src2 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
   9768  1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9769  1.1  christos   {
   9770  1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9771  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9772  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9773  1.1  christos   }
   9774  1.1  christos   {
   9775  1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9776  1.1  christos     SET_H_SR (((UINT) 7), opval);
   9777  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9778  1.1  christos   }
   9779  1.1  christos {
   9780  1.1  christos   {
   9781  1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9782  1.1  christos     CPU (h_cbit) = opval;
   9783  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9784  1.1  christos   }
   9785  1.1  christos   {
   9786  1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9787  1.1  christos     CPU (h_nbit) = opval;
   9788  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9789  1.1  christos   }
   9790  1.1  christos   {
   9791  1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9792  1.1  christos     CPU (h_zbit) = opval;
   9793  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9794  1.1  christos   }
   9795  1.1  christos   {
   9796  1.1  christos     BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
   9797  1.1  christos     CPU (h_vbit) = opval;
   9798  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9799  1.1  christos   }
   9800  1.1  christos {
   9801  1.1  christos   {
   9802  1.1  christos     BI opval = 0;
   9803  1.1  christos     CPU (h_xbit) = opval;
   9804  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9805  1.1  christos   }
   9806  1.1  christos   {
   9807  1.1  christos     BI opval = 0;
   9808  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9809  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9810  1.1  christos   }
   9811  1.1  christos }
   9812  1.1  christos }
   9813  1.1  christos }
   9814  1.1  christos 
   9815  1.1  christos #undef FLD
   9816  1.1  christos }
   9817  1.1  christos   NEXT (vpc);
   9818  1.1  christos 
   9819  1.1  christos   CASE (sem, INSN_MULU_D) : /* mulu.d $Rs,$Rd */
   9820  1.1  christos {
   9821  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9822  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9823  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9824  1.1  christos   int UNUSED written = 0;
   9825  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9826  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9827  1.1  christos 
   9828  1.1  christos {
   9829  1.1  christos   DI tmp_src1;
   9830  1.1  christos   DI tmp_src2;
   9831  1.1  christos   DI tmp_tmpr;
   9832  1.1  christos   tmp_src1 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
   9833  1.1  christos   tmp_src2 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
   9834  1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9835  1.1  christos   {
   9836  1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9837  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9838  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9839  1.1  christos   }
   9840  1.1  christos   {
   9841  1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9842  1.1  christos     SET_H_SR (((UINT) 7), opval);
   9843  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9844  1.1  christos   }
   9845  1.1  christos {
   9846  1.1  christos   {
   9847  1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9848  1.1  christos     CPU (h_cbit) = opval;
   9849  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9850  1.1  christos   }
   9851  1.1  christos   {
   9852  1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9853  1.1  christos     CPU (h_nbit) = opval;
   9854  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9855  1.1  christos   }
   9856  1.1  christos   {
   9857  1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9858  1.1  christos     CPU (h_zbit) = opval;
   9859  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9860  1.1  christos   }
   9861  1.1  christos   {
   9862  1.1  christos     BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
   9863  1.1  christos     CPU (h_vbit) = opval;
   9864  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9865  1.1  christos   }
   9866  1.1  christos {
   9867  1.1  christos   {
   9868  1.1  christos     BI opval = 0;
   9869  1.1  christos     CPU (h_xbit) = opval;
   9870  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9871  1.1  christos   }
   9872  1.1  christos   {
   9873  1.1  christos     BI opval = 0;
   9874  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9875  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9876  1.1  christos   }
   9877  1.1  christos }
   9878  1.1  christos }
   9879  1.1  christos }
   9880  1.1  christos 
   9881  1.1  christos #undef FLD
   9882  1.1  christos }
   9883  1.1  christos   NEXT (vpc);
   9884  1.1  christos 
   9885  1.1  christos   CASE (sem, INSN_MCP) : /* mcp $Ps,$Rd */
   9886  1.1  christos {
   9887  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9888  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9889  1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   9890  1.1  christos   int UNUSED written = 0;
   9891  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9892  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9893  1.1  christos 
   9894  1.1  christos {
   9895  1.1  christos CPU (h_xbit) = 1;
   9896  1.1  christos CPU (h_zbit) = 1;
   9897  1.1  christos {
   9898  1.1  christos   SI tmp_tmpopd;
   9899  1.1  christos   SI tmp_tmpops;
   9900  1.1  christos   BI tmp_carry;
   9901  1.1  christos   SI tmp_newval;
   9902  1.1  christos   tmp_tmpops = GET_H_SR (FLD (f_operand2));
   9903  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand1));
   9904  1.1  christos   tmp_carry = CPU (h_rbit);
   9905  1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9906  1.1  christos   {
   9907  1.1  christos     SI opval = tmp_newval;
   9908  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9909  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9910  1.1  christos   }
   9911  1.1  christos {
   9912  1.1  christos   {
   9913  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))));
   9914  1.1  christos     CPU (h_rbit) = opval;
   9915  1.1  christos     TRACE_RESULT (current_cpu, abuf, "rbit", 'x', opval);
   9916  1.1  christos   }
   9917  1.1  christos   {
   9918  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   9919  1.1  christos     CPU (h_nbit) = opval;
   9920  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9921  1.1  christos   }
   9922  1.1  christos   {
   9923  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9924  1.1  christos     CPU (h_zbit) = opval;
   9925  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9926  1.1  christos   }
   9927  1.1  christos   {
   9928  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)));
   9929  1.1  christos     CPU (h_vbit) = opval;
   9930  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9931  1.1  christos   }
   9932  1.1  christos {
   9933  1.1  christos   {
   9934  1.1  christos     BI opval = 0;
   9935  1.1  christos     CPU (h_xbit) = opval;
   9936  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9937  1.1  christos   }
   9938  1.1  christos   {
   9939  1.1  christos     BI opval = 0;
   9940  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9941  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9942  1.1  christos   }
   9943  1.1  christos }
   9944  1.1  christos }
   9945  1.1  christos }
   9946  1.1  christos }
   9947  1.1  christos 
   9948  1.1  christos #undef FLD
   9949  1.1  christos }
   9950  1.1  christos   NEXT (vpc);
   9951  1.1  christos 
   9952  1.1  christos   CASE (sem, INSN_DSTEP) : /* dstep $Rs,$Rd */
   9953  1.1  christos {
   9954  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9955  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9956  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9957  1.1  christos   int UNUSED written = 0;
   9958  1.1  christos   IADDR UNUSED pc = abuf->addr;
   9959  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9960  1.1  christos 
   9961  1.1  christos {
   9962  1.1  christos   SI tmp_tmp;
   9963  1.1  christos   SI tmp_tmps;
   9964  1.1  christos   SI tmp_tmpd;
   9965  1.1  christos   tmp_tmps = GET_H_GR (FLD (f_operand1));
   9966  1.1  christos   tmp_tmp = SLLSI (GET_H_GR (FLD (f_operand2)), 1);
   9967  1.1  christos   tmp_tmpd = ((GEUSI (tmp_tmp, tmp_tmps)) ? (SUBSI (tmp_tmp, tmp_tmps)) : (tmp_tmp));
   9968  1.1  christos   {
   9969  1.1  christos     SI opval = tmp_tmpd;
   9970  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9971  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9972  1.1  christos   }
   9973  1.1  christos {
   9974  1.1  christos   {
   9975  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   9976  1.1  christos     CPU (h_nbit) = opval;
   9977  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9978  1.1  christos   }
   9979  1.1  christos   {
   9980  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   9981  1.1  christos     CPU (h_zbit) = opval;
   9982  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9983  1.1  christos   }
   9984  1.1  christos SET_H_CBIT_MOVE (0);
   9985  1.1  christos SET_H_VBIT_MOVE (0);
   9986  1.1  christos {
   9987  1.1  christos   {
   9988  1.1  christos     BI opval = 0;
   9989  1.1  christos     CPU (h_xbit) = opval;
   9990  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9991  1.1  christos   }
   9992  1.1  christos   {
   9993  1.1  christos     BI opval = 0;
   9994  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9995  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9996  1.1  christos   }
   9997  1.1  christos }
   9998  1.1  christos }
   9999  1.1  christos }
   10000  1.1  christos 
   10001  1.1  christos #undef FLD
   10002  1.1  christos }
   10003  1.1  christos   NEXT (vpc);
   10004  1.1  christos 
   10005  1.1  christos   CASE (sem, INSN_ABS) : /* abs $Rs,$Rd */
   10006  1.1  christos {
   10007  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10008  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10009  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   10010  1.1  christos   int UNUSED written = 0;
   10011  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10012  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10013  1.1  christos 
   10014  1.1  christos {
   10015  1.1  christos   SI tmp_tmpd;
   10016  1.1  christos   tmp_tmpd = ABSSI (GET_H_GR (FLD (f_operand1)));
   10017  1.1  christos   {
   10018  1.1  christos     SI opval = tmp_tmpd;
   10019  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10020  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10021  1.1  christos   }
   10022  1.1  christos {
   10023  1.1  christos   {
   10024  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10025  1.1  christos     CPU (h_nbit) = opval;
   10026  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10027  1.1  christos   }
   10028  1.1  christos   {
   10029  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10030  1.1  christos     CPU (h_zbit) = opval;
   10031  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10032  1.1  christos   }
   10033  1.1  christos SET_H_CBIT_MOVE (0);
   10034  1.1  christos SET_H_VBIT_MOVE (0);
   10035  1.1  christos {
   10036  1.1  christos   {
   10037  1.1  christos     BI opval = 0;
   10038  1.1  christos     CPU (h_xbit) = opval;
   10039  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10040  1.1  christos   }
   10041  1.1  christos   {
   10042  1.1  christos     BI opval = 0;
   10043  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10044  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10045  1.1  christos   }
   10046  1.1  christos }
   10047  1.1  christos }
   10048  1.1  christos }
   10049  1.1  christos 
   10050  1.1  christos #undef FLD
   10051  1.1  christos }
   10052  1.1  christos   NEXT (vpc);
   10053  1.1  christos 
   10054  1.1  christos   CASE (sem, INSN_AND_B_R) : /* and.b $Rs,$Rd */
   10055  1.1  christos {
   10056  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10057  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10058  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10059  1.1  christos   int UNUSED written = 0;
   10060  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10061  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10062  1.1  christos 
   10063  1.1  christos {
   10064  1.1  christos   QI tmp_tmpd;
   10065  1.1  christos   tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10066  1.1  christos {
   10067  1.1  christos   SI tmp_oldregval;
   10068  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10069  1.1  christos   {
   10070  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10071  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10072  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10073  1.1  christos   }
   10074  1.1  christos }
   10075  1.1  christos {
   10076  1.1  christos   {
   10077  1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10078  1.1  christos     CPU (h_nbit) = opval;
   10079  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10080  1.1  christos   }
   10081  1.1  christos   {
   10082  1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10083  1.1  christos     CPU (h_zbit) = opval;
   10084  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10085  1.1  christos   }
   10086  1.1  christos SET_H_CBIT_MOVE (0);
   10087  1.1  christos SET_H_VBIT_MOVE (0);
   10088  1.1  christos {
   10089  1.1  christos   {
   10090  1.1  christos     BI opval = 0;
   10091  1.1  christos     CPU (h_xbit) = opval;
   10092  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10093  1.1  christos   }
   10094  1.1  christos   {
   10095  1.1  christos     BI opval = 0;
   10096  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10097  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10098  1.1  christos   }
   10099  1.1  christos }
   10100  1.1  christos }
   10101  1.1  christos }
   10102  1.1  christos 
   10103  1.1  christos #undef FLD
   10104  1.1  christos }
   10105  1.1  christos   NEXT (vpc);
   10106  1.1  christos 
   10107  1.1  christos   CASE (sem, INSN_AND_W_R) : /* and.w $Rs,$Rd */
   10108  1.1  christos {
   10109  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10110  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10111  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10112  1.1  christos   int UNUSED written = 0;
   10113  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10114  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10115  1.1  christos 
   10116  1.1  christos {
   10117  1.1  christos   HI tmp_tmpd;
   10118  1.1  christos   tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10119  1.1  christos {
   10120  1.1  christos   SI tmp_oldregval;
   10121  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10122  1.1  christos   {
   10123  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10124  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10125  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10126  1.1  christos   }
   10127  1.1  christos }
   10128  1.1  christos {
   10129  1.1  christos   {
   10130  1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10131  1.1  christos     CPU (h_nbit) = opval;
   10132  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10133  1.1  christos   }
   10134  1.1  christos   {
   10135  1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10136  1.1  christos     CPU (h_zbit) = opval;
   10137  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10138  1.1  christos   }
   10139  1.1  christos SET_H_CBIT_MOVE (0);
   10140  1.1  christos SET_H_VBIT_MOVE (0);
   10141  1.1  christos {
   10142  1.1  christos   {
   10143  1.1  christos     BI opval = 0;
   10144  1.1  christos     CPU (h_xbit) = opval;
   10145  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10146  1.1  christos   }
   10147  1.1  christos   {
   10148  1.1  christos     BI opval = 0;
   10149  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10150  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10151  1.1  christos   }
   10152  1.1  christos }
   10153  1.1  christos }
   10154  1.1  christos }
   10155  1.1  christos 
   10156  1.1  christos #undef FLD
   10157  1.1  christos }
   10158  1.1  christos   NEXT (vpc);
   10159  1.1  christos 
   10160  1.1  christos   CASE (sem, INSN_AND_D_R) : /* and.d $Rs,$Rd */
   10161  1.1  christos {
   10162  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10163  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10164  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10165  1.1  christos   int UNUSED written = 0;
   10166  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10167  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10168  1.1  christos 
   10169  1.1  christos {
   10170  1.1  christos   SI tmp_tmpd;
   10171  1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10172  1.1  christos   {
   10173  1.1  christos     SI opval = tmp_tmpd;
   10174  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10175  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10176  1.1  christos   }
   10177  1.1  christos {
   10178  1.1  christos   {
   10179  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10180  1.1  christos     CPU (h_nbit) = opval;
   10181  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10182  1.1  christos   }
   10183  1.1  christos   {
   10184  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10185  1.1  christos     CPU (h_zbit) = opval;
   10186  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10187  1.1  christos   }
   10188  1.1  christos SET_H_CBIT_MOVE (0);
   10189  1.1  christos SET_H_VBIT_MOVE (0);
   10190  1.1  christos {
   10191  1.1  christos   {
   10192  1.1  christos     BI opval = 0;
   10193  1.1  christos     CPU (h_xbit) = opval;
   10194  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10195  1.1  christos   }
   10196  1.1  christos   {
   10197  1.1  christos     BI opval = 0;
   10198  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10199  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10200  1.1  christos   }
   10201  1.1  christos }
   10202  1.1  christos }
   10203  1.1  christos }
   10204  1.1  christos 
   10205  1.1  christos #undef FLD
   10206  1.1  christos }
   10207  1.1  christos   NEXT (vpc);
   10208  1.1  christos 
   10209  1.1  christos   CASE (sem, INSN_AND_M_B_M) : /* and-m.b [${Rs}${inc}],${Rd} */
   10210  1.1  christos {
   10211  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10212  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10213  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10214  1.1  christos   int UNUSED written = 0;
   10215  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10216  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10217  1.1  christos 
   10218  1.1  christos {
   10219  1.1  christos   QI tmp_tmpd;
   10220  1.1  christos   tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10221  1.1  christos   QI tmp_tmp_mem;
   10222  1.1  christos   BI tmp_postinc;
   10223  1.1  christos   tmp_postinc = FLD (f_memmode);
   10224  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10225  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   10226  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10227  1.1  christos {
   10228  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10229  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   10230  1.1  christos }
   10231  1.1  christos   {
   10232  1.1  christos     SI opval = tmp_addr;
   10233  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10234  1.1  christos     written |= (1 << 11);
   10235  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10236  1.1  christos   }
   10237  1.1  christos }
   10238  1.1  christos }
   10239  1.1  christos ; tmp_tmp_mem; }));
   10240  1.1  christos {
   10241  1.1  christos   SI tmp_oldregval;
   10242  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))));
   10243  1.1  christos   {
   10244  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10245  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10246  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10247  1.1  christos   }
   10248  1.1  christos }
   10249  1.1  christos {
   10250  1.1  christos   {
   10251  1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10252  1.1  christos     CPU (h_nbit) = opval;
   10253  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10254  1.1  christos   }
   10255  1.1  christos   {
   10256  1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10257  1.1  christos     CPU (h_zbit) = opval;
   10258  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10259  1.1  christos   }
   10260  1.1  christos SET_H_CBIT_MOVE (0);
   10261  1.1  christos SET_H_VBIT_MOVE (0);
   10262  1.1  christos {
   10263  1.1  christos   {
   10264  1.1  christos     BI opval = 0;
   10265  1.1  christos     CPU (h_xbit) = opval;
   10266  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10267  1.1  christos   }
   10268  1.1  christos   {
   10269  1.1  christos     BI opval = 0;
   10270  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10271  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10272  1.1  christos   }
   10273  1.1  christos }
   10274  1.1  christos }
   10275  1.1  christos }
   10276  1.1  christos 
   10277  1.1  christos   abuf->written = written;
   10278  1.1  christos #undef FLD
   10279  1.1  christos }
   10280  1.1  christos   NEXT (vpc);
   10281  1.1  christos 
   10282  1.1  christos   CASE (sem, INSN_AND_M_W_M) : /* and-m.w [${Rs}${inc}],${Rd} */
   10283  1.1  christos {
   10284  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10285  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10286  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10287  1.1  christos   int UNUSED written = 0;
   10288  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10289  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10290  1.1  christos 
   10291  1.1  christos {
   10292  1.1  christos   HI tmp_tmpd;
   10293  1.1  christos   tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10294  1.1  christos   HI tmp_tmp_mem;
   10295  1.1  christos   BI tmp_postinc;
   10296  1.1  christos   tmp_postinc = FLD (f_memmode);
   10297  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10298  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   10299  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10300  1.1  christos {
   10301  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10302  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   10303  1.1  christos }
   10304  1.1  christos   {
   10305  1.1  christos     SI opval = tmp_addr;
   10306  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10307  1.1  christos     written |= (1 << 11);
   10308  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10309  1.1  christos   }
   10310  1.1  christos }
   10311  1.1  christos }
   10312  1.1  christos ; tmp_tmp_mem; }));
   10313  1.1  christos {
   10314  1.1  christos   SI tmp_oldregval;
   10315  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))));
   10316  1.1  christos   {
   10317  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10318  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10319  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10320  1.1  christos   }
   10321  1.1  christos }
   10322  1.1  christos {
   10323  1.1  christos   {
   10324  1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10325  1.1  christos     CPU (h_nbit) = opval;
   10326  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10327  1.1  christos   }
   10328  1.1  christos   {
   10329  1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10330  1.1  christos     CPU (h_zbit) = opval;
   10331  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10332  1.1  christos   }
   10333  1.1  christos SET_H_CBIT_MOVE (0);
   10334  1.1  christos SET_H_VBIT_MOVE (0);
   10335  1.1  christos {
   10336  1.1  christos   {
   10337  1.1  christos     BI opval = 0;
   10338  1.1  christos     CPU (h_xbit) = opval;
   10339  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10340  1.1  christos   }
   10341  1.1  christos   {
   10342  1.1  christos     BI opval = 0;
   10343  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10344  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10345  1.1  christos   }
   10346  1.1  christos }
   10347  1.1  christos }
   10348  1.1  christos }
   10349  1.1  christos 
   10350  1.1  christos   abuf->written = written;
   10351  1.1  christos #undef FLD
   10352  1.1  christos }
   10353  1.1  christos   NEXT (vpc);
   10354  1.1  christos 
   10355  1.1  christos   CASE (sem, INSN_AND_M_D_M) : /* and-m.d [${Rs}${inc}],${Rd} */
   10356  1.1  christos {
   10357  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10358  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10359  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10360  1.1  christos   int UNUSED written = 0;
   10361  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10362  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10363  1.1  christos 
   10364  1.1  christos {
   10365  1.1  christos   SI tmp_tmpd;
   10366  1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10367  1.1  christos   SI tmp_tmp_mem;
   10368  1.1  christos   BI tmp_postinc;
   10369  1.1  christos   tmp_postinc = FLD (f_memmode);
   10370  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10371  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   10372  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10373  1.1  christos {
   10374  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10375  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   10376  1.1  christos }
   10377  1.1  christos   {
   10378  1.1  christos     SI opval = tmp_addr;
   10379  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10380  1.1  christos     written |= (1 << 10);
   10381  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10382  1.1  christos   }
   10383  1.1  christos }
   10384  1.1  christos }
   10385  1.1  christos ; tmp_tmp_mem; }));
   10386  1.1  christos   {
   10387  1.1  christos     SI opval = tmp_tmpd;
   10388  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10389  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10390  1.1  christos   }
   10391  1.1  christos {
   10392  1.1  christos   {
   10393  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10394  1.1  christos     CPU (h_nbit) = opval;
   10395  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10396  1.1  christos   }
   10397  1.1  christos   {
   10398  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10399  1.1  christos     CPU (h_zbit) = opval;
   10400  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10401  1.1  christos   }
   10402  1.1  christos SET_H_CBIT_MOVE (0);
   10403  1.1  christos SET_H_VBIT_MOVE (0);
   10404  1.1  christos {
   10405  1.1  christos   {
   10406  1.1  christos     BI opval = 0;
   10407  1.1  christos     CPU (h_xbit) = opval;
   10408  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10409  1.1  christos   }
   10410  1.1  christos   {
   10411  1.1  christos     BI opval = 0;
   10412  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10413  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10414  1.1  christos   }
   10415  1.1  christos }
   10416  1.1  christos }
   10417  1.1  christos }
   10418  1.1  christos 
   10419  1.1  christos   abuf->written = written;
   10420  1.1  christos #undef FLD
   10421  1.1  christos }
   10422  1.1  christos   NEXT (vpc);
   10423  1.1  christos 
   10424  1.1  christos   CASE (sem, INSN_ANDCBR) : /* and.b ${sconst8}],${Rd} */
   10425  1.1  christos {
   10426  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10427  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10428  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   10429  1.1  christos   int UNUSED written = 0;
   10430  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10431  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   10432  1.1  christos 
   10433  1.1  christos {
   10434  1.1  christos   QI tmp_tmpd;
   10435  1.1  christos   tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
   10436  1.1  christos {
   10437  1.1  christos   SI tmp_oldregval;
   10438  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10439  1.1  christos   {
   10440  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10441  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10442  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10443  1.1  christos   }
   10444  1.1  christos }
   10445  1.1  christos {
   10446  1.1  christos   {
   10447  1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10448  1.1  christos     CPU (h_nbit) = opval;
   10449  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10450  1.1  christos   }
   10451  1.1  christos   {
   10452  1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10453  1.1  christos     CPU (h_zbit) = opval;
   10454  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10455  1.1  christos   }
   10456  1.1  christos SET_H_CBIT_MOVE (0);
   10457  1.1  christos SET_H_VBIT_MOVE (0);
   10458  1.1  christos {
   10459  1.1  christos   {
   10460  1.1  christos     BI opval = 0;
   10461  1.1  christos     CPU (h_xbit) = opval;
   10462  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10463  1.1  christos   }
   10464  1.1  christos   {
   10465  1.1  christos     BI opval = 0;
   10466  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10467  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10468  1.1  christos   }
   10469  1.1  christos }
   10470  1.1  christos }
   10471  1.1  christos }
   10472  1.1  christos 
   10473  1.1  christos #undef FLD
   10474  1.1  christos }
   10475  1.1  christos   NEXT (vpc);
   10476  1.1  christos 
   10477  1.1  christos   CASE (sem, INSN_ANDCWR) : /* and.w ${sconst16}],${Rd} */
   10478  1.1  christos {
   10479  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10480  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10481  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   10482  1.1  christos   int UNUSED written = 0;
   10483  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10484  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   10485  1.1  christos 
   10486  1.1  christos {
   10487  1.1  christos   HI tmp_tmpd;
   10488  1.1  christos   tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
   10489  1.1  christos {
   10490  1.1  christos   SI tmp_oldregval;
   10491  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10492  1.1  christos   {
   10493  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10494  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10495  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10496  1.1  christos   }
   10497  1.1  christos }
   10498  1.1  christos {
   10499  1.1  christos   {
   10500  1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10501  1.1  christos     CPU (h_nbit) = opval;
   10502  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10503  1.1  christos   }
   10504  1.1  christos   {
   10505  1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10506  1.1  christos     CPU (h_zbit) = opval;
   10507  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10508  1.1  christos   }
   10509  1.1  christos SET_H_CBIT_MOVE (0);
   10510  1.1  christos SET_H_VBIT_MOVE (0);
   10511  1.1  christos {
   10512  1.1  christos   {
   10513  1.1  christos     BI opval = 0;
   10514  1.1  christos     CPU (h_xbit) = opval;
   10515  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10516  1.1  christos   }
   10517  1.1  christos   {
   10518  1.1  christos     BI opval = 0;
   10519  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10520  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10521  1.1  christos   }
   10522  1.1  christos }
   10523  1.1  christos }
   10524  1.1  christos }
   10525  1.1  christos 
   10526  1.1  christos #undef FLD
   10527  1.1  christos }
   10528  1.1  christos   NEXT (vpc);
   10529  1.1  christos 
   10530  1.1  christos   CASE (sem, INSN_ANDCDR) : /* and.d ${const32}],${Rd} */
   10531  1.1  christos {
   10532  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10533  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10534  1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   10535  1.1  christos   int UNUSED written = 0;
   10536  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10537  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   10538  1.1  christos 
   10539  1.1  christos {
   10540  1.1  christos   SI tmp_tmpd;
   10541  1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
   10542  1.1  christos   {
   10543  1.1  christos     SI opval = tmp_tmpd;
   10544  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10545  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10546  1.1  christos   }
   10547  1.1  christos {
   10548  1.1  christos   {
   10549  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10550  1.1  christos     CPU (h_nbit) = opval;
   10551  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10552  1.1  christos   }
   10553  1.1  christos   {
   10554  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10555  1.1  christos     CPU (h_zbit) = opval;
   10556  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10557  1.1  christos   }
   10558  1.1  christos SET_H_CBIT_MOVE (0);
   10559  1.1  christos SET_H_VBIT_MOVE (0);
   10560  1.1  christos {
   10561  1.1  christos   {
   10562  1.1  christos     BI opval = 0;
   10563  1.1  christos     CPU (h_xbit) = opval;
   10564  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10565  1.1  christos   }
   10566  1.1  christos   {
   10567  1.1  christos     BI opval = 0;
   10568  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10569  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10570  1.1  christos   }
   10571  1.1  christos }
   10572  1.1  christos }
   10573  1.1  christos }
   10574  1.1  christos 
   10575  1.1  christos #undef FLD
   10576  1.1  christos }
   10577  1.1  christos   NEXT (vpc);
   10578  1.1  christos 
   10579  1.1  christos   CASE (sem, INSN_ANDQ) : /* andq $i,$Rd */
   10580  1.1  christos {
   10581  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10582  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10583  1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   10584  1.1  christos   int UNUSED written = 0;
   10585  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10586  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10587  1.1  christos 
   10588  1.1  christos {
   10589  1.1  christos   SI tmp_tmpd;
   10590  1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
   10591  1.1  christos   {
   10592  1.1  christos     SI opval = tmp_tmpd;
   10593  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10594  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10595  1.1  christos   }
   10596  1.1  christos {
   10597  1.1  christos   {
   10598  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10599  1.1  christos     CPU (h_nbit) = opval;
   10600  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10601  1.1  christos   }
   10602  1.1  christos   {
   10603  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10604  1.1  christos     CPU (h_zbit) = opval;
   10605  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10606  1.1  christos   }
   10607  1.1  christos SET_H_CBIT_MOVE (0);
   10608  1.1  christos SET_H_VBIT_MOVE (0);
   10609  1.1  christos {
   10610  1.1  christos   {
   10611  1.1  christos     BI opval = 0;
   10612  1.1  christos     CPU (h_xbit) = opval;
   10613  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10614  1.1  christos   }
   10615  1.1  christos   {
   10616  1.1  christos     BI opval = 0;
   10617  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10618  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10619  1.1  christos   }
   10620  1.1  christos }
   10621  1.1  christos }
   10622  1.1  christos }
   10623  1.1  christos 
   10624  1.1  christos #undef FLD
   10625  1.1  christos }
   10626  1.1  christos   NEXT (vpc);
   10627  1.1  christos 
   10628  1.1  christos   CASE (sem, INSN_ORR_B_R) : /* orr.b $Rs,$Rd */
   10629  1.1  christos {
   10630  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10631  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10632  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10633  1.1  christos   int UNUSED written = 0;
   10634  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10635  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10636  1.1  christos 
   10637  1.1  christos {
   10638  1.1  christos   QI tmp_tmpd;
   10639  1.1  christos   tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10640  1.1  christos {
   10641  1.1  christos   SI tmp_oldregval;
   10642  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10643  1.1  christos   {
   10644  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10645  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10646  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10647  1.1  christos   }
   10648  1.1  christos }
   10649  1.1  christos {
   10650  1.1  christos   {
   10651  1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10652  1.1  christos     CPU (h_nbit) = opval;
   10653  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10654  1.1  christos   }
   10655  1.1  christos   {
   10656  1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10657  1.1  christos     CPU (h_zbit) = opval;
   10658  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10659  1.1  christos   }
   10660  1.1  christos SET_H_CBIT_MOVE (0);
   10661  1.1  christos SET_H_VBIT_MOVE (0);
   10662  1.1  christos {
   10663  1.1  christos   {
   10664  1.1  christos     BI opval = 0;
   10665  1.1  christos     CPU (h_xbit) = opval;
   10666  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10667  1.1  christos   }
   10668  1.1  christos   {
   10669  1.1  christos     BI opval = 0;
   10670  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10671  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10672  1.1  christos   }
   10673  1.1  christos }
   10674  1.1  christos }
   10675  1.1  christos }
   10676  1.1  christos 
   10677  1.1  christos #undef FLD
   10678  1.1  christos }
   10679  1.1  christos   NEXT (vpc);
   10680  1.1  christos 
   10681  1.1  christos   CASE (sem, INSN_ORR_W_R) : /* orr.w $Rs,$Rd */
   10682  1.1  christos {
   10683  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10684  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10685  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10686  1.1  christos   int UNUSED written = 0;
   10687  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10688  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10689  1.1  christos 
   10690  1.1  christos {
   10691  1.1  christos   HI tmp_tmpd;
   10692  1.1  christos   tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10693  1.1  christos {
   10694  1.1  christos   SI tmp_oldregval;
   10695  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10696  1.1  christos   {
   10697  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10698  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10699  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10700  1.1  christos   }
   10701  1.1  christos }
   10702  1.1  christos {
   10703  1.1  christos   {
   10704  1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10705  1.1  christos     CPU (h_nbit) = opval;
   10706  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10707  1.1  christos   }
   10708  1.1  christos   {
   10709  1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10710  1.1  christos     CPU (h_zbit) = opval;
   10711  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10712  1.1  christos   }
   10713  1.1  christos SET_H_CBIT_MOVE (0);
   10714  1.1  christos SET_H_VBIT_MOVE (0);
   10715  1.1  christos {
   10716  1.1  christos   {
   10717  1.1  christos     BI opval = 0;
   10718  1.1  christos     CPU (h_xbit) = opval;
   10719  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10720  1.1  christos   }
   10721  1.1  christos   {
   10722  1.1  christos     BI opval = 0;
   10723  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10724  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10725  1.1  christos   }
   10726  1.1  christos }
   10727  1.1  christos }
   10728  1.1  christos }
   10729  1.1  christos 
   10730  1.1  christos #undef FLD
   10731  1.1  christos }
   10732  1.1  christos   NEXT (vpc);
   10733  1.1  christos 
   10734  1.1  christos   CASE (sem, INSN_ORR_D_R) : /* orr.d $Rs,$Rd */
   10735  1.1  christos {
   10736  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10737  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10738  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10739  1.1  christos   int UNUSED written = 0;
   10740  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10741  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10742  1.1  christos 
   10743  1.1  christos {
   10744  1.1  christos   SI tmp_tmpd;
   10745  1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10746  1.1  christos   {
   10747  1.1  christos     SI opval = tmp_tmpd;
   10748  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10749  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10750  1.1  christos   }
   10751  1.1  christos {
   10752  1.1  christos   {
   10753  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10754  1.1  christos     CPU (h_nbit) = opval;
   10755  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10756  1.1  christos   }
   10757  1.1  christos   {
   10758  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10759  1.1  christos     CPU (h_zbit) = opval;
   10760  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10761  1.1  christos   }
   10762  1.1  christos SET_H_CBIT_MOVE (0);
   10763  1.1  christos SET_H_VBIT_MOVE (0);
   10764  1.1  christos {
   10765  1.1  christos   {
   10766  1.1  christos     BI opval = 0;
   10767  1.1  christos     CPU (h_xbit) = opval;
   10768  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10769  1.1  christos   }
   10770  1.1  christos   {
   10771  1.1  christos     BI opval = 0;
   10772  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10773  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10774  1.1  christos   }
   10775  1.1  christos }
   10776  1.1  christos }
   10777  1.1  christos }
   10778  1.1  christos 
   10779  1.1  christos #undef FLD
   10780  1.1  christos }
   10781  1.1  christos   NEXT (vpc);
   10782  1.1  christos 
   10783  1.1  christos   CASE (sem, INSN_OR_M_B_M) : /* or-m.b [${Rs}${inc}],${Rd} */
   10784  1.1  christos {
   10785  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10786  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10787  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10788  1.1  christos   int UNUSED written = 0;
   10789  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10790  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10791  1.1  christos 
   10792  1.1  christos {
   10793  1.1  christos   QI tmp_tmpd;
   10794  1.1  christos   tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10795  1.1  christos   QI tmp_tmp_mem;
   10796  1.1  christos   BI tmp_postinc;
   10797  1.1  christos   tmp_postinc = FLD (f_memmode);
   10798  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10799  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   10800  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10801  1.1  christos {
   10802  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10803  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   10804  1.1  christos }
   10805  1.1  christos   {
   10806  1.1  christos     SI opval = tmp_addr;
   10807  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10808  1.1  christos     written |= (1 << 11);
   10809  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10810  1.1  christos   }
   10811  1.1  christos }
   10812  1.1  christos }
   10813  1.1  christos ; tmp_tmp_mem; }));
   10814  1.1  christos {
   10815  1.1  christos   SI tmp_oldregval;
   10816  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))));
   10817  1.1  christos   {
   10818  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10819  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10820  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10821  1.1  christos   }
   10822  1.1  christos }
   10823  1.1  christos {
   10824  1.1  christos   {
   10825  1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10826  1.1  christos     CPU (h_nbit) = opval;
   10827  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10828  1.1  christos   }
   10829  1.1  christos   {
   10830  1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10831  1.1  christos     CPU (h_zbit) = opval;
   10832  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10833  1.1  christos   }
   10834  1.1  christos SET_H_CBIT_MOVE (0);
   10835  1.1  christos SET_H_VBIT_MOVE (0);
   10836  1.1  christos {
   10837  1.1  christos   {
   10838  1.1  christos     BI opval = 0;
   10839  1.1  christos     CPU (h_xbit) = opval;
   10840  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10841  1.1  christos   }
   10842  1.1  christos   {
   10843  1.1  christos     BI opval = 0;
   10844  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10845  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10846  1.1  christos   }
   10847  1.1  christos }
   10848  1.1  christos }
   10849  1.1  christos }
   10850  1.1  christos 
   10851  1.1  christos   abuf->written = written;
   10852  1.1  christos #undef FLD
   10853  1.1  christos }
   10854  1.1  christos   NEXT (vpc);
   10855  1.1  christos 
   10856  1.1  christos   CASE (sem, INSN_OR_M_W_M) : /* or-m.w [${Rs}${inc}],${Rd} */
   10857  1.1  christos {
   10858  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10859  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10860  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10861  1.1  christos   int UNUSED written = 0;
   10862  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10863  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10864  1.1  christos 
   10865  1.1  christos {
   10866  1.1  christos   HI tmp_tmpd;
   10867  1.1  christos   tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10868  1.1  christos   HI tmp_tmp_mem;
   10869  1.1  christos   BI tmp_postinc;
   10870  1.1  christos   tmp_postinc = FLD (f_memmode);
   10871  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10872  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   10873  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10874  1.1  christos {
   10875  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10876  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   10877  1.1  christos }
   10878  1.1  christos   {
   10879  1.1  christos     SI opval = tmp_addr;
   10880  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10881  1.1  christos     written |= (1 << 11);
   10882  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10883  1.1  christos   }
   10884  1.1  christos }
   10885  1.1  christos }
   10886  1.1  christos ; tmp_tmp_mem; }));
   10887  1.1  christos {
   10888  1.1  christos   SI tmp_oldregval;
   10889  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))));
   10890  1.1  christos   {
   10891  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10892  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10893  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10894  1.1  christos   }
   10895  1.1  christos }
   10896  1.1  christos {
   10897  1.1  christos   {
   10898  1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10899  1.1  christos     CPU (h_nbit) = opval;
   10900  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10901  1.1  christos   }
   10902  1.1  christos   {
   10903  1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10904  1.1  christos     CPU (h_zbit) = opval;
   10905  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10906  1.1  christos   }
   10907  1.1  christos SET_H_CBIT_MOVE (0);
   10908  1.1  christos SET_H_VBIT_MOVE (0);
   10909  1.1  christos {
   10910  1.1  christos   {
   10911  1.1  christos     BI opval = 0;
   10912  1.1  christos     CPU (h_xbit) = opval;
   10913  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10914  1.1  christos   }
   10915  1.1  christos   {
   10916  1.1  christos     BI opval = 0;
   10917  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10918  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10919  1.1  christos   }
   10920  1.1  christos }
   10921  1.1  christos }
   10922  1.1  christos }
   10923  1.1  christos 
   10924  1.1  christos   abuf->written = written;
   10925  1.1  christos #undef FLD
   10926  1.1  christos }
   10927  1.1  christos   NEXT (vpc);
   10928  1.1  christos 
   10929  1.1  christos   CASE (sem, INSN_OR_M_D_M) : /* or-m.d [${Rs}${inc}],${Rd} */
   10930  1.1  christos {
   10931  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10932  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10933  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10934  1.1  christos   int UNUSED written = 0;
   10935  1.1  christos   IADDR UNUSED pc = abuf->addr;
   10936  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10937  1.1  christos 
   10938  1.1  christos {
   10939  1.1  christos   SI tmp_tmpd;
   10940  1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10941  1.1  christos   SI tmp_tmp_mem;
   10942  1.1  christos   BI tmp_postinc;
   10943  1.1  christos   tmp_postinc = FLD (f_memmode);
   10944  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10945  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   10946  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10947  1.1  christos {
   10948  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10949  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   10950  1.1  christos }
   10951  1.1  christos   {
   10952  1.1  christos     SI opval = tmp_addr;
   10953  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10954  1.1  christos     written |= (1 << 10);
   10955  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10956  1.1  christos   }
   10957  1.1  christos }
   10958  1.1  christos }
   10959  1.1  christos ; tmp_tmp_mem; }));
   10960  1.1  christos   {
   10961  1.1  christos     SI opval = tmp_tmpd;
   10962  1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10963  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10964  1.1  christos   }
   10965  1.1  christos {
   10966  1.1  christos   {
   10967  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10968  1.1  christos     CPU (h_nbit) = opval;
   10969  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10970  1.1  christos   }
   10971  1.1  christos   {
   10972  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10973  1.1  christos     CPU (h_zbit) = opval;
   10974  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10975  1.1  christos   }
   10976  1.1  christos SET_H_CBIT_MOVE (0);
   10977  1.1  christos SET_H_VBIT_MOVE (0);
   10978  1.1  christos {
   10979  1.1  christos   {
   10980  1.1  christos     BI opval = 0;
   10981  1.1  christos     CPU (h_xbit) = opval;
   10982  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10983  1.1  christos   }
   10984  1.1  christos   {
   10985  1.1  christos     BI opval = 0;
   10986  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10987  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10988  1.1  christos   }
   10989  1.1  christos }
   10990  1.1  christos }
   10991  1.1  christos }
   10992  1.1  christos 
   10993  1.1  christos   abuf->written = written;
   10994  1.1  christos #undef FLD
   10995  1.1  christos }
   10996  1.1  christos   NEXT (vpc);
   10997  1.1  christos 
   10998  1.1  christos   CASE (sem, INSN_ORCBR) : /* or.b ${sconst8}],${Rd} */
   10999  1.1  christos {
   11000  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11001  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11002  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   11003  1.1  christos   int UNUSED written = 0;
   11004  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11005  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   11006  1.1  christos 
   11007  1.1  christos {
   11008  1.1  christos   QI tmp_tmpd;
   11009  1.1  christos   tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
   11010  1.1  christos {
   11011  1.1  christos   SI tmp_oldregval;
   11012  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11013  1.1  christos   {
   11014  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11015  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11016  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11017  1.1  christos   }
   11018  1.1  christos }
   11019  1.1  christos {
   11020  1.1  christos   {
   11021  1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11022  1.1  christos     CPU (h_nbit) = opval;
   11023  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11024  1.1  christos   }
   11025  1.1  christos   {
   11026  1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11027  1.1  christos     CPU (h_zbit) = opval;
   11028  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11029  1.1  christos   }
   11030  1.1  christos SET_H_CBIT_MOVE (0);
   11031  1.1  christos SET_H_VBIT_MOVE (0);
   11032  1.1  christos {
   11033  1.1  christos   {
   11034  1.1  christos     BI opval = 0;
   11035  1.1  christos     CPU (h_xbit) = opval;
   11036  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11037  1.1  christos   }
   11038  1.1  christos   {
   11039  1.1  christos     BI opval = 0;
   11040  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11041  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11042  1.1  christos   }
   11043  1.1  christos }
   11044  1.1  christos }
   11045  1.1  christos }
   11046  1.1  christos 
   11047  1.1  christos #undef FLD
   11048  1.1  christos }
   11049  1.1  christos   NEXT (vpc);
   11050  1.1  christos 
   11051  1.1  christos   CASE (sem, INSN_ORCWR) : /* or.w ${sconst16}],${Rd} */
   11052  1.1  christos {
   11053  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11054  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11055  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   11056  1.1  christos   int UNUSED written = 0;
   11057  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11058  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   11059  1.1  christos 
   11060  1.1  christos {
   11061  1.1  christos   HI tmp_tmpd;
   11062  1.1  christos   tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
   11063  1.1  christos {
   11064  1.1  christos   SI tmp_oldregval;
   11065  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11066  1.1  christos   {
   11067  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11068  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11069  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11070  1.1  christos   }
   11071  1.1  christos }
   11072  1.1  christos {
   11073  1.1  christos   {
   11074  1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11075  1.1  christos     CPU (h_nbit) = opval;
   11076  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11077  1.1  christos   }
   11078  1.1  christos   {
   11079  1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11080  1.1  christos     CPU (h_zbit) = opval;
   11081  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11082  1.1  christos   }
   11083  1.1  christos SET_H_CBIT_MOVE (0);
   11084  1.1  christos SET_H_VBIT_MOVE (0);
   11085  1.1  christos {
   11086  1.1  christos   {
   11087  1.1  christos     BI opval = 0;
   11088  1.1  christos     CPU (h_xbit) = opval;
   11089  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11090  1.1  christos   }
   11091  1.1  christos   {
   11092  1.1  christos     BI opval = 0;
   11093  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11094  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11095  1.1  christos   }
   11096  1.1  christos }
   11097  1.1  christos }
   11098  1.1  christos }
   11099  1.1  christos 
   11100  1.1  christos #undef FLD
   11101  1.1  christos }
   11102  1.1  christos   NEXT (vpc);
   11103  1.1  christos 
   11104  1.1  christos   CASE (sem, INSN_ORCDR) : /* or.d ${const32}],${Rd} */
   11105  1.1  christos {
   11106  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11107  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11108  1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   11109  1.1  christos   int UNUSED written = 0;
   11110  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11111  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   11112  1.1  christos 
   11113  1.1  christos {
   11114  1.1  christos   SI tmp_tmpd;
   11115  1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
   11116  1.1  christos   {
   11117  1.1  christos     SI opval = tmp_tmpd;
   11118  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11119  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11120  1.1  christos   }
   11121  1.1  christos {
   11122  1.1  christos   {
   11123  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11124  1.1  christos     CPU (h_nbit) = opval;
   11125  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11126  1.1  christos   }
   11127  1.1  christos   {
   11128  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11129  1.1  christos     CPU (h_zbit) = opval;
   11130  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11131  1.1  christos   }
   11132  1.1  christos SET_H_CBIT_MOVE (0);
   11133  1.1  christos SET_H_VBIT_MOVE (0);
   11134  1.1  christos {
   11135  1.1  christos   {
   11136  1.1  christos     BI opval = 0;
   11137  1.1  christos     CPU (h_xbit) = opval;
   11138  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11139  1.1  christos   }
   11140  1.1  christos   {
   11141  1.1  christos     BI opval = 0;
   11142  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11143  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11144  1.1  christos   }
   11145  1.1  christos }
   11146  1.1  christos }
   11147  1.1  christos }
   11148  1.1  christos 
   11149  1.1  christos #undef FLD
   11150  1.1  christos }
   11151  1.1  christos   NEXT (vpc);
   11152  1.1  christos 
   11153  1.1  christos   CASE (sem, INSN_ORQ) : /* orq $i,$Rd */
   11154  1.1  christos {
   11155  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11156  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11157  1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   11158  1.1  christos   int UNUSED written = 0;
   11159  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11160  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11161  1.1  christos 
   11162  1.1  christos {
   11163  1.1  christos   SI tmp_tmpd;
   11164  1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
   11165  1.1  christos   {
   11166  1.1  christos     SI opval = tmp_tmpd;
   11167  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11168  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11169  1.1  christos   }
   11170  1.1  christos {
   11171  1.1  christos   {
   11172  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11173  1.1  christos     CPU (h_nbit) = opval;
   11174  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11175  1.1  christos   }
   11176  1.1  christos   {
   11177  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11178  1.1  christos     CPU (h_zbit) = opval;
   11179  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11180  1.1  christos   }
   11181  1.1  christos SET_H_CBIT_MOVE (0);
   11182  1.1  christos SET_H_VBIT_MOVE (0);
   11183  1.1  christos {
   11184  1.1  christos   {
   11185  1.1  christos     BI opval = 0;
   11186  1.1  christos     CPU (h_xbit) = opval;
   11187  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11188  1.1  christos   }
   11189  1.1  christos   {
   11190  1.1  christos     BI opval = 0;
   11191  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11192  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11193  1.1  christos   }
   11194  1.1  christos }
   11195  1.1  christos }
   11196  1.1  christos }
   11197  1.1  christos 
   11198  1.1  christos #undef FLD
   11199  1.1  christos }
   11200  1.1  christos   NEXT (vpc);
   11201  1.1  christos 
   11202  1.1  christos   CASE (sem, INSN_XOR) : /* xor $Rs,$Rd */
   11203  1.1  christos {
   11204  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11205  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11206  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   11207  1.1  christos   int UNUSED written = 0;
   11208  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11209  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11210  1.1  christos 
   11211  1.1  christos {
   11212  1.1  christos   SI tmp_tmpd;
   11213  1.1  christos   tmp_tmpd = XORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   11214  1.1  christos   {
   11215  1.1  christos     SI opval = tmp_tmpd;
   11216  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11217  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11218  1.1  christos   }
   11219  1.1  christos {
   11220  1.1  christos   {
   11221  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11222  1.1  christos     CPU (h_nbit) = opval;
   11223  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11224  1.1  christos   }
   11225  1.1  christos   {
   11226  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11227  1.1  christos     CPU (h_zbit) = opval;
   11228  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11229  1.1  christos   }
   11230  1.1  christos SET_H_CBIT_MOVE (0);
   11231  1.1  christos SET_H_VBIT_MOVE (0);
   11232  1.1  christos {
   11233  1.1  christos   {
   11234  1.1  christos     BI opval = 0;
   11235  1.1  christos     CPU (h_xbit) = opval;
   11236  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11237  1.1  christos   }
   11238  1.1  christos   {
   11239  1.1  christos     BI opval = 0;
   11240  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11241  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11242  1.1  christos   }
   11243  1.1  christos }
   11244  1.1  christos }
   11245  1.1  christos }
   11246  1.1  christos 
   11247  1.1  christos #undef FLD
   11248  1.1  christos }
   11249  1.1  christos   NEXT (vpc);
   11250  1.1  christos 
   11251  1.1  christos   CASE (sem, INSN_SWAP) : /* swap${swapoption} ${Rs} */
   11252  1.1  christos {
   11253  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11254  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11255  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   11256  1.1  christos   int UNUSED written = 0;
   11257  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11258  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11259  1.1  christos 
   11260  1.1  christos {
   11261  1.1  christos   SI tmp_tmps;
   11262  1.1  christos   SI tmp_tmpd;
   11263  1.1  christos   tmp_tmps = GET_H_GR (FLD (f_operand1));
   11264  1.1  christos   tmp_tmpd = ({   SI tmp_tmpcode;
   11265  1.1  christos   SI tmp_tmpval;
   11266  1.1  christos   SI tmp_tmpres;
   11267  1.1  christos   tmp_tmpcode = FLD (f_operand2);
   11268  1.1  christos ;   tmp_tmpval = tmp_tmps;
   11269  1.1  christos ; if (EQSI (tmp_tmpcode, 0)) {
   11270  1.1  christos   tmp_tmpres = (cgen_rtx_error (current_cpu, "SWAP without swap modifier isn't implemented"), 0);
   11271  1.1  christos }
   11272  1.1  christos  else if (EQSI (tmp_tmpcode, 1)) {
   11273  1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11274  1.1  christos   tmp_tmpr = tmp_tmpval;
   11275  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)))))))); });
   11276  1.1  christos }
   11277  1.1  christos  else if (EQSI (tmp_tmpcode, 2)) {
   11278  1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11279  1.1  christos   tmp_tmpb = tmp_tmpval;
   11280  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11281  1.1  christos }
   11282  1.1  christos  else if (EQSI (tmp_tmpcode, 3)) {
   11283  1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11284  1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11285  1.1  christos   tmp_tmpb = tmp_tmpval;
   11286  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11287  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)))))))); });
   11288  1.1  christos }
   11289  1.1  christos  else if (EQSI (tmp_tmpcode, 4)) {
   11290  1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11291  1.1  christos   tmp_tmpb = tmp_tmpval;
   11292  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11293  1.1  christos }
   11294  1.1  christos  else if (EQSI (tmp_tmpcode, 5)) {
   11295  1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11296  1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11297  1.1  christos   tmp_tmpb = tmp_tmpval;
   11298  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11299  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)))))))); });
   11300  1.1  christos }
   11301  1.1  christos  else if (EQSI (tmp_tmpcode, 6)) {
   11302  1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11303  1.1  christos   tmp_tmpb = ({   SI tmp_tmpb;
   11304  1.1  christos   tmp_tmpb = tmp_tmpval;
   11305  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11306  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11307  1.1  christos }
   11308  1.1  christos  else if (EQSI (tmp_tmpcode, 7)) {
   11309  1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11310  1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11311  1.1  christos   tmp_tmpb = ({   SI tmp_tmpb;
   11312  1.1  christos   tmp_tmpb = tmp_tmpval;
   11313  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11314  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11315  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)))))))); });
   11316  1.1  christos }
   11317  1.1  christos  else if (EQSI (tmp_tmpcode, 8)) {
   11318  1.1  christos   tmp_tmpres = INVSI (tmp_tmpval);
   11319  1.1  christos }
   11320  1.1  christos  else if (EQSI (tmp_tmpcode, 9)) {
   11321  1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11322  1.1  christos   tmp_tmpr = INVSI (tmp_tmpval);
   11323  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)))))))); });
   11324  1.1  christos }
   11325  1.1  christos  else if (EQSI (tmp_tmpcode, 10)) {
   11326  1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11327  1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11328  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11329  1.1  christos }
   11330  1.1  christos  else if (EQSI (tmp_tmpcode, 11)) {
   11331  1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11332  1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11333  1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11334  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11335  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)))))))); });
   11336  1.1  christos }
   11337  1.1  christos  else if (EQSI (tmp_tmpcode, 12)) {
   11338  1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11339  1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11340  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11341  1.1  christos }
   11342  1.1  christos  else if (EQSI (tmp_tmpcode, 13)) {
   11343  1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11344  1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11345  1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11346  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11347  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)))))))); });
   11348  1.1  christos }
   11349  1.1  christos  else if (EQSI (tmp_tmpcode, 14)) {
   11350  1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11351  1.1  christos   tmp_tmpb = ({   SI tmp_tmpb;
   11352  1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11353  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11354  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11355  1.1  christos }
   11356  1.1  christos  else if (EQSI (tmp_tmpcode, 15)) {
   11357  1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11358  1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11359  1.1  christos   tmp_tmpb = ({   SI tmp_tmpb;
   11360  1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11361  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
   11362  1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11363  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)))))))); });
   11364  1.1  christos }
   11365  1.1  christos ; tmp_tmpres; });
   11366  1.1  christos   {
   11367  1.1  christos     SI opval = tmp_tmpd;
   11368  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   11369  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11370  1.1  christos   }
   11371  1.1  christos {
   11372  1.1  christos   {
   11373  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11374  1.1  christos     CPU (h_nbit) = opval;
   11375  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11376  1.1  christos   }
   11377  1.1  christos   {
   11378  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11379  1.1  christos     CPU (h_zbit) = opval;
   11380  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11381  1.1  christos   }
   11382  1.1  christos SET_H_CBIT_MOVE (0);
   11383  1.1  christos SET_H_VBIT_MOVE (0);
   11384  1.1  christos {
   11385  1.1  christos   {
   11386  1.1  christos     BI opval = 0;
   11387  1.1  christos     CPU (h_xbit) = opval;
   11388  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11389  1.1  christos   }
   11390  1.1  christos   {
   11391  1.1  christos     BI opval = 0;
   11392  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11393  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11394  1.1  christos   }
   11395  1.1  christos }
   11396  1.1  christos }
   11397  1.1  christos }
   11398  1.1  christos 
   11399  1.1  christos #undef FLD
   11400  1.1  christos }
   11401  1.1  christos   NEXT (vpc);
   11402  1.1  christos 
   11403  1.1  christos   CASE (sem, INSN_ASRR_B_R) : /* asrr.b $Rs,$Rd */
   11404  1.1  christos {
   11405  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11406  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11407  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11408  1.1  christos   int UNUSED written = 0;
   11409  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11410  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11411  1.1  christos 
   11412  1.1  christos {
   11413  1.1  christos   QI tmp_tmpd;
   11414  1.1  christos   SI tmp_cnt1;
   11415  1.1  christos   SI tmp_cnt2;
   11416  1.1  christos   tmp_cnt1 = GET_H_GR (FLD (f_operand1));
   11417  1.1  christos   tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
   11418  1.1  christos   tmp_tmpd = SRASI (EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
   11419  1.1  christos {
   11420  1.1  christos   SI tmp_oldregval;
   11421  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11422  1.1  christos   {
   11423  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11424  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11425  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11426  1.1  christos   }
   11427  1.1  christos }
   11428  1.1  christos {
   11429  1.1  christos   {
   11430  1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11431  1.1  christos     CPU (h_nbit) = opval;
   11432  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11433  1.1  christos   }
   11434  1.1  christos   {
   11435  1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11436  1.1  christos     CPU (h_zbit) = opval;
   11437  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11438  1.1  christos   }
   11439  1.1  christos SET_H_CBIT_MOVE (0);
   11440  1.1  christos SET_H_VBIT_MOVE (0);
   11441  1.1  christos {
   11442  1.1  christos   {
   11443  1.1  christos     BI opval = 0;
   11444  1.1  christos     CPU (h_xbit) = opval;
   11445  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11446  1.1  christos   }
   11447  1.1  christos   {
   11448  1.1  christos     BI opval = 0;
   11449  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11450  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11451  1.1  christos   }
   11452  1.1  christos }
   11453  1.1  christos }
   11454  1.1  christos }
   11455  1.1  christos 
   11456  1.1  christos #undef FLD
   11457  1.1  christos }
   11458  1.1  christos   NEXT (vpc);
   11459  1.1  christos 
   11460  1.1  christos   CASE (sem, INSN_ASRR_W_R) : /* asrr.w $Rs,$Rd */
   11461  1.1  christos {
   11462  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11463  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11464  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11465  1.1  christos   int UNUSED written = 0;
   11466  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11467  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11468  1.1  christos 
   11469  1.1  christos {
   11470  1.1  christos   HI tmp_tmpd;
   11471  1.1  christos   SI tmp_cnt1;
   11472  1.1  christos   SI tmp_cnt2;
   11473  1.1  christos   tmp_cnt1 = GET_H_GR (FLD (f_operand1));
   11474  1.1  christos   tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
   11475  1.1  christos   tmp_tmpd = SRASI (EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
   11476  1.1  christos {
   11477  1.1  christos   SI tmp_oldregval;
   11478  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11479  1.1  christos   {
   11480  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11481  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11482  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11483  1.1  christos   }
   11484  1.1  christos }
   11485  1.1  christos {
   11486  1.1  christos   {
   11487  1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11488  1.1  christos     CPU (h_nbit) = opval;
   11489  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11490  1.1  christos   }
   11491  1.1  christos   {
   11492  1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11493  1.1  christos     CPU (h_zbit) = opval;
   11494  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11495  1.1  christos   }
   11496  1.1  christos SET_H_CBIT_MOVE (0);
   11497  1.1  christos SET_H_VBIT_MOVE (0);
   11498  1.1  christos {
   11499  1.1  christos   {
   11500  1.1  christos     BI opval = 0;
   11501  1.1  christos     CPU (h_xbit) = opval;
   11502  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11503  1.1  christos   }
   11504  1.1  christos   {
   11505  1.1  christos     BI opval = 0;
   11506  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11507  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11508  1.1  christos   }
   11509  1.1  christos }
   11510  1.1  christos }
   11511  1.1  christos }
   11512  1.1  christos 
   11513  1.1  christos #undef FLD
   11514  1.1  christos }
   11515  1.1  christos   NEXT (vpc);
   11516  1.1  christos 
   11517  1.1  christos   CASE (sem, INSN_ASRR_D_R) : /* asrr.d $Rs,$Rd */
   11518  1.1  christos {
   11519  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11520  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11521  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11522  1.1  christos   int UNUSED written = 0;
   11523  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11524  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11525  1.1  christos 
   11526  1.1  christos {
   11527  1.1  christos   SI tmp_tmpd;
   11528  1.1  christos   SI tmp_cnt1;
   11529  1.1  christos   SI tmp_cnt2;
   11530  1.1  christos   tmp_cnt1 = GET_H_GR (FLD (f_operand1));
   11531  1.1  christos   tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
   11532  1.1  christos   tmp_tmpd = SRASI (EXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
   11533  1.1  christos   {
   11534  1.1  christos     SI opval = tmp_tmpd;
   11535  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11536  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11537  1.1  christos   }
   11538  1.1  christos {
   11539  1.1  christos   {
   11540  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11541  1.1  christos     CPU (h_nbit) = opval;
   11542  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11543  1.1  christos   }
   11544  1.1  christos   {
   11545  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11546  1.1  christos     CPU (h_zbit) = opval;
   11547  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11548  1.1  christos   }
   11549  1.1  christos SET_H_CBIT_MOVE (0);
   11550  1.1  christos SET_H_VBIT_MOVE (0);
   11551  1.1  christos {
   11552  1.1  christos   {
   11553  1.1  christos     BI opval = 0;
   11554  1.1  christos     CPU (h_xbit) = opval;
   11555  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11556  1.1  christos   }
   11557  1.1  christos   {
   11558  1.1  christos     BI opval = 0;
   11559  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11560  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11561  1.1  christos   }
   11562  1.1  christos }
   11563  1.1  christos }
   11564  1.1  christos }
   11565  1.1  christos 
   11566  1.1  christos #undef FLD
   11567  1.1  christos }
   11568  1.1  christos   NEXT (vpc);
   11569  1.1  christos 
   11570  1.1  christos   CASE (sem, INSN_ASRQ) : /* asrq $c,${Rd} */
   11571  1.1  christos {
   11572  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11573  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11574  1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   11575  1.1  christos   int UNUSED written = 0;
   11576  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11577  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11578  1.1  christos 
   11579  1.1  christos {
   11580  1.1  christos   SI tmp_tmpd;
   11581  1.1  christos   tmp_tmpd = SRASI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
   11582  1.1  christos   {
   11583  1.1  christos     SI opval = tmp_tmpd;
   11584  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11585  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11586  1.1  christos   }
   11587  1.1  christos {
   11588  1.1  christos   {
   11589  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11590  1.1  christos     CPU (h_nbit) = opval;
   11591  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11592  1.1  christos   }
   11593  1.1  christos   {
   11594  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11595  1.1  christos     CPU (h_zbit) = opval;
   11596  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11597  1.1  christos   }
   11598  1.1  christos SET_H_CBIT_MOVE (0);
   11599  1.1  christos SET_H_VBIT_MOVE (0);
   11600  1.1  christos {
   11601  1.1  christos   {
   11602  1.1  christos     BI opval = 0;
   11603  1.1  christos     CPU (h_xbit) = opval;
   11604  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11605  1.1  christos   }
   11606  1.1  christos   {
   11607  1.1  christos     BI opval = 0;
   11608  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11609  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11610  1.1  christos   }
   11611  1.1  christos }
   11612  1.1  christos }
   11613  1.1  christos }
   11614  1.1  christos 
   11615  1.1  christos #undef FLD
   11616  1.1  christos }
   11617  1.1  christos   NEXT (vpc);
   11618  1.1  christos 
   11619  1.1  christos   CASE (sem, INSN_LSRR_B_R) : /* lsrr.b $Rs,$Rd */
   11620  1.1  christos {
   11621  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11622  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11623  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11624  1.1  christos   int UNUSED written = 0;
   11625  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11626  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11627  1.1  christos 
   11628  1.1  christos {
   11629  1.1  christos   SI tmp_tmpd;
   11630  1.1  christos   SI tmp_cnt;
   11631  1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11632  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))));
   11633  1.1  christos {
   11634  1.1  christos   SI tmp_oldregval;
   11635  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11636  1.1  christos   {
   11637  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11638  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11639  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11640  1.1  christos   }
   11641  1.1  christos }
   11642  1.1  christos {
   11643  1.1  christos   {
   11644  1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11645  1.1  christos     CPU (h_nbit) = opval;
   11646  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11647  1.1  christos   }
   11648  1.1  christos   {
   11649  1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11650  1.1  christos     CPU (h_zbit) = opval;
   11651  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11652  1.1  christos   }
   11653  1.1  christos SET_H_CBIT_MOVE (0);
   11654  1.1  christos SET_H_VBIT_MOVE (0);
   11655  1.1  christos {
   11656  1.1  christos   {
   11657  1.1  christos     BI opval = 0;
   11658  1.1  christos     CPU (h_xbit) = opval;
   11659  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11660  1.1  christos   }
   11661  1.1  christos   {
   11662  1.1  christos     BI opval = 0;
   11663  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11664  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11665  1.1  christos   }
   11666  1.1  christos }
   11667  1.1  christos }
   11668  1.1  christos }
   11669  1.1  christos 
   11670  1.1  christos #undef FLD
   11671  1.1  christos }
   11672  1.1  christos   NEXT (vpc);
   11673  1.1  christos 
   11674  1.1  christos   CASE (sem, INSN_LSRR_W_R) : /* lsrr.w $Rs,$Rd */
   11675  1.1  christos {
   11676  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11677  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11678  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11679  1.1  christos   int UNUSED written = 0;
   11680  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11681  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11682  1.1  christos 
   11683  1.1  christos {
   11684  1.1  christos   SI tmp_tmpd;
   11685  1.1  christos   SI tmp_cnt;
   11686  1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11687  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))));
   11688  1.1  christos {
   11689  1.1  christos   SI tmp_oldregval;
   11690  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11691  1.1  christos   {
   11692  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11693  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11694  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11695  1.1  christos   }
   11696  1.1  christos }
   11697  1.1  christos {
   11698  1.1  christos   {
   11699  1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11700  1.1  christos     CPU (h_nbit) = opval;
   11701  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11702  1.1  christos   }
   11703  1.1  christos   {
   11704  1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11705  1.1  christos     CPU (h_zbit) = opval;
   11706  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11707  1.1  christos   }
   11708  1.1  christos SET_H_CBIT_MOVE (0);
   11709  1.1  christos SET_H_VBIT_MOVE (0);
   11710  1.1  christos {
   11711  1.1  christos   {
   11712  1.1  christos     BI opval = 0;
   11713  1.1  christos     CPU (h_xbit) = opval;
   11714  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11715  1.1  christos   }
   11716  1.1  christos   {
   11717  1.1  christos     BI opval = 0;
   11718  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11719  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11720  1.1  christos   }
   11721  1.1  christos }
   11722  1.1  christos }
   11723  1.1  christos }
   11724  1.1  christos 
   11725  1.1  christos #undef FLD
   11726  1.1  christos }
   11727  1.1  christos   NEXT (vpc);
   11728  1.1  christos 
   11729  1.1  christos   CASE (sem, INSN_LSRR_D_R) : /* lsrr.d $Rs,$Rd */
   11730  1.1  christos {
   11731  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11732  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11733  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11734  1.1  christos   int UNUSED written = 0;
   11735  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11736  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11737  1.1  christos 
   11738  1.1  christos {
   11739  1.1  christos   SI tmp_tmpd;
   11740  1.1  christos   SI tmp_cnt;
   11741  1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11742  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))));
   11743  1.1  christos   {
   11744  1.1  christos     SI opval = tmp_tmpd;
   11745  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11746  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11747  1.1  christos   }
   11748  1.1  christos {
   11749  1.1  christos   {
   11750  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11751  1.1  christos     CPU (h_nbit) = opval;
   11752  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11753  1.1  christos   }
   11754  1.1  christos   {
   11755  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11756  1.1  christos     CPU (h_zbit) = opval;
   11757  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11758  1.1  christos   }
   11759  1.1  christos SET_H_CBIT_MOVE (0);
   11760  1.1  christos SET_H_VBIT_MOVE (0);
   11761  1.1  christos {
   11762  1.1  christos   {
   11763  1.1  christos     BI opval = 0;
   11764  1.1  christos     CPU (h_xbit) = opval;
   11765  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11766  1.1  christos   }
   11767  1.1  christos   {
   11768  1.1  christos     BI opval = 0;
   11769  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11770  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11771  1.1  christos   }
   11772  1.1  christos }
   11773  1.1  christos }
   11774  1.1  christos }
   11775  1.1  christos 
   11776  1.1  christos #undef FLD
   11777  1.1  christos }
   11778  1.1  christos   NEXT (vpc);
   11779  1.1  christos 
   11780  1.1  christos   CASE (sem, INSN_LSRQ) : /* lsrq $c,${Rd} */
   11781  1.1  christos {
   11782  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11783  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11784  1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   11785  1.1  christos   int UNUSED written = 0;
   11786  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11787  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11788  1.1  christos 
   11789  1.1  christos {
   11790  1.1  christos   SI tmp_tmpd;
   11791  1.1  christos   tmp_tmpd = SRLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
   11792  1.1  christos   {
   11793  1.1  christos     SI opval = tmp_tmpd;
   11794  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11795  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11796  1.1  christos   }
   11797  1.1  christos {
   11798  1.1  christos   {
   11799  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11800  1.1  christos     CPU (h_nbit) = opval;
   11801  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11802  1.1  christos   }
   11803  1.1  christos   {
   11804  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11805  1.1  christos     CPU (h_zbit) = opval;
   11806  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11807  1.1  christos   }
   11808  1.1  christos SET_H_CBIT_MOVE (0);
   11809  1.1  christos SET_H_VBIT_MOVE (0);
   11810  1.1  christos {
   11811  1.1  christos   {
   11812  1.1  christos     BI opval = 0;
   11813  1.1  christos     CPU (h_xbit) = opval;
   11814  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11815  1.1  christos   }
   11816  1.1  christos   {
   11817  1.1  christos     BI opval = 0;
   11818  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11819  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11820  1.1  christos   }
   11821  1.1  christos }
   11822  1.1  christos }
   11823  1.1  christos }
   11824  1.1  christos 
   11825  1.1  christos #undef FLD
   11826  1.1  christos }
   11827  1.1  christos   NEXT (vpc);
   11828  1.1  christos 
   11829  1.1  christos   CASE (sem, INSN_LSLR_B_R) : /* lslr.b $Rs,$Rd */
   11830  1.1  christos {
   11831  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11832  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11833  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11834  1.1  christos   int UNUSED written = 0;
   11835  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11836  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11837  1.1  christos 
   11838  1.1  christos {
   11839  1.1  christos   SI tmp_tmpd;
   11840  1.1  christos   SI tmp_cnt;
   11841  1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11842  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))));
   11843  1.1  christos {
   11844  1.1  christos   SI tmp_oldregval;
   11845  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11846  1.1  christos   {
   11847  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11848  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11849  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11850  1.1  christos   }
   11851  1.1  christos }
   11852  1.1  christos {
   11853  1.1  christos   {
   11854  1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11855  1.1  christos     CPU (h_nbit) = opval;
   11856  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11857  1.1  christos   }
   11858  1.1  christos   {
   11859  1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11860  1.1  christos     CPU (h_zbit) = opval;
   11861  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11862  1.1  christos   }
   11863  1.1  christos SET_H_CBIT_MOVE (0);
   11864  1.1  christos SET_H_VBIT_MOVE (0);
   11865  1.1  christos {
   11866  1.1  christos   {
   11867  1.1  christos     BI opval = 0;
   11868  1.1  christos     CPU (h_xbit) = opval;
   11869  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11870  1.1  christos   }
   11871  1.1  christos   {
   11872  1.1  christos     BI opval = 0;
   11873  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11874  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11875  1.1  christos   }
   11876  1.1  christos }
   11877  1.1  christos }
   11878  1.1  christos }
   11879  1.1  christos 
   11880  1.1  christos #undef FLD
   11881  1.1  christos }
   11882  1.1  christos   NEXT (vpc);
   11883  1.1  christos 
   11884  1.1  christos   CASE (sem, INSN_LSLR_W_R) : /* lslr.w $Rs,$Rd */
   11885  1.1  christos {
   11886  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11887  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11888  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11889  1.1  christos   int UNUSED written = 0;
   11890  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11891  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11892  1.1  christos 
   11893  1.1  christos {
   11894  1.1  christos   SI tmp_tmpd;
   11895  1.1  christos   SI tmp_cnt;
   11896  1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11897  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))));
   11898  1.1  christos {
   11899  1.1  christos   SI tmp_oldregval;
   11900  1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11901  1.1  christos   {
   11902  1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11903  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11904  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11905  1.1  christos   }
   11906  1.1  christos }
   11907  1.1  christos {
   11908  1.1  christos   {
   11909  1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11910  1.1  christos     CPU (h_nbit) = opval;
   11911  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11912  1.1  christos   }
   11913  1.1  christos   {
   11914  1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11915  1.1  christos     CPU (h_zbit) = opval;
   11916  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11917  1.1  christos   }
   11918  1.1  christos SET_H_CBIT_MOVE (0);
   11919  1.1  christos SET_H_VBIT_MOVE (0);
   11920  1.1  christos {
   11921  1.1  christos   {
   11922  1.1  christos     BI opval = 0;
   11923  1.1  christos     CPU (h_xbit) = opval;
   11924  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11925  1.1  christos   }
   11926  1.1  christos   {
   11927  1.1  christos     BI opval = 0;
   11928  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11929  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11930  1.1  christos   }
   11931  1.1  christos }
   11932  1.1  christos }
   11933  1.1  christos }
   11934  1.1  christos 
   11935  1.1  christos #undef FLD
   11936  1.1  christos }
   11937  1.1  christos   NEXT (vpc);
   11938  1.1  christos 
   11939  1.1  christos   CASE (sem, INSN_LSLR_D_R) : /* lslr.d $Rs,$Rd */
   11940  1.1  christos {
   11941  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11942  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11943  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11944  1.1  christos   int UNUSED written = 0;
   11945  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11946  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11947  1.1  christos 
   11948  1.1  christos {
   11949  1.1  christos   SI tmp_tmpd;
   11950  1.1  christos   SI tmp_cnt;
   11951  1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11952  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))));
   11953  1.1  christos   {
   11954  1.1  christos     SI opval = tmp_tmpd;
   11955  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11956  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11957  1.1  christos   }
   11958  1.1  christos {
   11959  1.1  christos   {
   11960  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11961  1.1  christos     CPU (h_nbit) = opval;
   11962  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11963  1.1  christos   }
   11964  1.1  christos   {
   11965  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11966  1.1  christos     CPU (h_zbit) = opval;
   11967  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11968  1.1  christos   }
   11969  1.1  christos SET_H_CBIT_MOVE (0);
   11970  1.1  christos SET_H_VBIT_MOVE (0);
   11971  1.1  christos {
   11972  1.1  christos   {
   11973  1.1  christos     BI opval = 0;
   11974  1.1  christos     CPU (h_xbit) = opval;
   11975  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11976  1.1  christos   }
   11977  1.1  christos   {
   11978  1.1  christos     BI opval = 0;
   11979  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11980  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11981  1.1  christos   }
   11982  1.1  christos }
   11983  1.1  christos }
   11984  1.1  christos }
   11985  1.1  christos 
   11986  1.1  christos #undef FLD
   11987  1.1  christos }
   11988  1.1  christos   NEXT (vpc);
   11989  1.1  christos 
   11990  1.1  christos   CASE (sem, INSN_LSLQ) : /* lslq $c,${Rd} */
   11991  1.1  christos {
   11992  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11993  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11994  1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   11995  1.1  christos   int UNUSED written = 0;
   11996  1.1  christos   IADDR UNUSED pc = abuf->addr;
   11997  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11998  1.1  christos 
   11999  1.1  christos {
   12000  1.1  christos   SI tmp_tmpd;
   12001  1.1  christos   tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
   12002  1.1  christos   {
   12003  1.1  christos     SI opval = tmp_tmpd;
   12004  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   12005  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   12006  1.1  christos   }
   12007  1.1  christos {
   12008  1.1  christos   {
   12009  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   12010  1.1  christos     CPU (h_nbit) = opval;
   12011  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12012  1.1  christos   }
   12013  1.1  christos   {
   12014  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   12015  1.1  christos     CPU (h_zbit) = opval;
   12016  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12017  1.1  christos   }
   12018  1.1  christos SET_H_CBIT_MOVE (0);
   12019  1.1  christos SET_H_VBIT_MOVE (0);
   12020  1.1  christos {
   12021  1.1  christos   {
   12022  1.1  christos     BI opval = 0;
   12023  1.1  christos     CPU (h_xbit) = opval;
   12024  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12025  1.1  christos   }
   12026  1.1  christos   {
   12027  1.1  christos     BI opval = 0;
   12028  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12029  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12030  1.1  christos   }
   12031  1.1  christos }
   12032  1.1  christos }
   12033  1.1  christos }
   12034  1.1  christos 
   12035  1.1  christos #undef FLD
   12036  1.1  christos }
   12037  1.1  christos   NEXT (vpc);
   12038  1.1  christos 
   12039  1.1  christos   CASE (sem, INSN_BTST) : /* $Rs,$Rd */
   12040  1.1  christos {
   12041  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12042  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12043  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   12044  1.1  christos   int UNUSED written = 0;
   12045  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12046  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12047  1.1  christos 
   12048  1.1  christos {
   12049  1.1  christos   SI tmp_tmpd;
   12050  1.1  christos   SI tmp_cnt;
   12051  1.1  christos   tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, ANDSI (GET_H_GR (FLD (f_operand1)), 31)));
   12052  1.1  christos {
   12053  1.1  christos   {
   12054  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   12055  1.1  christos     CPU (h_nbit) = opval;
   12056  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12057  1.1  christos   }
   12058  1.1  christos   {
   12059  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   12060  1.1  christos     CPU (h_zbit) = opval;
   12061  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12062  1.1  christos   }
   12063  1.1  christos SET_H_CBIT_MOVE (0);
   12064  1.1  christos SET_H_VBIT_MOVE (0);
   12065  1.1  christos {
   12066  1.1  christos   {
   12067  1.1  christos     BI opval = 0;
   12068  1.1  christos     CPU (h_xbit) = opval;
   12069  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12070  1.1  christos   }
   12071  1.1  christos   {
   12072  1.1  christos     BI opval = 0;
   12073  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12074  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12075  1.1  christos   }
   12076  1.1  christos }
   12077  1.1  christos }
   12078  1.1  christos }
   12079  1.1  christos 
   12080  1.1  christos #undef FLD
   12081  1.1  christos }
   12082  1.1  christos   NEXT (vpc);
   12083  1.1  christos 
   12084  1.1  christos   CASE (sem, INSN_BTSTQ) : /* btstq $c,${Rd} */
   12085  1.1  christos {
   12086  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12087  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12088  1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   12089  1.1  christos   int UNUSED written = 0;
   12090  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12091  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12092  1.1  christos 
   12093  1.1  christos {
   12094  1.1  christos   SI tmp_tmpd;
   12095  1.1  christos   tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, FLD (f_u5)));
   12096  1.1  christos {
   12097  1.1  christos   {
   12098  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   12099  1.1  christos     CPU (h_nbit) = opval;
   12100  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12101  1.1  christos   }
   12102  1.1  christos   {
   12103  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   12104  1.1  christos     CPU (h_zbit) = opval;
   12105  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12106  1.1  christos   }
   12107  1.1  christos SET_H_CBIT_MOVE (0);
   12108  1.1  christos SET_H_VBIT_MOVE (0);
   12109  1.1  christos {
   12110  1.1  christos   {
   12111  1.1  christos     BI opval = 0;
   12112  1.1  christos     CPU (h_xbit) = opval;
   12113  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12114  1.1  christos   }
   12115  1.1  christos   {
   12116  1.1  christos     BI opval = 0;
   12117  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12118  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12119  1.1  christos   }
   12120  1.1  christos }
   12121  1.1  christos }
   12122  1.1  christos }
   12123  1.1  christos 
   12124  1.1  christos #undef FLD
   12125  1.1  christos }
   12126  1.1  christos   NEXT (vpc);
   12127  1.1  christos 
   12128  1.1  christos   CASE (sem, INSN_SETF) : /* setf ${list-of-flags} */
   12129  1.1  christos {
   12130  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12131  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12132  1.1  christos #define FLD(f) abuf->fields.sfmt_setf.f
   12133  1.1  christos   int UNUSED written = 0;
   12134  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12135  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12136  1.1  christos 
   12137  1.1  christos {
   12138  1.1  christos   SI tmp_tmp;
   12139  1.1  christos   tmp_tmp = FLD (f_dstsrc);
   12140  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
   12141  1.1  christos   {
   12142  1.1  christos     BI opval = 1;
   12143  1.1  christos     CPU (h_cbit) = opval;
   12144  1.1  christos     written |= (1 << 1);
   12145  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   12146  1.1  christos   }
   12147  1.1  christos }
   12148  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
   12149  1.1  christos   {
   12150  1.1  christos     BI opval = 1;
   12151  1.1  christos     CPU (h_vbit) = opval;
   12152  1.1  christos     written |= (1 << 7);
   12153  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   12154  1.1  christos   }
   12155  1.1  christos }
   12156  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
   12157  1.1  christos   {
   12158  1.1  christos     BI opval = 1;
   12159  1.1  christos     CPU (h_zbit) = opval;
   12160  1.1  christos     written |= (1 << 9);
   12161  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12162  1.1  christos   }
   12163  1.1  christos }
   12164  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
   12165  1.1  christos   {
   12166  1.1  christos     BI opval = 1;
   12167  1.1  christos     CPU (h_nbit) = opval;
   12168  1.1  christos     written |= (1 << 3);
   12169  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12170  1.1  christos   }
   12171  1.1  christos }
   12172  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
   12173  1.1  christos   {
   12174  1.1  christos     BI opval = 1;
   12175  1.1  christos     CPU (h_xbit) = opval;
   12176  1.1  christos     written |= (1 << 8);
   12177  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12178  1.1  christos   }
   12179  1.1  christos }
   12180  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
   12181  1.1  christos   {
   12182  1.1  christos     BI opval = 1;
   12183  1.1  christos     SET_H_IBIT (opval);
   12184  1.1  christos     written |= (1 << 2);
   12185  1.1  christos     TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
   12186  1.1  christos   }
   12187  1.1  christos }
   12188  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
   12189  1.1  christos   {
   12190  1.1  christos     BI opval = 1;
   12191  1.1  christos     SET_H_UBIT (opval);
   12192  1.1  christos     written |= (1 << 6);
   12193  1.1  christos     TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
   12194  1.1  christos   }
   12195  1.1  christos }
   12196  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
   12197  1.1  christos   {
   12198  1.1  christos     BI opval = 1;
   12199  1.1  christos     CPU (h_pbit) = opval;
   12200  1.1  christos     written |= (1 << 4);
   12201  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
   12202  1.1  christos   }
   12203  1.1  christos }
   12204  1.1  christos   {
   12205  1.1  christos     BI opval = 0;
   12206  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12207  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12208  1.1  christos   }
   12209  1.1  christos if (EQSI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
   12210  1.1  christos   {
   12211  1.1  christos     BI opval = 0;
   12212  1.1  christos     CPU (h_xbit) = opval;
   12213  1.1  christos     written |= (1 << 8);
   12214  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12215  1.1  christos   }
   12216  1.1  christos }
   12217  1.1  christos }
   12218  1.1  christos 
   12219  1.1  christos   abuf->written = written;
   12220  1.1  christos #undef FLD
   12221  1.1  christos }
   12222  1.1  christos   NEXT (vpc);
   12223  1.1  christos 
   12224  1.1  christos   CASE (sem, INSN_CLEARF) : /* clearf ${list-of-flags} */
   12225  1.1  christos {
   12226  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12227  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12228  1.1  christos #define FLD(f) abuf->fields.sfmt_setf.f
   12229  1.1  christos   int UNUSED written = 0;
   12230  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12231  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12232  1.1  christos 
   12233  1.1  christos {
   12234  1.1  christos   SI tmp_tmp;
   12235  1.1  christos   tmp_tmp = FLD (f_dstsrc);
   12236  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
   12237  1.1  christos   {
   12238  1.1  christos     BI opval = 0;
   12239  1.1  christos     CPU (h_cbit) = opval;
   12240  1.1  christos     written |= (1 << 1);
   12241  1.1  christos     TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   12242  1.1  christos   }
   12243  1.1  christos }
   12244  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
   12245  1.1  christos   {
   12246  1.1  christos     BI opval = 0;
   12247  1.1  christos     CPU (h_vbit) = opval;
   12248  1.1  christos     written |= (1 << 7);
   12249  1.1  christos     TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   12250  1.1  christos   }
   12251  1.1  christos }
   12252  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
   12253  1.1  christos   {
   12254  1.1  christos     BI opval = 0;
   12255  1.1  christos     CPU (h_zbit) = opval;
   12256  1.1  christos     written |= (1 << 9);
   12257  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12258  1.1  christos   }
   12259  1.1  christos }
   12260  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
   12261  1.1  christos   {
   12262  1.1  christos     BI opval = 0;
   12263  1.1  christos     CPU (h_nbit) = opval;
   12264  1.1  christos     written |= (1 << 3);
   12265  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12266  1.1  christos   }
   12267  1.1  christos }
   12268  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
   12269  1.1  christos   {
   12270  1.1  christos     BI opval = 0;
   12271  1.1  christos     CPU (h_xbit) = opval;
   12272  1.1  christos     written |= (1 << 8);
   12273  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12274  1.1  christos   }
   12275  1.1  christos }
   12276  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
   12277  1.1  christos   {
   12278  1.1  christos     BI opval = 0;
   12279  1.1  christos     SET_H_IBIT (opval);
   12280  1.1  christos     written |= (1 << 2);
   12281  1.1  christos     TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
   12282  1.1  christos   }
   12283  1.1  christos }
   12284  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
   12285  1.1  christos   {
   12286  1.1  christos     BI opval = 0;
   12287  1.1  christos     SET_H_UBIT (opval);
   12288  1.1  christos     written |= (1 << 6);
   12289  1.1  christos     TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
   12290  1.1  christos   }
   12291  1.1  christos }
   12292  1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
   12293  1.1  christos   {
   12294  1.1  christos     BI opval = 0;
   12295  1.1  christos     CPU (h_pbit) = opval;
   12296  1.1  christos     written |= (1 << 4);
   12297  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
   12298  1.1  christos   }
   12299  1.1  christos }
   12300  1.1  christos {
   12301  1.1  christos   {
   12302  1.1  christos     BI opval = 0;
   12303  1.1  christos     CPU (h_xbit) = opval;
   12304  1.1  christos     written |= (1 << 8);
   12305  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12306  1.1  christos   }
   12307  1.1  christos   {
   12308  1.1  christos     BI opval = 0;
   12309  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12310  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12311  1.1  christos   }
   12312  1.1  christos }
   12313  1.1  christos }
   12314  1.1  christos 
   12315  1.1  christos   abuf->written = written;
   12316  1.1  christos #undef FLD
   12317  1.1  christos }
   12318  1.1  christos   NEXT (vpc);
   12319  1.1  christos 
   12320  1.1  christos   CASE (sem, INSN_RFE) : /* rfe */
   12321  1.1  christos {
   12322  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12323  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12324  1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   12325  1.1  christos   int UNUSED written = 0;
   12326  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12327  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12328  1.1  christos 
   12329  1.1  christos {
   12330  1.1  christos   USI tmp_oldccs;
   12331  1.1  christos   USI tmp_samebits;
   12332  1.1  christos   USI tmp_shiftbits;
   12333  1.1  christos   USI tmp_keepmask;
   12334  1.1  christos   BI tmp_p1;
   12335  1.1  christos   tmp_oldccs = GET_H_SR (((UINT) 13));
   12336  1.1  christos   tmp_keepmask = 0xc0000000;
   12337  1.1  christos   tmp_samebits = ANDSI (tmp_oldccs, tmp_keepmask);
   12338  1.1  christos   tmp_shiftbits = ANDSI (SRLSI (ANDSI (tmp_oldccs, 1073609728), 10), INVSI (tmp_keepmask));
   12339  1.1  christos   tmp_p1 = NESI (0, ANDSI (tmp_oldccs, 131072));
   12340  1.1  christos   {
   12341  1.1  christos     SI opval = ORSI (ORSI (tmp_samebits, tmp_shiftbits), ((ANDBI (CPU (h_rbit), NOTBI (tmp_p1))) ? (0) : (128)));
   12342  1.1  christos     SET_H_SR (((UINT) 13), opval);
   12343  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12344  1.1  christos   }
   12345  1.1  christos }
   12346  1.1  christos 
   12347  1.1  christos #undef FLD
   12348  1.1  christos }
   12349  1.1  christos   NEXT (vpc);
   12350  1.1  christos 
   12351  1.1  christos   CASE (sem, INSN_SFE) : /* sfe */
   12352  1.1  christos {
   12353  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12354  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12355  1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   12356  1.1  christos   int UNUSED written = 0;
   12357  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12358  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12359  1.1  christos 
   12360  1.1  christos {
   12361  1.1  christos   SI tmp_oldccs;
   12362  1.1  christos   SI tmp_savemask;
   12363  1.1  christos   tmp_savemask = 0xc0000000;
   12364  1.1  christos   tmp_oldccs = GET_H_SR (((UINT) 13));
   12365  1.1  christos   {
   12366  1.1  christos     SI opval = ORSI (ANDSI (tmp_savemask, tmp_oldccs), ANDSI (INVSI (tmp_savemask), SLLSI (tmp_oldccs, 10)));
   12367  1.1  christos     SET_H_SR (((UINT) 13), opval);
   12368  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12369  1.1  christos   }
   12370  1.1  christos }
   12371  1.1  christos 
   12372  1.1  christos #undef FLD
   12373  1.1  christos }
   12374  1.1  christos   NEXT (vpc);
   12375  1.1  christos 
   12376  1.1  christos   CASE (sem, INSN_RFG) : /* rfg */
   12377  1.1  christos {
   12378  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12379  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12380  1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   12381  1.1  christos   int UNUSED written = 0;
   12382  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12383  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12384  1.1  christos 
   12385  1.1  christos crisv32f_rfg_handler (current_cpu, pc);
   12386  1.1  christos 
   12387  1.1  christos #undef FLD
   12388  1.1  christos }
   12389  1.1  christos   NEXT (vpc);
   12390  1.1  christos 
   12391  1.1  christos   CASE (sem, INSN_RFN) : /* rfn */
   12392  1.1  christos {
   12393  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12394  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12395  1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   12396  1.1  christos   int UNUSED written = 0;
   12397  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12398  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12399  1.1  christos 
   12400  1.1  christos {
   12401  1.1  christos {
   12402  1.1  christos   USI tmp_oldccs;
   12403  1.1  christos   USI tmp_samebits;
   12404  1.1  christos   USI tmp_shiftbits;
   12405  1.1  christos   USI tmp_keepmask;
   12406  1.1  christos   BI tmp_p1;
   12407  1.1  christos   tmp_oldccs = GET_H_SR (((UINT) 13));
   12408  1.1  christos   tmp_keepmask = 0xc0000000;
   12409  1.1  christos   tmp_samebits = ANDSI (tmp_oldccs, tmp_keepmask);
   12410  1.1  christos   tmp_shiftbits = ANDSI (SRLSI (ANDSI (tmp_oldccs, 1073609728), 10), INVSI (tmp_keepmask));
   12411  1.1  christos   tmp_p1 = NESI (0, ANDSI (tmp_oldccs, 131072));
   12412  1.1  christos   {
   12413  1.1  christos     SI opval = ORSI (ORSI (tmp_samebits, tmp_shiftbits), ((ANDBI (CPU (h_rbit), NOTBI (tmp_p1))) ? (0) : (128)));
   12414  1.1  christos     SET_H_SR (((UINT) 13), opval);
   12415  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12416  1.1  christos   }
   12417  1.1  christos }
   12418  1.1  christos   {
   12419  1.1  christos     BI opval = 1;
   12420  1.1  christos     SET_H_MBIT (opval);
   12421  1.1  christos     TRACE_RESULT (current_cpu, abuf, "mbit", 'x', opval);
   12422  1.1  christos   }
   12423  1.1  christos }
   12424  1.1  christos 
   12425  1.1  christos #undef FLD
   12426  1.1  christos }
   12427  1.1  christos   NEXT (vpc);
   12428  1.1  christos 
   12429  1.1  christos   CASE (sem, INSN_HALT) : /* halt */
   12430  1.1  christos {
   12431  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12432  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12433  1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   12434  1.1  christos   int UNUSED written = 0;
   12435  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12436  1.1  christos   SEM_BRANCH_INIT
   12437  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12438  1.1  christos 
   12439  1.1  christos   {
   12440  1.1  christos     USI opval = crisv32f_halt_handler (current_cpu, pc);
   12441  1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12442  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12443  1.1  christos   }
   12444  1.1  christos 
   12445  1.1  christos   SEM_BRANCH_FINI (vpc);
   12446  1.1  christos #undef FLD
   12447  1.1  christos }
   12448  1.1  christos   NEXT (vpc);
   12449  1.1  christos 
   12450  1.1  christos   CASE (sem, INSN_BCC_B) : /* b${cc} ${o-pcrel} */
   12451  1.1  christos {
   12452  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12453  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12454  1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
   12455  1.1  christos   int UNUSED written = 0;
   12456  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12457  1.1  christos   SEM_BRANCH_INIT
   12458  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12459  1.1  christos 
   12460  1.1  christos {
   12461  1.1  christos   BI tmp_truthval;
   12462  1.1  christos   tmp_truthval = ({   SI tmp_tmpcond;
   12463  1.1  christos   BI tmp_condres;
   12464  1.1  christos   tmp_tmpcond = FLD (f_operand2);
   12465  1.1  christos ; if (EQSI (tmp_tmpcond, 0)) {
   12466  1.1  christos   tmp_condres = NOTBI (CPU (h_cbit));
   12467  1.1  christos }
   12468  1.1  christos  else if (EQSI (tmp_tmpcond, 1)) {
   12469  1.1  christos   tmp_condres = CPU (h_cbit);
   12470  1.1  christos }
   12471  1.1  christos  else if (EQSI (tmp_tmpcond, 2)) {
   12472  1.1  christos   tmp_condres = NOTBI (CPU (h_zbit));
   12473  1.1  christos }
   12474  1.1  christos  else if (EQSI (tmp_tmpcond, 3)) {
   12475  1.1  christos   tmp_condres = CPU (h_zbit);
   12476  1.1  christos }
   12477  1.1  christos  else if (EQSI (tmp_tmpcond, 4)) {
   12478  1.1  christos   tmp_condres = NOTBI (CPU (h_vbit));
   12479  1.1  christos }
   12480  1.1  christos  else if (EQSI (tmp_tmpcond, 5)) {
   12481  1.1  christos   tmp_condres = CPU (h_vbit);
   12482  1.1  christos }
   12483  1.1  christos  else if (EQSI (tmp_tmpcond, 6)) {
   12484  1.1  christos   tmp_condres = NOTBI (CPU (h_nbit));
   12485  1.1  christos }
   12486  1.1  christos  else if (EQSI (tmp_tmpcond, 7)) {
   12487  1.1  christos   tmp_condres = CPU (h_nbit);
   12488  1.1  christos }
   12489  1.1  christos  else if (EQSI (tmp_tmpcond, 8)) {
   12490  1.1  christos   tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
   12491  1.1  christos }
   12492  1.1  christos  else if (EQSI (tmp_tmpcond, 9)) {
   12493  1.1  christos   tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
   12494  1.1  christos }
   12495  1.1  christos  else if (EQSI (tmp_tmpcond, 10)) {
   12496  1.1  christos   tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
   12497  1.1  christos }
   12498  1.1  christos  else if (EQSI (tmp_tmpcond, 11)) {
   12499  1.1  christos   tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
   12500  1.1  christos }
   12501  1.1  christos  else if (EQSI (tmp_tmpcond, 12)) {
   12502  1.1  christos   tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
   12503  1.1  christos }
   12504  1.1  christos  else if (EQSI (tmp_tmpcond, 13)) {
   12505  1.1  christos   tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
   12506  1.1  christos }
   12507  1.1  christos  else if (EQSI (tmp_tmpcond, 14)) {
   12508  1.1  christos   tmp_condres = 1;
   12509  1.1  christos }
   12510  1.1  christos  else if (EQSI (tmp_tmpcond, 15)) {
   12511  1.1  christos   tmp_condres = CPU (h_pbit);
   12512  1.1  christos }
   12513  1.1  christos ; tmp_condres; });
   12514  1.1  christos crisv32f_branch_taken (current_cpu, pc, FLD (i_o_pcrel), tmp_truthval);
   12515  1.1  christos {
   12516  1.1  christos   {
   12517  1.1  christos     BI opval = 0;
   12518  1.1  christos     CPU (h_xbit) = opval;
   12519  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12520  1.1  christos   }
   12521  1.1  christos   {
   12522  1.1  christos     BI opval = 0;
   12523  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12524  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12525  1.1  christos   }
   12526  1.1  christos }
   12527  1.1  christos if (tmp_truthval) {
   12528  1.1  christos {
   12529  1.1  christos   {
   12530  1.1  christos     USI opval = FLD (i_o_pcrel);
   12531  1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12532  1.1  christos     written |= (1 << 8);
   12533  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12534  1.1  christos   }
   12535  1.1  christos }
   12536  1.1  christos }
   12537  1.1  christos }
   12538  1.1  christos 
   12539  1.1  christos   abuf->written = written;
   12540  1.1  christos   SEM_BRANCH_FINI (vpc);
   12541  1.1  christos #undef FLD
   12542  1.1  christos }
   12543  1.1  christos   NEXT (vpc);
   12544  1.1  christos 
   12545  1.1  christos   CASE (sem, INSN_BA_B) : /* ba ${o-pcrel} */
   12546  1.1  christos {
   12547  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12548  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12549  1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
   12550  1.1  christos   int UNUSED written = 0;
   12551  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12552  1.1  christos   SEM_BRANCH_INIT
   12553  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12554  1.1  christos 
   12555  1.1  christos {
   12556  1.1  christos {
   12557  1.1  christos   {
   12558  1.1  christos     BI opval = 0;
   12559  1.1  christos     CPU (h_xbit) = opval;
   12560  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12561  1.1  christos   }
   12562  1.1  christos   {
   12563  1.1  christos     BI opval = 0;
   12564  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12565  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12566  1.1  christos   }
   12567  1.1  christos }
   12568  1.1  christos {
   12569  1.1  christos   {
   12570  1.1  christos     USI opval = FLD (i_o_pcrel);
   12571  1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12572  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12573  1.1  christos   }
   12574  1.1  christos }
   12575  1.1  christos }
   12576  1.1  christos 
   12577  1.1  christos   SEM_BRANCH_FINI (vpc);
   12578  1.1  christos #undef FLD
   12579  1.1  christos }
   12580  1.1  christos   NEXT (vpc);
   12581  1.1  christos 
   12582  1.1  christos   CASE (sem, INSN_BCC_W) : /* b${cc} ${o-word-pcrel} */
   12583  1.1  christos {
   12584  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12585  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12586  1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
   12587  1.1  christos   int UNUSED written = 0;
   12588  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12589  1.1  christos   SEM_BRANCH_INIT
   12590  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   12591  1.1  christos 
   12592  1.1  christos {
   12593  1.1  christos   BI tmp_truthval;
   12594  1.1  christos   tmp_truthval = ({   SI tmp_tmpcond;
   12595  1.1  christos   BI tmp_condres;
   12596  1.1  christos   tmp_tmpcond = FLD (f_operand2);
   12597  1.1  christos ; if (EQSI (tmp_tmpcond, 0)) {
   12598  1.1  christos   tmp_condres = NOTBI (CPU (h_cbit));
   12599  1.1  christos }
   12600  1.1  christos  else if (EQSI (tmp_tmpcond, 1)) {
   12601  1.1  christos   tmp_condres = CPU (h_cbit);
   12602  1.1  christos }
   12603  1.1  christos  else if (EQSI (tmp_tmpcond, 2)) {
   12604  1.1  christos   tmp_condres = NOTBI (CPU (h_zbit));
   12605  1.1  christos }
   12606  1.1  christos  else if (EQSI (tmp_tmpcond, 3)) {
   12607  1.1  christos   tmp_condres = CPU (h_zbit);
   12608  1.1  christos }
   12609  1.1  christos  else if (EQSI (tmp_tmpcond, 4)) {
   12610  1.1  christos   tmp_condres = NOTBI (CPU (h_vbit));
   12611  1.1  christos }
   12612  1.1  christos  else if (EQSI (tmp_tmpcond, 5)) {
   12613  1.1  christos   tmp_condres = CPU (h_vbit);
   12614  1.1  christos }
   12615  1.1  christos  else if (EQSI (tmp_tmpcond, 6)) {
   12616  1.1  christos   tmp_condres = NOTBI (CPU (h_nbit));
   12617  1.1  christos }
   12618  1.1  christos  else if (EQSI (tmp_tmpcond, 7)) {
   12619  1.1  christos   tmp_condres = CPU (h_nbit);
   12620  1.1  christos }
   12621  1.1  christos  else if (EQSI (tmp_tmpcond, 8)) {
   12622  1.1  christos   tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
   12623  1.1  christos }
   12624  1.1  christos  else if (EQSI (tmp_tmpcond, 9)) {
   12625  1.1  christos   tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
   12626  1.1  christos }
   12627  1.1  christos  else if (EQSI (tmp_tmpcond, 10)) {
   12628  1.1  christos   tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
   12629  1.1  christos }
   12630  1.1  christos  else if (EQSI (tmp_tmpcond, 11)) {
   12631  1.1  christos   tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
   12632  1.1  christos }
   12633  1.1  christos  else if (EQSI (tmp_tmpcond, 12)) {
   12634  1.1  christos   tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
   12635  1.1  christos }
   12636  1.1  christos  else if (EQSI (tmp_tmpcond, 13)) {
   12637  1.1  christos   tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
   12638  1.1  christos }
   12639  1.1  christos  else if (EQSI (tmp_tmpcond, 14)) {
   12640  1.1  christos   tmp_condres = 1;
   12641  1.1  christos }
   12642  1.1  christos  else if (EQSI (tmp_tmpcond, 15)) {
   12643  1.1  christos   tmp_condres = CPU (h_pbit);
   12644  1.1  christos }
   12645  1.1  christos ; tmp_condres; });
   12646  1.1  christos crisv32f_branch_taken (current_cpu, pc, FLD (i_o_word_pcrel), tmp_truthval);
   12647  1.1  christos {
   12648  1.1  christos   {
   12649  1.1  christos     BI opval = 0;
   12650  1.1  christos     CPU (h_xbit) = opval;
   12651  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12652  1.1  christos   }
   12653  1.1  christos   {
   12654  1.1  christos     BI opval = 0;
   12655  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12656  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12657  1.1  christos   }
   12658  1.1  christos }
   12659  1.1  christos if (tmp_truthval) {
   12660  1.1  christos {
   12661  1.1  christos   {
   12662  1.1  christos     USI opval = FLD (i_o_word_pcrel);
   12663  1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12664  1.1  christos     written |= (1 << 8);
   12665  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12666  1.1  christos   }
   12667  1.1  christos }
   12668  1.1  christos }
   12669  1.1  christos }
   12670  1.1  christos 
   12671  1.1  christos   abuf->written = written;
   12672  1.1  christos   SEM_BRANCH_FINI (vpc);
   12673  1.1  christos #undef FLD
   12674  1.1  christos }
   12675  1.1  christos   NEXT (vpc);
   12676  1.1  christos 
   12677  1.1  christos   CASE (sem, INSN_BA_W) : /* ba ${o-word-pcrel} */
   12678  1.1  christos {
   12679  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12680  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12681  1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
   12682  1.1  christos   int UNUSED written = 0;
   12683  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12684  1.1  christos   SEM_BRANCH_INIT
   12685  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   12686  1.1  christos 
   12687  1.1  christos {
   12688  1.1  christos {
   12689  1.1  christos   {
   12690  1.1  christos     BI opval = 0;
   12691  1.1  christos     CPU (h_xbit) = opval;
   12692  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12693  1.1  christos   }
   12694  1.1  christos   {
   12695  1.1  christos     BI opval = 0;
   12696  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12697  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12698  1.1  christos   }
   12699  1.1  christos }
   12700  1.1  christos {
   12701  1.1  christos   {
   12702  1.1  christos     USI opval = FLD (i_o_word_pcrel);
   12703  1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12704  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12705  1.1  christos   }
   12706  1.1  christos }
   12707  1.1  christos }
   12708  1.1  christos 
   12709  1.1  christos   SEM_BRANCH_FINI (vpc);
   12710  1.1  christos #undef FLD
   12711  1.1  christos }
   12712  1.1  christos   NEXT (vpc);
   12713  1.1  christos 
   12714  1.1  christos   CASE (sem, INSN_JAS_R) : /* jas ${Rs},${Pd} */
   12715  1.1  christos {
   12716  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12717  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12718  1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   12719  1.1  christos   int UNUSED written = 0;
   12720  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12721  1.1  christos   SEM_BRANCH_INIT
   12722  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12723  1.1  christos 
   12724  1.1  christos {
   12725  1.1  christos {
   12726  1.1  christos   {
   12727  1.1  christos     BI opval = 0;
   12728  1.1  christos     CPU (h_xbit) = opval;
   12729  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12730  1.1  christos   }
   12731  1.1  christos   {
   12732  1.1  christos     BI opval = 0;
   12733  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12734  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12735  1.1  christos   }
   12736  1.1  christos }
   12737  1.1  christos if (ANDIF (EQSI (FLD (f_operand1), 1), EQSI (FLD (f_operand2), 11))) {
   12738  1.1  christos cris_flush_simulator_decode_cache (current_cpu, pc);
   12739  1.1  christos }
   12740  1.1  christos {
   12741  1.1  christos {
   12742  1.1  christos   {
   12743  1.1  christos     SI opval = ADDSI (pc, 4);
   12744  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12745  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12746  1.1  christos   }
   12747  1.1  christos   {
   12748  1.1  christos     USI opval = GET_H_GR (FLD (f_operand1));
   12749  1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12750  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12751  1.1  christos   }
   12752  1.1  christos }
   12753  1.1  christos }
   12754  1.1  christos }
   12755  1.1  christos 
   12756  1.1  christos   SEM_BRANCH_FINI (vpc);
   12757  1.1  christos #undef FLD
   12758  1.1  christos }
   12759  1.1  christos   NEXT (vpc);
   12760  1.1  christos 
   12761  1.1  christos   CASE (sem, INSN_JAS_C) : /* jas ${const32},${Pd} */
   12762  1.1  christos {
   12763  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12764  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12765  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   12766  1.1  christos   int UNUSED written = 0;
   12767  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12768  1.1  christos   SEM_BRANCH_INIT
   12769  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12770  1.1  christos 
   12771  1.1  christos {
   12772  1.1  christos {
   12773  1.1  christos   {
   12774  1.1  christos     BI opval = 0;
   12775  1.1  christos     CPU (h_xbit) = opval;
   12776  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12777  1.1  christos   }
   12778  1.1  christos   {
   12779  1.1  christos     BI opval = 0;
   12780  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12781  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12782  1.1  christos   }
   12783  1.1  christos }
   12784  1.1  christos {
   12785  1.1  christos {
   12786  1.1  christos   {
   12787  1.1  christos     SI opval = ADDSI (pc, 8);
   12788  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12789  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12790  1.1  christos   }
   12791  1.1  christos   {
   12792  1.1  christos     USI opval = FLD (f_indir_pc__dword);
   12793  1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12794  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12795  1.1  christos   }
   12796  1.1  christos }
   12797  1.1  christos }
   12798  1.1  christos }
   12799  1.1  christos 
   12800  1.1  christos   SEM_BRANCH_FINI (vpc);
   12801  1.1  christos #undef FLD
   12802  1.1  christos }
   12803  1.1  christos   NEXT (vpc);
   12804  1.1  christos 
   12805  1.1  christos   CASE (sem, INSN_JUMP_P) : /* jump ${Ps} */
   12806  1.1  christos {
   12807  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12808  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12809  1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   12810  1.1  christos   int UNUSED written = 0;
   12811  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12812  1.1  christos   SEM_BRANCH_INIT
   12813  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12814  1.1  christos 
   12815  1.1  christos {
   12816  1.1  christos {
   12817  1.1  christos   {
   12818  1.1  christos     BI opval = 0;
   12819  1.1  christos     CPU (h_xbit) = opval;
   12820  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12821  1.1  christos   }
   12822  1.1  christos   {
   12823  1.1  christos     BI opval = 0;
   12824  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12825  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12826  1.1  christos   }
   12827  1.1  christos }
   12828  1.1  christos {
   12829  1.1  christos   {
   12830  1.1  christos     USI opval = GET_H_SR (FLD (f_operand2));
   12831  1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12832  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12833  1.1  christos   }
   12834  1.1  christos }
   12835  1.1  christos }
   12836  1.1  christos 
   12837  1.1  christos   SEM_BRANCH_FINI (vpc);
   12838  1.1  christos #undef FLD
   12839  1.1  christos }
   12840  1.1  christos   NEXT (vpc);
   12841  1.1  christos 
   12842  1.1  christos   CASE (sem, INSN_BAS_C) : /* bas ${const32},${Pd} */
   12843  1.1  christos {
   12844  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12845  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12846  1.1  christos #define FLD(f) abuf->fields.sfmt_bas_c.f
   12847  1.1  christos   int UNUSED written = 0;
   12848  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12849  1.1  christos   SEM_BRANCH_INIT
   12850  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12851  1.1  christos 
   12852  1.1  christos {
   12853  1.1  christos {
   12854  1.1  christos   {
   12855  1.1  christos     BI opval = 0;
   12856  1.1  christos     CPU (h_xbit) = opval;
   12857  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12858  1.1  christos   }
   12859  1.1  christos   {
   12860  1.1  christos     BI opval = 0;
   12861  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12862  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12863  1.1  christos   }
   12864  1.1  christos }
   12865  1.1  christos {
   12866  1.1  christos {
   12867  1.1  christos   {
   12868  1.1  christos     SI opval = ADDSI (pc, 8);
   12869  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12870  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12871  1.1  christos   }
   12872  1.1  christos   {
   12873  1.1  christos     USI opval = FLD (i_const32_pcrel);
   12874  1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12875  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12876  1.1  christos   }
   12877  1.1  christos }
   12878  1.1  christos }
   12879  1.1  christos }
   12880  1.1  christos 
   12881  1.1  christos   SEM_BRANCH_FINI (vpc);
   12882  1.1  christos #undef FLD
   12883  1.1  christos }
   12884  1.1  christos   NEXT (vpc);
   12885  1.1  christos 
   12886  1.1  christos   CASE (sem, INSN_JASC_R) : /* jasc ${Rs},${Pd} */
   12887  1.1  christos {
   12888  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12889  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12890  1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   12891  1.1  christos   int UNUSED written = 0;
   12892  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12893  1.1  christos   SEM_BRANCH_INIT
   12894  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12895  1.1  christos 
   12896  1.1  christos {
   12897  1.1  christos {
   12898  1.1  christos   {
   12899  1.1  christos     BI opval = 0;
   12900  1.1  christos     CPU (h_xbit) = opval;
   12901  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12902  1.1  christos   }
   12903  1.1  christos   {
   12904  1.1  christos     BI opval = 0;
   12905  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12906  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12907  1.1  christos   }
   12908  1.1  christos }
   12909  1.1  christos {
   12910  1.1  christos {
   12911  1.1  christos   {
   12912  1.1  christos     SI opval = ADDSI (pc, 8);
   12913  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12914  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12915  1.1  christos   }
   12916  1.1  christos   {
   12917  1.1  christos     USI opval = GET_H_GR (FLD (f_operand1));
   12918  1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12919  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12920  1.1  christos   }
   12921  1.1  christos }
   12922  1.1  christos }
   12923  1.1  christos }
   12924  1.1  christos 
   12925  1.1  christos   SEM_BRANCH_FINI (vpc);
   12926  1.1  christos #undef FLD
   12927  1.1  christos }
   12928  1.1  christos   NEXT (vpc);
   12929  1.1  christos 
   12930  1.1  christos   CASE (sem, INSN_JASC_C) : /* jasc ${const32},${Pd} */
   12931  1.1  christos {
   12932  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12933  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12934  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   12935  1.1  christos   int UNUSED written = 0;
   12936  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12937  1.1  christos   SEM_BRANCH_INIT
   12938  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12939  1.1  christos 
   12940  1.1  christos {
   12941  1.1  christos {
   12942  1.1  christos   {
   12943  1.1  christos     BI opval = 0;
   12944  1.1  christos     CPU (h_xbit) = opval;
   12945  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12946  1.1  christos   }
   12947  1.1  christos   {
   12948  1.1  christos     BI opval = 0;
   12949  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12950  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12951  1.1  christos   }
   12952  1.1  christos }
   12953  1.1  christos {
   12954  1.1  christos {
   12955  1.1  christos   {
   12956  1.1  christos     SI opval = ADDSI (pc, 12);
   12957  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12958  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12959  1.1  christos   }
   12960  1.1  christos   {
   12961  1.1  christos     USI opval = FLD (f_indir_pc__dword);
   12962  1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12963  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12964  1.1  christos   }
   12965  1.1  christos }
   12966  1.1  christos }
   12967  1.1  christos }
   12968  1.1  christos 
   12969  1.1  christos   SEM_BRANCH_FINI (vpc);
   12970  1.1  christos #undef FLD
   12971  1.1  christos }
   12972  1.1  christos   NEXT (vpc);
   12973  1.1  christos 
   12974  1.1  christos   CASE (sem, INSN_BASC_C) : /* basc ${const32},${Pd} */
   12975  1.1  christos {
   12976  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12977  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12978  1.1  christos #define FLD(f) abuf->fields.sfmt_bas_c.f
   12979  1.1  christos   int UNUSED written = 0;
   12980  1.1  christos   IADDR UNUSED pc = abuf->addr;
   12981  1.1  christos   SEM_BRANCH_INIT
   12982  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12983  1.1  christos 
   12984  1.1  christos {
   12985  1.1  christos {
   12986  1.1  christos   {
   12987  1.1  christos     BI opval = 0;
   12988  1.1  christos     CPU (h_xbit) = opval;
   12989  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12990  1.1  christos   }
   12991  1.1  christos   {
   12992  1.1  christos     BI opval = 0;
   12993  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12994  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12995  1.1  christos   }
   12996  1.1  christos }
   12997  1.1  christos {
   12998  1.1  christos {
   12999  1.1  christos   {
   13000  1.1  christos     SI opval = ADDSI (pc, 12);
   13001  1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   13002  1.1  christos     TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   13003  1.1  christos   }
   13004  1.1  christos   {
   13005  1.1  christos     USI opval = FLD (i_const32_pcrel);
   13006  1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   13007  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   13008  1.1  christos   }
   13009  1.1  christos }
   13010  1.1  christos }
   13011  1.1  christos }
   13012  1.1  christos 
   13013  1.1  christos   SEM_BRANCH_FINI (vpc);
   13014  1.1  christos #undef FLD
   13015  1.1  christos }
   13016  1.1  christos   NEXT (vpc);
   13017  1.1  christos 
   13018  1.1  christos   CASE (sem, INSN_BREAK) : /* break $n */
   13019  1.1  christos {
   13020  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13021  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13022  1.1  christos #define FLD(f) abuf->fields.sfmt_break.f
   13023  1.1  christos   int UNUSED written = 0;
   13024  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13025  1.1  christos   SEM_BRANCH_INIT
   13026  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13027  1.1  christos 
   13028  1.1  christos {
   13029  1.1  christos {
   13030  1.1  christos   {
   13031  1.1  christos     BI opval = 0;
   13032  1.1  christos     CPU (h_xbit) = opval;
   13033  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13034  1.1  christos   }
   13035  1.1  christos   {
   13036  1.1  christos     BI opval = 0;
   13037  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13038  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13039  1.1  christos   }
   13040  1.1  christos }
   13041  1.1  christos   {
   13042  1.1  christos     USI opval = crisv32f_break_handler (current_cpu, FLD (f_u4), pc);
   13043  1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   13044  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   13045  1.1  christos   }
   13046  1.1  christos }
   13047  1.1  christos 
   13048  1.1  christos   SEM_BRANCH_FINI (vpc);
   13049  1.1  christos #undef FLD
   13050  1.1  christos }
   13051  1.1  christos   NEXT (vpc);
   13052  1.1  christos 
   13053  1.1  christos   CASE (sem, INSN_BOUND_R_B_R) : /* bound-r.b ${Rs},${Rd} */
   13054  1.1  christos {
   13055  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13056  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13057  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13058  1.1  christos   int UNUSED written = 0;
   13059  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13060  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13061  1.1  christos 
   13062  1.1  christos {
   13063  1.1  christos   SI tmp_tmpopd;
   13064  1.1  christos   SI tmp_tmpops;
   13065  1.1  christos   SI tmp_newval;
   13066  1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   13067  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13068  1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13069  1.1  christos   {
   13070  1.1  christos     SI opval = tmp_newval;
   13071  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13072  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13073  1.1  christos   }
   13074  1.1  christos {
   13075  1.1  christos   {
   13076  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13077  1.1  christos     CPU (h_nbit) = opval;
   13078  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13079  1.1  christos   }
   13080  1.1  christos   {
   13081  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13082  1.1  christos     CPU (h_zbit) = opval;
   13083  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13084  1.1  christos   }
   13085  1.1  christos SET_H_CBIT_MOVE (0);
   13086  1.1  christos SET_H_VBIT_MOVE (0);
   13087  1.1  christos {
   13088  1.1  christos   {
   13089  1.1  christos     BI opval = 0;
   13090  1.1  christos     CPU (h_xbit) = opval;
   13091  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13092  1.1  christos   }
   13093  1.1  christos   {
   13094  1.1  christos     BI opval = 0;
   13095  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13096  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13097  1.1  christos   }
   13098  1.1  christos }
   13099  1.1  christos }
   13100  1.1  christos }
   13101  1.1  christos 
   13102  1.1  christos #undef FLD
   13103  1.1  christos }
   13104  1.1  christos   NEXT (vpc);
   13105  1.1  christos 
   13106  1.1  christos   CASE (sem, INSN_BOUND_R_W_R) : /* bound-r.w ${Rs},${Rd} */
   13107  1.1  christos {
   13108  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13109  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13110  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13111  1.1  christos   int UNUSED written = 0;
   13112  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13113  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13114  1.1  christos 
   13115  1.1  christos {
   13116  1.1  christos   SI tmp_tmpopd;
   13117  1.1  christos   SI tmp_tmpops;
   13118  1.1  christos   SI tmp_newval;
   13119  1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   13120  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13121  1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13122  1.1  christos   {
   13123  1.1  christos     SI opval = tmp_newval;
   13124  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13125  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13126  1.1  christos   }
   13127  1.1  christos {
   13128  1.1  christos   {
   13129  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13130  1.1  christos     CPU (h_nbit) = opval;
   13131  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13132  1.1  christos   }
   13133  1.1  christos   {
   13134  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13135  1.1  christos     CPU (h_zbit) = opval;
   13136  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13137  1.1  christos   }
   13138  1.1  christos SET_H_CBIT_MOVE (0);
   13139  1.1  christos SET_H_VBIT_MOVE (0);
   13140  1.1  christos {
   13141  1.1  christos   {
   13142  1.1  christos     BI opval = 0;
   13143  1.1  christos     CPU (h_xbit) = opval;
   13144  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13145  1.1  christos   }
   13146  1.1  christos   {
   13147  1.1  christos     BI opval = 0;
   13148  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13149  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13150  1.1  christos   }
   13151  1.1  christos }
   13152  1.1  christos }
   13153  1.1  christos }
   13154  1.1  christos 
   13155  1.1  christos #undef FLD
   13156  1.1  christos }
   13157  1.1  christos   NEXT (vpc);
   13158  1.1  christos 
   13159  1.1  christos   CASE (sem, INSN_BOUND_R_D_R) : /* bound-r.d ${Rs},${Rd} */
   13160  1.1  christos {
   13161  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13162  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13163  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13164  1.1  christos   int UNUSED written = 0;
   13165  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13166  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13167  1.1  christos 
   13168  1.1  christos {
   13169  1.1  christos   SI tmp_tmpopd;
   13170  1.1  christos   SI tmp_tmpops;
   13171  1.1  christos   SI tmp_newval;
   13172  1.1  christos   tmp_tmpops = TRUNCSISI (GET_H_GR (FLD (f_operand1)));
   13173  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13174  1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13175  1.1  christos   {
   13176  1.1  christos     SI opval = tmp_newval;
   13177  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13178  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13179  1.1  christos   }
   13180  1.1  christos {
   13181  1.1  christos   {
   13182  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13183  1.1  christos     CPU (h_nbit) = opval;
   13184  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13185  1.1  christos   }
   13186  1.1  christos   {
   13187  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13188  1.1  christos     CPU (h_zbit) = opval;
   13189  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13190  1.1  christos   }
   13191  1.1  christos SET_H_CBIT_MOVE (0);
   13192  1.1  christos SET_H_VBIT_MOVE (0);
   13193  1.1  christos {
   13194  1.1  christos   {
   13195  1.1  christos     BI opval = 0;
   13196  1.1  christos     CPU (h_xbit) = opval;
   13197  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13198  1.1  christos   }
   13199  1.1  christos   {
   13200  1.1  christos     BI opval = 0;
   13201  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13202  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13203  1.1  christos   }
   13204  1.1  christos }
   13205  1.1  christos }
   13206  1.1  christos }
   13207  1.1  christos 
   13208  1.1  christos #undef FLD
   13209  1.1  christos }
   13210  1.1  christos   NEXT (vpc);
   13211  1.1  christos 
   13212  1.1  christos   CASE (sem, INSN_BOUND_CB) : /* bound.b [PC+],${Rd} */
   13213  1.1  christos {
   13214  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13215  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13216  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   13217  1.1  christos   int UNUSED written = 0;
   13218  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13219  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13220  1.1  christos 
   13221  1.1  christos {
   13222  1.1  christos   SI tmp_tmpopd;
   13223  1.1  christos   SI tmp_tmpops;
   13224  1.1  christos   SI tmp_newval;
   13225  1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   13226  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13227  1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13228  1.1  christos   {
   13229  1.1  christos     SI opval = tmp_newval;
   13230  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13231  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13232  1.1  christos   }
   13233  1.1  christos {
   13234  1.1  christos   {
   13235  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13236  1.1  christos     CPU (h_nbit) = opval;
   13237  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13238  1.1  christos   }
   13239  1.1  christos   {
   13240  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13241  1.1  christos     CPU (h_zbit) = opval;
   13242  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13243  1.1  christos   }
   13244  1.1  christos SET_H_CBIT_MOVE (0);
   13245  1.1  christos SET_H_VBIT_MOVE (0);
   13246  1.1  christos {
   13247  1.1  christos   {
   13248  1.1  christos     BI opval = 0;
   13249  1.1  christos     CPU (h_xbit) = opval;
   13250  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13251  1.1  christos   }
   13252  1.1  christos   {
   13253  1.1  christos     BI opval = 0;
   13254  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13255  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13256  1.1  christos   }
   13257  1.1  christos }
   13258  1.1  christos }
   13259  1.1  christos }
   13260  1.1  christos 
   13261  1.1  christos #undef FLD
   13262  1.1  christos }
   13263  1.1  christos   NEXT (vpc);
   13264  1.1  christos 
   13265  1.1  christos   CASE (sem, INSN_BOUND_CW) : /* bound.w [PC+],${Rd} */
   13266  1.1  christos {
   13267  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13268  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13269  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   13270  1.1  christos   int UNUSED written = 0;
   13271  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13272  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13273  1.1  christos 
   13274  1.1  christos {
   13275  1.1  christos   SI tmp_tmpopd;
   13276  1.1  christos   SI tmp_tmpops;
   13277  1.1  christos   SI tmp_newval;
   13278  1.1  christos   tmp_tmpops = ZEXTSISI (FLD (f_indir_pc__word));
   13279  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13280  1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13281  1.1  christos   {
   13282  1.1  christos     SI opval = tmp_newval;
   13283  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13284  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13285  1.1  christos   }
   13286  1.1  christos {
   13287  1.1  christos   {
   13288  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13289  1.1  christos     CPU (h_nbit) = opval;
   13290  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13291  1.1  christos   }
   13292  1.1  christos   {
   13293  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13294  1.1  christos     CPU (h_zbit) = opval;
   13295  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13296  1.1  christos   }
   13297  1.1  christos SET_H_CBIT_MOVE (0);
   13298  1.1  christos SET_H_VBIT_MOVE (0);
   13299  1.1  christos {
   13300  1.1  christos   {
   13301  1.1  christos     BI opval = 0;
   13302  1.1  christos     CPU (h_xbit) = opval;
   13303  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13304  1.1  christos   }
   13305  1.1  christos   {
   13306  1.1  christos     BI opval = 0;
   13307  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13308  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13309  1.1  christos   }
   13310  1.1  christos }
   13311  1.1  christos }
   13312  1.1  christos }
   13313  1.1  christos 
   13314  1.1  christos #undef FLD
   13315  1.1  christos }
   13316  1.1  christos   NEXT (vpc);
   13317  1.1  christos 
   13318  1.1  christos   CASE (sem, INSN_BOUND_CD) : /* bound.d [PC+],${Rd} */
   13319  1.1  christos {
   13320  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13321  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13322  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   13323  1.1  christos   int UNUSED written = 0;
   13324  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13325  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   13326  1.1  christos 
   13327  1.1  christos {
   13328  1.1  christos   SI tmp_tmpopd;
   13329  1.1  christos   SI tmp_tmpops;
   13330  1.1  christos   SI tmp_newval;
   13331  1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   13332  1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13333  1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13334  1.1  christos   {
   13335  1.1  christos     SI opval = tmp_newval;
   13336  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13337  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13338  1.1  christos   }
   13339  1.1  christos {
   13340  1.1  christos   {
   13341  1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13342  1.1  christos     CPU (h_nbit) = opval;
   13343  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13344  1.1  christos   }
   13345  1.1  christos   {
   13346  1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13347  1.1  christos     CPU (h_zbit) = opval;
   13348  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13349  1.1  christos   }
   13350  1.1  christos SET_H_CBIT_MOVE (0);
   13351  1.1  christos SET_H_VBIT_MOVE (0);
   13352  1.1  christos {
   13353  1.1  christos   {
   13354  1.1  christos     BI opval = 0;
   13355  1.1  christos     CPU (h_xbit) = opval;
   13356  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13357  1.1  christos   }
   13358  1.1  christos   {
   13359  1.1  christos     BI opval = 0;
   13360  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13361  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13362  1.1  christos   }
   13363  1.1  christos }
   13364  1.1  christos }
   13365  1.1  christos }
   13366  1.1  christos 
   13367  1.1  christos #undef FLD
   13368  1.1  christos }
   13369  1.1  christos   NEXT (vpc);
   13370  1.1  christos 
   13371  1.1  christos   CASE (sem, INSN_SCC) : /* s${cc} ${Rd-sfield} */
   13372  1.1  christos {
   13373  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13374  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13375  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   13376  1.1  christos   int UNUSED written = 0;
   13377  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13378  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13379  1.1  christos 
   13380  1.1  christos {
   13381  1.1  christos   BI tmp_truthval;
   13382  1.1  christos   tmp_truthval = ({   SI tmp_tmpcond;
   13383  1.1  christos   BI tmp_condres;
   13384  1.1  christos   tmp_tmpcond = FLD (f_operand2);
   13385  1.1  christos ; if (EQSI (tmp_tmpcond, 0)) {
   13386  1.1  christos   tmp_condres = NOTBI (CPU (h_cbit));
   13387  1.1  christos }
   13388  1.1  christos  else if (EQSI (tmp_tmpcond, 1)) {
   13389  1.1  christos   tmp_condres = CPU (h_cbit);
   13390  1.1  christos }
   13391  1.1  christos  else if (EQSI (tmp_tmpcond, 2)) {
   13392  1.1  christos   tmp_condres = NOTBI (CPU (h_zbit));
   13393  1.1  christos }
   13394  1.1  christos  else if (EQSI (tmp_tmpcond, 3)) {
   13395  1.1  christos   tmp_condres = CPU (h_zbit);
   13396  1.1  christos }
   13397  1.1  christos  else if (EQSI (tmp_tmpcond, 4)) {
   13398  1.1  christos   tmp_condres = NOTBI (CPU (h_vbit));
   13399  1.1  christos }
   13400  1.1  christos  else if (EQSI (tmp_tmpcond, 5)) {
   13401  1.1  christos   tmp_condres = CPU (h_vbit);
   13402  1.1  christos }
   13403  1.1  christos  else if (EQSI (tmp_tmpcond, 6)) {
   13404  1.1  christos   tmp_condres = NOTBI (CPU (h_nbit));
   13405  1.1  christos }
   13406  1.1  christos  else if (EQSI (tmp_tmpcond, 7)) {
   13407  1.1  christos   tmp_condres = CPU (h_nbit);
   13408  1.1  christos }
   13409  1.1  christos  else if (EQSI (tmp_tmpcond, 8)) {
   13410  1.1  christos   tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
   13411  1.1  christos }
   13412  1.1  christos  else if (EQSI (tmp_tmpcond, 9)) {
   13413  1.1  christos   tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
   13414  1.1  christos }
   13415  1.1  christos  else if (EQSI (tmp_tmpcond, 10)) {
   13416  1.1  christos   tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
   13417  1.1  christos }
   13418  1.1  christos  else if (EQSI (tmp_tmpcond, 11)) {
   13419  1.1  christos   tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
   13420  1.1  christos }
   13421  1.1  christos  else if (EQSI (tmp_tmpcond, 12)) {
   13422  1.1  christos   tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
   13423  1.1  christos }
   13424  1.1  christos  else if (EQSI (tmp_tmpcond, 13)) {
   13425  1.1  christos   tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
   13426  1.1  christos }
   13427  1.1  christos  else if (EQSI (tmp_tmpcond, 14)) {
   13428  1.1  christos   tmp_condres = 1;
   13429  1.1  christos }
   13430  1.1  christos  else if (EQSI (tmp_tmpcond, 15)) {
   13431  1.1  christos   tmp_condres = CPU (h_pbit);
   13432  1.1  christos }
   13433  1.1  christos ; tmp_condres; });
   13434  1.1  christos   {
   13435  1.1  christos     SI opval = ZEXTBISI (tmp_truthval);
   13436  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13437  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13438  1.1  christos   }
   13439  1.1  christos {
   13440  1.1  christos   {
   13441  1.1  christos     BI opval = 0;
   13442  1.1  christos     CPU (h_xbit) = opval;
   13443  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13444  1.1  christos   }
   13445  1.1  christos   {
   13446  1.1  christos     BI opval = 0;
   13447  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13448  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13449  1.1  christos   }
   13450  1.1  christos }
   13451  1.1  christos }
   13452  1.1  christos 
   13453  1.1  christos #undef FLD
   13454  1.1  christos }
   13455  1.1  christos   NEXT (vpc);
   13456  1.1  christos 
   13457  1.1  christos   CASE (sem, INSN_LZ) : /* lz ${Rs},${Rd} */
   13458  1.1  christos {
   13459  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13460  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13461  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13462  1.1  christos   int UNUSED written = 0;
   13463  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13464  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13465  1.1  christos 
   13466  1.1  christos {
   13467  1.1  christos   SI tmp_tmpd;
   13468  1.1  christos   SI tmp_tmp;
   13469  1.1  christos   tmp_tmp = GET_H_GR (FLD (f_operand1));
   13470  1.1  christos   tmp_tmpd = 0;
   13471  1.1  christos {
   13472  1.1  christos if (GESI (tmp_tmp, 0)) {
   13473  1.1  christos {
   13474  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13475  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13476  1.1  christos }
   13477  1.1  christos }
   13478  1.1  christos if (GESI (tmp_tmp, 0)) {
   13479  1.1  christos {
   13480  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13481  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13482  1.1  christos }
   13483  1.1  christos }
   13484  1.1  christos if (GESI (tmp_tmp, 0)) {
   13485  1.1  christos {
   13486  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13487  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13488  1.1  christos }
   13489  1.1  christos }
   13490  1.1  christos if (GESI (tmp_tmp, 0)) {
   13491  1.1  christos {
   13492  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13493  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13494  1.1  christos }
   13495  1.1  christos }
   13496  1.1  christos if (GESI (tmp_tmp, 0)) {
   13497  1.1  christos {
   13498  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13499  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13500  1.1  christos }
   13501  1.1  christos }
   13502  1.1  christos if (GESI (tmp_tmp, 0)) {
   13503  1.1  christos {
   13504  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13505  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13506  1.1  christos }
   13507  1.1  christos }
   13508  1.1  christos if (GESI (tmp_tmp, 0)) {
   13509  1.1  christos {
   13510  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13511  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13512  1.1  christos }
   13513  1.1  christos }
   13514  1.1  christos if (GESI (tmp_tmp, 0)) {
   13515  1.1  christos {
   13516  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13517  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13518  1.1  christos }
   13519  1.1  christos }
   13520  1.1  christos if (GESI (tmp_tmp, 0)) {
   13521  1.1  christos {
   13522  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13523  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13524  1.1  christos }
   13525  1.1  christos }
   13526  1.1  christos if (GESI (tmp_tmp, 0)) {
   13527  1.1  christos {
   13528  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13529  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13530  1.1  christos }
   13531  1.1  christos }
   13532  1.1  christos if (GESI (tmp_tmp, 0)) {
   13533  1.1  christos {
   13534  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13535  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13536  1.1  christos }
   13537  1.1  christos }
   13538  1.1  christos if (GESI (tmp_tmp, 0)) {
   13539  1.1  christos {
   13540  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13541  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13542  1.1  christos }
   13543  1.1  christos }
   13544  1.1  christos if (GESI (tmp_tmp, 0)) {
   13545  1.1  christos {
   13546  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13547  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13548  1.1  christos }
   13549  1.1  christos }
   13550  1.1  christos if (GESI (tmp_tmp, 0)) {
   13551  1.1  christos {
   13552  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13553  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13554  1.1  christos }
   13555  1.1  christos }
   13556  1.1  christos if (GESI (tmp_tmp, 0)) {
   13557  1.1  christos {
   13558  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13559  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13560  1.1  christos }
   13561  1.1  christos }
   13562  1.1  christos if (GESI (tmp_tmp, 0)) {
   13563  1.1  christos {
   13564  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13565  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13566  1.1  christos }
   13567  1.1  christos }
   13568  1.1  christos if (GESI (tmp_tmp, 0)) {
   13569  1.1  christos {
   13570  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13571  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13572  1.1  christos }
   13573  1.1  christos }
   13574  1.1  christos if (GESI (tmp_tmp, 0)) {
   13575  1.1  christos {
   13576  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13577  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13578  1.1  christos }
   13579  1.1  christos }
   13580  1.1  christos if (GESI (tmp_tmp, 0)) {
   13581  1.1  christos {
   13582  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13583  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13584  1.1  christos }
   13585  1.1  christos }
   13586  1.1  christos if (GESI (tmp_tmp, 0)) {
   13587  1.1  christos {
   13588  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13589  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13590  1.1  christos }
   13591  1.1  christos }
   13592  1.1  christos if (GESI (tmp_tmp, 0)) {
   13593  1.1  christos {
   13594  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13595  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13596  1.1  christos }
   13597  1.1  christos }
   13598  1.1  christos if (GESI (tmp_tmp, 0)) {
   13599  1.1  christos {
   13600  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13601  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13602  1.1  christos }
   13603  1.1  christos }
   13604  1.1  christos if (GESI (tmp_tmp, 0)) {
   13605  1.1  christos {
   13606  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13607  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13608  1.1  christos }
   13609  1.1  christos }
   13610  1.1  christos if (GESI (tmp_tmp, 0)) {
   13611  1.1  christos {
   13612  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13613  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13614  1.1  christos }
   13615  1.1  christos }
   13616  1.1  christos if (GESI (tmp_tmp, 0)) {
   13617  1.1  christos {
   13618  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13619  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13620  1.1  christos }
   13621  1.1  christos }
   13622  1.1  christos if (GESI (tmp_tmp, 0)) {
   13623  1.1  christos {
   13624  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13625  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13626  1.1  christos }
   13627  1.1  christos }
   13628  1.1  christos if (GESI (tmp_tmp, 0)) {
   13629  1.1  christos {
   13630  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13631  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13632  1.1  christos }
   13633  1.1  christos }
   13634  1.1  christos if (GESI (tmp_tmp, 0)) {
   13635  1.1  christos {
   13636  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13637  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13638  1.1  christos }
   13639  1.1  christos }
   13640  1.1  christos if (GESI (tmp_tmp, 0)) {
   13641  1.1  christos {
   13642  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13643  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13644  1.1  christos }
   13645  1.1  christos }
   13646  1.1  christos if (GESI (tmp_tmp, 0)) {
   13647  1.1  christos {
   13648  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13649  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13650  1.1  christos }
   13651  1.1  christos }
   13652  1.1  christos if (GESI (tmp_tmp, 0)) {
   13653  1.1  christos {
   13654  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13655  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13656  1.1  christos }
   13657  1.1  christos }
   13658  1.1  christos if (GESI (tmp_tmp, 0)) {
   13659  1.1  christos {
   13660  1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13661  1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13662  1.1  christos }
   13663  1.1  christos }
   13664  1.1  christos }
   13665  1.1  christos   {
   13666  1.1  christos     SI opval = tmp_tmpd;
   13667  1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13668  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13669  1.1  christos   }
   13670  1.1  christos {
   13671  1.1  christos   {
   13672  1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   13673  1.1  christos     CPU (h_nbit) = opval;
   13674  1.1  christos     TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13675  1.1  christos   }
   13676  1.1  christos   {
   13677  1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13678  1.1  christos     CPU (h_zbit) = opval;
   13679  1.1  christos     TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13680  1.1  christos   }
   13681  1.1  christos SET_H_CBIT_MOVE (0);
   13682  1.1  christos SET_H_VBIT_MOVE (0);
   13683  1.1  christos {
   13684  1.1  christos   {
   13685  1.1  christos     BI opval = 0;
   13686  1.1  christos     CPU (h_xbit) = opval;
   13687  1.1  christos     TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13688  1.1  christos   }
   13689  1.1  christos   {
   13690  1.1  christos     BI opval = 0;
   13691  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13692  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13693  1.1  christos   }
   13694  1.1  christos }
   13695  1.1  christos }
   13696  1.1  christos }
   13697  1.1  christos 
   13698  1.1  christos #undef FLD
   13699  1.1  christos }
   13700  1.1  christos   NEXT (vpc);
   13701  1.1  christos 
   13702  1.1  christos   CASE (sem, INSN_ADDOQ) : /* addoq $o,$Rs,ACR */
   13703  1.1  christos {
   13704  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13705  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13706  1.1  christos #define FLD(f) abuf->fields.sfmt_addoq.f
   13707  1.1  christos   int UNUSED written = 0;
   13708  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13709  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13710  1.1  christos 
   13711  1.1  christos {
   13712  1.1  christos   {
   13713  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s8));
   13714  1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13715  1.1  christos     TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13716  1.1  christos   }
   13717  1.1  christos   {
   13718  1.1  christos     BI opval = 1;
   13719  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13720  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13721  1.1  christos   }
   13722  1.1  christos }
   13723  1.1  christos 
   13724  1.1  christos #undef FLD
   13725  1.1  christos }
   13726  1.1  christos   NEXT (vpc);
   13727  1.1  christos 
   13728  1.1  christos   CASE (sem, INSN_ADDO_M_B_M) : /* addo-m.b [${Rs}${inc}],$Rd,ACR */
   13729  1.1  christos {
   13730  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13731  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13732  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   13733  1.1  christos   int UNUSED written = 0;
   13734  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13735  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13736  1.1  christos 
   13737  1.1  christos {
   13738  1.1  christos   QI tmp_tmps;
   13739  1.1  christos   tmp_tmps = ({   SI tmp_addr;
   13740  1.1  christos   QI tmp_tmp_mem;
   13741  1.1  christos   BI tmp_postinc;
   13742  1.1  christos   tmp_postinc = FLD (f_memmode);
   13743  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   13744  1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   13745  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   13746  1.1  christos {
   13747  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   13748  1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   13749  1.1  christos }
   13750  1.1  christos   {
   13751  1.1  christos     SI opval = tmp_addr;
   13752  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13753  1.1  christos     written |= (1 << 6);
   13754  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13755  1.1  christos   }
   13756  1.1  christos }
   13757  1.1  christos }
   13758  1.1  christos ; tmp_tmp_mem; });
   13759  1.1  christos   {
   13760  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (tmp_tmps));
   13761  1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13762  1.1  christos     TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13763  1.1  christos   }
   13764  1.1  christos   {
   13765  1.1  christos     BI opval = 1;
   13766  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13767  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13768  1.1  christos   }
   13769  1.1  christos }
   13770  1.1  christos 
   13771  1.1  christos   abuf->written = written;
   13772  1.1  christos #undef FLD
   13773  1.1  christos }
   13774  1.1  christos   NEXT (vpc);
   13775  1.1  christos 
   13776  1.1  christos   CASE (sem, INSN_ADDO_M_W_M) : /* addo-m.w [${Rs}${inc}],$Rd,ACR */
   13777  1.1  christos {
   13778  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13779  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13780  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   13781  1.1  christos   int UNUSED written = 0;
   13782  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13783  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13784  1.1  christos 
   13785  1.1  christos {
   13786  1.1  christos   HI tmp_tmps;
   13787  1.1  christos   tmp_tmps = ({   SI tmp_addr;
   13788  1.1  christos   HI tmp_tmp_mem;
   13789  1.1  christos   BI tmp_postinc;
   13790  1.1  christos   tmp_postinc = FLD (f_memmode);
   13791  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   13792  1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   13793  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   13794  1.1  christos {
   13795  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   13796  1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   13797  1.1  christos }
   13798  1.1  christos   {
   13799  1.1  christos     SI opval = tmp_addr;
   13800  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13801  1.1  christos     written |= (1 << 6);
   13802  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13803  1.1  christos   }
   13804  1.1  christos }
   13805  1.1  christos }
   13806  1.1  christos ; tmp_tmp_mem; });
   13807  1.1  christos   {
   13808  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (tmp_tmps));
   13809  1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13810  1.1  christos     TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13811  1.1  christos   }
   13812  1.1  christos   {
   13813  1.1  christos     BI opval = 1;
   13814  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13815  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13816  1.1  christos   }
   13817  1.1  christos }
   13818  1.1  christos 
   13819  1.1  christos   abuf->written = written;
   13820  1.1  christos #undef FLD
   13821  1.1  christos }
   13822  1.1  christos   NEXT (vpc);
   13823  1.1  christos 
   13824  1.1  christos   CASE (sem, INSN_ADDO_M_D_M) : /* addo-m.d [${Rs}${inc}],$Rd,ACR */
   13825  1.1  christos {
   13826  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13827  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13828  1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   13829  1.1  christos   int UNUSED written = 0;
   13830  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13831  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13832  1.1  christos 
   13833  1.1  christos {
   13834  1.1  christos   SI tmp_tmps;
   13835  1.1  christos   tmp_tmps = ({   SI tmp_addr;
   13836  1.1  christos   SI tmp_tmp_mem;
   13837  1.1  christos   BI tmp_postinc;
   13838  1.1  christos   tmp_postinc = FLD (f_memmode);
   13839  1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   13840  1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   13841  1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   13842  1.1  christos {
   13843  1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   13844  1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   13845  1.1  christos }
   13846  1.1  christos   {
   13847  1.1  christos     SI opval = tmp_addr;
   13848  1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13849  1.1  christos     written |= (1 << 6);
   13850  1.1  christos     TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13851  1.1  christos   }
   13852  1.1  christos }
   13853  1.1  christos }
   13854  1.1  christos ; tmp_tmp_mem; });
   13855  1.1  christos   {
   13856  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), tmp_tmps);
   13857  1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13858  1.1  christos     TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13859  1.1  christos   }
   13860  1.1  christos   {
   13861  1.1  christos     BI opval = 1;
   13862  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13863  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13864  1.1  christos   }
   13865  1.1  christos }
   13866  1.1  christos 
   13867  1.1  christos   abuf->written = written;
   13868  1.1  christos #undef FLD
   13869  1.1  christos }
   13870  1.1  christos   NEXT (vpc);
   13871  1.1  christos 
   13872  1.1  christos   CASE (sem, INSN_ADDO_CB) : /* addo.b [PC+],$Rd,ACR */
   13873  1.1  christos {
   13874  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13875  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13876  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   13877  1.1  christos   int UNUSED written = 0;
   13878  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13879  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13880  1.1  christos 
   13881  1.1  christos {
   13882  1.1  christos   {
   13883  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))));
   13884  1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13885  1.1  christos     TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13886  1.1  christos   }
   13887  1.1  christos   {
   13888  1.1  christos     BI opval = 1;
   13889  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13890  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13891  1.1  christos   }
   13892  1.1  christos }
   13893  1.1  christos 
   13894  1.1  christos #undef FLD
   13895  1.1  christos }
   13896  1.1  christos   NEXT (vpc);
   13897  1.1  christos 
   13898  1.1  christos   CASE (sem, INSN_ADDO_CW) : /* addo.w [PC+],$Rd,ACR */
   13899  1.1  christos {
   13900  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13901  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13902  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   13903  1.1  christos   int UNUSED written = 0;
   13904  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13905  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13906  1.1  christos 
   13907  1.1  christos {
   13908  1.1  christos   {
   13909  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))));
   13910  1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13911  1.1  christos     TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13912  1.1  christos   }
   13913  1.1  christos   {
   13914  1.1  christos     BI opval = 1;
   13915  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13916  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13917  1.1  christos   }
   13918  1.1  christos }
   13919  1.1  christos 
   13920  1.1  christos #undef FLD
   13921  1.1  christos }
   13922  1.1  christos   NEXT (vpc);
   13923  1.1  christos 
   13924  1.1  christos   CASE (sem, INSN_ADDO_CD) : /* addo.d [PC+],$Rd,ACR */
   13925  1.1  christos {
   13926  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13927  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13928  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   13929  1.1  christos   int UNUSED written = 0;
   13930  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13931  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   13932  1.1  christos 
   13933  1.1  christos {
   13934  1.1  christos   {
   13935  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
   13936  1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13937  1.1  christos     TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13938  1.1  christos   }
   13939  1.1  christos   {
   13940  1.1  christos     BI opval = 1;
   13941  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13942  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13943  1.1  christos   }
   13944  1.1  christos }
   13945  1.1  christos 
   13946  1.1  christos #undef FLD
   13947  1.1  christos }
   13948  1.1  christos   NEXT (vpc);
   13949  1.1  christos 
   13950  1.1  christos   CASE (sem, INSN_ADDI_ACR_B_R) : /* addi-acr.b ${Rs-dfield}.m,${Rd-sfield},ACR */
   13951  1.1  christos {
   13952  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13953  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13954  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13955  1.1  christos   int UNUSED written = 0;
   13956  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13957  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13958  1.1  christos 
   13959  1.1  christos {
   13960  1.1  christos   {
   13961  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
   13962  1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13963  1.1  christos     TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13964  1.1  christos   }
   13965  1.1  christos   {
   13966  1.1  christos     BI opval = 1;
   13967  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13968  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13969  1.1  christos   }
   13970  1.1  christos }
   13971  1.1  christos 
   13972  1.1  christos #undef FLD
   13973  1.1  christos }
   13974  1.1  christos   NEXT (vpc);
   13975  1.1  christos 
   13976  1.1  christos   CASE (sem, INSN_ADDI_ACR_W_R) : /* addi-acr.w ${Rs-dfield}.m,${Rd-sfield},ACR */
   13977  1.1  christos {
   13978  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13979  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13980  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13981  1.1  christos   int UNUSED written = 0;
   13982  1.1  christos   IADDR UNUSED pc = abuf->addr;
   13983  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13984  1.1  christos 
   13985  1.1  christos {
   13986  1.1  christos   {
   13987  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
   13988  1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13989  1.1  christos     TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13990  1.1  christos   }
   13991  1.1  christos   {
   13992  1.1  christos     BI opval = 1;
   13993  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13994  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13995  1.1  christos   }
   13996  1.1  christos }
   13997  1.1  christos 
   13998  1.1  christos #undef FLD
   13999  1.1  christos }
   14000  1.1  christos   NEXT (vpc);
   14001  1.1  christos 
   14002  1.1  christos   CASE (sem, INSN_ADDI_ACR_D_R) : /* addi-acr.d ${Rs-dfield}.m,${Rd-sfield},ACR */
   14003  1.1  christos {
   14004  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14005  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14006  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   14007  1.1  christos   int UNUSED written = 0;
   14008  1.1  christos   IADDR UNUSED pc = abuf->addr;
   14009  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14010  1.1  christos 
   14011  1.1  christos {
   14012  1.1  christos   {
   14013  1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
   14014  1.1  christos     SET_H_PREFIXREG_V32 (opval);
   14015  1.1  christos     TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   14016  1.1  christos   }
   14017  1.1  christos   {
   14018  1.1  christos     BI opval = 1;
   14019  1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   14020  1.1  christos     TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   14021  1.1  christos   }
   14022  1.1  christos }
   14023  1.1  christos 
   14024  1.1  christos #undef FLD
   14025  1.1  christos }
   14026  1.1  christos   NEXT (vpc);
   14027  1.1  christos 
   14028  1.1  christos   CASE (sem, INSN_FIDXI) : /* fidxi [$Rs] */
   14029  1.1  christos {
   14030  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14031  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14032  1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14033  1.1  christos   int UNUSED written = 0;
   14034  1.1  christos   IADDR UNUSED pc = abuf->addr;
   14035  1.1  christos   SEM_BRANCH_INIT
   14036  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14037  1.1  christos 
   14038  1.1  christos   {
   14039  1.1  christos     USI opval = crisv32f_fidxi_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14040  1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14041  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14042  1.1  christos   }
   14043  1.1  christos 
   14044  1.1  christos   SEM_BRANCH_FINI (vpc);
   14045  1.1  christos #undef FLD
   14046  1.1  christos }
   14047  1.1  christos   NEXT (vpc);
   14048  1.1  christos 
   14049  1.1  christos   CASE (sem, INSN_FTAGI) : /* fidxi [$Rs] */
   14050  1.1  christos {
   14051  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14052  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14053  1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14054  1.1  christos   int UNUSED written = 0;
   14055  1.1  christos   IADDR UNUSED pc = abuf->addr;
   14056  1.1  christos   SEM_BRANCH_INIT
   14057  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14058  1.1  christos 
   14059  1.1  christos   {
   14060  1.1  christos     USI opval = crisv32f_ftagi_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14061  1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14062  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14063  1.1  christos   }
   14064  1.1  christos 
   14065  1.1  christos   SEM_BRANCH_FINI (vpc);
   14066  1.1  christos #undef FLD
   14067  1.1  christos }
   14068  1.1  christos   NEXT (vpc);
   14069  1.1  christos 
   14070  1.1  christos   CASE (sem, INSN_FIDXD) : /* fidxd [$Rs] */
   14071  1.1  christos {
   14072  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14073  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14074  1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14075  1.1  christos   int UNUSED written = 0;
   14076  1.1  christos   IADDR UNUSED pc = abuf->addr;
   14077  1.1  christos   SEM_BRANCH_INIT
   14078  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14079  1.1  christos 
   14080  1.1  christos   {
   14081  1.1  christos     USI opval = crisv32f_fidxd_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14082  1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14083  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14084  1.1  christos   }
   14085  1.1  christos 
   14086  1.1  christos   SEM_BRANCH_FINI (vpc);
   14087  1.1  christos #undef FLD
   14088  1.1  christos }
   14089  1.1  christos   NEXT (vpc);
   14090  1.1  christos 
   14091  1.1  christos   CASE (sem, INSN_FTAGD) : /* ftagd [$Rs] */
   14092  1.1  christos {
   14093  1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14094  1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14095  1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14096  1.1  christos   int UNUSED written = 0;
   14097  1.1  christos   IADDR UNUSED pc = abuf->addr;
   14098  1.1  christos   SEM_BRANCH_INIT
   14099  1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14100  1.1  christos 
   14101  1.1  christos   {
   14102  1.1  christos     USI opval = crisv32f_ftagd_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14103  1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14104  1.1  christos     TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14105  1.1  christos   }
   14106  1.1  christos 
   14107  1.1  christos   SEM_BRANCH_FINI (vpc);
   14108  1.1  christos #undef FLD
   14109  1.1  christos }
   14110  1.1  christos   NEXT (vpc);
   14111  1.1  christos 
   14112  1.1  christos 
   14113  1.1  christos     }
   14114  1.1  christos   ENDSWITCH (sem) /* End of semantic switch.  */
   14115  1.1  christos 
   14116  1.1  christos   /* At this point `vpc' contains the next insn to execute.  */
   14117  1.1  christos }
   14118  1.1  christos 
   14119  1.1  christos #undef DEFINE_SWITCH
   14120  1.1  christos #endif /* DEFINE_SWITCH */
   14121