Home | History | Annotate | Line # | Download | only in cris
semcrisv32f-switch.c revision 1.11
      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.11  christos Copyright (C) 1996-2024 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.11  christos    with this program; if not, write to the Free Software Foundation, Inc.,
     21  1.11  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.5  christos /* FIXME: A better way would be to have CGEN_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.5  christos #undef CGEN_TRACE_RESULT
    274   1.5  christos #define CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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.5  christos     CGEN_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_prno;
   3112   1.1  christos   SI tmp_newval;
   3113   1.1  christos   tmp_prno = FLD (f_operand2);
   3114   1.1  christos   tmp_newval = GET_H_SR (FLD (f_operand2));
   3115   1.1  christos if (EQSI (tmp_prno, 2)) {
   3116   1.1  christos   {
   3117   1.1  christos     SI opval = tmp_newval;
   3118   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3119   1.1  christos     written |= (1 << 4);
   3120   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3121   1.1  christos   }
   3122   1.1  christos }
   3123   1.1  christos  else if (EQSI (tmp_prno, 3)) {
   3124   1.1  christos {
   3125   1.1  christos   SI tmp_oldregval;
   3126   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3127   1.1  christos   {
   3128   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   3129   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3130   1.1  christos     written |= (1 << 4);
   3131   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3132   1.1  christos   }
   3133   1.1  christos }
   3134   1.1  christos }
   3135   1.1  christos  else if (EQSI (tmp_prno, 5)) {
   3136   1.1  christos   {
   3137   1.1  christos     SI opval = tmp_newval;
   3138   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3139   1.1  christos     written |= (1 << 4);
   3140   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3141   1.1  christos   }
   3142   1.1  christos }
   3143   1.1  christos  else if (EQSI (tmp_prno, 6)) {
   3144   1.1  christos   {
   3145   1.1  christos     SI opval = tmp_newval;
   3146   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3147   1.1  christos     written |= (1 << 4);
   3148   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3149   1.1  christos   }
   3150   1.1  christos }
   3151   1.1  christos  else if (EQSI (tmp_prno, 7)) {
   3152   1.1  christos   {
   3153   1.1  christos     SI opval = tmp_newval;
   3154   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3155   1.1  christos     written |= (1 << 4);
   3156   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3157   1.1  christos   }
   3158   1.1  christos }
   3159   1.1  christos  else if (EQSI (tmp_prno, 9)) {
   3160   1.1  christos   {
   3161   1.1  christos     SI opval = tmp_newval;
   3162   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3163   1.1  christos     written |= (1 << 4);
   3164   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3165   1.1  christos   }
   3166   1.1  christos }
   3167   1.1  christos  else if (EQSI (tmp_prno, 10)) {
   3168   1.1  christos   {
   3169   1.1  christos     SI opval = tmp_newval;
   3170   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3171   1.1  christos     written |= (1 << 4);
   3172   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3173   1.1  christos   }
   3174   1.1  christos }
   3175   1.1  christos  else if (EQSI (tmp_prno, 11)) {
   3176   1.1  christos   {
   3177   1.1  christos     SI opval = tmp_newval;
   3178   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3179   1.1  christos     written |= (1 << 4);
   3180   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3181   1.1  christos   }
   3182   1.1  christos }
   3183   1.1  christos  else if (EQSI (tmp_prno, 12)) {
   3184   1.1  christos   {
   3185   1.1  christos     SI opval = tmp_newval;
   3186   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3187   1.1  christos     written |= (1 << 4);
   3188   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3189   1.1  christos   }
   3190   1.1  christos }
   3191   1.1  christos  else if (EQSI (tmp_prno, 13)) {
   3192   1.1  christos   {
   3193   1.1  christos     SI opval = tmp_newval;
   3194   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3195   1.1  christos     written |= (1 << 4);
   3196   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3197   1.1  christos   }
   3198   1.1  christos }
   3199   1.1  christos  else if (EQSI (tmp_prno, 14)) {
   3200   1.1  christos   {
   3201   1.1  christos     SI opval = tmp_newval;
   3202   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3203   1.1  christos     written |= (1 << 4);
   3204   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3205   1.1  christos   }
   3206   1.1  christos }
   3207   1.1  christos  else if (EQSI (tmp_prno, 15)) {
   3208   1.1  christos   {
   3209   1.1  christos     SI opval = tmp_newval;
   3210   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3211   1.1  christos     written |= (1 << 4);
   3212   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3213   1.1  christos   }
   3214   1.1  christos }
   3215   1.1  christos  else if (EQSI (tmp_prno, 0)) {
   3216   1.1  christos {
   3217   1.1  christos   SI tmp_oldregval;
   3218   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3219   1.1  christos   {
   3220   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   3221   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3222   1.1  christos     written |= (1 << 4);
   3223   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3224   1.1  christos   }
   3225   1.1  christos }
   3226   1.1  christos }
   3227   1.1  christos  else if (EQSI (tmp_prno, 1)) {
   3228   1.1  christos {
   3229   1.1  christos   SI tmp_oldregval;
   3230   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3231   1.1  christos   {
   3232   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   3233   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3234   1.1  christos     written |= (1 << 4);
   3235   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3236   1.1  christos   }
   3237   1.1  christos }
   3238   1.1  christos }
   3239   1.1  christos  else if (EQSI (tmp_prno, 4)) {
   3240   1.1  christos {
   3241   1.1  christos   SI tmp_oldregval;
   3242   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand1));
   3243   1.1  christos   {
   3244   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   3245   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3246   1.1  christos     written |= (1 << 4);
   3247   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3248   1.1  christos   }
   3249   1.1  christos }
   3250   1.1  christos }
   3251   1.1  christos  else if (EQSI (tmp_prno, 8)) {
   3252   1.1  christos   {
   3253   1.1  christos     SI opval = tmp_newval;
   3254   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3255   1.1  christos     written |= (1 << 4);
   3256   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3257   1.1  christos   }
   3258   1.1  christos }
   3259   1.1  christos  else {
   3260   1.1  christos cgen_rtx_error (current_cpu, "move-spr-r from unimplemented register");
   3261   1.1  christos }
   3262   1.1  christos {
   3263   1.1  christos   {
   3264   1.1  christos     BI opval = 0;
   3265   1.1  christos     CPU (h_xbit) = opval;
   3266   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3267   1.1  christos   }
   3268   1.1  christos   {
   3269   1.1  christos     BI opval = 0;
   3270   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3271   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3272   1.1  christos   }
   3273   1.1  christos }
   3274   1.1  christos }
   3275   1.1  christos 
   3276   1.1  christos   abuf->written = written;
   3277   1.1  christos #undef FLD
   3278   1.1  christos }
   3279   1.1  christos   NEXT (vpc);
   3280   1.1  christos 
   3281   1.1  christos   CASE (sem, INSN_MOVE_M_SPRV32) : /* move [${Rs}${inc}],${Pd} */
   3282   1.1  christos {
   3283   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3284   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3285   1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   3286   1.1  christos   int UNUSED written = 0;
   3287   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3288   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   3289   1.1  christos 
   3290   1.1  christos {
   3291   1.1  christos   SI tmp_rno;
   3292   1.1  christos   SI tmp_newval;
   3293   1.1  christos   tmp_rno = FLD (f_operand2);
   3294   1.1  christos if (EQSI (tmp_rno, 2)) {
   3295   1.1  christos   tmp_newval = ({   SI tmp_addr;
   3296   1.1  christos   SI tmp_tmp_mem;
   3297   1.1  christos   BI tmp_postinc;
   3298   1.1  christos   tmp_postinc = FLD (f_memmode);
   3299   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3300   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3301   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3302   1.1  christos {
   3303   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3304   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3305   1.1  christos }
   3306   1.1  christos   {
   3307   1.1  christos     SI opval = tmp_addr;
   3308   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3309   1.1  christos     written |= (1 << 8);
   3310   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3311   1.1  christos   }
   3312   1.1  christos }
   3313   1.1  christos }
   3314   1.1  christos ; tmp_tmp_mem; });
   3315   1.1  christos }
   3316   1.1  christos  else if (EQSI (tmp_rno, 3)) {
   3317   1.1  christos   tmp_newval = EXTQISI (({   SI tmp_addr;
   3318   1.1  christos   QI tmp_tmp_mem;
   3319   1.1  christos   BI tmp_postinc;
   3320   1.1  christos   tmp_postinc = FLD (f_memmode);
   3321   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3322   1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   3323   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3324   1.1  christos {
   3325   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3326   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   3327   1.1  christos }
   3328   1.1  christos   {
   3329   1.1  christos     SI opval = tmp_addr;
   3330   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3331   1.1  christos     written |= (1 << 8);
   3332   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3333   1.1  christos   }
   3334   1.1  christos }
   3335   1.1  christos }
   3336   1.1  christos ; tmp_tmp_mem; }));
   3337   1.1  christos }
   3338   1.1  christos  else if (EQSI (tmp_rno, 5)) {
   3339   1.1  christos   tmp_newval = ({   SI tmp_addr;
   3340   1.1  christos   SI tmp_tmp_mem;
   3341   1.1  christos   BI tmp_postinc;
   3342   1.1  christos   tmp_postinc = FLD (f_memmode);
   3343   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3344   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3345   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3346   1.1  christos {
   3347   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3348   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3349   1.1  christos }
   3350   1.1  christos   {
   3351   1.1  christos     SI opval = tmp_addr;
   3352   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3353   1.1  christos     written |= (1 << 8);
   3354   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3355   1.1  christos   }
   3356   1.1  christos }
   3357   1.1  christos }
   3358   1.1  christos ; tmp_tmp_mem; });
   3359   1.1  christos }
   3360   1.1  christos  else if (EQSI (tmp_rno, 6)) {
   3361   1.1  christos   tmp_newval = ({   SI tmp_addr;
   3362   1.1  christos   SI tmp_tmp_mem;
   3363   1.1  christos   BI tmp_postinc;
   3364   1.1  christos   tmp_postinc = FLD (f_memmode);
   3365   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3366   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3367   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3368   1.1  christos {
   3369   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3370   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3371   1.1  christos }
   3372   1.1  christos   {
   3373   1.1  christos     SI opval = tmp_addr;
   3374   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3375   1.1  christos     written |= (1 << 8);
   3376   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3377   1.1  christos   }
   3378   1.1  christos }
   3379   1.1  christos }
   3380   1.1  christos ; tmp_tmp_mem; });
   3381   1.1  christos }
   3382   1.1  christos  else if (EQSI (tmp_rno, 7)) {
   3383   1.1  christos   tmp_newval = ({   SI tmp_addr;
   3384   1.1  christos   SI tmp_tmp_mem;
   3385   1.1  christos   BI tmp_postinc;
   3386   1.1  christos   tmp_postinc = FLD (f_memmode);
   3387   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3388   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3389   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3390   1.1  christos {
   3391   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3392   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3393   1.1  christos }
   3394   1.1  christos   {
   3395   1.1  christos     SI opval = tmp_addr;
   3396   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3397   1.1  christos     written |= (1 << 8);
   3398   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3399   1.1  christos   }
   3400   1.1  christos }
   3401   1.1  christos }
   3402   1.1  christos ; tmp_tmp_mem; });
   3403   1.1  christos }
   3404   1.1  christos  else if (EQSI (tmp_rno, 9)) {
   3405   1.1  christos   tmp_newval = ({   SI tmp_addr;
   3406   1.1  christos   SI tmp_tmp_mem;
   3407   1.1  christos   BI tmp_postinc;
   3408   1.1  christos   tmp_postinc = FLD (f_memmode);
   3409   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3410   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3411   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3412   1.1  christos {
   3413   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3414   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3415   1.1  christos }
   3416   1.1  christos   {
   3417   1.1  christos     SI opval = tmp_addr;
   3418   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3419   1.1  christos     written |= (1 << 8);
   3420   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3421   1.1  christos   }
   3422   1.1  christos }
   3423   1.1  christos }
   3424   1.1  christos ; tmp_tmp_mem; });
   3425   1.1  christos }
   3426   1.1  christos  else if (EQSI (tmp_rno, 10)) {
   3427   1.1  christos   tmp_newval = ({   SI tmp_addr;
   3428   1.1  christos   SI tmp_tmp_mem;
   3429   1.1  christos   BI tmp_postinc;
   3430   1.1  christos   tmp_postinc = FLD (f_memmode);
   3431   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3432   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3433   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3434   1.1  christos {
   3435   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3436   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3437   1.1  christos }
   3438   1.1  christos   {
   3439   1.1  christos     SI opval = tmp_addr;
   3440   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3441   1.1  christos     written |= (1 << 8);
   3442   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3443   1.1  christos   }
   3444   1.1  christos }
   3445   1.1  christos }
   3446   1.1  christos ; tmp_tmp_mem; });
   3447   1.1  christos }
   3448   1.1  christos  else if (EQSI (tmp_rno, 11)) {
   3449   1.1  christos   tmp_newval = ({   SI tmp_addr;
   3450   1.1  christos   SI tmp_tmp_mem;
   3451   1.1  christos   BI tmp_postinc;
   3452   1.1  christos   tmp_postinc = FLD (f_memmode);
   3453   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3454   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3455   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3456   1.1  christos {
   3457   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3458   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3459   1.1  christos }
   3460   1.1  christos   {
   3461   1.1  christos     SI opval = tmp_addr;
   3462   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3463   1.1  christos     written |= (1 << 8);
   3464   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3465   1.1  christos   }
   3466   1.1  christos }
   3467   1.1  christos }
   3468   1.1  christos ; tmp_tmp_mem; });
   3469   1.1  christos }
   3470   1.1  christos  else if (EQSI (tmp_rno, 12)) {
   3471   1.1  christos   tmp_newval = ({   SI tmp_addr;
   3472   1.1  christos   SI tmp_tmp_mem;
   3473   1.1  christos   BI tmp_postinc;
   3474   1.1  christos   tmp_postinc = FLD (f_memmode);
   3475   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3476   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3477   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3478   1.1  christos {
   3479   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3480   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3481   1.1  christos }
   3482   1.1  christos   {
   3483   1.1  christos     SI opval = tmp_addr;
   3484   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3485   1.1  christos     written |= (1 << 8);
   3486   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3487   1.1  christos   }
   3488   1.1  christos }
   3489   1.1  christos }
   3490   1.1  christos ; tmp_tmp_mem; });
   3491   1.1  christos }
   3492   1.1  christos  else if (EQSI (tmp_rno, 13)) {
   3493   1.1  christos   tmp_newval = ({   SI tmp_addr;
   3494   1.1  christos   SI tmp_tmp_mem;
   3495   1.1  christos   BI tmp_postinc;
   3496   1.1  christos   tmp_postinc = FLD (f_memmode);
   3497   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3498   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3499   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3500   1.1  christos {
   3501   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3502   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3503   1.1  christos }
   3504   1.1  christos   {
   3505   1.1  christos     SI opval = tmp_addr;
   3506   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3507   1.1  christos     written |= (1 << 8);
   3508   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3509   1.1  christos   }
   3510   1.1  christos }
   3511   1.1  christos }
   3512   1.1  christos ; tmp_tmp_mem; });
   3513   1.1  christos }
   3514   1.1  christos  else if (EQSI (tmp_rno, 14)) {
   3515   1.1  christos   tmp_newval = ({   SI tmp_addr;
   3516   1.1  christos   SI tmp_tmp_mem;
   3517   1.1  christos   BI tmp_postinc;
   3518   1.1  christos   tmp_postinc = FLD (f_memmode);
   3519   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3520   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3521   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3522   1.1  christos {
   3523   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3524   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3525   1.1  christos }
   3526   1.1  christos   {
   3527   1.1  christos     SI opval = tmp_addr;
   3528   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3529   1.1  christos     written |= (1 << 8);
   3530   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3531   1.1  christos   }
   3532   1.1  christos }
   3533   1.1  christos }
   3534   1.1  christos ; tmp_tmp_mem; });
   3535   1.1  christos }
   3536   1.1  christos  else if (EQSI (tmp_rno, 15)) {
   3537   1.1  christos   tmp_newval = ({   SI tmp_addr;
   3538   1.1  christos   SI tmp_tmp_mem;
   3539   1.1  christos   BI tmp_postinc;
   3540   1.1  christos   tmp_postinc = FLD (f_memmode);
   3541   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3542   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   3543   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   3544   1.1  christos {
   3545   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   3546   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   3547   1.1  christos }
   3548   1.1  christos   {
   3549   1.1  christos     SI opval = tmp_addr;
   3550   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   3551   1.1  christos     written |= (1 << 8);
   3552   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   3553   1.1  christos   }
   3554   1.1  christos }
   3555   1.1  christos }
   3556   1.1  christos ; tmp_tmp_mem; });
   3557   1.1  christos }
   3558   1.1  christos  else {
   3559   1.1  christos cgen_rtx_error (current_cpu, "Trying to set unimplemented special register");
   3560   1.1  christos }
   3561   1.1  christos   {
   3562   1.1  christos     SI opval = tmp_newval;
   3563   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3564   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3565   1.1  christos   }
   3566   1.1  christos {
   3567   1.1  christos   {
   3568   1.1  christos     BI opval = 0;
   3569   1.1  christos     CPU (h_xbit) = opval;
   3570   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3571   1.1  christos   }
   3572   1.1  christos   {
   3573   1.1  christos     BI opval = 0;
   3574   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3575   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3576   1.1  christos   }
   3577   1.1  christos }
   3578   1.1  christos }
   3579   1.1  christos 
   3580   1.1  christos   abuf->written = written;
   3581   1.1  christos #undef FLD
   3582   1.1  christos }
   3583   1.1  christos   NEXT (vpc);
   3584   1.1  christos 
   3585   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P2) : /* move ${const32},${Pd} */
   3586   1.1  christos {
   3587   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3588   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3589   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3590   1.1  christos   int UNUSED written = 0;
   3591   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3592   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3593   1.1  christos 
   3594   1.1  christos {
   3595   1.1  christos   {
   3596   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3597   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3598   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3599   1.1  christos   }
   3600   1.1  christos {
   3601   1.1  christos   {
   3602   1.1  christos     BI opval = 0;
   3603   1.1  christos     CPU (h_xbit) = opval;
   3604   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3605   1.1  christos   }
   3606   1.1  christos   {
   3607   1.1  christos     BI opval = 0;
   3608   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3609   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3610   1.1  christos   }
   3611   1.1  christos }
   3612   1.1  christos }
   3613   1.1  christos 
   3614   1.1  christos #undef FLD
   3615   1.1  christos }
   3616   1.1  christos   NEXT (vpc);
   3617   1.1  christos 
   3618   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P3) : /* move ${const32},${Pd} */
   3619   1.1  christos {
   3620   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3621   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3622   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3623   1.1  christos   int UNUSED written = 0;
   3624   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3625   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3626   1.1  christos 
   3627   1.1  christos {
   3628   1.1  christos   {
   3629   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3630   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3631   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3632   1.1  christos   }
   3633   1.1  christos {
   3634   1.1  christos   {
   3635   1.1  christos     BI opval = 0;
   3636   1.1  christos     CPU (h_xbit) = opval;
   3637   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3638   1.1  christos   }
   3639   1.1  christos   {
   3640   1.1  christos     BI opval = 0;
   3641   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3642   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3643   1.1  christos   }
   3644   1.1  christos }
   3645   1.1  christos }
   3646   1.1  christos 
   3647   1.1  christos #undef FLD
   3648   1.1  christos }
   3649   1.1  christos   NEXT (vpc);
   3650   1.1  christos 
   3651   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P5) : /* move ${const32},${Pd} */
   3652   1.1  christos {
   3653   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3654   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3655   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3656   1.1  christos   int UNUSED written = 0;
   3657   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3658   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3659   1.1  christos 
   3660   1.1  christos {
   3661   1.1  christos   {
   3662   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3663   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3664   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3665   1.1  christos   }
   3666   1.1  christos {
   3667   1.1  christos   {
   3668   1.1  christos     BI opval = 0;
   3669   1.1  christos     CPU (h_xbit) = opval;
   3670   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3671   1.1  christos   }
   3672   1.1  christos   {
   3673   1.1  christos     BI opval = 0;
   3674   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3675   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3676   1.1  christos   }
   3677   1.1  christos }
   3678   1.1  christos }
   3679   1.1  christos 
   3680   1.1  christos #undef FLD
   3681   1.1  christos }
   3682   1.1  christos   NEXT (vpc);
   3683   1.1  christos 
   3684   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P6) : /* move ${const32},${Pd} */
   3685   1.1  christos {
   3686   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3687   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3688   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3689   1.1  christos   int UNUSED written = 0;
   3690   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3691   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3692   1.1  christos 
   3693   1.1  christos {
   3694   1.1  christos   {
   3695   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3696   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3697   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3698   1.1  christos   }
   3699   1.1  christos {
   3700   1.1  christos   {
   3701   1.1  christos     BI opval = 0;
   3702   1.1  christos     CPU (h_xbit) = opval;
   3703   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3704   1.1  christos   }
   3705   1.1  christos   {
   3706   1.1  christos     BI opval = 0;
   3707   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3708   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3709   1.1  christos   }
   3710   1.1  christos }
   3711   1.1  christos }
   3712   1.1  christos 
   3713   1.1  christos #undef FLD
   3714   1.1  christos }
   3715   1.1  christos   NEXT (vpc);
   3716   1.1  christos 
   3717   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P7) : /* move ${const32},${Pd} */
   3718   1.1  christos {
   3719   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3720   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3721   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3722   1.1  christos   int UNUSED written = 0;
   3723   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3724   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3725   1.1  christos 
   3726   1.1  christos {
   3727   1.1  christos   {
   3728   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3729   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3730   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3731   1.1  christos   }
   3732   1.1  christos {
   3733   1.1  christos   {
   3734   1.1  christos     BI opval = 0;
   3735   1.1  christos     CPU (h_xbit) = opval;
   3736   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3737   1.1  christos   }
   3738   1.1  christos   {
   3739   1.1  christos     BI opval = 0;
   3740   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3741   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3742   1.1  christos   }
   3743   1.1  christos }
   3744   1.1  christos }
   3745   1.1  christos 
   3746   1.1  christos #undef FLD
   3747   1.1  christos }
   3748   1.1  christos   NEXT (vpc);
   3749   1.1  christos 
   3750   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P9) : /* move ${const32},${Pd} */
   3751   1.1  christos {
   3752   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3753   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3754   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3755   1.1  christos   int UNUSED written = 0;
   3756   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3757   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3758   1.1  christos 
   3759   1.1  christos {
   3760   1.1  christos   {
   3761   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3762   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3763   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3764   1.1  christos   }
   3765   1.1  christos {
   3766   1.1  christos   {
   3767   1.1  christos     BI opval = 0;
   3768   1.1  christos     CPU (h_xbit) = opval;
   3769   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3770   1.1  christos   }
   3771   1.1  christos   {
   3772   1.1  christos     BI opval = 0;
   3773   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3774   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3775   1.1  christos   }
   3776   1.1  christos }
   3777   1.1  christos }
   3778   1.1  christos 
   3779   1.1  christos #undef FLD
   3780   1.1  christos }
   3781   1.1  christos   NEXT (vpc);
   3782   1.1  christos 
   3783   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P10) : /* move ${const32},${Pd} */
   3784   1.1  christos {
   3785   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3786   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3787   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3788   1.1  christos   int UNUSED written = 0;
   3789   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3790   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3791   1.1  christos 
   3792   1.1  christos {
   3793   1.1  christos   {
   3794   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3795   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3796   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3797   1.1  christos   }
   3798   1.1  christos {
   3799   1.1  christos   {
   3800   1.1  christos     BI opval = 0;
   3801   1.1  christos     CPU (h_xbit) = opval;
   3802   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3803   1.1  christos   }
   3804   1.1  christos   {
   3805   1.1  christos     BI opval = 0;
   3806   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3807   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3808   1.1  christos   }
   3809   1.1  christos }
   3810   1.1  christos }
   3811   1.1  christos 
   3812   1.1  christos #undef FLD
   3813   1.1  christos }
   3814   1.1  christos   NEXT (vpc);
   3815   1.1  christos 
   3816   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P11) : /* move ${const32},${Pd} */
   3817   1.1  christos {
   3818   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3819   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3820   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3821   1.1  christos   int UNUSED written = 0;
   3822   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3823   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3824   1.1  christos 
   3825   1.1  christos {
   3826   1.1  christos   {
   3827   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3828   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3829   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3830   1.1  christos   }
   3831   1.1  christos {
   3832   1.1  christos   {
   3833   1.1  christos     BI opval = 0;
   3834   1.1  christos     CPU (h_xbit) = opval;
   3835   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3836   1.1  christos   }
   3837   1.1  christos   {
   3838   1.1  christos     BI opval = 0;
   3839   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3840   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3841   1.1  christos   }
   3842   1.1  christos }
   3843   1.1  christos }
   3844   1.1  christos 
   3845   1.1  christos #undef FLD
   3846   1.1  christos }
   3847   1.1  christos   NEXT (vpc);
   3848   1.1  christos 
   3849   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P12) : /* move ${const32},${Pd} */
   3850   1.1  christos {
   3851   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3852   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3853   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3854   1.1  christos   int UNUSED written = 0;
   3855   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3856   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3857   1.1  christos 
   3858   1.1  christos {
   3859   1.1  christos   {
   3860   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3861   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3862   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3863   1.1  christos   }
   3864   1.1  christos {
   3865   1.1  christos   {
   3866   1.1  christos     BI opval = 0;
   3867   1.1  christos     CPU (h_xbit) = opval;
   3868   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3869   1.1  christos   }
   3870   1.1  christos   {
   3871   1.1  christos     BI opval = 0;
   3872   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3873   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3874   1.1  christos   }
   3875   1.1  christos }
   3876   1.1  christos }
   3877   1.1  christos 
   3878   1.1  christos #undef FLD
   3879   1.1  christos }
   3880   1.1  christos   NEXT (vpc);
   3881   1.1  christos 
   3882   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P13) : /* move ${const32},${Pd} */
   3883   1.1  christos {
   3884   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3885   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3886   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3887   1.1  christos   int UNUSED written = 0;
   3888   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3889   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3890   1.1  christos 
   3891   1.1  christos {
   3892   1.1  christos   {
   3893   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3894   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3895   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3896   1.1  christos   }
   3897   1.1  christos {
   3898   1.1  christos   {
   3899   1.1  christos     BI opval = 0;
   3900   1.1  christos     CPU (h_xbit) = opval;
   3901   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3902   1.1  christos   }
   3903   1.1  christos   {
   3904   1.1  christos     BI opval = 0;
   3905   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3906   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3907   1.1  christos   }
   3908   1.1  christos }
   3909   1.1  christos }
   3910   1.1  christos 
   3911   1.1  christos #undef FLD
   3912   1.1  christos }
   3913   1.1  christos   NEXT (vpc);
   3914   1.1  christos 
   3915   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P14) : /* move ${const32},${Pd} */
   3916   1.1  christos {
   3917   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3918   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3919   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3920   1.1  christos   int UNUSED written = 0;
   3921   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3922   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3923   1.1  christos 
   3924   1.1  christos {
   3925   1.1  christos   {
   3926   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3927   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3928   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3929   1.1  christos   }
   3930   1.1  christos {
   3931   1.1  christos   {
   3932   1.1  christos     BI opval = 0;
   3933   1.1  christos     CPU (h_xbit) = opval;
   3934   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3935   1.1  christos   }
   3936   1.1  christos   {
   3937   1.1  christos     BI opval = 0;
   3938   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3939   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3940   1.1  christos   }
   3941   1.1  christos }
   3942   1.1  christos }
   3943   1.1  christos 
   3944   1.1  christos #undef FLD
   3945   1.1  christos }
   3946   1.1  christos   NEXT (vpc);
   3947   1.1  christos 
   3948   1.1  christos   CASE (sem, INSN_MOVE_C_SPRV32_P15) : /* move ${const32},${Pd} */
   3949   1.1  christos {
   3950   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3951   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3952   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   3953   1.1  christos   int UNUSED written = 0;
   3954   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3955   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   3956   1.1  christos 
   3957   1.1  christos {
   3958   1.1  christos   {
   3959   1.1  christos     SI opval = FLD (f_indir_pc__dword);
   3960   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   3961   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   3962   1.1  christos   }
   3963   1.1  christos {
   3964   1.1  christos   {
   3965   1.1  christos     BI opval = 0;
   3966   1.1  christos     CPU (h_xbit) = opval;
   3967   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   3968   1.1  christos   }
   3969   1.1  christos   {
   3970   1.1  christos     BI opval = 0;
   3971   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   3972   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   3973   1.1  christos   }
   3974   1.1  christos }
   3975   1.1  christos }
   3976   1.1  christos 
   3977   1.1  christos #undef FLD
   3978   1.1  christos }
   3979   1.1  christos   NEXT (vpc);
   3980   1.1  christos 
   3981   1.1  christos   CASE (sem, INSN_MOVE_SPR_MV32) : /* move ${Ps},[${Rd-sfield}${inc}] */
   3982   1.1  christos {
   3983   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   3984   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3985   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   3986   1.1  christos   int UNUSED written = 0;
   3987   1.1  christos   IADDR UNUSED pc = abuf->addr;
   3988   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   3989   1.1  christos 
   3990   1.1  christos {
   3991   1.1  christos   SI tmp_rno;
   3992   1.1  christos   tmp_rno = FLD (f_operand2);
   3993   1.1  christos if (EQSI (tmp_rno, 2)) {
   3994   1.1  christos {
   3995   1.1  christos   SI tmp_addr;
   3996   1.1  christos   BI tmp_postinc;
   3997   1.1  christos   tmp_postinc = FLD (f_memmode);
   3998   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   3999   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4000   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4001   1.1  christos {
   4002   1.1  christos   {
   4003   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4004   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4005   1.1  christos     written |= (1 << 13);
   4006   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4007   1.1  christos   }
   4008   1.1  christos   {
   4009   1.1  christos     BI opval = CPU (h_pbit);
   4010   1.1  christos     CPU (h_cbit) = opval;
   4011   1.1  christos     written |= (1 << 10);
   4012   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4013   1.1  christos   }
   4014   1.1  christos }
   4015   1.1  christos } else {
   4016   1.1  christos   {
   4017   1.1  christos     BI opval = 1;
   4018   1.1  christos     CPU (h_cbit) = opval;
   4019   1.1  christos     written |= (1 << 10);
   4020   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4021   1.1  christos   }
   4022   1.1  christos }
   4023   1.1  christos } else {
   4024   1.1  christos   {
   4025   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4026   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4027   1.1  christos     written |= (1 << 13);
   4028   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4029   1.1  christos   }
   4030   1.1  christos }
   4031   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4032   1.1  christos {
   4033   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4034   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4035   1.1  christos }
   4036   1.1  christos   {
   4037   1.1  christos     SI opval = tmp_addr;
   4038   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4039   1.1  christos     written |= (1 << 9);
   4040   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4041   1.1  christos   }
   4042   1.1  christos }
   4043   1.1  christos }
   4044   1.1  christos }
   4045   1.1  christos }
   4046   1.1  christos  else if (EQSI (tmp_rno, 3)) {
   4047   1.1  christos {
   4048   1.1  christos   SI tmp_addr;
   4049   1.1  christos   BI tmp_postinc;
   4050   1.1  christos   tmp_postinc = FLD (f_memmode);
   4051   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4052   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4053   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4054   1.1  christos {
   4055   1.1  christos   {
   4056   1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4057   1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4058   1.1  christos     written |= (1 << 12);
   4059   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4060   1.1  christos   }
   4061   1.1  christos   {
   4062   1.1  christos     BI opval = CPU (h_pbit);
   4063   1.1  christos     CPU (h_cbit) = opval;
   4064   1.1  christos     written |= (1 << 10);
   4065   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4066   1.1  christos   }
   4067   1.1  christos }
   4068   1.1  christos } else {
   4069   1.1  christos   {
   4070   1.1  christos     BI opval = 1;
   4071   1.1  christos     CPU (h_cbit) = opval;
   4072   1.1  christos     written |= (1 << 10);
   4073   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4074   1.1  christos   }
   4075   1.1  christos }
   4076   1.1  christos } else {
   4077   1.1  christos   {
   4078   1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4079   1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4080   1.1  christos     written |= (1 << 12);
   4081   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4082   1.1  christos   }
   4083   1.1  christos }
   4084   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4085   1.1  christos {
   4086   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4087   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   4088   1.1  christos }
   4089   1.1  christos   {
   4090   1.1  christos     SI opval = tmp_addr;
   4091   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4092   1.1  christos     written |= (1 << 9);
   4093   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4094   1.1  christos   }
   4095   1.1  christos }
   4096   1.1  christos }
   4097   1.1  christos }
   4098   1.1  christos }
   4099   1.1  christos  else if (EQSI (tmp_rno, 5)) {
   4100   1.1  christos {
   4101   1.1  christos   SI tmp_addr;
   4102   1.1  christos   BI tmp_postinc;
   4103   1.1  christos   tmp_postinc = FLD (f_memmode);
   4104   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4105   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4106   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4107   1.1  christos {
   4108   1.1  christos   {
   4109   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4110   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4111   1.1  christos     written |= (1 << 13);
   4112   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4113   1.1  christos   }
   4114   1.1  christos   {
   4115   1.1  christos     BI opval = CPU (h_pbit);
   4116   1.1  christos     CPU (h_cbit) = opval;
   4117   1.1  christos     written |= (1 << 10);
   4118   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4119   1.1  christos   }
   4120   1.1  christos }
   4121   1.1  christos } else {
   4122   1.1  christos   {
   4123   1.1  christos     BI opval = 1;
   4124   1.1  christos     CPU (h_cbit) = opval;
   4125   1.1  christos     written |= (1 << 10);
   4126   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4127   1.1  christos   }
   4128   1.1  christos }
   4129   1.1  christos } else {
   4130   1.1  christos   {
   4131   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4132   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4133   1.1  christos     written |= (1 << 13);
   4134   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4135   1.1  christos   }
   4136   1.1  christos }
   4137   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4138   1.1  christos {
   4139   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4140   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4141   1.1  christos }
   4142   1.1  christos   {
   4143   1.1  christos     SI opval = tmp_addr;
   4144   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4145   1.1  christos     written |= (1 << 9);
   4146   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4147   1.1  christos   }
   4148   1.1  christos }
   4149   1.1  christos }
   4150   1.1  christos }
   4151   1.1  christos }
   4152   1.1  christos  else if (EQSI (tmp_rno, 6)) {
   4153   1.1  christos {
   4154   1.1  christos   SI tmp_addr;
   4155   1.1  christos   BI tmp_postinc;
   4156   1.1  christos   tmp_postinc = FLD (f_memmode);
   4157   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4158   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4159   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4160   1.1  christos {
   4161   1.1  christos   {
   4162   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4163   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4164   1.1  christos     written |= (1 << 13);
   4165   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4166   1.1  christos   }
   4167   1.1  christos   {
   4168   1.1  christos     BI opval = CPU (h_pbit);
   4169   1.1  christos     CPU (h_cbit) = opval;
   4170   1.1  christos     written |= (1 << 10);
   4171   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4172   1.1  christos   }
   4173   1.1  christos }
   4174   1.1  christos } else {
   4175   1.1  christos   {
   4176   1.1  christos     BI opval = 1;
   4177   1.1  christos     CPU (h_cbit) = opval;
   4178   1.1  christos     written |= (1 << 10);
   4179   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4180   1.1  christos   }
   4181   1.1  christos }
   4182   1.1  christos } else {
   4183   1.1  christos   {
   4184   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4185   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4186   1.1  christos     written |= (1 << 13);
   4187   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4188   1.1  christos   }
   4189   1.1  christos }
   4190   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4191   1.1  christos {
   4192   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4193   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4194   1.1  christos }
   4195   1.1  christos   {
   4196   1.1  christos     SI opval = tmp_addr;
   4197   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4198   1.1  christos     written |= (1 << 9);
   4199   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4200   1.1  christos   }
   4201   1.1  christos }
   4202   1.1  christos }
   4203   1.1  christos }
   4204   1.1  christos }
   4205   1.1  christos  else if (EQSI (tmp_rno, 7)) {
   4206   1.1  christos {
   4207   1.1  christos   SI tmp_addr;
   4208   1.1  christos   BI tmp_postinc;
   4209   1.1  christos   tmp_postinc = FLD (f_memmode);
   4210   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4211   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4212   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4213   1.1  christos {
   4214   1.1  christos   {
   4215   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4216   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4217   1.1  christos     written |= (1 << 13);
   4218   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4219   1.1  christos   }
   4220   1.1  christos   {
   4221   1.1  christos     BI opval = CPU (h_pbit);
   4222   1.1  christos     CPU (h_cbit) = opval;
   4223   1.1  christos     written |= (1 << 10);
   4224   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4225   1.1  christos   }
   4226   1.1  christos }
   4227   1.1  christos } else {
   4228   1.1  christos   {
   4229   1.1  christos     BI opval = 1;
   4230   1.1  christos     CPU (h_cbit) = opval;
   4231   1.1  christos     written |= (1 << 10);
   4232   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4233   1.1  christos   }
   4234   1.1  christos }
   4235   1.1  christos } else {
   4236   1.1  christos   {
   4237   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4238   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4239   1.1  christos     written |= (1 << 13);
   4240   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4241   1.1  christos   }
   4242   1.1  christos }
   4243   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4244   1.1  christos {
   4245   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4246   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4247   1.1  christos }
   4248   1.1  christos   {
   4249   1.1  christos     SI opval = tmp_addr;
   4250   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4251   1.1  christos     written |= (1 << 9);
   4252   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4253   1.1  christos   }
   4254   1.1  christos }
   4255   1.1  christos }
   4256   1.1  christos }
   4257   1.1  christos }
   4258   1.1  christos  else if (EQSI (tmp_rno, 9)) {
   4259   1.1  christos {
   4260   1.1  christos   SI tmp_addr;
   4261   1.1  christos   BI tmp_postinc;
   4262   1.1  christos   tmp_postinc = FLD (f_memmode);
   4263   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4264   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4265   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4266   1.1  christos {
   4267   1.1  christos   {
   4268   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4269   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4270   1.1  christos     written |= (1 << 13);
   4271   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4272   1.1  christos   }
   4273   1.1  christos   {
   4274   1.1  christos     BI opval = CPU (h_pbit);
   4275   1.1  christos     CPU (h_cbit) = opval;
   4276   1.1  christos     written |= (1 << 10);
   4277   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4278   1.1  christos   }
   4279   1.1  christos }
   4280   1.1  christos } else {
   4281   1.1  christos   {
   4282   1.1  christos     BI opval = 1;
   4283   1.1  christos     CPU (h_cbit) = opval;
   4284   1.1  christos     written |= (1 << 10);
   4285   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4286   1.1  christos   }
   4287   1.1  christos }
   4288   1.1  christos } else {
   4289   1.1  christos   {
   4290   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4291   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4292   1.1  christos     written |= (1 << 13);
   4293   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4294   1.1  christos   }
   4295   1.1  christos }
   4296   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4297   1.1  christos {
   4298   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4299   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4300   1.1  christos }
   4301   1.1  christos   {
   4302   1.1  christos     SI opval = tmp_addr;
   4303   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4304   1.1  christos     written |= (1 << 9);
   4305   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4306   1.1  christos   }
   4307   1.1  christos }
   4308   1.1  christos }
   4309   1.1  christos }
   4310   1.1  christos }
   4311   1.1  christos  else if (EQSI (tmp_rno, 10)) {
   4312   1.1  christos {
   4313   1.1  christos   SI tmp_addr;
   4314   1.1  christos   BI tmp_postinc;
   4315   1.1  christos   tmp_postinc = FLD (f_memmode);
   4316   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4317   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4318   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4319   1.1  christos {
   4320   1.1  christos   {
   4321   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4322   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4323   1.1  christos     written |= (1 << 13);
   4324   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4325   1.1  christos   }
   4326   1.1  christos   {
   4327   1.1  christos     BI opval = CPU (h_pbit);
   4328   1.1  christos     CPU (h_cbit) = opval;
   4329   1.1  christos     written |= (1 << 10);
   4330   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4331   1.1  christos   }
   4332   1.1  christos }
   4333   1.1  christos } else {
   4334   1.1  christos   {
   4335   1.1  christos     BI opval = 1;
   4336   1.1  christos     CPU (h_cbit) = opval;
   4337   1.1  christos     written |= (1 << 10);
   4338   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4339   1.1  christos   }
   4340   1.1  christos }
   4341   1.1  christos } else {
   4342   1.1  christos   {
   4343   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4344   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4345   1.1  christos     written |= (1 << 13);
   4346   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4347   1.1  christos   }
   4348   1.1  christos }
   4349   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4350   1.1  christos {
   4351   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4352   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4353   1.1  christos }
   4354   1.1  christos   {
   4355   1.1  christos     SI opval = tmp_addr;
   4356   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4357   1.1  christos     written |= (1 << 9);
   4358   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4359   1.1  christos   }
   4360   1.1  christos }
   4361   1.1  christos }
   4362   1.1  christos }
   4363   1.1  christos }
   4364   1.1  christos  else if (EQSI (tmp_rno, 11)) {
   4365   1.1  christos {
   4366   1.1  christos   SI tmp_addr;
   4367   1.1  christos   BI tmp_postinc;
   4368   1.1  christos   tmp_postinc = FLD (f_memmode);
   4369   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4370   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4371   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4372   1.1  christos {
   4373   1.1  christos   {
   4374   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4375   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4376   1.1  christos     written |= (1 << 13);
   4377   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4378   1.1  christos   }
   4379   1.1  christos   {
   4380   1.1  christos     BI opval = CPU (h_pbit);
   4381   1.1  christos     CPU (h_cbit) = opval;
   4382   1.1  christos     written |= (1 << 10);
   4383   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4384   1.1  christos   }
   4385   1.1  christos }
   4386   1.1  christos } else {
   4387   1.1  christos   {
   4388   1.1  christos     BI opval = 1;
   4389   1.1  christos     CPU (h_cbit) = opval;
   4390   1.1  christos     written |= (1 << 10);
   4391   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4392   1.1  christos   }
   4393   1.1  christos }
   4394   1.1  christos } else {
   4395   1.1  christos   {
   4396   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4397   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4398   1.1  christos     written |= (1 << 13);
   4399   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4400   1.1  christos   }
   4401   1.1  christos }
   4402   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4403   1.1  christos {
   4404   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4405   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4406   1.1  christos }
   4407   1.1  christos   {
   4408   1.1  christos     SI opval = tmp_addr;
   4409   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4410   1.1  christos     written |= (1 << 9);
   4411   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4412   1.1  christos   }
   4413   1.1  christos }
   4414   1.1  christos }
   4415   1.1  christos }
   4416   1.1  christos }
   4417   1.1  christos  else if (EQSI (tmp_rno, 12)) {
   4418   1.1  christos {
   4419   1.1  christos   SI tmp_addr;
   4420   1.1  christos   BI tmp_postinc;
   4421   1.1  christos   tmp_postinc = FLD (f_memmode);
   4422   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4423   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4424   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4425   1.1  christos {
   4426   1.1  christos   {
   4427   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4428   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4429   1.1  christos     written |= (1 << 13);
   4430   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4431   1.1  christos   }
   4432   1.1  christos   {
   4433   1.1  christos     BI opval = CPU (h_pbit);
   4434   1.1  christos     CPU (h_cbit) = opval;
   4435   1.1  christos     written |= (1 << 10);
   4436   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4437   1.1  christos   }
   4438   1.1  christos }
   4439   1.1  christos } else {
   4440   1.1  christos   {
   4441   1.1  christos     BI opval = 1;
   4442   1.1  christos     CPU (h_cbit) = opval;
   4443   1.1  christos     written |= (1 << 10);
   4444   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4445   1.1  christos   }
   4446   1.1  christos }
   4447   1.1  christos } else {
   4448   1.1  christos   {
   4449   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4450   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4451   1.1  christos     written |= (1 << 13);
   4452   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4453   1.1  christos   }
   4454   1.1  christos }
   4455   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4456   1.1  christos {
   4457   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4458   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4459   1.1  christos }
   4460   1.1  christos   {
   4461   1.1  christos     SI opval = tmp_addr;
   4462   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4463   1.1  christos     written |= (1 << 9);
   4464   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4465   1.1  christos   }
   4466   1.1  christos }
   4467   1.1  christos }
   4468   1.1  christos }
   4469   1.1  christos }
   4470   1.1  christos  else if (EQSI (tmp_rno, 13)) {
   4471   1.1  christos {
   4472   1.1  christos   SI tmp_addr;
   4473   1.1  christos   BI tmp_postinc;
   4474   1.1  christos   tmp_postinc = FLD (f_memmode);
   4475   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4476   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4477   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4478   1.1  christos {
   4479   1.1  christos   {
   4480   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4481   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4482   1.1  christos     written |= (1 << 13);
   4483   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4484   1.1  christos   }
   4485   1.1  christos   {
   4486   1.1  christos     BI opval = CPU (h_pbit);
   4487   1.1  christos     CPU (h_cbit) = opval;
   4488   1.1  christos     written |= (1 << 10);
   4489   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4490   1.1  christos   }
   4491   1.1  christos }
   4492   1.1  christos } else {
   4493   1.1  christos   {
   4494   1.1  christos     BI opval = 1;
   4495   1.1  christos     CPU (h_cbit) = opval;
   4496   1.1  christos     written |= (1 << 10);
   4497   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4498   1.1  christos   }
   4499   1.1  christos }
   4500   1.1  christos } else {
   4501   1.1  christos   {
   4502   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4503   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4504   1.1  christos     written |= (1 << 13);
   4505   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4506   1.1  christos   }
   4507   1.1  christos }
   4508   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4509   1.1  christos {
   4510   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4511   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4512   1.1  christos }
   4513   1.1  christos   {
   4514   1.1  christos     SI opval = tmp_addr;
   4515   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4516   1.1  christos     written |= (1 << 9);
   4517   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4518   1.1  christos   }
   4519   1.1  christos }
   4520   1.1  christos }
   4521   1.1  christos }
   4522   1.1  christos }
   4523   1.1  christos  else if (EQSI (tmp_rno, 14)) {
   4524   1.1  christos {
   4525   1.1  christos   SI tmp_addr;
   4526   1.1  christos   BI tmp_postinc;
   4527   1.1  christos   tmp_postinc = FLD (f_memmode);
   4528   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4529   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4530   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4531   1.1  christos {
   4532   1.1  christos   {
   4533   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4534   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4535   1.1  christos     written |= (1 << 13);
   4536   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4537   1.1  christos   }
   4538   1.1  christos   {
   4539   1.1  christos     BI opval = CPU (h_pbit);
   4540   1.1  christos     CPU (h_cbit) = opval;
   4541   1.1  christos     written |= (1 << 10);
   4542   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4543   1.1  christos   }
   4544   1.1  christos }
   4545   1.1  christos } else {
   4546   1.1  christos   {
   4547   1.1  christos     BI opval = 1;
   4548   1.1  christos     CPU (h_cbit) = opval;
   4549   1.1  christos     written |= (1 << 10);
   4550   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4551   1.1  christos   }
   4552   1.1  christos }
   4553   1.1  christos } else {
   4554   1.1  christos   {
   4555   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4556   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4557   1.1  christos     written |= (1 << 13);
   4558   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4559   1.1  christos   }
   4560   1.1  christos }
   4561   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4562   1.1  christos {
   4563   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4564   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4565   1.1  christos }
   4566   1.1  christos   {
   4567   1.1  christos     SI opval = tmp_addr;
   4568   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4569   1.1  christos     written |= (1 << 9);
   4570   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4571   1.1  christos   }
   4572   1.1  christos }
   4573   1.1  christos }
   4574   1.1  christos }
   4575   1.1  christos }
   4576   1.1  christos  else if (EQSI (tmp_rno, 15)) {
   4577   1.1  christos {
   4578   1.1  christos   SI tmp_addr;
   4579   1.1  christos   BI tmp_postinc;
   4580   1.1  christos   tmp_postinc = FLD (f_memmode);
   4581   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4582   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4583   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4584   1.1  christos {
   4585   1.1  christos   {
   4586   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4587   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4588   1.1  christos     written |= (1 << 13);
   4589   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4590   1.1  christos   }
   4591   1.1  christos   {
   4592   1.1  christos     BI opval = CPU (h_pbit);
   4593   1.1  christos     CPU (h_cbit) = opval;
   4594   1.1  christos     written |= (1 << 10);
   4595   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4596   1.1  christos   }
   4597   1.1  christos }
   4598   1.1  christos } else {
   4599   1.1  christos   {
   4600   1.1  christos     BI opval = 1;
   4601   1.1  christos     CPU (h_cbit) = opval;
   4602   1.1  christos     written |= (1 << 10);
   4603   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4604   1.1  christos   }
   4605   1.1  christos }
   4606   1.1  christos } else {
   4607   1.1  christos   {
   4608   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4609   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4610   1.1  christos     written |= (1 << 13);
   4611   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4612   1.1  christos   }
   4613   1.1  christos }
   4614   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4615   1.1  christos {
   4616   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4617   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4618   1.1  christos }
   4619   1.1  christos   {
   4620   1.1  christos     SI opval = tmp_addr;
   4621   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4622   1.1  christos     written |= (1 << 9);
   4623   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4624   1.1  christos   }
   4625   1.1  christos }
   4626   1.1  christos }
   4627   1.1  christos }
   4628   1.1  christos }
   4629   1.1  christos  else if (EQSI (tmp_rno, 0)) {
   4630   1.1  christos {
   4631   1.1  christos   SI tmp_addr;
   4632   1.1  christos   BI tmp_postinc;
   4633   1.1  christos   tmp_postinc = FLD (f_memmode);
   4634   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4635   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4636   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4637   1.1  christos {
   4638   1.1  christos   {
   4639   1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4640   1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4641   1.1  christos     written |= (1 << 12);
   4642   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4643   1.1  christos   }
   4644   1.1  christos   {
   4645   1.1  christos     BI opval = CPU (h_pbit);
   4646   1.1  christos     CPU (h_cbit) = opval;
   4647   1.1  christos     written |= (1 << 10);
   4648   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4649   1.1  christos   }
   4650   1.1  christos }
   4651   1.1  christos } else {
   4652   1.1  christos   {
   4653   1.1  christos     BI opval = 1;
   4654   1.1  christos     CPU (h_cbit) = opval;
   4655   1.1  christos     written |= (1 << 10);
   4656   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4657   1.1  christos   }
   4658   1.1  christos }
   4659   1.1  christos } else {
   4660   1.1  christos   {
   4661   1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4662   1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4663   1.1  christos     written |= (1 << 12);
   4664   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4665   1.1  christos   }
   4666   1.1  christos }
   4667   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4668   1.1  christos {
   4669   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4670   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   4671   1.1  christos }
   4672   1.1  christos   {
   4673   1.1  christos     SI opval = tmp_addr;
   4674   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4675   1.1  christos     written |= (1 << 9);
   4676   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4677   1.1  christos   }
   4678   1.1  christos }
   4679   1.1  christos }
   4680   1.1  christos }
   4681   1.1  christos }
   4682   1.1  christos  else if (EQSI (tmp_rno, 1)) {
   4683   1.1  christos {
   4684   1.1  christos   SI tmp_addr;
   4685   1.1  christos   BI tmp_postinc;
   4686   1.1  christos   tmp_postinc = FLD (f_memmode);
   4687   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4688   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4689   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4690   1.1  christos {
   4691   1.1  christos   {
   4692   1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4693   1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4694   1.1  christos     written |= (1 << 12);
   4695   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4696   1.1  christos   }
   4697   1.1  christos   {
   4698   1.1  christos     BI opval = CPU (h_pbit);
   4699   1.1  christos     CPU (h_cbit) = opval;
   4700   1.1  christos     written |= (1 << 10);
   4701   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4702   1.1  christos   }
   4703   1.1  christos }
   4704   1.1  christos } else {
   4705   1.1  christos   {
   4706   1.1  christos     BI opval = 1;
   4707   1.1  christos     CPU (h_cbit) = opval;
   4708   1.1  christos     written |= (1 << 10);
   4709   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4710   1.1  christos   }
   4711   1.1  christos }
   4712   1.1  christos } else {
   4713   1.1  christos   {
   4714   1.1  christos     QI opval = GET_H_SR (FLD (f_operand2));
   4715   1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   4716   1.1  christos     written |= (1 << 12);
   4717   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4718   1.1  christos   }
   4719   1.1  christos }
   4720   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4721   1.1  christos {
   4722   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4723   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   4724   1.1  christos }
   4725   1.1  christos   {
   4726   1.1  christos     SI opval = tmp_addr;
   4727   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4728   1.1  christos     written |= (1 << 9);
   4729   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4730   1.1  christos   }
   4731   1.1  christos }
   4732   1.1  christos }
   4733   1.1  christos }
   4734   1.1  christos }
   4735   1.1  christos  else if (EQSI (tmp_rno, 4)) {
   4736   1.1  christos {
   4737   1.1  christos   SI tmp_addr;
   4738   1.1  christos   BI tmp_postinc;
   4739   1.1  christos   tmp_postinc = FLD (f_memmode);
   4740   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4741   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4742   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4743   1.1  christos {
   4744   1.1  christos   {
   4745   1.1  christos     HI opval = GET_H_SR (FLD (f_operand2));
   4746   1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   4747   1.1  christos     written |= (1 << 11);
   4748   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4749   1.1  christos   }
   4750   1.1  christos   {
   4751   1.1  christos     BI opval = CPU (h_pbit);
   4752   1.1  christos     CPU (h_cbit) = opval;
   4753   1.1  christos     written |= (1 << 10);
   4754   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4755   1.1  christos   }
   4756   1.1  christos }
   4757   1.1  christos } else {
   4758   1.1  christos   {
   4759   1.1  christos     BI opval = 1;
   4760   1.1  christos     CPU (h_cbit) = opval;
   4761   1.1  christos     written |= (1 << 10);
   4762   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4763   1.1  christos   }
   4764   1.1  christos }
   4765   1.1  christos } else {
   4766   1.1  christos   {
   4767   1.1  christos     HI opval = GET_H_SR (FLD (f_operand2));
   4768   1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   4769   1.1  christos     written |= (1 << 11);
   4770   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4771   1.1  christos   }
   4772   1.1  christos }
   4773   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4774   1.1  christos {
   4775   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4776   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   4777   1.1  christos }
   4778   1.1  christos   {
   4779   1.1  christos     SI opval = tmp_addr;
   4780   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4781   1.1  christos     written |= (1 << 9);
   4782   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4783   1.1  christos   }
   4784   1.1  christos }
   4785   1.1  christos }
   4786   1.1  christos }
   4787   1.1  christos }
   4788   1.1  christos  else if (EQSI (tmp_rno, 8)) {
   4789   1.1  christos {
   4790   1.1  christos   SI tmp_addr;
   4791   1.1  christos   BI tmp_postinc;
   4792   1.1  christos   tmp_postinc = FLD (f_memmode);
   4793   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   4794   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   4795   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   4796   1.1  christos {
   4797   1.1  christos   {
   4798   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4799   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4800   1.1  christos     written |= (1 << 13);
   4801   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4802   1.1  christos   }
   4803   1.1  christos   {
   4804   1.1  christos     BI opval = CPU (h_pbit);
   4805   1.1  christos     CPU (h_cbit) = opval;
   4806   1.1  christos     written |= (1 << 10);
   4807   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4808   1.1  christos   }
   4809   1.1  christos }
   4810   1.1  christos } else {
   4811   1.1  christos   {
   4812   1.1  christos     BI opval = 1;
   4813   1.1  christos     CPU (h_cbit) = opval;
   4814   1.1  christos     written |= (1 << 10);
   4815   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   4816   1.1  christos   }
   4817   1.1  christos }
   4818   1.1  christos } else {
   4819   1.1  christos   {
   4820   1.1  christos     SI opval = GET_H_SR (FLD (f_operand2));
   4821   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4822   1.1  christos     written |= (1 << 13);
   4823   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4824   1.1  christos   }
   4825   1.1  christos }
   4826   1.1  christos if (NEBI (tmp_postinc, 0)) {
   4827   1.1  christos {
   4828   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   4829   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4830   1.1  christos }
   4831   1.1  christos   {
   4832   1.1  christos     SI opval = tmp_addr;
   4833   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4834   1.1  christos     written |= (1 << 9);
   4835   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4836   1.1  christos   }
   4837   1.1  christos }
   4838   1.1  christos }
   4839   1.1  christos }
   4840   1.1  christos }
   4841   1.1  christos  else {
   4842   1.1  christos cgen_rtx_error (current_cpu, "write from unimplemented special register");
   4843   1.1  christos }
   4844   1.1  christos {
   4845   1.1  christos   {
   4846   1.1  christos     BI opval = 0;
   4847   1.1  christos     CPU (h_xbit) = opval;
   4848   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   4849   1.1  christos   }
   4850   1.1  christos   {
   4851   1.1  christos     BI opval = 0;
   4852   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   4853   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   4854   1.1  christos   }
   4855   1.1  christos }
   4856   1.1  christos }
   4857   1.1  christos 
   4858   1.1  christos   abuf->written = written;
   4859   1.1  christos #undef FLD
   4860   1.1  christos }
   4861   1.1  christos   NEXT (vpc);
   4862   1.1  christos 
   4863   1.1  christos   CASE (sem, INSN_MOVE_SS_R) : /* move ${Ss},${Rd-sfield} */
   4864   1.1  christos {
   4865   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   4866   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   4867   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   4868   1.1  christos   int UNUSED written = 0;
   4869   1.1  christos   IADDR UNUSED pc = abuf->addr;
   4870   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   4871   1.1  christos 
   4872   1.1  christos {
   4873   1.1  christos   {
   4874   1.1  christos     SI opval = GET_H_SUPR (FLD (f_operand2));
   4875   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   4876   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   4877   1.1  christos   }
   4878   1.1  christos {
   4879   1.1  christos   {
   4880   1.1  christos     BI opval = 0;
   4881   1.1  christos     CPU (h_xbit) = opval;
   4882   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   4883   1.1  christos   }
   4884   1.1  christos   {
   4885   1.1  christos     BI opval = 0;
   4886   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   4887   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   4888   1.1  christos   }
   4889   1.1  christos }
   4890   1.1  christos }
   4891   1.1  christos 
   4892   1.1  christos #undef FLD
   4893   1.1  christos }
   4894   1.1  christos   NEXT (vpc);
   4895   1.1  christos 
   4896   1.1  christos   CASE (sem, INSN_MOVE_R_SS) : /* move ${Rs},${Sd} */
   4897   1.1  christos {
   4898   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   4899   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   4900   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   4901   1.1  christos   int UNUSED written = 0;
   4902   1.1  christos   IADDR UNUSED pc = abuf->addr;
   4903   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   4904   1.1  christos 
   4905   1.1  christos {
   4906   1.1  christos   {
   4907   1.1  christos     SI opval = GET_H_GR (FLD (f_operand1));
   4908   1.1  christos     SET_H_SUPR (FLD (f_operand2), opval);
   4909   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "supr", 'x', opval);
   4910   1.1  christos   }
   4911   1.1  christos {
   4912   1.1  christos   {
   4913   1.1  christos     BI opval = 0;
   4914   1.1  christos     CPU (h_xbit) = opval;
   4915   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   4916   1.1  christos   }
   4917   1.1  christos   {
   4918   1.1  christos     BI opval = 0;
   4919   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   4920   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   4921   1.1  christos   }
   4922   1.1  christos }
   4923   1.1  christos }
   4924   1.1  christos 
   4925   1.1  christos #undef FLD
   4926   1.1  christos }
   4927   1.1  christos   NEXT (vpc);
   4928   1.1  christos 
   4929   1.1  christos   CASE (sem, INSN_MOVEM_R_M_V32) : /* movem ${Rs-dfield},[${Rd-sfield}${inc}] */
   4930   1.1  christos {
   4931   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   4932   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   4933   1.1  christos #define FLD(f) abuf->fields.sfmt_movem_r_m_v32.f
   4934   1.1  christos   int UNUSED written = 0;
   4935   1.1  christos   IADDR UNUSED pc = abuf->addr;
   4936   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   4937   1.1  christos 
   4938   1.1  christos {
   4939   1.1  christos   SI tmp_addr;
   4940   1.1  christos   BI tmp_postinc;
   4941   1.1  christos   tmp_postinc = FLD (f_memmode);
   4942   1.1  christos {
   4943   1.1  christos   SI tmp_dummy;
   4944   1.1  christos   tmp_dummy = GET_H_GR (FLD (f_operand2));
   4945   1.1  christos }
   4946   1.1  christos   tmp_addr = GET_H_GR (FLD (f_operand1));
   4947   1.1  christos {
   4948   1.1  christos if (GESI (FLD (f_operand2), 0)) {
   4949   1.1  christos {
   4950   1.1  christos   SI tmp_tmp;
   4951   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 0));
   4952   1.1  christos   {
   4953   1.1  christos     SI opval = tmp_tmp;
   4954   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4955   1.1  christos     written |= (1 << 21);
   4956   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4957   1.1  christos   }
   4958   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4959   1.1  christos }
   4960   1.1  christos }
   4961   1.1  christos if (GESI (FLD (f_operand2), 1)) {
   4962   1.1  christos {
   4963   1.1  christos   SI tmp_tmp;
   4964   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 1));
   4965   1.1  christos   {
   4966   1.1  christos     SI opval = tmp_tmp;
   4967   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4968   1.1  christos     written |= (1 << 21);
   4969   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4970   1.1  christos   }
   4971   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4972   1.1  christos }
   4973   1.1  christos }
   4974   1.1  christos if (GESI (FLD (f_operand2), 2)) {
   4975   1.1  christos {
   4976   1.1  christos   SI tmp_tmp;
   4977   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 2));
   4978   1.1  christos   {
   4979   1.1  christos     SI opval = tmp_tmp;
   4980   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4981   1.1  christos     written |= (1 << 21);
   4982   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4983   1.1  christos   }
   4984   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4985   1.1  christos }
   4986   1.1  christos }
   4987   1.1  christos if (GESI (FLD (f_operand2), 3)) {
   4988   1.1  christos {
   4989   1.1  christos   SI tmp_tmp;
   4990   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 3));
   4991   1.1  christos   {
   4992   1.1  christos     SI opval = tmp_tmp;
   4993   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   4994   1.1  christos     written |= (1 << 21);
   4995   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   4996   1.1  christos   }
   4997   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   4998   1.1  christos }
   4999   1.1  christos }
   5000   1.1  christos if (GESI (FLD (f_operand2), 4)) {
   5001   1.1  christos {
   5002   1.1  christos   SI tmp_tmp;
   5003   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 4));
   5004   1.1  christos   {
   5005   1.1  christos     SI opval = tmp_tmp;
   5006   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5007   1.1  christos     written |= (1 << 21);
   5008   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5009   1.1  christos   }
   5010   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5011   1.1  christos }
   5012   1.1  christos }
   5013   1.1  christos if (GESI (FLD (f_operand2), 5)) {
   5014   1.1  christos {
   5015   1.1  christos   SI tmp_tmp;
   5016   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 5));
   5017   1.1  christos   {
   5018   1.1  christos     SI opval = tmp_tmp;
   5019   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5020   1.1  christos     written |= (1 << 21);
   5021   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5022   1.1  christos   }
   5023   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5024   1.1  christos }
   5025   1.1  christos }
   5026   1.1  christos if (GESI (FLD (f_operand2), 6)) {
   5027   1.1  christos {
   5028   1.1  christos   SI tmp_tmp;
   5029   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 6));
   5030   1.1  christos   {
   5031   1.1  christos     SI opval = tmp_tmp;
   5032   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5033   1.1  christos     written |= (1 << 21);
   5034   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5035   1.1  christos   }
   5036   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5037   1.1  christos }
   5038   1.1  christos }
   5039   1.1  christos if (GESI (FLD (f_operand2), 7)) {
   5040   1.1  christos {
   5041   1.1  christos   SI tmp_tmp;
   5042   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 7));
   5043   1.1  christos   {
   5044   1.1  christos     SI opval = tmp_tmp;
   5045   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5046   1.1  christos     written |= (1 << 21);
   5047   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5048   1.1  christos   }
   5049   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5050   1.1  christos }
   5051   1.1  christos }
   5052   1.1  christos if (GESI (FLD (f_operand2), 8)) {
   5053   1.1  christos {
   5054   1.1  christos   SI tmp_tmp;
   5055   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 8));
   5056   1.1  christos   {
   5057   1.1  christos     SI opval = tmp_tmp;
   5058   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5059   1.1  christos     written |= (1 << 21);
   5060   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5061   1.1  christos   }
   5062   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5063   1.1  christos }
   5064   1.1  christos }
   5065   1.1  christos if (GESI (FLD (f_operand2), 9)) {
   5066   1.1  christos {
   5067   1.1  christos   SI tmp_tmp;
   5068   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 9));
   5069   1.1  christos   {
   5070   1.1  christos     SI opval = tmp_tmp;
   5071   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5072   1.1  christos     written |= (1 << 21);
   5073   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5074   1.1  christos   }
   5075   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5076   1.1  christos }
   5077   1.1  christos }
   5078   1.1  christos if (GESI (FLD (f_operand2), 10)) {
   5079   1.1  christos {
   5080   1.1  christos   SI tmp_tmp;
   5081   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 10));
   5082   1.1  christos   {
   5083   1.1  christos     SI opval = tmp_tmp;
   5084   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5085   1.1  christos     written |= (1 << 21);
   5086   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5087   1.1  christos   }
   5088   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5089   1.1  christos }
   5090   1.1  christos }
   5091   1.1  christos if (GESI (FLD (f_operand2), 11)) {
   5092   1.1  christos {
   5093   1.1  christos   SI tmp_tmp;
   5094   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 11));
   5095   1.1  christos   {
   5096   1.1  christos     SI opval = tmp_tmp;
   5097   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5098   1.1  christos     written |= (1 << 21);
   5099   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5100   1.1  christos   }
   5101   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5102   1.1  christos }
   5103   1.1  christos }
   5104   1.1  christos if (GESI (FLD (f_operand2), 12)) {
   5105   1.1  christos {
   5106   1.1  christos   SI tmp_tmp;
   5107   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 12));
   5108   1.1  christos   {
   5109   1.1  christos     SI opval = tmp_tmp;
   5110   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5111   1.1  christos     written |= (1 << 21);
   5112   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5113   1.1  christos   }
   5114   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5115   1.1  christos }
   5116   1.1  christos }
   5117   1.1  christos if (GESI (FLD (f_operand2), 13)) {
   5118   1.1  christos {
   5119   1.1  christos   SI tmp_tmp;
   5120   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 13));
   5121   1.1  christos   {
   5122   1.1  christos     SI opval = tmp_tmp;
   5123   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5124   1.1  christos     written |= (1 << 21);
   5125   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5126   1.1  christos   }
   5127   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5128   1.1  christos }
   5129   1.1  christos }
   5130   1.1  christos if (GESI (FLD (f_operand2), 14)) {
   5131   1.1  christos {
   5132   1.1  christos   SI tmp_tmp;
   5133   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 14));
   5134   1.1  christos   {
   5135   1.1  christos     SI opval = tmp_tmp;
   5136   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5137   1.1  christos     written |= (1 << 21);
   5138   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5139   1.1  christos   }
   5140   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5141   1.1  christos }
   5142   1.1  christos }
   5143   1.1  christos if (GESI (FLD (f_operand2), 15)) {
   5144   1.1  christos {
   5145   1.1  christos   SI tmp_tmp;
   5146   1.1  christos   tmp_tmp = GET_H_GR (((UINT) 15));
   5147   1.1  christos   {
   5148   1.1  christos     SI opval = tmp_tmp;
   5149   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   5150   1.1  christos     written |= (1 << 21);
   5151   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   5152   1.1  christos   }
   5153   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5154   1.1  christos }
   5155   1.1  christos }
   5156   1.1  christos }
   5157   1.1  christos if (NEBI (tmp_postinc, 0)) {
   5158   1.1  christos   {
   5159   1.1  christos     SI opval = tmp_addr;
   5160   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5161   1.1  christos     written |= (1 << 20);
   5162   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5163   1.1  christos   }
   5164   1.1  christos }
   5165   1.1  christos {
   5166   1.1  christos   {
   5167   1.1  christos     BI opval = 0;
   5168   1.1  christos     CPU (h_xbit) = opval;
   5169   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5170   1.1  christos   }
   5171   1.1  christos   {
   5172   1.1  christos     BI opval = 0;
   5173   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5174   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5175   1.1  christos   }
   5176   1.1  christos }
   5177   1.1  christos }
   5178   1.1  christos 
   5179   1.1  christos   abuf->written = written;
   5180   1.1  christos #undef FLD
   5181   1.1  christos }
   5182   1.1  christos   NEXT (vpc);
   5183   1.1  christos 
   5184   1.1  christos   CASE (sem, INSN_MOVEM_M_R_V32) : /* movem [${Rs}${inc}],${Rd} */
   5185   1.1  christos {
   5186   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5187   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5188   1.1  christos #define FLD(f) abuf->fields.sfmt_movem_m_r_v32.f
   5189   1.1  christos   int UNUSED written = 0;
   5190   1.1  christos   IADDR UNUSED pc = abuf->addr;
   5191   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5192   1.1  christos 
   5193   1.1  christos {
   5194   1.1  christos   SI tmp_addr;
   5195   1.1  christos   BI tmp_postinc;
   5196   1.1  christos   tmp_postinc = FLD (f_memmode);
   5197   1.1  christos   tmp_addr = GET_H_GR (FLD (f_operand1));
   5198   1.1  christos {
   5199   1.1  christos   SI tmp_dummy;
   5200   1.1  christos   tmp_dummy = GET_H_GR (FLD (f_operand2));
   5201   1.1  christos }
   5202   1.1  christos {
   5203   1.1  christos if (GESI (FLD (f_operand2), 0)) {
   5204   1.1  christos {
   5205   1.1  christos   SI tmp_tmp;
   5206   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5207   1.1  christos   {
   5208   1.1  christos     SI opval = tmp_tmp;
   5209   1.1  christos     SET_H_GR (((UINT) 0), opval);
   5210   1.1  christos     written |= (1 << 6);
   5211   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5212   1.1  christos   }
   5213   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5214   1.1  christos }
   5215   1.1  christos }
   5216   1.1  christos if (GESI (FLD (f_operand2), 1)) {
   5217   1.1  christos {
   5218   1.1  christos   SI tmp_tmp;
   5219   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5220   1.1  christos   {
   5221   1.1  christos     SI opval = tmp_tmp;
   5222   1.1  christos     SET_H_GR (((UINT) 1), opval);
   5223   1.1  christos     written |= (1 << 7);
   5224   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5225   1.1  christos   }
   5226   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5227   1.1  christos }
   5228   1.1  christos }
   5229   1.1  christos if (GESI (FLD (f_operand2), 2)) {
   5230   1.1  christos {
   5231   1.1  christos   SI tmp_tmp;
   5232   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5233   1.1  christos   {
   5234   1.1  christos     SI opval = tmp_tmp;
   5235   1.1  christos     SET_H_GR (((UINT) 2), opval);
   5236   1.1  christos     written |= (1 << 14);
   5237   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5238   1.1  christos   }
   5239   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5240   1.1  christos }
   5241   1.1  christos }
   5242   1.1  christos if (GESI (FLD (f_operand2), 3)) {
   5243   1.1  christos {
   5244   1.1  christos   SI tmp_tmp;
   5245   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5246   1.1  christos   {
   5247   1.1  christos     SI opval = tmp_tmp;
   5248   1.1  christos     SET_H_GR (((UINT) 3), opval);
   5249   1.1  christos     written |= (1 << 15);
   5250   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5251   1.1  christos   }
   5252   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5253   1.1  christos }
   5254   1.1  christos }
   5255   1.1  christos if (GESI (FLD (f_operand2), 4)) {
   5256   1.1  christos {
   5257   1.1  christos   SI tmp_tmp;
   5258   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5259   1.1  christos   {
   5260   1.1  christos     SI opval = tmp_tmp;
   5261   1.1  christos     SET_H_GR (((UINT) 4), opval);
   5262   1.1  christos     written |= (1 << 16);
   5263   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5264   1.1  christos   }
   5265   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5266   1.1  christos }
   5267   1.1  christos }
   5268   1.1  christos if (GESI (FLD (f_operand2), 5)) {
   5269   1.1  christos {
   5270   1.1  christos   SI tmp_tmp;
   5271   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5272   1.1  christos   {
   5273   1.1  christos     SI opval = tmp_tmp;
   5274   1.1  christos     SET_H_GR (((UINT) 5), opval);
   5275   1.1  christos     written |= (1 << 17);
   5276   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5277   1.1  christos   }
   5278   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5279   1.1  christos }
   5280   1.1  christos }
   5281   1.1  christos if (GESI (FLD (f_operand2), 6)) {
   5282   1.1  christos {
   5283   1.1  christos   SI tmp_tmp;
   5284   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5285   1.1  christos   {
   5286   1.1  christos     SI opval = tmp_tmp;
   5287   1.1  christos     SET_H_GR (((UINT) 6), opval);
   5288   1.1  christos     written |= (1 << 18);
   5289   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5290   1.1  christos   }
   5291   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5292   1.1  christos }
   5293   1.1  christos }
   5294   1.1  christos if (GESI (FLD (f_operand2), 7)) {
   5295   1.1  christos {
   5296   1.1  christos   SI tmp_tmp;
   5297   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5298   1.1  christos   {
   5299   1.1  christos     SI opval = tmp_tmp;
   5300   1.1  christos     SET_H_GR (((UINT) 7), opval);
   5301   1.1  christos     written |= (1 << 19);
   5302   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5303   1.1  christos   }
   5304   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5305   1.1  christos }
   5306   1.1  christos }
   5307   1.1  christos if (GESI (FLD (f_operand2), 8)) {
   5308   1.1  christos {
   5309   1.1  christos   SI tmp_tmp;
   5310   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5311   1.1  christos   {
   5312   1.1  christos     SI opval = tmp_tmp;
   5313   1.1  christos     SET_H_GR (((UINT) 8), opval);
   5314   1.1  christos     written |= (1 << 20);
   5315   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5316   1.1  christos   }
   5317   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5318   1.1  christos }
   5319   1.1  christos }
   5320   1.1  christos if (GESI (FLD (f_operand2), 9)) {
   5321   1.1  christos {
   5322   1.1  christos   SI tmp_tmp;
   5323   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5324   1.1  christos   {
   5325   1.1  christos     SI opval = tmp_tmp;
   5326   1.1  christos     SET_H_GR (((UINT) 9), opval);
   5327   1.1  christos     written |= (1 << 21);
   5328   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5329   1.1  christos   }
   5330   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5331   1.1  christos }
   5332   1.1  christos }
   5333   1.1  christos if (GESI (FLD (f_operand2), 10)) {
   5334   1.1  christos {
   5335   1.1  christos   SI tmp_tmp;
   5336   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5337   1.1  christos   {
   5338   1.1  christos     SI opval = tmp_tmp;
   5339   1.1  christos     SET_H_GR (((UINT) 10), opval);
   5340   1.1  christos     written |= (1 << 8);
   5341   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5342   1.1  christos   }
   5343   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5344   1.1  christos }
   5345   1.1  christos }
   5346   1.1  christos if (GESI (FLD (f_operand2), 11)) {
   5347   1.1  christos {
   5348   1.1  christos   SI tmp_tmp;
   5349   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5350   1.1  christos   {
   5351   1.1  christos     SI opval = tmp_tmp;
   5352   1.1  christos     SET_H_GR (((UINT) 11), opval);
   5353   1.1  christos     written |= (1 << 9);
   5354   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5355   1.1  christos   }
   5356   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5357   1.1  christos }
   5358   1.1  christos }
   5359   1.1  christos if (GESI (FLD (f_operand2), 12)) {
   5360   1.1  christos {
   5361   1.1  christos   SI tmp_tmp;
   5362   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5363   1.1  christos   {
   5364   1.1  christos     SI opval = tmp_tmp;
   5365   1.1  christos     SET_H_GR (((UINT) 12), opval);
   5366   1.1  christos     written |= (1 << 10);
   5367   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5368   1.1  christos   }
   5369   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5370   1.1  christos }
   5371   1.1  christos }
   5372   1.1  christos if (GESI (FLD (f_operand2), 13)) {
   5373   1.1  christos {
   5374   1.1  christos   SI tmp_tmp;
   5375   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5376   1.1  christos   {
   5377   1.1  christos     SI opval = tmp_tmp;
   5378   1.1  christos     SET_H_GR (((UINT) 13), opval);
   5379   1.1  christos     written |= (1 << 11);
   5380   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5381   1.1  christos   }
   5382   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5383   1.1  christos }
   5384   1.1  christos }
   5385   1.1  christos if (GESI (FLD (f_operand2), 14)) {
   5386   1.1  christos {
   5387   1.1  christos   SI tmp_tmp;
   5388   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5389   1.1  christos   {
   5390   1.1  christos     SI opval = tmp_tmp;
   5391   1.1  christos     SET_H_GR (((UINT) 14), opval);
   5392   1.1  christos     written |= (1 << 12);
   5393   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5394   1.1  christos   }
   5395   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5396   1.1  christos }
   5397   1.1  christos }
   5398   1.1  christos if (GESI (FLD (f_operand2), 15)) {
   5399   1.1  christos {
   5400   1.1  christos   SI tmp_tmp;
   5401   1.1  christos   tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
   5402   1.1  christos   {
   5403   1.1  christos     SI opval = tmp_tmp;
   5404   1.1  christos     SET_H_GR (((UINT) 15), opval);
   5405   1.1  christos     written |= (1 << 13);
   5406   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5407   1.1  christos   }
   5408   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5409   1.1  christos }
   5410   1.1  christos }
   5411   1.1  christos }
   5412   1.1  christos if (NEBI (tmp_postinc, 0)) {
   5413   1.1  christos   {
   5414   1.1  christos     SI opval = tmp_addr;
   5415   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5416   1.1  christos     written |= (1 << 5);
   5417   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5418   1.1  christos   }
   5419   1.1  christos }
   5420   1.1  christos {
   5421   1.1  christos   {
   5422   1.1  christos     BI opval = 0;
   5423   1.1  christos     CPU (h_xbit) = opval;
   5424   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5425   1.1  christos   }
   5426   1.1  christos   {
   5427   1.1  christos     BI opval = 0;
   5428   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5429   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5430   1.1  christos   }
   5431   1.1  christos }
   5432   1.1  christos }
   5433   1.1  christos 
   5434   1.1  christos   abuf->written = written;
   5435   1.1  christos #undef FLD
   5436   1.1  christos }
   5437   1.1  christos   NEXT (vpc);
   5438   1.1  christos 
   5439   1.1  christos   CASE (sem, INSN_ADD_B_R) : /* add.b $Rs,$Rd */
   5440   1.1  christos {
   5441   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5442   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5443   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   5444   1.1  christos   int UNUSED written = 0;
   5445   1.1  christos   IADDR UNUSED pc = abuf->addr;
   5446   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5447   1.1  christos 
   5448   1.1  christos {
   5449   1.1  christos   QI tmp_tmpopd;
   5450   1.1  christos   QI tmp_tmpops;
   5451   1.1  christos   BI tmp_carry;
   5452   1.1  christos   QI tmp_newval;
   5453   1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   5454   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5455   1.1  christos   tmp_carry = CPU (h_cbit);
   5456   1.1  christos   tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5457   1.1  christos {
   5458   1.1  christos   SI tmp_oldregval;
   5459   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5460   1.1  christos   {
   5461   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   5462   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5463   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5464   1.1  christos   }
   5465   1.1  christos }
   5466   1.1  christos {
   5467   1.1  christos   {
   5468   1.1  christos     BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0))));
   5469   1.1  christos     CPU (h_cbit) = opval;
   5470   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5471   1.1  christos   }
   5472   1.1  christos   {
   5473   1.1  christos     BI opval = LTQI (tmp_newval, 0);
   5474   1.1  christos     CPU (h_nbit) = opval;
   5475   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5476   1.1  christos   }
   5477   1.1  christos   {
   5478   1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5479   1.1  christos     CPU (h_zbit) = opval;
   5480   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5481   1.1  christos   }
   5482   1.1  christos   {
   5483   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
   5484   1.1  christos     CPU (h_vbit) = opval;
   5485   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5486   1.1  christos   }
   5487   1.1  christos {
   5488   1.1  christos   {
   5489   1.1  christos     BI opval = 0;
   5490   1.1  christos     CPU (h_xbit) = opval;
   5491   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5492   1.1  christos   }
   5493   1.1  christos   {
   5494   1.1  christos     BI opval = 0;
   5495   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5496   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5497   1.1  christos   }
   5498   1.1  christos }
   5499   1.1  christos }
   5500   1.1  christos }
   5501   1.1  christos 
   5502   1.1  christos #undef FLD
   5503   1.1  christos }
   5504   1.1  christos   NEXT (vpc);
   5505   1.1  christos 
   5506   1.1  christos   CASE (sem, INSN_ADD_W_R) : /* add.w $Rs,$Rd */
   5507   1.1  christos {
   5508   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5509   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5510   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   5511   1.1  christos   int UNUSED written = 0;
   5512   1.1  christos   IADDR UNUSED pc = abuf->addr;
   5513   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5514   1.1  christos 
   5515   1.1  christos {
   5516   1.1  christos   HI tmp_tmpopd;
   5517   1.1  christos   HI tmp_tmpops;
   5518   1.1  christos   BI tmp_carry;
   5519   1.1  christos   HI tmp_newval;
   5520   1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   5521   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5522   1.1  christos   tmp_carry = CPU (h_cbit);
   5523   1.1  christos   tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5524   1.1  christos {
   5525   1.1  christos   SI tmp_oldregval;
   5526   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5527   1.1  christos   {
   5528   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   5529   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5530   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5531   1.1  christos   }
   5532   1.1  christos }
   5533   1.1  christos {
   5534   1.1  christos   {
   5535   1.1  christos     BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0))));
   5536   1.1  christos     CPU (h_cbit) = opval;
   5537   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5538   1.1  christos   }
   5539   1.1  christos   {
   5540   1.1  christos     BI opval = LTHI (tmp_newval, 0);
   5541   1.1  christos     CPU (h_nbit) = opval;
   5542   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5543   1.1  christos   }
   5544   1.1  christos   {
   5545   1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5546   1.1  christos     CPU (h_zbit) = opval;
   5547   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5548   1.1  christos   }
   5549   1.1  christos   {
   5550   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
   5551   1.1  christos     CPU (h_vbit) = opval;
   5552   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5553   1.1  christos   }
   5554   1.1  christos {
   5555   1.1  christos   {
   5556   1.1  christos     BI opval = 0;
   5557   1.1  christos     CPU (h_xbit) = opval;
   5558   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5559   1.1  christos   }
   5560   1.1  christos   {
   5561   1.1  christos     BI opval = 0;
   5562   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5563   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5564   1.1  christos   }
   5565   1.1  christos }
   5566   1.1  christos }
   5567   1.1  christos }
   5568   1.1  christos 
   5569   1.1  christos #undef FLD
   5570   1.1  christos }
   5571   1.1  christos   NEXT (vpc);
   5572   1.1  christos 
   5573   1.1  christos   CASE (sem, INSN_ADD_D_R) : /* add.d $Rs,$Rd */
   5574   1.1  christos {
   5575   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5576   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5577   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   5578   1.1  christos   int UNUSED written = 0;
   5579   1.1  christos   IADDR UNUSED pc = abuf->addr;
   5580   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5581   1.1  christos 
   5582   1.1  christos {
   5583   1.1  christos   SI tmp_tmpopd;
   5584   1.1  christos   SI tmp_tmpops;
   5585   1.1  christos   BI tmp_carry;
   5586   1.1  christos   SI tmp_newval;
   5587   1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   5588   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5589   1.1  christos   tmp_carry = CPU (h_cbit);
   5590   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5591   1.1  christos   {
   5592   1.1  christos     SI opval = tmp_newval;
   5593   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5594   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5595   1.1  christos   }
   5596   1.1  christos {
   5597   1.1  christos   {
   5598   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   5599   1.1  christos     CPU (h_cbit) = opval;
   5600   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5601   1.1  christos   }
   5602   1.1  christos   {
   5603   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   5604   1.1  christos     CPU (h_nbit) = opval;
   5605   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5606   1.1  christos   }
   5607   1.1  christos   {
   5608   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5609   1.1  christos     CPU (h_zbit) = opval;
   5610   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5611   1.1  christos   }
   5612   1.1  christos   {
   5613   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   5614   1.1  christos     CPU (h_vbit) = opval;
   5615   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5616   1.1  christos   }
   5617   1.1  christos {
   5618   1.1  christos   {
   5619   1.1  christos     BI opval = 0;
   5620   1.1  christos     CPU (h_xbit) = opval;
   5621   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5622   1.1  christos   }
   5623   1.1  christos   {
   5624   1.1  christos     BI opval = 0;
   5625   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5626   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5627   1.1  christos   }
   5628   1.1  christos }
   5629   1.1  christos }
   5630   1.1  christos }
   5631   1.1  christos 
   5632   1.1  christos #undef FLD
   5633   1.1  christos }
   5634   1.1  christos   NEXT (vpc);
   5635   1.1  christos 
   5636   1.1  christos   CASE (sem, INSN_ADD_M_B_M) : /* add-m.b [${Rs}${inc}],${Rd} */
   5637   1.1  christos {
   5638   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5639   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5640   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   5641   1.1  christos   int UNUSED written = 0;
   5642   1.1  christos   IADDR UNUSED pc = abuf->addr;
   5643   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5644   1.1  christos 
   5645   1.1  christos {
   5646   1.1  christos   QI tmp_tmpopd;
   5647   1.1  christos   QI tmp_tmpops;
   5648   1.1  christos   BI tmp_carry;
   5649   1.1  christos   QI tmp_newval;
   5650   1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   5651   1.1  christos   QI tmp_tmp_mem;
   5652   1.1  christos   BI tmp_postinc;
   5653   1.1  christos   tmp_postinc = FLD (f_memmode);
   5654   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   5655   1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   5656   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   5657   1.1  christos {
   5658   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   5659   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   5660   1.1  christos }
   5661   1.1  christos   {
   5662   1.1  christos     SI opval = tmp_addr;
   5663   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5664   1.1  christos     written |= (1 << 12);
   5665   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5666   1.1  christos   }
   5667   1.1  christos }
   5668   1.1  christos }
   5669   1.1  christos ; tmp_tmp_mem; });
   5670   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5671   1.1  christos   tmp_carry = CPU (h_cbit);
   5672   1.1  christos   tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5673   1.1  christos {
   5674   1.1  christos   SI tmp_oldregval;
   5675   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   5676   1.1  christos   {
   5677   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   5678   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   5679   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5680   1.1  christos   }
   5681   1.1  christos }
   5682   1.1  christos {
   5683   1.1  christos   {
   5684   1.1  christos     BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0))));
   5685   1.1  christos     CPU (h_cbit) = opval;
   5686   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5687   1.1  christos   }
   5688   1.1  christos   {
   5689   1.1  christos     BI opval = LTQI (tmp_newval, 0);
   5690   1.1  christos     CPU (h_nbit) = opval;
   5691   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5692   1.1  christos   }
   5693   1.1  christos   {
   5694   1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5695   1.1  christos     CPU (h_zbit) = opval;
   5696   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5697   1.1  christos   }
   5698   1.1  christos   {
   5699   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
   5700   1.1  christos     CPU (h_vbit) = opval;
   5701   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5702   1.1  christos   }
   5703   1.1  christos {
   5704   1.1  christos   {
   5705   1.1  christos     BI opval = 0;
   5706   1.1  christos     CPU (h_xbit) = opval;
   5707   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5708   1.1  christos   }
   5709   1.1  christos   {
   5710   1.1  christos     BI opval = 0;
   5711   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5712   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5713   1.1  christos   }
   5714   1.1  christos }
   5715   1.1  christos }
   5716   1.1  christos }
   5717   1.1  christos 
   5718   1.1  christos   abuf->written = written;
   5719   1.1  christos #undef FLD
   5720   1.1  christos }
   5721   1.1  christos   NEXT (vpc);
   5722   1.1  christos 
   5723   1.1  christos   CASE (sem, INSN_ADD_M_W_M) : /* add-m.w [${Rs}${inc}],${Rd} */
   5724   1.1  christos {
   5725   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5726   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5727   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   5728   1.1  christos   int UNUSED written = 0;
   5729   1.1  christos   IADDR UNUSED pc = abuf->addr;
   5730   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5731   1.1  christos 
   5732   1.1  christos {
   5733   1.1  christos   HI tmp_tmpopd;
   5734   1.1  christos   HI tmp_tmpops;
   5735   1.1  christos   BI tmp_carry;
   5736   1.1  christos   HI tmp_newval;
   5737   1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   5738   1.1  christos   HI tmp_tmp_mem;
   5739   1.1  christos   BI tmp_postinc;
   5740   1.1  christos   tmp_postinc = FLD (f_memmode);
   5741   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   5742   1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   5743   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   5744   1.1  christos {
   5745   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   5746   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   5747   1.1  christos }
   5748   1.1  christos   {
   5749   1.1  christos     SI opval = tmp_addr;
   5750   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5751   1.1  christos     written |= (1 << 12);
   5752   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5753   1.1  christos   }
   5754   1.1  christos }
   5755   1.1  christos }
   5756   1.1  christos ; tmp_tmp_mem; });
   5757   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5758   1.1  christos   tmp_carry = CPU (h_cbit);
   5759   1.1  christos   tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5760   1.1  christos {
   5761   1.1  christos   SI tmp_oldregval;
   5762   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   5763   1.1  christos   {
   5764   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   5765   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   5766   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5767   1.1  christos   }
   5768   1.1  christos }
   5769   1.1  christos {
   5770   1.1  christos   {
   5771   1.1  christos     BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0))));
   5772   1.1  christos     CPU (h_cbit) = opval;
   5773   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5774   1.1  christos   }
   5775   1.1  christos   {
   5776   1.1  christos     BI opval = LTHI (tmp_newval, 0);
   5777   1.1  christos     CPU (h_nbit) = opval;
   5778   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5779   1.1  christos   }
   5780   1.1  christos   {
   5781   1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5782   1.1  christos     CPU (h_zbit) = opval;
   5783   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5784   1.1  christos   }
   5785   1.1  christos   {
   5786   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
   5787   1.1  christos     CPU (h_vbit) = opval;
   5788   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5789   1.1  christos   }
   5790   1.1  christos {
   5791   1.1  christos   {
   5792   1.1  christos     BI opval = 0;
   5793   1.1  christos     CPU (h_xbit) = opval;
   5794   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5795   1.1  christos   }
   5796   1.1  christos   {
   5797   1.1  christos     BI opval = 0;
   5798   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5799   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5800   1.1  christos   }
   5801   1.1  christos }
   5802   1.1  christos }
   5803   1.1  christos }
   5804   1.1  christos 
   5805   1.1  christos   abuf->written = written;
   5806   1.1  christos #undef FLD
   5807   1.1  christos }
   5808   1.1  christos   NEXT (vpc);
   5809   1.1  christos 
   5810   1.1  christos   CASE (sem, INSN_ADD_M_D_M) : /* add-m.d [${Rs}${inc}],${Rd} */
   5811   1.1  christos {
   5812   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5813   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5814   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   5815   1.1  christos   int UNUSED written = 0;
   5816   1.1  christos   IADDR UNUSED pc = abuf->addr;
   5817   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   5818   1.1  christos 
   5819   1.1  christos {
   5820   1.1  christos   SI tmp_tmpopd;
   5821   1.1  christos   SI tmp_tmpops;
   5822   1.1  christos   BI tmp_carry;
   5823   1.1  christos   SI tmp_newval;
   5824   1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   5825   1.1  christos   SI tmp_tmp_mem;
   5826   1.1  christos   BI tmp_postinc;
   5827   1.1  christos   tmp_postinc = FLD (f_memmode);
   5828   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   5829   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   5830   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   5831   1.1  christos {
   5832   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   5833   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   5834   1.1  christos }
   5835   1.1  christos   {
   5836   1.1  christos     SI opval = tmp_addr;
   5837   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   5838   1.1  christos     written |= (1 << 11);
   5839   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5840   1.1  christos   }
   5841   1.1  christos }
   5842   1.1  christos }
   5843   1.1  christos ; tmp_tmp_mem; });
   5844   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5845   1.1  christos   tmp_carry = CPU (h_cbit);
   5846   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5847   1.1  christos   {
   5848   1.1  christos     SI opval = tmp_newval;
   5849   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   5850   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5851   1.1  christos   }
   5852   1.1  christos {
   5853   1.1  christos   {
   5854   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   5855   1.1  christos     CPU (h_cbit) = opval;
   5856   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5857   1.1  christos   }
   5858   1.1  christos   {
   5859   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   5860   1.1  christos     CPU (h_nbit) = opval;
   5861   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5862   1.1  christos   }
   5863   1.1  christos   {
   5864   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5865   1.1  christos     CPU (h_zbit) = opval;
   5866   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5867   1.1  christos   }
   5868   1.1  christos   {
   5869   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   5870   1.1  christos     CPU (h_vbit) = opval;
   5871   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5872   1.1  christos   }
   5873   1.1  christos {
   5874   1.1  christos   {
   5875   1.1  christos     BI opval = 0;
   5876   1.1  christos     CPU (h_xbit) = opval;
   5877   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5878   1.1  christos   }
   5879   1.1  christos   {
   5880   1.1  christos     BI opval = 0;
   5881   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5882   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5883   1.1  christos   }
   5884   1.1  christos }
   5885   1.1  christos }
   5886   1.1  christos }
   5887   1.1  christos 
   5888   1.1  christos   abuf->written = written;
   5889   1.1  christos #undef FLD
   5890   1.1  christos }
   5891   1.1  christos   NEXT (vpc);
   5892   1.1  christos 
   5893   1.1  christos   CASE (sem, INSN_ADDCBR) : /* add.b ${sconst8}],${Rd} */
   5894   1.1  christos {
   5895   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5896   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5897   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   5898   1.1  christos   int UNUSED written = 0;
   5899   1.1  christos   IADDR UNUSED pc = abuf->addr;
   5900   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   5901   1.1  christos 
   5902   1.1  christos {
   5903   1.1  christos   QI tmp_tmpopd;
   5904   1.1  christos   QI tmp_tmpops;
   5905   1.1  christos   BI tmp_carry;
   5906   1.1  christos   QI tmp_newval;
   5907   1.1  christos   tmp_tmpops = FLD (f_indir_pc__byte);
   5908   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5909   1.1  christos   tmp_carry = CPU (h_cbit);
   5910   1.1  christos   tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5911   1.1  christos {
   5912   1.1  christos   SI tmp_oldregval;
   5913   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5914   1.1  christos   {
   5915   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   5916   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5917   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5918   1.1  christos   }
   5919   1.1  christos }
   5920   1.1  christos {
   5921   1.1  christos   {
   5922   1.1  christos     BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0))));
   5923   1.1  christos     CPU (h_cbit) = opval;
   5924   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5925   1.1  christos   }
   5926   1.1  christos   {
   5927   1.1  christos     BI opval = LTQI (tmp_newval, 0);
   5928   1.1  christos     CPU (h_nbit) = opval;
   5929   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5930   1.1  christos   }
   5931   1.1  christos   {
   5932   1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   5933   1.1  christos     CPU (h_zbit) = opval;
   5934   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   5935   1.1  christos   }
   5936   1.1  christos   {
   5937   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
   5938   1.1  christos     CPU (h_vbit) = opval;
   5939   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   5940   1.1  christos   }
   5941   1.1  christos {
   5942   1.1  christos   {
   5943   1.1  christos     BI opval = 0;
   5944   1.1  christos     CPU (h_xbit) = opval;
   5945   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   5946   1.1  christos   }
   5947   1.1  christos   {
   5948   1.1  christos     BI opval = 0;
   5949   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   5950   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   5951   1.1  christos   }
   5952   1.1  christos }
   5953   1.1  christos }
   5954   1.1  christos }
   5955   1.1  christos 
   5956   1.1  christos #undef FLD
   5957   1.1  christos }
   5958   1.1  christos   NEXT (vpc);
   5959   1.1  christos 
   5960   1.1  christos   CASE (sem, INSN_ADDCWR) : /* add.w ${sconst16}],${Rd} */
   5961   1.1  christos {
   5962   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   5963   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   5964   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   5965   1.1  christos   int UNUSED written = 0;
   5966   1.1  christos   IADDR UNUSED pc = abuf->addr;
   5967   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   5968   1.1  christos 
   5969   1.1  christos {
   5970   1.1  christos   HI tmp_tmpopd;
   5971   1.1  christos   HI tmp_tmpops;
   5972   1.1  christos   BI tmp_carry;
   5973   1.1  christos   HI tmp_newval;
   5974   1.1  christos   tmp_tmpops = FLD (f_indir_pc__word);
   5975   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   5976   1.1  christos   tmp_carry = CPU (h_cbit);
   5977   1.1  christos   tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   5978   1.1  christos {
   5979   1.1  christos   SI tmp_oldregval;
   5980   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   5981   1.1  christos   {
   5982   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   5983   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   5984   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   5985   1.1  christos   }
   5986   1.1  christos }
   5987   1.1  christos {
   5988   1.1  christos   {
   5989   1.1  christos     BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0))));
   5990   1.1  christos     CPU (h_cbit) = opval;
   5991   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   5992   1.1  christos   }
   5993   1.1  christos   {
   5994   1.1  christos     BI opval = LTHI (tmp_newval, 0);
   5995   1.1  christos     CPU (h_nbit) = opval;
   5996   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   5997   1.1  christos   }
   5998   1.1  christos   {
   5999   1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6000   1.1  christos     CPU (h_zbit) = opval;
   6001   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6002   1.1  christos   }
   6003   1.1  christos   {
   6004   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
   6005   1.1  christos     CPU (h_vbit) = opval;
   6006   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6007   1.1  christos   }
   6008   1.1  christos {
   6009   1.1  christos   {
   6010   1.1  christos     BI opval = 0;
   6011   1.1  christos     CPU (h_xbit) = opval;
   6012   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6013   1.1  christos   }
   6014   1.1  christos   {
   6015   1.1  christos     BI opval = 0;
   6016   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6017   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6018   1.1  christos   }
   6019   1.1  christos }
   6020   1.1  christos }
   6021   1.1  christos }
   6022   1.1  christos 
   6023   1.1  christos #undef FLD
   6024   1.1  christos }
   6025   1.1  christos   NEXT (vpc);
   6026   1.1  christos 
   6027   1.1  christos   CASE (sem, INSN_ADDCDR) : /* add.d ${const32}],${Rd} */
   6028   1.1  christos {
   6029   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6030   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6031   1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   6032   1.1  christos   int UNUSED written = 0;
   6033   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6034   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   6035   1.1  christos 
   6036   1.1  christos {
   6037   1.1  christos   SI tmp_tmpopd;
   6038   1.1  christos   SI tmp_tmpops;
   6039   1.1  christos   BI tmp_carry;
   6040   1.1  christos   SI tmp_newval;
   6041   1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   6042   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6043   1.1  christos   tmp_carry = CPU (h_cbit);
   6044   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6045   1.1  christos   {
   6046   1.1  christos     SI opval = tmp_newval;
   6047   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6048   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6049   1.1  christos   }
   6050   1.1  christos {
   6051   1.1  christos   {
   6052   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6053   1.1  christos     CPU (h_cbit) = opval;
   6054   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6055   1.1  christos   }
   6056   1.1  christos   {
   6057   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6058   1.1  christos     CPU (h_nbit) = opval;
   6059   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6060   1.1  christos   }
   6061   1.1  christos   {
   6062   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6063   1.1  christos     CPU (h_zbit) = opval;
   6064   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6065   1.1  christos   }
   6066   1.1  christos   {
   6067   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6068   1.1  christos     CPU (h_vbit) = opval;
   6069   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6070   1.1  christos   }
   6071   1.1  christos {
   6072   1.1  christos   {
   6073   1.1  christos     BI opval = 0;
   6074   1.1  christos     CPU (h_xbit) = opval;
   6075   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6076   1.1  christos   }
   6077   1.1  christos   {
   6078   1.1  christos     BI opval = 0;
   6079   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6080   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6081   1.1  christos   }
   6082   1.1  christos }
   6083   1.1  christos }
   6084   1.1  christos }
   6085   1.1  christos 
   6086   1.1  christos #undef FLD
   6087   1.1  christos }
   6088   1.1  christos   NEXT (vpc);
   6089   1.1  christos 
   6090   1.1  christos   CASE (sem, INSN_ADDS_B_R) : /* adds.b $Rs,$Rd */
   6091   1.1  christos {
   6092   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6093   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6094   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6095   1.1  christos   int UNUSED written = 0;
   6096   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6097   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6098   1.1  christos 
   6099   1.1  christos {
   6100   1.1  christos   SI tmp_tmpopd;
   6101   1.1  christos   SI tmp_tmpops;
   6102   1.1  christos   BI tmp_carry;
   6103   1.1  christos   SI tmp_newval;
   6104   1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   6105   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6106   1.1  christos   tmp_carry = CPU (h_cbit);
   6107   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6108   1.1  christos   {
   6109   1.1  christos     SI opval = tmp_newval;
   6110   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6111   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6112   1.1  christos   }
   6113   1.1  christos {
   6114   1.1  christos   {
   6115   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6116   1.1  christos     CPU (h_cbit) = opval;
   6117   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6118   1.1  christos   }
   6119   1.1  christos   {
   6120   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6121   1.1  christos     CPU (h_nbit) = opval;
   6122   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6123   1.1  christos   }
   6124   1.1  christos   {
   6125   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6126   1.1  christos     CPU (h_zbit) = opval;
   6127   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6128   1.1  christos   }
   6129   1.1  christos   {
   6130   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6131   1.1  christos     CPU (h_vbit) = opval;
   6132   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6133   1.1  christos   }
   6134   1.1  christos {
   6135   1.1  christos   {
   6136   1.1  christos     BI opval = 0;
   6137   1.1  christos     CPU (h_xbit) = opval;
   6138   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6139   1.1  christos   }
   6140   1.1  christos   {
   6141   1.1  christos     BI opval = 0;
   6142   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6143   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6144   1.1  christos   }
   6145   1.1  christos }
   6146   1.1  christos }
   6147   1.1  christos }
   6148   1.1  christos 
   6149   1.1  christos #undef FLD
   6150   1.1  christos }
   6151   1.1  christos   NEXT (vpc);
   6152   1.1  christos 
   6153   1.1  christos   CASE (sem, INSN_ADDS_W_R) : /* adds.w $Rs,$Rd */
   6154   1.1  christos {
   6155   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6156   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6157   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6158   1.1  christos   int UNUSED written = 0;
   6159   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6160   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6161   1.1  christos 
   6162   1.1  christos {
   6163   1.1  christos   SI tmp_tmpopd;
   6164   1.1  christos   SI tmp_tmpops;
   6165   1.1  christos   BI tmp_carry;
   6166   1.1  christos   SI tmp_newval;
   6167   1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   6168   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6169   1.1  christos   tmp_carry = CPU (h_cbit);
   6170   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6171   1.1  christos   {
   6172   1.1  christos     SI opval = tmp_newval;
   6173   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6174   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6175   1.1  christos   }
   6176   1.1  christos {
   6177   1.1  christos   {
   6178   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6179   1.1  christos     CPU (h_cbit) = opval;
   6180   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6181   1.1  christos   }
   6182   1.1  christos   {
   6183   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6184   1.1  christos     CPU (h_nbit) = opval;
   6185   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6186   1.1  christos   }
   6187   1.1  christos   {
   6188   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6189   1.1  christos     CPU (h_zbit) = opval;
   6190   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6191   1.1  christos   }
   6192   1.1  christos   {
   6193   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6194   1.1  christos     CPU (h_vbit) = opval;
   6195   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6196   1.1  christos   }
   6197   1.1  christos {
   6198   1.1  christos   {
   6199   1.1  christos     BI opval = 0;
   6200   1.1  christos     CPU (h_xbit) = opval;
   6201   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6202   1.1  christos   }
   6203   1.1  christos   {
   6204   1.1  christos     BI opval = 0;
   6205   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6206   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6207   1.1  christos   }
   6208   1.1  christos }
   6209   1.1  christos }
   6210   1.1  christos }
   6211   1.1  christos 
   6212   1.1  christos #undef FLD
   6213   1.1  christos }
   6214   1.1  christos   NEXT (vpc);
   6215   1.1  christos 
   6216   1.1  christos   CASE (sem, INSN_ADDS_M_B_M) : /* adds-m.b [${Rs}${inc}],$Rd */
   6217   1.1  christos {
   6218   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6219   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6220   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6221   1.1  christos   int UNUSED written = 0;
   6222   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6223   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6224   1.1  christos 
   6225   1.1  christos {
   6226   1.1  christos   SI tmp_tmpopd;
   6227   1.1  christos   SI tmp_tmpops;
   6228   1.1  christos   BI tmp_carry;
   6229   1.1  christos   SI tmp_newval;
   6230   1.1  christos   tmp_tmpops = EXTQISI (({   SI tmp_addr;
   6231   1.1  christos   QI tmp_tmp_mem;
   6232   1.1  christos   BI tmp_postinc;
   6233   1.1  christos   tmp_postinc = FLD (f_memmode);
   6234   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6235   1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   6236   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6237   1.1  christos {
   6238   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6239   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   6240   1.1  christos }
   6241   1.1  christos   {
   6242   1.1  christos     SI opval = tmp_addr;
   6243   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6244   1.1  christos     written |= (1 << 11);
   6245   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6246   1.1  christos   }
   6247   1.1  christos }
   6248   1.1  christos }
   6249   1.1  christos ; tmp_tmp_mem; }));
   6250   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6251   1.1  christos   tmp_carry = CPU (h_cbit);
   6252   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6253   1.1  christos   {
   6254   1.1  christos     SI opval = tmp_newval;
   6255   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6256   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6257   1.1  christos   }
   6258   1.1  christos {
   6259   1.1  christos   {
   6260   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6261   1.1  christos     CPU (h_cbit) = opval;
   6262   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6263   1.1  christos   }
   6264   1.1  christos   {
   6265   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6266   1.1  christos     CPU (h_nbit) = opval;
   6267   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6268   1.1  christos   }
   6269   1.1  christos   {
   6270   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6271   1.1  christos     CPU (h_zbit) = opval;
   6272   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6273   1.1  christos   }
   6274   1.1  christos   {
   6275   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6276   1.1  christos     CPU (h_vbit) = opval;
   6277   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6278   1.1  christos   }
   6279   1.1  christos {
   6280   1.1  christos   {
   6281   1.1  christos     BI opval = 0;
   6282   1.1  christos     CPU (h_xbit) = opval;
   6283   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6284   1.1  christos   }
   6285   1.1  christos   {
   6286   1.1  christos     BI opval = 0;
   6287   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6288   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6289   1.1  christos   }
   6290   1.1  christos }
   6291   1.1  christos }
   6292   1.1  christos }
   6293   1.1  christos 
   6294   1.1  christos   abuf->written = written;
   6295   1.1  christos #undef FLD
   6296   1.1  christos }
   6297   1.1  christos   NEXT (vpc);
   6298   1.1  christos 
   6299   1.1  christos   CASE (sem, INSN_ADDS_M_W_M) : /* adds-m.w [${Rs}${inc}],$Rd */
   6300   1.1  christos {
   6301   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6302   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6303   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6304   1.1  christos   int UNUSED written = 0;
   6305   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6306   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6307   1.1  christos 
   6308   1.1  christos {
   6309   1.1  christos   SI tmp_tmpopd;
   6310   1.1  christos   SI tmp_tmpops;
   6311   1.1  christos   BI tmp_carry;
   6312   1.1  christos   SI tmp_newval;
   6313   1.1  christos   tmp_tmpops = EXTHISI (({   SI tmp_addr;
   6314   1.1  christos   HI tmp_tmp_mem;
   6315   1.1  christos   BI tmp_postinc;
   6316   1.1  christos   tmp_postinc = FLD (f_memmode);
   6317   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6318   1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   6319   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6320   1.1  christos {
   6321   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6322   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   6323   1.1  christos }
   6324   1.1  christos   {
   6325   1.1  christos     SI opval = tmp_addr;
   6326   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6327   1.1  christos     written |= (1 << 11);
   6328   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6329   1.1  christos   }
   6330   1.1  christos }
   6331   1.1  christos }
   6332   1.1  christos ; tmp_tmp_mem; }));
   6333   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6334   1.1  christos   tmp_carry = CPU (h_cbit);
   6335   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6336   1.1  christos   {
   6337   1.1  christos     SI opval = tmp_newval;
   6338   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6339   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6340   1.1  christos   }
   6341   1.1  christos {
   6342   1.1  christos   {
   6343   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6344   1.1  christos     CPU (h_cbit) = opval;
   6345   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6346   1.1  christos   }
   6347   1.1  christos   {
   6348   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6349   1.1  christos     CPU (h_nbit) = opval;
   6350   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6351   1.1  christos   }
   6352   1.1  christos   {
   6353   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6354   1.1  christos     CPU (h_zbit) = opval;
   6355   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6356   1.1  christos   }
   6357   1.1  christos   {
   6358   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6359   1.1  christos     CPU (h_vbit) = opval;
   6360   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6361   1.1  christos   }
   6362   1.1  christos {
   6363   1.1  christos   {
   6364   1.1  christos     BI opval = 0;
   6365   1.1  christos     CPU (h_xbit) = opval;
   6366   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6367   1.1  christos   }
   6368   1.1  christos   {
   6369   1.1  christos     BI opval = 0;
   6370   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6371   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6372   1.1  christos   }
   6373   1.1  christos }
   6374   1.1  christos }
   6375   1.1  christos }
   6376   1.1  christos 
   6377   1.1  christos   abuf->written = written;
   6378   1.1  christos #undef FLD
   6379   1.1  christos }
   6380   1.1  christos   NEXT (vpc);
   6381   1.1  christos 
   6382   1.1  christos   CASE (sem, INSN_ADDSCBR) : /* [${Rs}${inc}],$Rd */
   6383   1.1  christos {
   6384   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6385   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6386   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   6387   1.1  christos   int UNUSED written = 0;
   6388   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6389   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6390   1.1  christos 
   6391   1.1  christos {
   6392   1.1  christos   SI tmp_tmpopd;
   6393   1.1  christos   SI tmp_tmpops;
   6394   1.1  christos   BI tmp_carry;
   6395   1.1  christos   SI tmp_newval;
   6396   1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   6397   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6398   1.1  christos   tmp_carry = CPU (h_cbit);
   6399   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6400   1.1  christos   {
   6401   1.1  christos     SI opval = tmp_newval;
   6402   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6403   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6404   1.1  christos   }
   6405   1.1  christos {
   6406   1.1  christos   {
   6407   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6408   1.1  christos     CPU (h_cbit) = opval;
   6409   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6410   1.1  christos   }
   6411   1.1  christos   {
   6412   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6413   1.1  christos     CPU (h_nbit) = opval;
   6414   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6415   1.1  christos   }
   6416   1.1  christos   {
   6417   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6418   1.1  christos     CPU (h_zbit) = opval;
   6419   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6420   1.1  christos   }
   6421   1.1  christos   {
   6422   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6423   1.1  christos     CPU (h_vbit) = opval;
   6424   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6425   1.1  christos   }
   6426   1.1  christos {
   6427   1.1  christos   {
   6428   1.1  christos     BI opval = 0;
   6429   1.1  christos     CPU (h_xbit) = opval;
   6430   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6431   1.1  christos   }
   6432   1.1  christos   {
   6433   1.1  christos     BI opval = 0;
   6434   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6435   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6436   1.1  christos   }
   6437   1.1  christos }
   6438   1.1  christos }
   6439   1.1  christos }
   6440   1.1  christos 
   6441   1.1  christos #undef FLD
   6442   1.1  christos }
   6443   1.1  christos   NEXT (vpc);
   6444   1.1  christos 
   6445   1.1  christos   CASE (sem, INSN_ADDSCWR) : /* [${Rs}${inc}],$Rd */
   6446   1.1  christos {
   6447   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6448   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6449   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   6450   1.1  christos   int UNUSED written = 0;
   6451   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6452   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6453   1.1  christos 
   6454   1.1  christos {
   6455   1.1  christos   SI tmp_tmpopd;
   6456   1.1  christos   SI tmp_tmpops;
   6457   1.1  christos   BI tmp_carry;
   6458   1.1  christos   SI tmp_newval;
   6459   1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   6460   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6461   1.1  christos   tmp_carry = CPU (h_cbit);
   6462   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6463   1.1  christos   {
   6464   1.1  christos     SI opval = tmp_newval;
   6465   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6466   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6467   1.1  christos   }
   6468   1.1  christos {
   6469   1.1  christos   {
   6470   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6471   1.1  christos     CPU (h_cbit) = opval;
   6472   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6473   1.1  christos   }
   6474   1.1  christos   {
   6475   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6476   1.1  christos     CPU (h_nbit) = opval;
   6477   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6478   1.1  christos   }
   6479   1.1  christos   {
   6480   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6481   1.1  christos     CPU (h_zbit) = opval;
   6482   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6483   1.1  christos   }
   6484   1.1  christos   {
   6485   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6486   1.1  christos     CPU (h_vbit) = opval;
   6487   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6488   1.1  christos   }
   6489   1.1  christos {
   6490   1.1  christos   {
   6491   1.1  christos     BI opval = 0;
   6492   1.1  christos     CPU (h_xbit) = opval;
   6493   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6494   1.1  christos   }
   6495   1.1  christos   {
   6496   1.1  christos     BI opval = 0;
   6497   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6498   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6499   1.1  christos   }
   6500   1.1  christos }
   6501   1.1  christos }
   6502   1.1  christos }
   6503   1.1  christos 
   6504   1.1  christos #undef FLD
   6505   1.1  christos }
   6506   1.1  christos   NEXT (vpc);
   6507   1.1  christos 
   6508   1.1  christos   CASE (sem, INSN_ADDU_B_R) : /* addu.b $Rs,$Rd */
   6509   1.1  christos {
   6510   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6511   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6512   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6513   1.1  christos   int UNUSED written = 0;
   6514   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6515   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6516   1.1  christos 
   6517   1.1  christos {
   6518   1.1  christos   SI tmp_tmpopd;
   6519   1.1  christos   SI tmp_tmpops;
   6520   1.1  christos   BI tmp_carry;
   6521   1.1  christos   SI tmp_newval;
   6522   1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   6523   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6524   1.1  christos   tmp_carry = CPU (h_cbit);
   6525   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6526   1.1  christos   {
   6527   1.1  christos     SI opval = tmp_newval;
   6528   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6529   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6530   1.1  christos   }
   6531   1.1  christos {
   6532   1.1  christos   {
   6533   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6534   1.1  christos     CPU (h_cbit) = opval;
   6535   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6536   1.1  christos   }
   6537   1.1  christos   {
   6538   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6539   1.1  christos     CPU (h_nbit) = opval;
   6540   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6541   1.1  christos   }
   6542   1.1  christos   {
   6543   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6544   1.1  christos     CPU (h_zbit) = opval;
   6545   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6546   1.1  christos   }
   6547   1.1  christos   {
   6548   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6549   1.1  christos     CPU (h_vbit) = opval;
   6550   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6551   1.1  christos   }
   6552   1.1  christos {
   6553   1.1  christos   {
   6554   1.1  christos     BI opval = 0;
   6555   1.1  christos     CPU (h_xbit) = opval;
   6556   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6557   1.1  christos   }
   6558   1.1  christos   {
   6559   1.1  christos     BI opval = 0;
   6560   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6561   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6562   1.1  christos   }
   6563   1.1  christos }
   6564   1.1  christos }
   6565   1.1  christos }
   6566   1.1  christos 
   6567   1.1  christos #undef FLD
   6568   1.1  christos }
   6569   1.1  christos   NEXT (vpc);
   6570   1.1  christos 
   6571   1.1  christos   CASE (sem, INSN_ADDU_W_R) : /* addu.w $Rs,$Rd */
   6572   1.1  christos {
   6573   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6574   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6575   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6576   1.1  christos   int UNUSED written = 0;
   6577   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6578   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6579   1.1  christos 
   6580   1.1  christos {
   6581   1.1  christos   SI tmp_tmpopd;
   6582   1.1  christos   SI tmp_tmpops;
   6583   1.1  christos   BI tmp_carry;
   6584   1.1  christos   SI tmp_newval;
   6585   1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   6586   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6587   1.1  christos   tmp_carry = CPU (h_cbit);
   6588   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6589   1.1  christos   {
   6590   1.1  christos     SI opval = tmp_newval;
   6591   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6592   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6593   1.1  christos   }
   6594   1.1  christos {
   6595   1.1  christos   {
   6596   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6597   1.1  christos     CPU (h_cbit) = opval;
   6598   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6599   1.1  christos   }
   6600   1.1  christos   {
   6601   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6602   1.1  christos     CPU (h_nbit) = opval;
   6603   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6604   1.1  christos   }
   6605   1.1  christos   {
   6606   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6607   1.1  christos     CPU (h_zbit) = opval;
   6608   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6609   1.1  christos   }
   6610   1.1  christos   {
   6611   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6612   1.1  christos     CPU (h_vbit) = opval;
   6613   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6614   1.1  christos   }
   6615   1.1  christos {
   6616   1.1  christos   {
   6617   1.1  christos     BI opval = 0;
   6618   1.1  christos     CPU (h_xbit) = opval;
   6619   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6620   1.1  christos   }
   6621   1.1  christos   {
   6622   1.1  christos     BI opval = 0;
   6623   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6624   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6625   1.1  christos   }
   6626   1.1  christos }
   6627   1.1  christos }
   6628   1.1  christos }
   6629   1.1  christos 
   6630   1.1  christos #undef FLD
   6631   1.1  christos }
   6632   1.1  christos   NEXT (vpc);
   6633   1.1  christos 
   6634   1.1  christos   CASE (sem, INSN_ADDU_M_B_M) : /* addu-m.b [${Rs}${inc}],$Rd */
   6635   1.1  christos {
   6636   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6637   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6638   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6639   1.1  christos   int UNUSED written = 0;
   6640   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6641   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6642   1.1  christos 
   6643   1.1  christos {
   6644   1.1  christos   SI tmp_tmpopd;
   6645   1.1  christos   SI tmp_tmpops;
   6646   1.1  christos   BI tmp_carry;
   6647   1.1  christos   SI tmp_newval;
   6648   1.1  christos   tmp_tmpops = ZEXTQISI (({   SI tmp_addr;
   6649   1.1  christos   QI tmp_tmp_mem;
   6650   1.1  christos   BI tmp_postinc;
   6651   1.1  christos   tmp_postinc = FLD (f_memmode);
   6652   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6653   1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   6654   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6655   1.1  christos {
   6656   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6657   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   6658   1.1  christos }
   6659   1.1  christos   {
   6660   1.1  christos     SI opval = tmp_addr;
   6661   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6662   1.1  christos     written |= (1 << 11);
   6663   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6664   1.1  christos   }
   6665   1.1  christos }
   6666   1.1  christos }
   6667   1.1  christos ; tmp_tmp_mem; }));
   6668   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6669   1.1  christos   tmp_carry = CPU (h_cbit);
   6670   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6671   1.1  christos   {
   6672   1.1  christos     SI opval = tmp_newval;
   6673   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6674   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6675   1.1  christos   }
   6676   1.1  christos {
   6677   1.1  christos   {
   6678   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6679   1.1  christos     CPU (h_cbit) = opval;
   6680   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6681   1.1  christos   }
   6682   1.1  christos   {
   6683   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6684   1.1  christos     CPU (h_nbit) = opval;
   6685   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6686   1.1  christos   }
   6687   1.1  christos   {
   6688   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6689   1.1  christos     CPU (h_zbit) = opval;
   6690   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6691   1.1  christos   }
   6692   1.1  christos   {
   6693   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6694   1.1  christos     CPU (h_vbit) = opval;
   6695   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6696   1.1  christos   }
   6697   1.1  christos {
   6698   1.1  christos   {
   6699   1.1  christos     BI opval = 0;
   6700   1.1  christos     CPU (h_xbit) = opval;
   6701   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6702   1.1  christos   }
   6703   1.1  christos   {
   6704   1.1  christos     BI opval = 0;
   6705   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6706   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6707   1.1  christos   }
   6708   1.1  christos }
   6709   1.1  christos }
   6710   1.1  christos }
   6711   1.1  christos 
   6712   1.1  christos   abuf->written = written;
   6713   1.1  christos #undef FLD
   6714   1.1  christos }
   6715   1.1  christos   NEXT (vpc);
   6716   1.1  christos 
   6717   1.1  christos   CASE (sem, INSN_ADDU_M_W_M) : /* addu-m.w [${Rs}${inc}],$Rd */
   6718   1.1  christos {
   6719   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6720   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6721   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   6722   1.1  christos   int UNUSED written = 0;
   6723   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6724   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6725   1.1  christos 
   6726   1.1  christos {
   6727   1.1  christos   SI tmp_tmpopd;
   6728   1.1  christos   SI tmp_tmpops;
   6729   1.1  christos   BI tmp_carry;
   6730   1.1  christos   SI tmp_newval;
   6731   1.1  christos   tmp_tmpops = ZEXTHISI (({   SI tmp_addr;
   6732   1.1  christos   HI tmp_tmp_mem;
   6733   1.1  christos   BI tmp_postinc;
   6734   1.1  christos   tmp_postinc = FLD (f_memmode);
   6735   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   6736   1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   6737   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   6738   1.1  christos {
   6739   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   6740   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   6741   1.1  christos }
   6742   1.1  christos   {
   6743   1.1  christos     SI opval = tmp_addr;
   6744   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   6745   1.1  christos     written |= (1 << 11);
   6746   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6747   1.1  christos   }
   6748   1.1  christos }
   6749   1.1  christos }
   6750   1.1  christos ; tmp_tmp_mem; }));
   6751   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6752   1.1  christos   tmp_carry = CPU (h_cbit);
   6753   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6754   1.1  christos   {
   6755   1.1  christos     SI opval = tmp_newval;
   6756   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   6757   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6758   1.1  christos   }
   6759   1.1  christos {
   6760   1.1  christos   {
   6761   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6762   1.1  christos     CPU (h_cbit) = opval;
   6763   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6764   1.1  christos   }
   6765   1.1  christos   {
   6766   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6767   1.1  christos     CPU (h_nbit) = opval;
   6768   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6769   1.1  christos   }
   6770   1.1  christos   {
   6771   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6772   1.1  christos     CPU (h_zbit) = opval;
   6773   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6774   1.1  christos   }
   6775   1.1  christos   {
   6776   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6777   1.1  christos     CPU (h_vbit) = opval;
   6778   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6779   1.1  christos   }
   6780   1.1  christos {
   6781   1.1  christos   {
   6782   1.1  christos     BI opval = 0;
   6783   1.1  christos     CPU (h_xbit) = opval;
   6784   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6785   1.1  christos   }
   6786   1.1  christos   {
   6787   1.1  christos     BI opval = 0;
   6788   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6789   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6790   1.1  christos   }
   6791   1.1  christos }
   6792   1.1  christos }
   6793   1.1  christos }
   6794   1.1  christos 
   6795   1.1  christos   abuf->written = written;
   6796   1.1  christos #undef FLD
   6797   1.1  christos }
   6798   1.1  christos   NEXT (vpc);
   6799   1.1  christos 
   6800   1.1  christos   CASE (sem, INSN_ADDUCBR) : /* [${Rs}${inc}],$Rd */
   6801   1.1  christos {
   6802   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6803   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6804   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   6805   1.1  christos   int UNUSED written = 0;
   6806   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6807   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6808   1.1  christos 
   6809   1.1  christos {
   6810   1.1  christos   SI tmp_tmpopd;
   6811   1.1  christos   SI tmp_tmpops;
   6812   1.1  christos   BI tmp_carry;
   6813   1.1  christos   SI tmp_newval;
   6814   1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   6815   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6816   1.1  christos   tmp_carry = CPU (h_cbit);
   6817   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6818   1.1  christos   {
   6819   1.1  christos     SI opval = tmp_newval;
   6820   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6821   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6822   1.1  christos   }
   6823   1.1  christos {
   6824   1.1  christos   {
   6825   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6826   1.1  christos     CPU (h_cbit) = opval;
   6827   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6828   1.1  christos   }
   6829   1.1  christos   {
   6830   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6831   1.1  christos     CPU (h_nbit) = opval;
   6832   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6833   1.1  christos   }
   6834   1.1  christos   {
   6835   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6836   1.1  christos     CPU (h_zbit) = opval;
   6837   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6838   1.1  christos   }
   6839   1.1  christos   {
   6840   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6841   1.1  christos     CPU (h_vbit) = opval;
   6842   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6843   1.1  christos   }
   6844   1.1  christos {
   6845   1.1  christos   {
   6846   1.1  christos     BI opval = 0;
   6847   1.1  christos     CPU (h_xbit) = opval;
   6848   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6849   1.1  christos   }
   6850   1.1  christos   {
   6851   1.1  christos     BI opval = 0;
   6852   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6853   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6854   1.1  christos   }
   6855   1.1  christos }
   6856   1.1  christos }
   6857   1.1  christos }
   6858   1.1  christos 
   6859   1.1  christos #undef FLD
   6860   1.1  christos }
   6861   1.1  christos   NEXT (vpc);
   6862   1.1  christos 
   6863   1.1  christos   CASE (sem, INSN_ADDUCWR) : /* [${Rs}${inc}],$Rd */
   6864   1.1  christos {
   6865   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6866   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6867   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   6868   1.1  christos   int UNUSED written = 0;
   6869   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6870   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   6871   1.1  christos 
   6872   1.1  christos {
   6873   1.1  christos   SI tmp_tmpopd;
   6874   1.1  christos   SI tmp_tmpops;
   6875   1.1  christos   BI tmp_carry;
   6876   1.1  christos   SI tmp_newval;
   6877   1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   6878   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6879   1.1  christos   tmp_carry = CPU (h_cbit);
   6880   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6881   1.1  christos   {
   6882   1.1  christos     SI opval = tmp_newval;
   6883   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6884   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6885   1.1  christos   }
   6886   1.1  christos {
   6887   1.1  christos   {
   6888   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   6889   1.1  christos     CPU (h_cbit) = opval;
   6890   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6891   1.1  christos   }
   6892   1.1  christos   {
   6893   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   6894   1.1  christos     CPU (h_nbit) = opval;
   6895   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6896   1.1  christos   }
   6897   1.1  christos   {
   6898   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6899   1.1  christos     CPU (h_zbit) = opval;
   6900   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6901   1.1  christos   }
   6902   1.1  christos   {
   6903   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   6904   1.1  christos     CPU (h_vbit) = opval;
   6905   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6906   1.1  christos   }
   6907   1.1  christos {
   6908   1.1  christos   {
   6909   1.1  christos     BI opval = 0;
   6910   1.1  christos     CPU (h_xbit) = opval;
   6911   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6912   1.1  christos   }
   6913   1.1  christos   {
   6914   1.1  christos     BI opval = 0;
   6915   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6916   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6917   1.1  christos   }
   6918   1.1  christos }
   6919   1.1  christos }
   6920   1.1  christos }
   6921   1.1  christos 
   6922   1.1  christos #undef FLD
   6923   1.1  christos }
   6924   1.1  christos   NEXT (vpc);
   6925   1.1  christos 
   6926   1.1  christos   CASE (sem, INSN_SUB_B_R) : /* sub.b $Rs,$Rd */
   6927   1.1  christos {
   6928   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6929   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6930   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6931   1.1  christos   int UNUSED written = 0;
   6932   1.1  christos   IADDR UNUSED pc = abuf->addr;
   6933   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   6934   1.1  christos 
   6935   1.1  christos {
   6936   1.1  christos   QI tmp_tmpopd;
   6937   1.1  christos   QI tmp_tmpops;
   6938   1.1  christos   BI tmp_carry;
   6939   1.1  christos   QI tmp_newval;
   6940   1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   6941   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   6942   1.1  christos   tmp_carry = CPU (h_cbit);
   6943   1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   6944   1.1  christos {
   6945   1.1  christos   SI tmp_oldregval;
   6946   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   6947   1.1  christos   {
   6948   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   6949   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   6950   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   6951   1.1  christos   }
   6952   1.1  christos }
   6953   1.1  christos {
   6954   1.1  christos   {
   6955   1.1  christos     BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
   6956   1.1  christos     CPU (h_cbit) = opval;
   6957   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   6958   1.1  christos   }
   6959   1.1  christos   {
   6960   1.1  christos     BI opval = LTQI (tmp_newval, 0);
   6961   1.1  christos     CPU (h_nbit) = opval;
   6962   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   6963   1.1  christos   }
   6964   1.1  christos   {
   6965   1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   6966   1.1  christos     CPU (h_zbit) = opval;
   6967   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   6968   1.1  christos   }
   6969   1.1  christos   {
   6970   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
   6971   1.1  christos     CPU (h_vbit) = opval;
   6972   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   6973   1.1  christos   }
   6974   1.1  christos {
   6975   1.1  christos   {
   6976   1.1  christos     BI opval = 0;
   6977   1.1  christos     CPU (h_xbit) = opval;
   6978   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   6979   1.1  christos   }
   6980   1.1  christos   {
   6981   1.1  christos     BI opval = 0;
   6982   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   6983   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   6984   1.1  christos   }
   6985   1.1  christos }
   6986   1.1  christos }
   6987   1.1  christos }
   6988   1.1  christos 
   6989   1.1  christos #undef FLD
   6990   1.1  christos }
   6991   1.1  christos   NEXT (vpc);
   6992   1.1  christos 
   6993   1.1  christos   CASE (sem, INSN_SUB_W_R) : /* sub.w $Rs,$Rd */
   6994   1.1  christos {
   6995   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   6996   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   6997   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   6998   1.1  christos   int UNUSED written = 0;
   6999   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7000   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7001   1.1  christos 
   7002   1.1  christos {
   7003   1.1  christos   HI tmp_tmpopd;
   7004   1.1  christos   HI tmp_tmpops;
   7005   1.1  christos   BI tmp_carry;
   7006   1.1  christos   HI tmp_newval;
   7007   1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   7008   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7009   1.1  christos   tmp_carry = CPU (h_cbit);
   7010   1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7011   1.1  christos {
   7012   1.1  christos   SI tmp_oldregval;
   7013   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   7014   1.1  christos   {
   7015   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   7016   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7017   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7018   1.1  christos   }
   7019   1.1  christos }
   7020   1.1  christos {
   7021   1.1  christos   {
   7022   1.1  christos     BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
   7023   1.1  christos     CPU (h_cbit) = opval;
   7024   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7025   1.1  christos   }
   7026   1.1  christos   {
   7027   1.1  christos     BI opval = LTHI (tmp_newval, 0);
   7028   1.1  christos     CPU (h_nbit) = opval;
   7029   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7030   1.1  christos   }
   7031   1.1  christos   {
   7032   1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7033   1.1  christos     CPU (h_zbit) = opval;
   7034   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7035   1.1  christos   }
   7036   1.1  christos   {
   7037   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
   7038   1.1  christos     CPU (h_vbit) = opval;
   7039   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7040   1.1  christos   }
   7041   1.1  christos {
   7042   1.1  christos   {
   7043   1.1  christos     BI opval = 0;
   7044   1.1  christos     CPU (h_xbit) = opval;
   7045   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7046   1.1  christos   }
   7047   1.1  christos   {
   7048   1.1  christos     BI opval = 0;
   7049   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7050   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7051   1.1  christos   }
   7052   1.1  christos }
   7053   1.1  christos }
   7054   1.1  christos }
   7055   1.1  christos 
   7056   1.1  christos #undef FLD
   7057   1.1  christos }
   7058   1.1  christos   NEXT (vpc);
   7059   1.1  christos 
   7060   1.1  christos   CASE (sem, INSN_SUB_D_R) : /* sub.d $Rs,$Rd */
   7061   1.1  christos {
   7062   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7063   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7064   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   7065   1.1  christos   int UNUSED written = 0;
   7066   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7067   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7068   1.1  christos 
   7069   1.1  christos {
   7070   1.1  christos   SI tmp_tmpopd;
   7071   1.1  christos   SI tmp_tmpops;
   7072   1.1  christos   BI tmp_carry;
   7073   1.1  christos   SI tmp_newval;
   7074   1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   7075   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7076   1.1  christos   tmp_carry = CPU (h_cbit);
   7077   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7078   1.1  christos   {
   7079   1.1  christos     SI opval = tmp_newval;
   7080   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7081   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7082   1.1  christos   }
   7083   1.1  christos {
   7084   1.1  christos   {
   7085   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   7086   1.1  christos     CPU (h_cbit) = opval;
   7087   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7088   1.1  christos   }
   7089   1.1  christos   {
   7090   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7091   1.1  christos     CPU (h_nbit) = opval;
   7092   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7093   1.1  christos   }
   7094   1.1  christos   {
   7095   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7096   1.1  christos     CPU (h_zbit) = opval;
   7097   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7098   1.1  christos   }
   7099   1.1  christos   {
   7100   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   7101   1.1  christos     CPU (h_vbit) = opval;
   7102   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7103   1.1  christos   }
   7104   1.1  christos {
   7105   1.1  christos   {
   7106   1.1  christos     BI opval = 0;
   7107   1.1  christos     CPU (h_xbit) = opval;
   7108   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7109   1.1  christos   }
   7110   1.1  christos   {
   7111   1.1  christos     BI opval = 0;
   7112   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7113   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7114   1.1  christos   }
   7115   1.1  christos }
   7116   1.1  christos }
   7117   1.1  christos }
   7118   1.1  christos 
   7119   1.1  christos #undef FLD
   7120   1.1  christos }
   7121   1.1  christos   NEXT (vpc);
   7122   1.1  christos 
   7123   1.1  christos   CASE (sem, INSN_SUB_M_B_M) : /* sub-m.b [${Rs}${inc}],${Rd} */
   7124   1.1  christos {
   7125   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7126   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7127   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7128   1.1  christos   int UNUSED written = 0;
   7129   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7130   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7131   1.1  christos 
   7132   1.1  christos {
   7133   1.1  christos   QI tmp_tmpopd;
   7134   1.1  christos   QI tmp_tmpops;
   7135   1.1  christos   BI tmp_carry;
   7136   1.1  christos   QI tmp_newval;
   7137   1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   7138   1.1  christos   QI tmp_tmp_mem;
   7139   1.1  christos   BI tmp_postinc;
   7140   1.1  christos   tmp_postinc = FLD (f_memmode);
   7141   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7142   1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   7143   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7144   1.1  christos {
   7145   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7146   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   7147   1.1  christos }
   7148   1.1  christos   {
   7149   1.1  christos     SI opval = tmp_addr;
   7150   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7151   1.1  christos     written |= (1 << 12);
   7152   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7153   1.1  christos   }
   7154   1.1  christos }
   7155   1.1  christos }
   7156   1.1  christos ; tmp_tmp_mem; });
   7157   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7158   1.1  christos   tmp_carry = CPU (h_cbit);
   7159   1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7160   1.1  christos {
   7161   1.1  christos   SI tmp_oldregval;
   7162   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   7163   1.1  christos   {
   7164   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   7165   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7166   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7167   1.1  christos   }
   7168   1.1  christos }
   7169   1.1  christos {
   7170   1.1  christos   {
   7171   1.1  christos     BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
   7172   1.1  christos     CPU (h_cbit) = opval;
   7173   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7174   1.1  christos   }
   7175   1.1  christos   {
   7176   1.1  christos     BI opval = LTQI (tmp_newval, 0);
   7177   1.1  christos     CPU (h_nbit) = opval;
   7178   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7179   1.1  christos   }
   7180   1.1  christos   {
   7181   1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7182   1.1  christos     CPU (h_zbit) = opval;
   7183   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7184   1.1  christos   }
   7185   1.1  christos   {
   7186   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
   7187   1.1  christos     CPU (h_vbit) = opval;
   7188   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7189   1.1  christos   }
   7190   1.1  christos {
   7191   1.1  christos   {
   7192   1.1  christos     BI opval = 0;
   7193   1.1  christos     CPU (h_xbit) = opval;
   7194   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7195   1.1  christos   }
   7196   1.1  christos   {
   7197   1.1  christos     BI opval = 0;
   7198   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7199   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7200   1.1  christos   }
   7201   1.1  christos }
   7202   1.1  christos }
   7203   1.1  christos }
   7204   1.1  christos 
   7205   1.1  christos   abuf->written = written;
   7206   1.1  christos #undef FLD
   7207   1.1  christos }
   7208   1.1  christos   NEXT (vpc);
   7209   1.1  christos 
   7210   1.1  christos   CASE (sem, INSN_SUB_M_W_M) : /* sub-m.w [${Rs}${inc}],${Rd} */
   7211   1.1  christos {
   7212   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7213   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7214   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7215   1.1  christos   int UNUSED written = 0;
   7216   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7217   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7218   1.1  christos 
   7219   1.1  christos {
   7220   1.1  christos   HI tmp_tmpopd;
   7221   1.1  christos   HI tmp_tmpops;
   7222   1.1  christos   BI tmp_carry;
   7223   1.1  christos   HI tmp_newval;
   7224   1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   7225   1.1  christos   HI tmp_tmp_mem;
   7226   1.1  christos   BI tmp_postinc;
   7227   1.1  christos   tmp_postinc = FLD (f_memmode);
   7228   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7229   1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   7230   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7231   1.1  christos {
   7232   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7233   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   7234   1.1  christos }
   7235   1.1  christos   {
   7236   1.1  christos     SI opval = tmp_addr;
   7237   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7238   1.1  christos     written |= (1 << 12);
   7239   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7240   1.1  christos   }
   7241   1.1  christos }
   7242   1.1  christos }
   7243   1.1  christos ; tmp_tmp_mem; });
   7244   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7245   1.1  christos   tmp_carry = CPU (h_cbit);
   7246   1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7247   1.1  christos {
   7248   1.1  christos   SI tmp_oldregval;
   7249   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   7250   1.1  christos   {
   7251   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   7252   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7253   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7254   1.1  christos   }
   7255   1.1  christos }
   7256   1.1  christos {
   7257   1.1  christos   {
   7258   1.1  christos     BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
   7259   1.1  christos     CPU (h_cbit) = opval;
   7260   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7261   1.1  christos   }
   7262   1.1  christos   {
   7263   1.1  christos     BI opval = LTHI (tmp_newval, 0);
   7264   1.1  christos     CPU (h_nbit) = opval;
   7265   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7266   1.1  christos   }
   7267   1.1  christos   {
   7268   1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7269   1.1  christos     CPU (h_zbit) = opval;
   7270   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7271   1.1  christos   }
   7272   1.1  christos   {
   7273   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
   7274   1.1  christos     CPU (h_vbit) = opval;
   7275   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7276   1.1  christos   }
   7277   1.1  christos {
   7278   1.1  christos   {
   7279   1.1  christos     BI opval = 0;
   7280   1.1  christos     CPU (h_xbit) = opval;
   7281   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7282   1.1  christos   }
   7283   1.1  christos   {
   7284   1.1  christos     BI opval = 0;
   7285   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7286   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7287   1.1  christos   }
   7288   1.1  christos }
   7289   1.1  christos }
   7290   1.1  christos }
   7291   1.1  christos 
   7292   1.1  christos   abuf->written = written;
   7293   1.1  christos #undef FLD
   7294   1.1  christos }
   7295   1.1  christos   NEXT (vpc);
   7296   1.1  christos 
   7297   1.1  christos   CASE (sem, INSN_SUB_M_D_M) : /* sub-m.d [${Rs}${inc}],${Rd} */
   7298   1.1  christos {
   7299   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7300   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7301   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7302   1.1  christos   int UNUSED written = 0;
   7303   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7304   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7305   1.1  christos 
   7306   1.1  christos {
   7307   1.1  christos   SI tmp_tmpopd;
   7308   1.1  christos   SI tmp_tmpops;
   7309   1.1  christos   BI tmp_carry;
   7310   1.1  christos   SI tmp_newval;
   7311   1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   7312   1.1  christos   SI tmp_tmp_mem;
   7313   1.1  christos   BI tmp_postinc;
   7314   1.1  christos   tmp_postinc = FLD (f_memmode);
   7315   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7316   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   7317   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7318   1.1  christos {
   7319   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7320   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   7321   1.1  christos }
   7322   1.1  christos   {
   7323   1.1  christos     SI opval = tmp_addr;
   7324   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7325   1.1  christos     written |= (1 << 11);
   7326   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7327   1.1  christos   }
   7328   1.1  christos }
   7329   1.1  christos }
   7330   1.1  christos ; tmp_tmp_mem; });
   7331   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7332   1.1  christos   tmp_carry = CPU (h_cbit);
   7333   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7334   1.1  christos   {
   7335   1.1  christos     SI opval = tmp_newval;
   7336   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7337   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7338   1.1  christos   }
   7339   1.1  christos {
   7340   1.1  christos   {
   7341   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   7342   1.1  christos     CPU (h_cbit) = opval;
   7343   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7344   1.1  christos   }
   7345   1.1  christos   {
   7346   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7347   1.1  christos     CPU (h_nbit) = opval;
   7348   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7349   1.1  christos   }
   7350   1.1  christos   {
   7351   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7352   1.1  christos     CPU (h_zbit) = opval;
   7353   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7354   1.1  christos   }
   7355   1.1  christos   {
   7356   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   7357   1.1  christos     CPU (h_vbit) = opval;
   7358   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7359   1.1  christos   }
   7360   1.1  christos {
   7361   1.1  christos   {
   7362   1.1  christos     BI opval = 0;
   7363   1.1  christos     CPU (h_xbit) = opval;
   7364   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7365   1.1  christos   }
   7366   1.1  christos   {
   7367   1.1  christos     BI opval = 0;
   7368   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7369   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7370   1.1  christos   }
   7371   1.1  christos }
   7372   1.1  christos }
   7373   1.1  christos }
   7374   1.1  christos 
   7375   1.1  christos   abuf->written = written;
   7376   1.1  christos #undef FLD
   7377   1.1  christos }
   7378   1.1  christos   NEXT (vpc);
   7379   1.1  christos 
   7380   1.1  christos   CASE (sem, INSN_SUBCBR) : /* sub.b ${sconst8}],${Rd} */
   7381   1.1  christos {
   7382   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7383   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7384   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   7385   1.1  christos   int UNUSED written = 0;
   7386   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7387   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7388   1.1  christos 
   7389   1.1  christos {
   7390   1.1  christos   QI tmp_tmpopd;
   7391   1.1  christos   QI tmp_tmpops;
   7392   1.1  christos   BI tmp_carry;
   7393   1.1  christos   QI tmp_newval;
   7394   1.1  christos   tmp_tmpops = FLD (f_indir_pc__byte);
   7395   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7396   1.1  christos   tmp_carry = CPU (h_cbit);
   7397   1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7398   1.1  christos {
   7399   1.1  christos   SI tmp_oldregval;
   7400   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   7401   1.1  christos   {
   7402   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   7403   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7404   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7405   1.1  christos   }
   7406   1.1  christos }
   7407   1.1  christos {
   7408   1.1  christos   {
   7409   1.1  christos     BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
   7410   1.1  christos     CPU (h_cbit) = opval;
   7411   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7412   1.1  christos   }
   7413   1.1  christos   {
   7414   1.1  christos     BI opval = LTQI (tmp_newval, 0);
   7415   1.1  christos     CPU (h_nbit) = opval;
   7416   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7417   1.1  christos   }
   7418   1.1  christos   {
   7419   1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7420   1.1  christos     CPU (h_zbit) = opval;
   7421   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7422   1.1  christos   }
   7423   1.1  christos   {
   7424   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
   7425   1.1  christos     CPU (h_vbit) = opval;
   7426   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7427   1.1  christos   }
   7428   1.1  christos {
   7429   1.1  christos   {
   7430   1.1  christos     BI opval = 0;
   7431   1.1  christos     CPU (h_xbit) = opval;
   7432   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7433   1.1  christos   }
   7434   1.1  christos   {
   7435   1.1  christos     BI opval = 0;
   7436   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7437   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7438   1.1  christos   }
   7439   1.1  christos }
   7440   1.1  christos }
   7441   1.1  christos }
   7442   1.1  christos 
   7443   1.1  christos #undef FLD
   7444   1.1  christos }
   7445   1.1  christos   NEXT (vpc);
   7446   1.1  christos 
   7447   1.1  christos   CASE (sem, INSN_SUBCWR) : /* sub.w ${sconst16}],${Rd} */
   7448   1.1  christos {
   7449   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7450   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7451   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   7452   1.1  christos   int UNUSED written = 0;
   7453   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7454   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7455   1.1  christos 
   7456   1.1  christos {
   7457   1.1  christos   HI tmp_tmpopd;
   7458   1.1  christos   HI tmp_tmpops;
   7459   1.1  christos   BI tmp_carry;
   7460   1.1  christos   HI tmp_newval;
   7461   1.1  christos   tmp_tmpops = FLD (f_indir_pc__word);
   7462   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7463   1.1  christos   tmp_carry = CPU (h_cbit);
   7464   1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7465   1.1  christos {
   7466   1.1  christos   SI tmp_oldregval;
   7467   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   7468   1.1  christos   {
   7469   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   7470   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7471   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7472   1.1  christos   }
   7473   1.1  christos }
   7474   1.1  christos {
   7475   1.1  christos   {
   7476   1.1  christos     BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
   7477   1.1  christos     CPU (h_cbit) = opval;
   7478   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7479   1.1  christos   }
   7480   1.1  christos   {
   7481   1.1  christos     BI opval = LTHI (tmp_newval, 0);
   7482   1.1  christos     CPU (h_nbit) = opval;
   7483   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7484   1.1  christos   }
   7485   1.1  christos   {
   7486   1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7487   1.1  christos     CPU (h_zbit) = opval;
   7488   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7489   1.1  christos   }
   7490   1.1  christos   {
   7491   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
   7492   1.1  christos     CPU (h_vbit) = opval;
   7493   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7494   1.1  christos   }
   7495   1.1  christos {
   7496   1.1  christos   {
   7497   1.1  christos     BI opval = 0;
   7498   1.1  christos     CPU (h_xbit) = opval;
   7499   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7500   1.1  christos   }
   7501   1.1  christos   {
   7502   1.1  christos     BI opval = 0;
   7503   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7504   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7505   1.1  christos   }
   7506   1.1  christos }
   7507   1.1  christos }
   7508   1.1  christos }
   7509   1.1  christos 
   7510   1.1  christos #undef FLD
   7511   1.1  christos }
   7512   1.1  christos   NEXT (vpc);
   7513   1.1  christos 
   7514   1.1  christos   CASE (sem, INSN_SUBCDR) : /* sub.d ${const32}],${Rd} */
   7515   1.1  christos {
   7516   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7517   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7518   1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   7519   1.1  christos   int UNUSED written = 0;
   7520   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7521   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   7522   1.1  christos 
   7523   1.1  christos {
   7524   1.1  christos   SI tmp_tmpopd;
   7525   1.1  christos   SI tmp_tmpops;
   7526   1.1  christos   BI tmp_carry;
   7527   1.1  christos   SI tmp_newval;
   7528   1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   7529   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7530   1.1  christos   tmp_carry = CPU (h_cbit);
   7531   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7532   1.1  christos   {
   7533   1.1  christos     SI opval = tmp_newval;
   7534   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7535   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7536   1.1  christos   }
   7537   1.1  christos {
   7538   1.1  christos   {
   7539   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   7540   1.1  christos     CPU (h_cbit) = opval;
   7541   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7542   1.1  christos   }
   7543   1.1  christos   {
   7544   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7545   1.1  christos     CPU (h_nbit) = opval;
   7546   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7547   1.1  christos   }
   7548   1.1  christos   {
   7549   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7550   1.1  christos     CPU (h_zbit) = opval;
   7551   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7552   1.1  christos   }
   7553   1.1  christos   {
   7554   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   7555   1.1  christos     CPU (h_vbit) = opval;
   7556   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7557   1.1  christos   }
   7558   1.1  christos {
   7559   1.1  christos   {
   7560   1.1  christos     BI opval = 0;
   7561   1.1  christos     CPU (h_xbit) = opval;
   7562   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7563   1.1  christos   }
   7564   1.1  christos   {
   7565   1.1  christos     BI opval = 0;
   7566   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7567   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7568   1.1  christos   }
   7569   1.1  christos }
   7570   1.1  christos }
   7571   1.1  christos }
   7572   1.1  christos 
   7573   1.1  christos #undef FLD
   7574   1.1  christos }
   7575   1.1  christos   NEXT (vpc);
   7576   1.1  christos 
   7577   1.1  christos   CASE (sem, INSN_SUBS_B_R) : /* subs.b $Rs,$Rd */
   7578   1.1  christos {
   7579   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7580   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7581   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   7582   1.1  christos   int UNUSED written = 0;
   7583   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7584   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7585   1.1  christos 
   7586   1.1  christos {
   7587   1.1  christos   SI tmp_tmpopd;
   7588   1.1  christos   SI tmp_tmpops;
   7589   1.1  christos   BI tmp_carry;
   7590   1.1  christos   SI tmp_newval;
   7591   1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   7592   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7593   1.1  christos   tmp_carry = CPU (h_cbit);
   7594   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7595   1.1  christos   {
   7596   1.1  christos     SI opval = tmp_newval;
   7597   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7598   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7599   1.1  christos   }
   7600   1.1  christos {
   7601   1.1  christos   {
   7602   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   7603   1.1  christos     CPU (h_cbit) = opval;
   7604   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7605   1.1  christos   }
   7606   1.1  christos   {
   7607   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7608   1.1  christos     CPU (h_nbit) = opval;
   7609   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7610   1.1  christos   }
   7611   1.1  christos   {
   7612   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7613   1.1  christos     CPU (h_zbit) = opval;
   7614   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7615   1.1  christos   }
   7616   1.1  christos   {
   7617   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   7618   1.1  christos     CPU (h_vbit) = opval;
   7619   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7620   1.1  christos   }
   7621   1.1  christos {
   7622   1.1  christos   {
   7623   1.1  christos     BI opval = 0;
   7624   1.1  christos     CPU (h_xbit) = opval;
   7625   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7626   1.1  christos   }
   7627   1.1  christos   {
   7628   1.1  christos     BI opval = 0;
   7629   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7630   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7631   1.1  christos   }
   7632   1.1  christos }
   7633   1.1  christos }
   7634   1.1  christos }
   7635   1.1  christos 
   7636   1.1  christos #undef FLD
   7637   1.1  christos }
   7638   1.1  christos   NEXT (vpc);
   7639   1.1  christos 
   7640   1.1  christos   CASE (sem, INSN_SUBS_W_R) : /* subs.w $Rs,$Rd */
   7641   1.1  christos {
   7642   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7643   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7644   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   7645   1.1  christos   int UNUSED written = 0;
   7646   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7647   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7648   1.1  christos 
   7649   1.1  christos {
   7650   1.1  christos   SI tmp_tmpopd;
   7651   1.1  christos   SI tmp_tmpops;
   7652   1.1  christos   BI tmp_carry;
   7653   1.1  christos   SI tmp_newval;
   7654   1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   7655   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7656   1.1  christos   tmp_carry = CPU (h_cbit);
   7657   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7658   1.1  christos   {
   7659   1.1  christos     SI opval = tmp_newval;
   7660   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7661   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7662   1.1  christos   }
   7663   1.1  christos {
   7664   1.1  christos   {
   7665   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   7666   1.1  christos     CPU (h_cbit) = opval;
   7667   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7668   1.1  christos   }
   7669   1.1  christos   {
   7670   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7671   1.1  christos     CPU (h_nbit) = opval;
   7672   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7673   1.1  christos   }
   7674   1.1  christos   {
   7675   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7676   1.1  christos     CPU (h_zbit) = opval;
   7677   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7678   1.1  christos   }
   7679   1.1  christos   {
   7680   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   7681   1.1  christos     CPU (h_vbit) = opval;
   7682   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7683   1.1  christos   }
   7684   1.1  christos {
   7685   1.1  christos   {
   7686   1.1  christos     BI opval = 0;
   7687   1.1  christos     CPU (h_xbit) = opval;
   7688   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7689   1.1  christos   }
   7690   1.1  christos   {
   7691   1.1  christos     BI opval = 0;
   7692   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7693   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7694   1.1  christos   }
   7695   1.1  christos }
   7696   1.1  christos }
   7697   1.1  christos }
   7698   1.1  christos 
   7699   1.1  christos #undef FLD
   7700   1.1  christos }
   7701   1.1  christos   NEXT (vpc);
   7702   1.1  christos 
   7703   1.1  christos   CASE (sem, INSN_SUBS_M_B_M) : /* subs-m.b [${Rs}${inc}],$Rd */
   7704   1.1  christos {
   7705   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7706   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7707   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7708   1.1  christos   int UNUSED written = 0;
   7709   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7710   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7711   1.1  christos 
   7712   1.1  christos {
   7713   1.1  christos   SI tmp_tmpopd;
   7714   1.1  christos   SI tmp_tmpops;
   7715   1.1  christos   BI tmp_carry;
   7716   1.1  christos   SI tmp_newval;
   7717   1.1  christos   tmp_tmpops = EXTQISI (({   SI tmp_addr;
   7718   1.1  christos   QI tmp_tmp_mem;
   7719   1.1  christos   BI tmp_postinc;
   7720   1.1  christos   tmp_postinc = FLD (f_memmode);
   7721   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7722   1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   7723   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7724   1.1  christos {
   7725   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7726   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   7727   1.1  christos }
   7728   1.1  christos   {
   7729   1.1  christos     SI opval = tmp_addr;
   7730   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7731   1.1  christos     written |= (1 << 11);
   7732   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7733   1.1  christos   }
   7734   1.1  christos }
   7735   1.1  christos }
   7736   1.1  christos ; tmp_tmp_mem; }));
   7737   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7738   1.1  christos   tmp_carry = CPU (h_cbit);
   7739   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7740   1.1  christos   {
   7741   1.1  christos     SI opval = tmp_newval;
   7742   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7743   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7744   1.1  christos   }
   7745   1.1  christos {
   7746   1.1  christos   {
   7747   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   7748   1.1  christos     CPU (h_cbit) = opval;
   7749   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7750   1.1  christos   }
   7751   1.1  christos   {
   7752   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7753   1.1  christos     CPU (h_nbit) = opval;
   7754   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7755   1.1  christos   }
   7756   1.1  christos   {
   7757   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7758   1.1  christos     CPU (h_zbit) = opval;
   7759   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7760   1.1  christos   }
   7761   1.1  christos   {
   7762   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   7763   1.1  christos     CPU (h_vbit) = opval;
   7764   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7765   1.1  christos   }
   7766   1.1  christos {
   7767   1.1  christos   {
   7768   1.1  christos     BI opval = 0;
   7769   1.1  christos     CPU (h_xbit) = opval;
   7770   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7771   1.1  christos   }
   7772   1.1  christos   {
   7773   1.1  christos     BI opval = 0;
   7774   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7775   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7776   1.1  christos   }
   7777   1.1  christos }
   7778   1.1  christos }
   7779   1.1  christos }
   7780   1.1  christos 
   7781   1.1  christos   abuf->written = written;
   7782   1.1  christos #undef FLD
   7783   1.1  christos }
   7784   1.1  christos   NEXT (vpc);
   7785   1.1  christos 
   7786   1.1  christos   CASE (sem, INSN_SUBS_M_W_M) : /* subs-m.w [${Rs}${inc}],$Rd */
   7787   1.1  christos {
   7788   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7789   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7790   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   7791   1.1  christos   int UNUSED written = 0;
   7792   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7793   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   7794   1.1  christos 
   7795   1.1  christos {
   7796   1.1  christos   SI tmp_tmpopd;
   7797   1.1  christos   SI tmp_tmpops;
   7798   1.1  christos   BI tmp_carry;
   7799   1.1  christos   SI tmp_newval;
   7800   1.1  christos   tmp_tmpops = EXTHISI (({   SI tmp_addr;
   7801   1.1  christos   HI tmp_tmp_mem;
   7802   1.1  christos   BI tmp_postinc;
   7803   1.1  christos   tmp_postinc = FLD (f_memmode);
   7804   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   7805   1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   7806   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   7807   1.1  christos {
   7808   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   7809   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   7810   1.1  christos }
   7811   1.1  christos   {
   7812   1.1  christos     SI opval = tmp_addr;
   7813   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   7814   1.1  christos     written |= (1 << 11);
   7815   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7816   1.1  christos   }
   7817   1.1  christos }
   7818   1.1  christos }
   7819   1.1  christos ; tmp_tmp_mem; }));
   7820   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7821   1.1  christos   tmp_carry = CPU (h_cbit);
   7822   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7823   1.1  christos   {
   7824   1.1  christos     SI opval = tmp_newval;
   7825   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   7826   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7827   1.1  christos   }
   7828   1.1  christos {
   7829   1.1  christos   {
   7830   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   7831   1.1  christos     CPU (h_cbit) = opval;
   7832   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7833   1.1  christos   }
   7834   1.1  christos   {
   7835   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7836   1.1  christos     CPU (h_nbit) = opval;
   7837   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7838   1.1  christos   }
   7839   1.1  christos   {
   7840   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7841   1.1  christos     CPU (h_zbit) = opval;
   7842   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7843   1.1  christos   }
   7844   1.1  christos   {
   7845   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   7846   1.1  christos     CPU (h_vbit) = opval;
   7847   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7848   1.1  christos   }
   7849   1.1  christos {
   7850   1.1  christos   {
   7851   1.1  christos     BI opval = 0;
   7852   1.1  christos     CPU (h_xbit) = opval;
   7853   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7854   1.1  christos   }
   7855   1.1  christos   {
   7856   1.1  christos     BI opval = 0;
   7857   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7858   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7859   1.1  christos   }
   7860   1.1  christos }
   7861   1.1  christos }
   7862   1.1  christos }
   7863   1.1  christos 
   7864   1.1  christos   abuf->written = written;
   7865   1.1  christos #undef FLD
   7866   1.1  christos }
   7867   1.1  christos   NEXT (vpc);
   7868   1.1  christos 
   7869   1.1  christos   CASE (sem, INSN_SUBSCBR) : /* [${Rs}${inc}],$Rd */
   7870   1.1  christos {
   7871   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7872   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7873   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   7874   1.1  christos   int UNUSED written = 0;
   7875   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7876   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7877   1.1  christos 
   7878   1.1  christos {
   7879   1.1  christos   SI tmp_tmpopd;
   7880   1.1  christos   SI tmp_tmpops;
   7881   1.1  christos   BI tmp_carry;
   7882   1.1  christos   SI tmp_newval;
   7883   1.1  christos   tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   7884   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7885   1.1  christos   tmp_carry = CPU (h_cbit);
   7886   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7887   1.1  christos   {
   7888   1.1  christos     SI opval = tmp_newval;
   7889   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7890   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7891   1.1  christos   }
   7892   1.1  christos {
   7893   1.1  christos   {
   7894   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   7895   1.1  christos     CPU (h_cbit) = opval;
   7896   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7897   1.1  christos   }
   7898   1.1  christos   {
   7899   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7900   1.1  christos     CPU (h_nbit) = opval;
   7901   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7902   1.1  christos   }
   7903   1.1  christos   {
   7904   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7905   1.1  christos     CPU (h_zbit) = opval;
   7906   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7907   1.1  christos   }
   7908   1.1  christos   {
   7909   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   7910   1.1  christos     CPU (h_vbit) = opval;
   7911   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7912   1.1  christos   }
   7913   1.1  christos {
   7914   1.1  christos   {
   7915   1.1  christos     BI opval = 0;
   7916   1.1  christos     CPU (h_xbit) = opval;
   7917   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7918   1.1  christos   }
   7919   1.1  christos   {
   7920   1.1  christos     BI opval = 0;
   7921   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7922   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7923   1.1  christos   }
   7924   1.1  christos }
   7925   1.1  christos }
   7926   1.1  christos }
   7927   1.1  christos 
   7928   1.1  christos #undef FLD
   7929   1.1  christos }
   7930   1.1  christos   NEXT (vpc);
   7931   1.1  christos 
   7932   1.1  christos   CASE (sem, INSN_SUBSCWR) : /* [${Rs}${inc}],$Rd */
   7933   1.1  christos {
   7934   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7935   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7936   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   7937   1.1  christos   int UNUSED written = 0;
   7938   1.1  christos   IADDR UNUSED pc = abuf->addr;
   7939   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   7940   1.1  christos 
   7941   1.1  christos {
   7942   1.1  christos   SI tmp_tmpopd;
   7943   1.1  christos   SI tmp_tmpops;
   7944   1.1  christos   BI tmp_carry;
   7945   1.1  christos   SI tmp_newval;
   7946   1.1  christos   tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   7947   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   7948   1.1  christos   tmp_carry = CPU (h_cbit);
   7949   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   7950   1.1  christos   {
   7951   1.1  christos     SI opval = tmp_newval;
   7952   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   7953   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   7954   1.1  christos   }
   7955   1.1  christos {
   7956   1.1  christos   {
   7957   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   7958   1.1  christos     CPU (h_cbit) = opval;
   7959   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   7960   1.1  christos   }
   7961   1.1  christos   {
   7962   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   7963   1.1  christos     CPU (h_nbit) = opval;
   7964   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   7965   1.1  christos   }
   7966   1.1  christos   {
   7967   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   7968   1.1  christos     CPU (h_zbit) = opval;
   7969   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   7970   1.1  christos   }
   7971   1.1  christos   {
   7972   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   7973   1.1  christos     CPU (h_vbit) = opval;
   7974   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   7975   1.1  christos   }
   7976   1.1  christos {
   7977   1.1  christos   {
   7978   1.1  christos     BI opval = 0;
   7979   1.1  christos     CPU (h_xbit) = opval;
   7980   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   7981   1.1  christos   }
   7982   1.1  christos   {
   7983   1.1  christos     BI opval = 0;
   7984   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   7985   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   7986   1.1  christos   }
   7987   1.1  christos }
   7988   1.1  christos }
   7989   1.1  christos }
   7990   1.1  christos 
   7991   1.1  christos #undef FLD
   7992   1.1  christos }
   7993   1.1  christos   NEXT (vpc);
   7994   1.1  christos 
   7995   1.1  christos   CASE (sem, INSN_SUBU_B_R) : /* subu.b $Rs,$Rd */
   7996   1.1  christos {
   7997   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   7998   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   7999   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8000   1.1  christos   int UNUSED written = 0;
   8001   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8002   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8003   1.1  christos 
   8004   1.1  christos {
   8005   1.1  christos   SI tmp_tmpopd;
   8006   1.1  christos   SI tmp_tmpops;
   8007   1.1  christos   BI tmp_carry;
   8008   1.1  christos   SI tmp_newval;
   8009   1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   8010   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8011   1.1  christos   tmp_carry = CPU (h_cbit);
   8012   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8013   1.1  christos   {
   8014   1.1  christos     SI opval = tmp_newval;
   8015   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8016   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8017   1.1  christos   }
   8018   1.1  christos {
   8019   1.1  christos   {
   8020   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   8021   1.1  christos     CPU (h_cbit) = opval;
   8022   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8023   1.1  christos   }
   8024   1.1  christos   {
   8025   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8026   1.1  christos     CPU (h_nbit) = opval;
   8027   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8028   1.1  christos   }
   8029   1.1  christos   {
   8030   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8031   1.1  christos     CPU (h_zbit) = opval;
   8032   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8033   1.1  christos   }
   8034   1.1  christos   {
   8035   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   8036   1.1  christos     CPU (h_vbit) = opval;
   8037   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8038   1.1  christos   }
   8039   1.1  christos {
   8040   1.1  christos   {
   8041   1.1  christos     BI opval = 0;
   8042   1.1  christos     CPU (h_xbit) = opval;
   8043   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8044   1.1  christos   }
   8045   1.1  christos   {
   8046   1.1  christos     BI opval = 0;
   8047   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8048   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8049   1.1  christos   }
   8050   1.1  christos }
   8051   1.1  christos }
   8052   1.1  christos }
   8053   1.1  christos 
   8054   1.1  christos #undef FLD
   8055   1.1  christos }
   8056   1.1  christos   NEXT (vpc);
   8057   1.1  christos 
   8058   1.1  christos   CASE (sem, INSN_SUBU_W_R) : /* subu.w $Rs,$Rd */
   8059   1.1  christos {
   8060   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8061   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8062   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8063   1.1  christos   int UNUSED written = 0;
   8064   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8065   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8066   1.1  christos 
   8067   1.1  christos {
   8068   1.1  christos   SI tmp_tmpopd;
   8069   1.1  christos   SI tmp_tmpops;
   8070   1.1  christos   BI tmp_carry;
   8071   1.1  christos   SI tmp_newval;
   8072   1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   8073   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8074   1.1  christos   tmp_carry = CPU (h_cbit);
   8075   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8076   1.1  christos   {
   8077   1.1  christos     SI opval = tmp_newval;
   8078   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8079   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8080   1.1  christos   }
   8081   1.1  christos {
   8082   1.1  christos   {
   8083   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   8084   1.1  christos     CPU (h_cbit) = opval;
   8085   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8086   1.1  christos   }
   8087   1.1  christos   {
   8088   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8089   1.1  christos     CPU (h_nbit) = opval;
   8090   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8091   1.1  christos   }
   8092   1.1  christos   {
   8093   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8094   1.1  christos     CPU (h_zbit) = opval;
   8095   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8096   1.1  christos   }
   8097   1.1  christos   {
   8098   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   8099   1.1  christos     CPU (h_vbit) = opval;
   8100   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8101   1.1  christos   }
   8102   1.1  christos {
   8103   1.1  christos   {
   8104   1.1  christos     BI opval = 0;
   8105   1.1  christos     CPU (h_xbit) = opval;
   8106   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8107   1.1  christos   }
   8108   1.1  christos   {
   8109   1.1  christos     BI opval = 0;
   8110   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8111   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8112   1.1  christos   }
   8113   1.1  christos }
   8114   1.1  christos }
   8115   1.1  christos }
   8116   1.1  christos 
   8117   1.1  christos #undef FLD
   8118   1.1  christos }
   8119   1.1  christos   NEXT (vpc);
   8120   1.1  christos 
   8121   1.1  christos   CASE (sem, INSN_SUBU_M_B_M) : /* subu-m.b [${Rs}${inc}],$Rd */
   8122   1.1  christos {
   8123   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8124   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8125   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   8126   1.1  christos   int UNUSED written = 0;
   8127   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8128   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8129   1.1  christos 
   8130   1.1  christos {
   8131   1.1  christos   SI tmp_tmpopd;
   8132   1.1  christos   SI tmp_tmpops;
   8133   1.1  christos   BI tmp_carry;
   8134   1.1  christos   SI tmp_newval;
   8135   1.1  christos   tmp_tmpops = ZEXTQISI (({   SI tmp_addr;
   8136   1.1  christos   QI tmp_tmp_mem;
   8137   1.1  christos   BI tmp_postinc;
   8138   1.1  christos   tmp_postinc = FLD (f_memmode);
   8139   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   8140   1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   8141   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   8142   1.1  christos {
   8143   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   8144   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   8145   1.1  christos }
   8146   1.1  christos   {
   8147   1.1  christos     SI opval = tmp_addr;
   8148   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8149   1.1  christos     written |= (1 << 11);
   8150   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8151   1.1  christos   }
   8152   1.1  christos }
   8153   1.1  christos }
   8154   1.1  christos ; tmp_tmp_mem; }));
   8155   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8156   1.1  christos   tmp_carry = CPU (h_cbit);
   8157   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8158   1.1  christos   {
   8159   1.1  christos     SI opval = tmp_newval;
   8160   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   8161   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8162   1.1  christos   }
   8163   1.1  christos {
   8164   1.1  christos   {
   8165   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   8166   1.1  christos     CPU (h_cbit) = opval;
   8167   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8168   1.1  christos   }
   8169   1.1  christos   {
   8170   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8171   1.1  christos     CPU (h_nbit) = opval;
   8172   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8173   1.1  christos   }
   8174   1.1  christos   {
   8175   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8176   1.1  christos     CPU (h_zbit) = opval;
   8177   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8178   1.1  christos   }
   8179   1.1  christos   {
   8180   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   8181   1.1  christos     CPU (h_vbit) = opval;
   8182   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8183   1.1  christos   }
   8184   1.1  christos {
   8185   1.1  christos   {
   8186   1.1  christos     BI opval = 0;
   8187   1.1  christos     CPU (h_xbit) = opval;
   8188   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8189   1.1  christos   }
   8190   1.1  christos   {
   8191   1.1  christos     BI opval = 0;
   8192   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8193   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8194   1.1  christos   }
   8195   1.1  christos }
   8196   1.1  christos }
   8197   1.1  christos }
   8198   1.1  christos 
   8199   1.1  christos   abuf->written = written;
   8200   1.1  christos #undef FLD
   8201   1.1  christos }
   8202   1.1  christos   NEXT (vpc);
   8203   1.1  christos 
   8204   1.1  christos   CASE (sem, INSN_SUBU_M_W_M) : /* subu-m.w [${Rs}${inc}],$Rd */
   8205   1.1  christos {
   8206   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8207   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8208   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   8209   1.1  christos   int UNUSED written = 0;
   8210   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8211   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8212   1.1  christos 
   8213   1.1  christos {
   8214   1.1  christos   SI tmp_tmpopd;
   8215   1.1  christos   SI tmp_tmpops;
   8216   1.1  christos   BI tmp_carry;
   8217   1.1  christos   SI tmp_newval;
   8218   1.1  christos   tmp_tmpops = ZEXTHISI (({   SI tmp_addr;
   8219   1.1  christos   HI tmp_tmp_mem;
   8220   1.1  christos   BI tmp_postinc;
   8221   1.1  christos   tmp_postinc = FLD (f_memmode);
   8222   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   8223   1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   8224   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   8225   1.1  christos {
   8226   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   8227   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   8228   1.1  christos }
   8229   1.1  christos   {
   8230   1.1  christos     SI opval = tmp_addr;
   8231   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8232   1.1  christos     written |= (1 << 11);
   8233   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8234   1.1  christos   }
   8235   1.1  christos }
   8236   1.1  christos }
   8237   1.1  christos ; tmp_tmp_mem; }));
   8238   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8239   1.1  christos   tmp_carry = CPU (h_cbit);
   8240   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8241   1.1  christos   {
   8242   1.1  christos     SI opval = tmp_newval;
   8243   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   8244   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8245   1.1  christos   }
   8246   1.1  christos {
   8247   1.1  christos   {
   8248   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   8249   1.1  christos     CPU (h_cbit) = opval;
   8250   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8251   1.1  christos   }
   8252   1.1  christos   {
   8253   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8254   1.1  christos     CPU (h_nbit) = opval;
   8255   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8256   1.1  christos   }
   8257   1.1  christos   {
   8258   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8259   1.1  christos     CPU (h_zbit) = opval;
   8260   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8261   1.1  christos   }
   8262   1.1  christos   {
   8263   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   8264   1.1  christos     CPU (h_vbit) = opval;
   8265   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8266   1.1  christos   }
   8267   1.1  christos {
   8268   1.1  christos   {
   8269   1.1  christos     BI opval = 0;
   8270   1.1  christos     CPU (h_xbit) = opval;
   8271   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8272   1.1  christos   }
   8273   1.1  christos   {
   8274   1.1  christos     BI opval = 0;
   8275   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8276   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8277   1.1  christos   }
   8278   1.1  christos }
   8279   1.1  christos }
   8280   1.1  christos }
   8281   1.1  christos 
   8282   1.1  christos   abuf->written = written;
   8283   1.1  christos #undef FLD
   8284   1.1  christos }
   8285   1.1  christos   NEXT (vpc);
   8286   1.1  christos 
   8287   1.1  christos   CASE (sem, INSN_SUBUCBR) : /* [${Rs}${inc}],$Rd */
   8288   1.1  christos {
   8289   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8290   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8291   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   8292   1.1  christos   int UNUSED written = 0;
   8293   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8294   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   8295   1.1  christos 
   8296   1.1  christos {
   8297   1.1  christos   SI tmp_tmpopd;
   8298   1.1  christos   SI tmp_tmpops;
   8299   1.1  christos   BI tmp_carry;
   8300   1.1  christos   SI tmp_newval;
   8301   1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   8302   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8303   1.1  christos   tmp_carry = CPU (h_cbit);
   8304   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8305   1.1  christos   {
   8306   1.1  christos     SI opval = tmp_newval;
   8307   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8308   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8309   1.1  christos   }
   8310   1.1  christos {
   8311   1.1  christos   {
   8312   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   8313   1.1  christos     CPU (h_cbit) = opval;
   8314   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8315   1.1  christos   }
   8316   1.1  christos   {
   8317   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8318   1.1  christos     CPU (h_nbit) = opval;
   8319   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8320   1.1  christos   }
   8321   1.1  christos   {
   8322   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8323   1.1  christos     CPU (h_zbit) = opval;
   8324   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8325   1.1  christos   }
   8326   1.1  christos   {
   8327   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   8328   1.1  christos     CPU (h_vbit) = opval;
   8329   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8330   1.1  christos   }
   8331   1.1  christos {
   8332   1.1  christos   {
   8333   1.1  christos     BI opval = 0;
   8334   1.1  christos     CPU (h_xbit) = opval;
   8335   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8336   1.1  christos   }
   8337   1.1  christos   {
   8338   1.1  christos     BI opval = 0;
   8339   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8340   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8341   1.1  christos   }
   8342   1.1  christos }
   8343   1.1  christos }
   8344   1.1  christos }
   8345   1.1  christos 
   8346   1.1  christos #undef FLD
   8347   1.1  christos }
   8348   1.1  christos   NEXT (vpc);
   8349   1.1  christos 
   8350   1.1  christos   CASE (sem, INSN_SUBUCWR) : /* [${Rs}${inc}],$Rd */
   8351   1.1  christos {
   8352   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8353   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8354   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   8355   1.1  christos   int UNUSED written = 0;
   8356   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8357   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   8358   1.1  christos 
   8359   1.1  christos {
   8360   1.1  christos   SI tmp_tmpopd;
   8361   1.1  christos   SI tmp_tmpops;
   8362   1.1  christos   BI tmp_carry;
   8363   1.1  christos   SI tmp_newval;
   8364   1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
   8365   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8366   1.1  christos   tmp_carry = CPU (h_cbit);
   8367   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8368   1.1  christos   {
   8369   1.1  christos     SI opval = tmp_newval;
   8370   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8371   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8372   1.1  christos   }
   8373   1.1  christos {
   8374   1.1  christos   {
   8375   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   8376   1.1  christos     CPU (h_cbit) = opval;
   8377   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8378   1.1  christos   }
   8379   1.1  christos   {
   8380   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8381   1.1  christos     CPU (h_nbit) = opval;
   8382   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8383   1.1  christos   }
   8384   1.1  christos   {
   8385   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8386   1.1  christos     CPU (h_zbit) = opval;
   8387   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8388   1.1  christos   }
   8389   1.1  christos   {
   8390   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   8391   1.1  christos     CPU (h_vbit) = opval;
   8392   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8393   1.1  christos   }
   8394   1.1  christos {
   8395   1.1  christos   {
   8396   1.1  christos     BI opval = 0;
   8397   1.1  christos     CPU (h_xbit) = opval;
   8398   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8399   1.1  christos   }
   8400   1.1  christos   {
   8401   1.1  christos     BI opval = 0;
   8402   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8403   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8404   1.1  christos   }
   8405   1.1  christos }
   8406   1.1  christos }
   8407   1.1  christos }
   8408   1.1  christos 
   8409   1.1  christos #undef FLD
   8410   1.1  christos }
   8411   1.1  christos   NEXT (vpc);
   8412   1.1  christos 
   8413   1.1  christos   CASE (sem, INSN_ADDC_R) : /* addc $Rs,$Rd */
   8414   1.1  christos {
   8415   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8416   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8417   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8418   1.1  christos   int UNUSED written = 0;
   8419   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8420   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8421   1.1  christos 
   8422   1.1  christos {
   8423   1.1  christos CPU (h_xbit) = 1;
   8424   1.1  christos {
   8425   1.1  christos   SI tmp_tmpopd;
   8426   1.1  christos   SI tmp_tmpops;
   8427   1.1  christos   BI tmp_carry;
   8428   1.1  christos   SI tmp_newval;
   8429   1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8430   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8431   1.1  christos   tmp_carry = CPU (h_cbit);
   8432   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8433   1.1  christos   {
   8434   1.1  christos     SI opval = tmp_newval;
   8435   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8436   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8437   1.1  christos   }
   8438   1.1  christos {
   8439   1.1  christos   {
   8440   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   8441   1.1  christos     CPU (h_cbit) = opval;
   8442   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8443   1.1  christos   }
   8444   1.1  christos   {
   8445   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8446   1.1  christos     CPU (h_nbit) = opval;
   8447   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8448   1.1  christos   }
   8449   1.1  christos   {
   8450   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8451   1.1  christos     CPU (h_zbit) = opval;
   8452   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8453   1.1  christos   }
   8454   1.1  christos   {
   8455   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   8456   1.1  christos     CPU (h_vbit) = opval;
   8457   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8458   1.1  christos   }
   8459   1.1  christos {
   8460   1.1  christos   {
   8461   1.1  christos     BI opval = 0;
   8462   1.1  christos     CPU (h_xbit) = opval;
   8463   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8464   1.1  christos   }
   8465   1.1  christos   {
   8466   1.1  christos     BI opval = 0;
   8467   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8468   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8469   1.1  christos   }
   8470   1.1  christos }
   8471   1.1  christos }
   8472   1.1  christos }
   8473   1.1  christos }
   8474   1.1  christos 
   8475   1.1  christos #undef FLD
   8476   1.1  christos }
   8477   1.1  christos   NEXT (vpc);
   8478   1.1  christos 
   8479   1.1  christos   CASE (sem, INSN_ADDC_M) : /* addc [${Rs}${inc}],${Rd} */
   8480   1.1  christos {
   8481   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8482   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8483   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8484   1.1  christos   int UNUSED written = 0;
   8485   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8486   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8487   1.1  christos 
   8488   1.1  christos {
   8489   1.1  christos CPU (h_xbit) = 1;
   8490   1.1  christos {
   8491   1.1  christos   SI tmp_tmpopd;
   8492   1.1  christos   SI tmp_tmpops;
   8493   1.1  christos   BI tmp_carry;
   8494   1.1  christos   SI tmp_newval;
   8495   1.1  christos   tmp_tmpops = ({   SI tmp_addr;
   8496   1.1  christos   SI tmp_tmp_mem;
   8497   1.1  christos   BI tmp_postinc;
   8498   1.1  christos   tmp_postinc = FLD (f_memmode);
   8499   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   8500   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   8501   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   8502   1.1  christos {
   8503   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   8504   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   8505   1.1  christos }
   8506   1.1  christos   {
   8507   1.1  christos     SI opval = tmp_addr;
   8508   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8509   1.1  christos     written |= (1 << 10);
   8510   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8511   1.1  christos   }
   8512   1.1  christos }
   8513   1.1  christos }
   8514   1.1  christos ; tmp_tmp_mem; });
   8515   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8516   1.1  christos   tmp_carry = CPU (h_cbit);
   8517   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8518   1.1  christos   {
   8519   1.1  christos     SI opval = tmp_newval;
   8520   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8521   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8522   1.1  christos   }
   8523   1.1  christos {
   8524   1.1  christos   {
   8525   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   8526   1.1  christos     CPU (h_cbit) = opval;
   8527   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8528   1.1  christos   }
   8529   1.1  christos   {
   8530   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8531   1.1  christos     CPU (h_nbit) = opval;
   8532   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8533   1.1  christos   }
   8534   1.1  christos   {
   8535   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8536   1.1  christos     CPU (h_zbit) = opval;
   8537   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8538   1.1  christos   }
   8539   1.1  christos   {
   8540   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   8541   1.1  christos     CPU (h_vbit) = opval;
   8542   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8543   1.1  christos   }
   8544   1.1  christos {
   8545   1.1  christos   {
   8546   1.1  christos     BI opval = 0;
   8547   1.1  christos     CPU (h_xbit) = opval;
   8548   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8549   1.1  christos   }
   8550   1.1  christos   {
   8551   1.1  christos     BI opval = 0;
   8552   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8553   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8554   1.1  christos   }
   8555   1.1  christos }
   8556   1.1  christos }
   8557   1.1  christos }
   8558   1.1  christos }
   8559   1.1  christos 
   8560   1.1  christos   abuf->written = written;
   8561   1.1  christos #undef FLD
   8562   1.1  christos }
   8563   1.1  christos   NEXT (vpc);
   8564   1.1  christos 
   8565   1.1  christos   CASE (sem, INSN_ADDC_C) : /* addc ${const32},${Rd} */
   8566   1.1  christos {
   8567   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8568   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8569   1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   8570   1.1  christos   int UNUSED written = 0;
   8571   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8572   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   8573   1.1  christos 
   8574   1.1  christos {
   8575   1.1  christos CPU (h_xbit) = 1;
   8576   1.1  christos {
   8577   1.1  christos   SI tmp_tmpopd;
   8578   1.1  christos   SI tmp_tmpops;
   8579   1.1  christos   BI tmp_carry;
   8580   1.1  christos   SI tmp_newval;
   8581   1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   8582   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   8583   1.1  christos   tmp_carry = CPU (h_cbit);
   8584   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8585   1.1  christos   {
   8586   1.1  christos     SI opval = tmp_newval;
   8587   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8588   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8589   1.1  christos   }
   8590   1.1  christos {
   8591   1.1  christos   {
   8592   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   8593   1.1  christos     CPU (h_cbit) = opval;
   8594   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8595   1.1  christos   }
   8596   1.1  christos   {
   8597   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8598   1.1  christos     CPU (h_nbit) = opval;
   8599   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8600   1.1  christos   }
   8601   1.1  christos   {
   8602   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8603   1.1  christos     CPU (h_zbit) = opval;
   8604   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8605   1.1  christos   }
   8606   1.1  christos   {
   8607   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   8608   1.1  christos     CPU (h_vbit) = opval;
   8609   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8610   1.1  christos   }
   8611   1.1  christos {
   8612   1.1  christos   {
   8613   1.1  christos     BI opval = 0;
   8614   1.1  christos     CPU (h_xbit) = opval;
   8615   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8616   1.1  christos   }
   8617   1.1  christos   {
   8618   1.1  christos     BI opval = 0;
   8619   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8620   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8621   1.1  christos   }
   8622   1.1  christos }
   8623   1.1  christos }
   8624   1.1  christos }
   8625   1.1  christos }
   8626   1.1  christos 
   8627   1.1  christos #undef FLD
   8628   1.1  christos }
   8629   1.1  christos   NEXT (vpc);
   8630   1.1  christos 
   8631   1.1  christos   CASE (sem, INSN_LAPC_D) : /* lapc.d ${const32-pcrel},${Rd} */
   8632   1.1  christos {
   8633   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8634   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8635   1.1  christos #define FLD(f) abuf->fields.sfmt_lapc_d.f
   8636   1.1  christos   int UNUSED written = 0;
   8637   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8638   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   8639   1.1  christos 
   8640   1.1  christos {
   8641   1.1  christos   {
   8642   1.1  christos     SI opval = FLD (i_const32_pcrel);
   8643   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8644   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8645   1.1  christos   }
   8646   1.1  christos {
   8647   1.1  christos   {
   8648   1.1  christos     BI opval = 0;
   8649   1.1  christos     CPU (h_xbit) = opval;
   8650   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8651   1.1  christos   }
   8652   1.1  christos   {
   8653   1.1  christos     BI opval = 0;
   8654   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8655   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8656   1.1  christos   }
   8657   1.1  christos }
   8658   1.1  christos }
   8659   1.1  christos 
   8660   1.1  christos #undef FLD
   8661   1.1  christos }
   8662   1.1  christos   NEXT (vpc);
   8663   1.1  christos 
   8664   1.1  christos   CASE (sem, INSN_LAPCQ) : /* lapcq ${qo},${Rd} */
   8665   1.1  christos {
   8666   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8667   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8668   1.1  christos #define FLD(f) abuf->fields.sfmt_lapcq.f
   8669   1.1  christos   int UNUSED written = 0;
   8670   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8671   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8672   1.1  christos 
   8673   1.1  christos {
   8674   1.1  christos   {
   8675   1.1  christos     SI opval = FLD (i_qo);
   8676   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8677   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8678   1.1  christos   }
   8679   1.1  christos {
   8680   1.1  christos   {
   8681   1.1  christos     BI opval = 0;
   8682   1.1  christos     CPU (h_xbit) = opval;
   8683   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8684   1.1  christos   }
   8685   1.1  christos   {
   8686   1.1  christos     BI opval = 0;
   8687   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8688   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8689   1.1  christos   }
   8690   1.1  christos }
   8691   1.1  christos }
   8692   1.1  christos 
   8693   1.1  christos #undef FLD
   8694   1.1  christos }
   8695   1.1  christos   NEXT (vpc);
   8696   1.1  christos 
   8697   1.1  christos   CASE (sem, INSN_ADDI_B_R) : /* addi.b ${Rs-dfield}.m,${Rd-sfield} */
   8698   1.1  christos {
   8699   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8700   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8701   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8702   1.1  christos   int UNUSED written = 0;
   8703   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8704   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8705   1.1  christos 
   8706   1.1  christos {
   8707   1.1  christos   {
   8708   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
   8709   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8710   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8711   1.1  christos   }
   8712   1.1  christos {
   8713   1.1  christos   {
   8714   1.1  christos     BI opval = 0;
   8715   1.1  christos     CPU (h_xbit) = opval;
   8716   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8717   1.1  christos   }
   8718   1.1  christos   {
   8719   1.1  christos     BI opval = 0;
   8720   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8721   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8722   1.1  christos   }
   8723   1.1  christos }
   8724   1.1  christos }
   8725   1.1  christos 
   8726   1.1  christos #undef FLD
   8727   1.1  christos }
   8728   1.1  christos   NEXT (vpc);
   8729   1.1  christos 
   8730   1.1  christos   CASE (sem, INSN_ADDI_W_R) : /* addi.w ${Rs-dfield}.m,${Rd-sfield} */
   8731   1.1  christos {
   8732   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8733   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8734   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8735   1.1  christos   int UNUSED written = 0;
   8736   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8737   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8738   1.1  christos 
   8739   1.1  christos {
   8740   1.1  christos   {
   8741   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
   8742   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8743   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8744   1.1  christos   }
   8745   1.1  christos {
   8746   1.1  christos   {
   8747   1.1  christos     BI opval = 0;
   8748   1.1  christos     CPU (h_xbit) = opval;
   8749   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8750   1.1  christos   }
   8751   1.1  christos   {
   8752   1.1  christos     BI opval = 0;
   8753   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8754   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8755   1.1  christos   }
   8756   1.1  christos }
   8757   1.1  christos }
   8758   1.1  christos 
   8759   1.1  christos #undef FLD
   8760   1.1  christos }
   8761   1.1  christos   NEXT (vpc);
   8762   1.1  christos 
   8763   1.1  christos   CASE (sem, INSN_ADDI_D_R) : /* addi.d ${Rs-dfield}.m,${Rd-sfield} */
   8764   1.1  christos {
   8765   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8766   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8767   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8768   1.1  christos   int UNUSED written = 0;
   8769   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8770   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8771   1.1  christos 
   8772   1.1  christos {
   8773   1.1  christos   {
   8774   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
   8775   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   8776   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8777   1.1  christos   }
   8778   1.1  christos {
   8779   1.1  christos   {
   8780   1.1  christos     BI opval = 0;
   8781   1.1  christos     CPU (h_xbit) = opval;
   8782   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8783   1.1  christos   }
   8784   1.1  christos   {
   8785   1.1  christos     BI opval = 0;
   8786   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8787   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8788   1.1  christos   }
   8789   1.1  christos }
   8790   1.1  christos }
   8791   1.1  christos 
   8792   1.1  christos #undef FLD
   8793   1.1  christos }
   8794   1.1  christos   NEXT (vpc);
   8795   1.1  christos 
   8796   1.1  christos   CASE (sem, INSN_NEG_B_R) : /* neg.b $Rs,$Rd */
   8797   1.1  christos {
   8798   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8799   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8800   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8801   1.1  christos   int UNUSED written = 0;
   8802   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8803   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8804   1.1  christos 
   8805   1.1  christos {
   8806   1.1  christos   QI tmp_tmpopd;
   8807   1.1  christos   QI tmp_tmpops;
   8808   1.1  christos   BI tmp_carry;
   8809   1.1  christos   QI tmp_newval;
   8810   1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8811   1.1  christos   tmp_tmpopd = 0;
   8812   1.1  christos   tmp_carry = CPU (h_cbit);
   8813   1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8814   1.1  christos {
   8815   1.1  christos   SI tmp_oldregval;
   8816   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   8817   1.1  christos   {
   8818   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
   8819   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8820   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8821   1.1  christos   }
   8822   1.1  christos }
   8823   1.1  christos {
   8824   1.1  christos   {
   8825   1.1  christos     BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
   8826   1.1  christos     CPU (h_cbit) = opval;
   8827   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8828   1.1  christos   }
   8829   1.1  christos   {
   8830   1.1  christos     BI opval = LTQI (tmp_newval, 0);
   8831   1.1  christos     CPU (h_nbit) = opval;
   8832   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8833   1.1  christos   }
   8834   1.1  christos   {
   8835   1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8836   1.1  christos     CPU (h_zbit) = opval;
   8837   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8838   1.1  christos   }
   8839   1.1  christos   {
   8840   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
   8841   1.1  christos     CPU (h_vbit) = opval;
   8842   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8843   1.1  christos   }
   8844   1.1  christos {
   8845   1.1  christos   {
   8846   1.1  christos     BI opval = 0;
   8847   1.1  christos     CPU (h_xbit) = opval;
   8848   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8849   1.1  christos   }
   8850   1.1  christos   {
   8851   1.1  christos     BI opval = 0;
   8852   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8853   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8854   1.1  christos   }
   8855   1.1  christos }
   8856   1.1  christos }
   8857   1.1  christos }
   8858   1.1  christos 
   8859   1.1  christos #undef FLD
   8860   1.1  christos }
   8861   1.1  christos   NEXT (vpc);
   8862   1.1  christos 
   8863   1.1  christos   CASE (sem, INSN_NEG_W_R) : /* neg.w $Rs,$Rd */
   8864   1.1  christos {
   8865   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8866   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8867   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8868   1.1  christos   int UNUSED written = 0;
   8869   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8870   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8871   1.1  christos 
   8872   1.1  christos {
   8873   1.1  christos   HI tmp_tmpopd;
   8874   1.1  christos   HI tmp_tmpops;
   8875   1.1  christos   BI tmp_carry;
   8876   1.1  christos   HI tmp_newval;
   8877   1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8878   1.1  christos   tmp_tmpopd = 0;
   8879   1.1  christos   tmp_carry = CPU (h_cbit);
   8880   1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8881   1.1  christos {
   8882   1.1  christos   SI tmp_oldregval;
   8883   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   8884   1.1  christos   {
   8885   1.1  christos     SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   8886   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8887   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8888   1.1  christos   }
   8889   1.1  christos }
   8890   1.1  christos {
   8891   1.1  christos   {
   8892   1.1  christos     BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
   8893   1.1  christos     CPU (h_cbit) = opval;
   8894   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8895   1.1  christos   }
   8896   1.1  christos   {
   8897   1.1  christos     BI opval = LTHI (tmp_newval, 0);
   8898   1.1  christos     CPU (h_nbit) = opval;
   8899   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8900   1.1  christos   }
   8901   1.1  christos   {
   8902   1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8903   1.1  christos     CPU (h_zbit) = opval;
   8904   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8905   1.1  christos   }
   8906   1.1  christos   {
   8907   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
   8908   1.1  christos     CPU (h_vbit) = opval;
   8909   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8910   1.1  christos   }
   8911   1.1  christos {
   8912   1.1  christos   {
   8913   1.1  christos     BI opval = 0;
   8914   1.1  christos     CPU (h_xbit) = opval;
   8915   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8916   1.1  christos   }
   8917   1.1  christos   {
   8918   1.1  christos     BI opval = 0;
   8919   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8920   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8921   1.1  christos   }
   8922   1.1  christos }
   8923   1.1  christos }
   8924   1.1  christos }
   8925   1.1  christos 
   8926   1.1  christos #undef FLD
   8927   1.1  christos }
   8928   1.1  christos   NEXT (vpc);
   8929   1.1  christos 
   8930   1.1  christos   CASE (sem, INSN_NEG_D_R) : /* neg.d $Rs,$Rd */
   8931   1.1  christos {
   8932   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8933   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8934   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   8935   1.1  christos   int UNUSED written = 0;
   8936   1.1  christos   IADDR UNUSED pc = abuf->addr;
   8937   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   8938   1.1  christos 
   8939   1.1  christos {
   8940   1.1  christos   SI tmp_tmpopd;
   8941   1.1  christos   SI tmp_tmpops;
   8942   1.1  christos   BI tmp_carry;
   8943   1.1  christos   SI tmp_newval;
   8944   1.1  christos   tmp_tmpops = GET_H_GR (FLD (f_operand1));
   8945   1.1  christos   tmp_tmpopd = 0;
   8946   1.1  christos   tmp_carry = CPU (h_cbit);
   8947   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   8948   1.1  christos   {
   8949   1.1  christos     SI opval = tmp_newval;
   8950   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   8951   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   8952   1.1  christos   }
   8953   1.1  christos {
   8954   1.1  christos   {
   8955   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   8956   1.1  christos     CPU (h_cbit) = opval;
   8957   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   8958   1.1  christos   }
   8959   1.1  christos   {
   8960   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   8961   1.1  christos     CPU (h_nbit) = opval;
   8962   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   8963   1.1  christos   }
   8964   1.1  christos   {
   8965   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   8966   1.1  christos     CPU (h_zbit) = opval;
   8967   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   8968   1.1  christos   }
   8969   1.1  christos   {
   8970   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   8971   1.1  christos     CPU (h_vbit) = opval;
   8972   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   8973   1.1  christos   }
   8974   1.1  christos {
   8975   1.1  christos   {
   8976   1.1  christos     BI opval = 0;
   8977   1.1  christos     CPU (h_xbit) = opval;
   8978   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   8979   1.1  christos   }
   8980   1.1  christos   {
   8981   1.1  christos     BI opval = 0;
   8982   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   8983   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   8984   1.1  christos   }
   8985   1.1  christos }
   8986   1.1  christos }
   8987   1.1  christos }
   8988   1.1  christos 
   8989   1.1  christos #undef FLD
   8990   1.1  christos }
   8991   1.1  christos   NEXT (vpc);
   8992   1.1  christos 
   8993   1.1  christos   CASE (sem, INSN_TEST_M_B_M) : /* test-m.b [${Rs}${inc}] */
   8994   1.1  christos {
   8995   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   8996   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   8997   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   8998   1.1  christos   int UNUSED written = 0;
   8999   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9000   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9001   1.1  christos 
   9002   1.1  christos {
   9003   1.1  christos   QI tmp_tmpd;
   9004   1.1  christos   tmp_tmpd = ({   SI tmp_addr;
   9005   1.1  christos   QI tmp_tmp_mem;
   9006   1.1  christos   BI tmp_postinc;
   9007   1.1  christos   tmp_postinc = FLD (f_memmode);
   9008   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9009   1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   9010   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   9011   1.1  christos {
   9012   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9013   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   9014   1.1  christos }
   9015   1.1  christos   {
   9016   1.1  christos     SI opval = tmp_addr;
   9017   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9018   1.1  christos     written |= (1 << 8);
   9019   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9020   1.1  christos   }
   9021   1.1  christos }
   9022   1.1  christos }
   9023   1.1  christos ; tmp_tmp_mem; });
   9024   1.1  christos {
   9025   1.1  christos   QI tmp_tmpopd;
   9026   1.1  christos   QI tmp_tmpops;
   9027   1.1  christos   BI tmp_carry;
   9028   1.1  christos   QI tmp_newval;
   9029   1.1  christos   tmp_tmpops = 0;
   9030   1.1  christos   tmp_tmpopd = tmp_tmpd;
   9031   1.1  christos   tmp_carry = CPU (h_cbit);
   9032   1.1  christos   tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9033   1.1  christos ((void) 0); /*nop*/
   9034   1.1  christos {
   9035   1.1  christos   {
   9036   1.1  christos     BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
   9037   1.1  christos     CPU (h_cbit) = opval;
   9038   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9039   1.1  christos   }
   9040   1.1  christos   {
   9041   1.1  christos     BI opval = LTQI (tmp_newval, 0);
   9042   1.1  christos     CPU (h_nbit) = opval;
   9043   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9044   1.1  christos   }
   9045   1.1  christos   {
   9046   1.1  christos     BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9047   1.1  christos     CPU (h_zbit) = opval;
   9048   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9049   1.1  christos   }
   9050   1.1  christos   {
   9051   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
   9052   1.1  christos     CPU (h_vbit) = opval;
   9053   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9054   1.1  christos   }
   9055   1.1  christos {
   9056   1.1  christos   {
   9057   1.1  christos     BI opval = 0;
   9058   1.1  christos     CPU (h_xbit) = opval;
   9059   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9060   1.1  christos   }
   9061   1.1  christos   {
   9062   1.1  christos     BI opval = 0;
   9063   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9064   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9065   1.1  christos   }
   9066   1.1  christos }
   9067   1.1  christos }
   9068   1.1  christos }
   9069   1.1  christos }
   9070   1.1  christos 
   9071   1.1  christos   abuf->written = written;
   9072   1.1  christos #undef FLD
   9073   1.1  christos }
   9074   1.1  christos   NEXT (vpc);
   9075   1.1  christos 
   9076   1.1  christos   CASE (sem, INSN_TEST_M_W_M) : /* test-m.w [${Rs}${inc}] */
   9077   1.1  christos {
   9078   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9079   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9080   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   9081   1.1  christos   int UNUSED written = 0;
   9082   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9083   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9084   1.1  christos 
   9085   1.1  christos {
   9086   1.1  christos   HI tmp_tmpd;
   9087   1.1  christos   tmp_tmpd = ({   SI tmp_addr;
   9088   1.1  christos   HI tmp_tmp_mem;
   9089   1.1  christos   BI tmp_postinc;
   9090   1.1  christos   tmp_postinc = FLD (f_memmode);
   9091   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9092   1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   9093   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   9094   1.1  christos {
   9095   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9096   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   9097   1.1  christos }
   9098   1.1  christos   {
   9099   1.1  christos     SI opval = tmp_addr;
   9100   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9101   1.1  christos     written |= (1 << 8);
   9102   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9103   1.1  christos   }
   9104   1.1  christos }
   9105   1.1  christos }
   9106   1.1  christos ; tmp_tmp_mem; });
   9107   1.1  christos {
   9108   1.1  christos   HI tmp_tmpopd;
   9109   1.1  christos   HI tmp_tmpops;
   9110   1.1  christos   BI tmp_carry;
   9111   1.1  christos   HI tmp_newval;
   9112   1.1  christos   tmp_tmpops = 0;
   9113   1.1  christos   tmp_tmpopd = tmp_tmpd;
   9114   1.1  christos   tmp_carry = CPU (h_cbit);
   9115   1.1  christos   tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9116   1.1  christos ((void) 0); /*nop*/
   9117   1.1  christos {
   9118   1.1  christos   {
   9119   1.1  christos     BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
   9120   1.1  christos     CPU (h_cbit) = opval;
   9121   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9122   1.1  christos   }
   9123   1.1  christos   {
   9124   1.1  christos     BI opval = LTHI (tmp_newval, 0);
   9125   1.1  christos     CPU (h_nbit) = opval;
   9126   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9127   1.1  christos   }
   9128   1.1  christos   {
   9129   1.1  christos     BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9130   1.1  christos     CPU (h_zbit) = opval;
   9131   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9132   1.1  christos   }
   9133   1.1  christos   {
   9134   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
   9135   1.1  christos     CPU (h_vbit) = opval;
   9136   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9137   1.1  christos   }
   9138   1.1  christos {
   9139   1.1  christos   {
   9140   1.1  christos     BI opval = 0;
   9141   1.1  christos     CPU (h_xbit) = opval;
   9142   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9143   1.1  christos   }
   9144   1.1  christos   {
   9145   1.1  christos     BI opval = 0;
   9146   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9147   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9148   1.1  christos   }
   9149   1.1  christos }
   9150   1.1  christos }
   9151   1.1  christos }
   9152   1.1  christos }
   9153   1.1  christos 
   9154   1.1  christos   abuf->written = written;
   9155   1.1  christos #undef FLD
   9156   1.1  christos }
   9157   1.1  christos   NEXT (vpc);
   9158   1.1  christos 
   9159   1.1  christos   CASE (sem, INSN_TEST_M_D_M) : /* test-m.d [${Rs}${inc}] */
   9160   1.1  christos {
   9161   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9162   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9163   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   9164   1.1  christos   int UNUSED written = 0;
   9165   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9166   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9167   1.1  christos 
   9168   1.1  christos {
   9169   1.1  christos   SI tmp_tmpd;
   9170   1.1  christos   tmp_tmpd = ({   SI tmp_addr;
   9171   1.1  christos   SI tmp_tmp_mem;
   9172   1.1  christos   BI tmp_postinc;
   9173   1.1  christos   tmp_postinc = FLD (f_memmode);
   9174   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9175   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   9176   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   9177   1.1  christos {
   9178   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9179   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   9180   1.1  christos }
   9181   1.1  christos   {
   9182   1.1  christos     SI opval = tmp_addr;
   9183   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9184   1.1  christos     written |= (1 << 8);
   9185   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9186   1.1  christos   }
   9187   1.1  christos }
   9188   1.1  christos }
   9189   1.1  christos ; tmp_tmp_mem; });
   9190   1.1  christos {
   9191   1.1  christos   SI tmp_tmpopd;
   9192   1.1  christos   SI tmp_tmpops;
   9193   1.1  christos   BI tmp_carry;
   9194   1.1  christos   SI tmp_newval;
   9195   1.1  christos   tmp_tmpops = 0;
   9196   1.1  christos   tmp_tmpopd = tmp_tmpd;
   9197   1.1  christos   tmp_carry = CPU (h_cbit);
   9198   1.1  christos   tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9199   1.1  christos ((void) 0); /*nop*/
   9200   1.1  christos {
   9201   1.1  christos   {
   9202   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
   9203   1.1  christos     CPU (h_cbit) = opval;
   9204   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9205   1.1  christos   }
   9206   1.1  christos   {
   9207   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   9208   1.1  christos     CPU (h_nbit) = opval;
   9209   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9210   1.1  christos   }
   9211   1.1  christos   {
   9212   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9213   1.1  christos     CPU (h_zbit) = opval;
   9214   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9215   1.1  christos   }
   9216   1.1  christos   {
   9217   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   9218   1.1  christos     CPU (h_vbit) = opval;
   9219   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9220   1.1  christos   }
   9221   1.1  christos {
   9222   1.1  christos   {
   9223   1.1  christos     BI opval = 0;
   9224   1.1  christos     CPU (h_xbit) = opval;
   9225   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9226   1.1  christos   }
   9227   1.1  christos   {
   9228   1.1  christos     BI opval = 0;
   9229   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9230   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9231   1.1  christos   }
   9232   1.1  christos }
   9233   1.1  christos }
   9234   1.1  christos }
   9235   1.1  christos }
   9236   1.1  christos 
   9237   1.1  christos   abuf->written = written;
   9238   1.1  christos #undef FLD
   9239   1.1  christos }
   9240   1.1  christos   NEXT (vpc);
   9241   1.1  christos 
   9242   1.1  christos   CASE (sem, INSN_MOVE_R_M_B_M) : /* move-r-m.b ${Rs-dfield},[${Rd-sfield}${inc}] */
   9243   1.1  christos {
   9244   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9245   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9246   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   9247   1.1  christos   int UNUSED written = 0;
   9248   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9249   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9250   1.1  christos 
   9251   1.1  christos {
   9252   1.1  christos   QI tmp_tmpd;
   9253   1.1  christos   tmp_tmpd = GET_H_GR (FLD (f_operand2));
   9254   1.1  christos {
   9255   1.1  christos   SI tmp_addr;
   9256   1.1  christos   BI tmp_postinc;
   9257   1.1  christos   tmp_postinc = FLD (f_memmode);
   9258   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9259   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   9260   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   9261   1.1  christos {
   9262   1.1  christos   {
   9263   1.1  christos     QI opval = tmp_tmpd;
   9264   1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   9265   1.1  christos     written |= (1 << 10);
   9266   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9267   1.1  christos   }
   9268   1.1  christos   {
   9269   1.1  christos     BI opval = CPU (h_pbit);
   9270   1.1  christos     CPU (h_cbit) = opval;
   9271   1.1  christos     written |= (1 << 9);
   9272   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9273   1.1  christos   }
   9274   1.1  christos }
   9275   1.1  christos } else {
   9276   1.1  christos   {
   9277   1.1  christos     BI opval = 1;
   9278   1.1  christos     CPU (h_cbit) = opval;
   9279   1.1  christos     written |= (1 << 9);
   9280   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9281   1.1  christos   }
   9282   1.1  christos }
   9283   1.1  christos } else {
   9284   1.1  christos   {
   9285   1.1  christos     QI opval = tmp_tmpd;
   9286   1.1  christos     SETMEMQI (current_cpu, pc, tmp_addr, opval);
   9287   1.1  christos     written |= (1 << 10);
   9288   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9289   1.1  christos   }
   9290   1.1  christos }
   9291   1.1  christos if (NEBI (tmp_postinc, 0)) {
   9292   1.1  christos {
   9293   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9294   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   9295   1.1  christos }
   9296   1.1  christos   {
   9297   1.1  christos     SI opval = tmp_addr;
   9298   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9299   1.1  christos     written |= (1 << 8);
   9300   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9301   1.1  christos   }
   9302   1.1  christos }
   9303   1.1  christos }
   9304   1.1  christos }
   9305   1.1  christos {
   9306   1.1  christos   {
   9307   1.1  christos     BI opval = 0;
   9308   1.1  christos     CPU (h_xbit) = opval;
   9309   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9310   1.1  christos   }
   9311   1.1  christos   {
   9312   1.1  christos     BI opval = 0;
   9313   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9314   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9315   1.1  christos   }
   9316   1.1  christos }
   9317   1.1  christos }
   9318   1.1  christos 
   9319   1.1  christos   abuf->written = written;
   9320   1.1  christos #undef FLD
   9321   1.1  christos }
   9322   1.1  christos   NEXT (vpc);
   9323   1.1  christos 
   9324   1.1  christos   CASE (sem, INSN_MOVE_R_M_W_M) : /* move-r-m.w ${Rs-dfield},[${Rd-sfield}${inc}] */
   9325   1.1  christos {
   9326   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9327   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9328   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   9329   1.1  christos   int UNUSED written = 0;
   9330   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9331   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9332   1.1  christos 
   9333   1.1  christos {
   9334   1.1  christos   HI tmp_tmpd;
   9335   1.1  christos   tmp_tmpd = GET_H_GR (FLD (f_operand2));
   9336   1.1  christos {
   9337   1.1  christos   SI tmp_addr;
   9338   1.1  christos   BI tmp_postinc;
   9339   1.1  christos   tmp_postinc = FLD (f_memmode);
   9340   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9341   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   9342   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   9343   1.1  christos {
   9344   1.1  christos   {
   9345   1.1  christos     HI opval = tmp_tmpd;
   9346   1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   9347   1.1  christos     written |= (1 << 10);
   9348   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9349   1.1  christos   }
   9350   1.1  christos   {
   9351   1.1  christos     BI opval = CPU (h_pbit);
   9352   1.1  christos     CPU (h_cbit) = opval;
   9353   1.1  christos     written |= (1 << 9);
   9354   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9355   1.1  christos   }
   9356   1.1  christos }
   9357   1.1  christos } else {
   9358   1.1  christos   {
   9359   1.1  christos     BI opval = 1;
   9360   1.1  christos     CPU (h_cbit) = opval;
   9361   1.1  christos     written |= (1 << 9);
   9362   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9363   1.1  christos   }
   9364   1.1  christos }
   9365   1.1  christos } else {
   9366   1.1  christos   {
   9367   1.1  christos     HI opval = tmp_tmpd;
   9368   1.1  christos     SETMEMHI (current_cpu, pc, tmp_addr, opval);
   9369   1.1  christos     written |= (1 << 10);
   9370   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9371   1.1  christos   }
   9372   1.1  christos }
   9373   1.1  christos if (NEBI (tmp_postinc, 0)) {
   9374   1.1  christos {
   9375   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9376   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   9377   1.1  christos }
   9378   1.1  christos   {
   9379   1.1  christos     SI opval = tmp_addr;
   9380   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9381   1.1  christos     written |= (1 << 8);
   9382   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9383   1.1  christos   }
   9384   1.1  christos }
   9385   1.1  christos }
   9386   1.1  christos }
   9387   1.1  christos {
   9388   1.1  christos   {
   9389   1.1  christos     BI opval = 0;
   9390   1.1  christos     CPU (h_xbit) = opval;
   9391   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9392   1.1  christos   }
   9393   1.1  christos   {
   9394   1.1  christos     BI opval = 0;
   9395   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9396   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9397   1.1  christos   }
   9398   1.1  christos }
   9399   1.1  christos }
   9400   1.1  christos 
   9401   1.1  christos   abuf->written = written;
   9402   1.1  christos #undef FLD
   9403   1.1  christos }
   9404   1.1  christos   NEXT (vpc);
   9405   1.1  christos 
   9406   1.1  christos   CASE (sem, INSN_MOVE_R_M_D_M) : /* move-r-m.d ${Rs-dfield},[${Rd-sfield}${inc}] */
   9407   1.1  christos {
   9408   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9409   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9410   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   9411   1.1  christos   int UNUSED written = 0;
   9412   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9413   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9414   1.1  christos 
   9415   1.1  christos {
   9416   1.1  christos   SI tmp_tmpd;
   9417   1.1  christos   tmp_tmpd = GET_H_GR (FLD (f_operand2));
   9418   1.1  christos {
   9419   1.1  christos   SI tmp_addr;
   9420   1.1  christos   BI tmp_postinc;
   9421   1.1  christos   tmp_postinc = FLD (f_memmode);
   9422   1.1  christos   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   9423   1.1  christos if (ANDIF (GET_H_V32_V32 (), NEBI (CPU (h_xbit), 0))) {
   9424   1.1  christos if (EQBI (CPU (h_pbit), 0)) {
   9425   1.1  christos {
   9426   1.1  christos   {
   9427   1.1  christos     SI opval = tmp_tmpd;
   9428   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   9429   1.1  christos     written |= (1 << 10);
   9430   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9431   1.1  christos   }
   9432   1.1  christos   {
   9433   1.1  christos     BI opval = CPU (h_pbit);
   9434   1.1  christos     CPU (h_cbit) = opval;
   9435   1.1  christos     written |= (1 << 9);
   9436   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9437   1.1  christos   }
   9438   1.1  christos }
   9439   1.1  christos } else {
   9440   1.1  christos   {
   9441   1.1  christos     BI opval = 1;
   9442   1.1  christos     CPU (h_cbit) = opval;
   9443   1.1  christos     written |= (1 << 9);
   9444   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9445   1.1  christos   }
   9446   1.1  christos }
   9447   1.1  christos } else {
   9448   1.1  christos   {
   9449   1.1  christos     SI opval = tmp_tmpd;
   9450   1.1  christos     SETMEMSI (current_cpu, pc, tmp_addr, opval);
   9451   1.1  christos     written |= (1 << 10);
   9452   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   9453   1.1  christos   }
   9454   1.1  christos }
   9455   1.1  christos if (NEBI (tmp_postinc, 0)) {
   9456   1.1  christos {
   9457   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   9458   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   9459   1.1  christos }
   9460   1.1  christos   {
   9461   1.1  christos     SI opval = tmp_addr;
   9462   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9463   1.1  christos     written |= (1 << 8);
   9464   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9465   1.1  christos   }
   9466   1.1  christos }
   9467   1.1  christos }
   9468   1.1  christos }
   9469   1.1  christos {
   9470   1.1  christos   {
   9471   1.1  christos     BI opval = 0;
   9472   1.1  christos     CPU (h_xbit) = opval;
   9473   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9474   1.1  christos   }
   9475   1.1  christos   {
   9476   1.1  christos     BI opval = 0;
   9477   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9478   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9479   1.1  christos   }
   9480   1.1  christos }
   9481   1.1  christos }
   9482   1.1  christos 
   9483   1.1  christos   abuf->written = written;
   9484   1.1  christos #undef FLD
   9485   1.1  christos }
   9486   1.1  christos   NEXT (vpc);
   9487   1.1  christos 
   9488   1.1  christos   CASE (sem, INSN_MULS_B) : /* muls.b $Rs,$Rd */
   9489   1.1  christos {
   9490   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9491   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9492   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9493   1.1  christos   int UNUSED written = 0;
   9494   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9495   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9496   1.1  christos 
   9497   1.1  christos {
   9498   1.1  christos   DI tmp_src1;
   9499   1.1  christos   DI tmp_src2;
   9500   1.1  christos   DI tmp_tmpr;
   9501   1.1  christos   tmp_src1 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   9502   1.1  christos   tmp_src2 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
   9503   1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9504   1.1  christos   {
   9505   1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9506   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9507   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9508   1.1  christos   }
   9509   1.1  christos   {
   9510   1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9511   1.1  christos     SET_H_SR (((UINT) 7), opval);
   9512   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9513   1.1  christos   }
   9514   1.1  christos {
   9515   1.1  christos   {
   9516   1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9517   1.1  christos     CPU (h_cbit) = opval;
   9518   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9519   1.1  christos   }
   9520   1.1  christos   {
   9521   1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9522   1.1  christos     CPU (h_nbit) = opval;
   9523   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9524   1.1  christos   }
   9525   1.1  christos   {
   9526   1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9527   1.1  christos     CPU (h_zbit) = opval;
   9528   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9529   1.1  christos   }
   9530   1.1  christos   {
   9531   1.1  christos     BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
   9532   1.1  christos     CPU (h_vbit) = opval;
   9533   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9534   1.1  christos   }
   9535   1.1  christos {
   9536   1.1  christos   {
   9537   1.1  christos     BI opval = 0;
   9538   1.1  christos     CPU (h_xbit) = opval;
   9539   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9540   1.1  christos   }
   9541   1.1  christos   {
   9542   1.1  christos     BI opval = 0;
   9543   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9544   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9545   1.1  christos   }
   9546   1.1  christos }
   9547   1.1  christos }
   9548   1.1  christos }
   9549   1.1  christos 
   9550   1.1  christos #undef FLD
   9551   1.1  christos }
   9552   1.1  christos   NEXT (vpc);
   9553   1.1  christos 
   9554   1.1  christos   CASE (sem, INSN_MULS_W) : /* muls.w $Rs,$Rd */
   9555   1.1  christos {
   9556   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9557   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9558   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9559   1.1  christos   int UNUSED written = 0;
   9560   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9561   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9562   1.1  christos 
   9563   1.1  christos {
   9564   1.1  christos   DI tmp_src1;
   9565   1.1  christos   DI tmp_src2;
   9566   1.1  christos   DI tmp_tmpr;
   9567   1.1  christos   tmp_src1 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   9568   1.1  christos   tmp_src2 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
   9569   1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9570   1.1  christos   {
   9571   1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9572   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9573   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9574   1.1  christos   }
   9575   1.1  christos   {
   9576   1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9577   1.1  christos     SET_H_SR (((UINT) 7), opval);
   9578   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9579   1.1  christos   }
   9580   1.1  christos {
   9581   1.1  christos   {
   9582   1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9583   1.1  christos     CPU (h_cbit) = opval;
   9584   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9585   1.1  christos   }
   9586   1.1  christos   {
   9587   1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9588   1.1  christos     CPU (h_nbit) = opval;
   9589   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9590   1.1  christos   }
   9591   1.1  christos   {
   9592   1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9593   1.1  christos     CPU (h_zbit) = opval;
   9594   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9595   1.1  christos   }
   9596   1.1  christos   {
   9597   1.1  christos     BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
   9598   1.1  christos     CPU (h_vbit) = opval;
   9599   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9600   1.1  christos   }
   9601   1.1  christos {
   9602   1.1  christos   {
   9603   1.1  christos     BI opval = 0;
   9604   1.1  christos     CPU (h_xbit) = opval;
   9605   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9606   1.1  christos   }
   9607   1.1  christos   {
   9608   1.1  christos     BI opval = 0;
   9609   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9610   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9611   1.1  christos   }
   9612   1.1  christos }
   9613   1.1  christos }
   9614   1.1  christos }
   9615   1.1  christos 
   9616   1.1  christos #undef FLD
   9617   1.1  christos }
   9618   1.1  christos   NEXT (vpc);
   9619   1.1  christos 
   9620   1.1  christos   CASE (sem, INSN_MULS_D) : /* muls.d $Rs,$Rd */
   9621   1.1  christos {
   9622   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9623   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9624   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9625   1.1  christos   int UNUSED written = 0;
   9626   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9627   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9628   1.1  christos 
   9629   1.1  christos {
   9630   1.1  christos   DI tmp_src1;
   9631   1.1  christos   DI tmp_src2;
   9632   1.1  christos   DI tmp_tmpr;
   9633   1.1  christos   tmp_src1 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
   9634   1.1  christos   tmp_src2 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
   9635   1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9636   1.1  christos   {
   9637   1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9638   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9639   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9640   1.1  christos   }
   9641   1.1  christos   {
   9642   1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9643   1.1  christos     SET_H_SR (((UINT) 7), opval);
   9644   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9645   1.1  christos   }
   9646   1.1  christos {
   9647   1.1  christos   {
   9648   1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9649   1.1  christos     CPU (h_cbit) = opval;
   9650   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9651   1.1  christos   }
   9652   1.1  christos   {
   9653   1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9654   1.1  christos     CPU (h_nbit) = opval;
   9655   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9656   1.1  christos   }
   9657   1.1  christos   {
   9658   1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9659   1.1  christos     CPU (h_zbit) = opval;
   9660   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9661   1.1  christos   }
   9662   1.1  christos   {
   9663   1.1  christos     BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
   9664   1.1  christos     CPU (h_vbit) = opval;
   9665   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9666   1.1  christos   }
   9667   1.1  christos {
   9668   1.1  christos   {
   9669   1.1  christos     BI opval = 0;
   9670   1.1  christos     CPU (h_xbit) = opval;
   9671   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9672   1.1  christos   }
   9673   1.1  christos   {
   9674   1.1  christos     BI opval = 0;
   9675   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9676   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9677   1.1  christos   }
   9678   1.1  christos }
   9679   1.1  christos }
   9680   1.1  christos }
   9681   1.1  christos 
   9682   1.1  christos #undef FLD
   9683   1.1  christos }
   9684   1.1  christos   NEXT (vpc);
   9685   1.1  christos 
   9686   1.1  christos   CASE (sem, INSN_MULU_B) : /* mulu.b $Rs,$Rd */
   9687   1.1  christos {
   9688   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9689   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9690   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9691   1.1  christos   int UNUSED written = 0;
   9692   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9693   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9694   1.1  christos 
   9695   1.1  christos {
   9696   1.1  christos   DI tmp_src1;
   9697   1.1  christos   DI tmp_src2;
   9698   1.1  christos   DI tmp_tmpr;
   9699   1.1  christos   tmp_src1 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   9700   1.1  christos   tmp_src2 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
   9701   1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9702   1.1  christos   {
   9703   1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9704   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9705   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9706   1.1  christos   }
   9707   1.1  christos   {
   9708   1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9709   1.1  christos     SET_H_SR (((UINT) 7), opval);
   9710   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9711   1.1  christos   }
   9712   1.1  christos {
   9713   1.1  christos   {
   9714   1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9715   1.1  christos     CPU (h_cbit) = opval;
   9716   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9717   1.1  christos   }
   9718   1.1  christos   {
   9719   1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9720   1.1  christos     CPU (h_nbit) = opval;
   9721   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9722   1.1  christos   }
   9723   1.1  christos   {
   9724   1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9725   1.1  christos     CPU (h_zbit) = opval;
   9726   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9727   1.1  christos   }
   9728   1.1  christos   {
   9729   1.1  christos     BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
   9730   1.1  christos     CPU (h_vbit) = opval;
   9731   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9732   1.1  christos   }
   9733   1.1  christos {
   9734   1.1  christos   {
   9735   1.1  christos     BI opval = 0;
   9736   1.1  christos     CPU (h_xbit) = opval;
   9737   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9738   1.1  christos   }
   9739   1.1  christos   {
   9740   1.1  christos     BI opval = 0;
   9741   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9742   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9743   1.1  christos   }
   9744   1.1  christos }
   9745   1.1  christos }
   9746   1.1  christos }
   9747   1.1  christos 
   9748   1.1  christos #undef FLD
   9749   1.1  christos }
   9750   1.1  christos   NEXT (vpc);
   9751   1.1  christos 
   9752   1.1  christos   CASE (sem, INSN_MULU_W) : /* mulu.w $Rs,$Rd */
   9753   1.1  christos {
   9754   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9755   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9756   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9757   1.1  christos   int UNUSED written = 0;
   9758   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9759   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9760   1.1  christos 
   9761   1.1  christos {
   9762   1.1  christos   DI tmp_src1;
   9763   1.1  christos   DI tmp_src2;
   9764   1.1  christos   DI tmp_tmpr;
   9765   1.1  christos   tmp_src1 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   9766   1.1  christos   tmp_src2 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
   9767   1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9768   1.1  christos   {
   9769   1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9770   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9771   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9772   1.1  christos   }
   9773   1.1  christos   {
   9774   1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9775   1.1  christos     SET_H_SR (((UINT) 7), opval);
   9776   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9777   1.1  christos   }
   9778   1.1  christos {
   9779   1.1  christos   {
   9780   1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9781   1.1  christos     CPU (h_cbit) = opval;
   9782   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9783   1.1  christos   }
   9784   1.1  christos   {
   9785   1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9786   1.1  christos     CPU (h_nbit) = opval;
   9787   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9788   1.1  christos   }
   9789   1.1  christos   {
   9790   1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9791   1.1  christos     CPU (h_zbit) = opval;
   9792   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9793   1.1  christos   }
   9794   1.1  christos   {
   9795   1.1  christos     BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
   9796   1.1  christos     CPU (h_vbit) = opval;
   9797   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9798   1.1  christos   }
   9799   1.1  christos {
   9800   1.1  christos   {
   9801   1.1  christos     BI opval = 0;
   9802   1.1  christos     CPU (h_xbit) = opval;
   9803   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9804   1.1  christos   }
   9805   1.1  christos   {
   9806   1.1  christos     BI opval = 0;
   9807   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9808   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9809   1.1  christos   }
   9810   1.1  christos }
   9811   1.1  christos }
   9812   1.1  christos }
   9813   1.1  christos 
   9814   1.1  christos #undef FLD
   9815   1.1  christos }
   9816   1.1  christos   NEXT (vpc);
   9817   1.1  christos 
   9818   1.1  christos   CASE (sem, INSN_MULU_D) : /* mulu.d $Rs,$Rd */
   9819   1.1  christos {
   9820   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9821   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9822   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9823   1.1  christos   int UNUSED written = 0;
   9824   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9825   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9826   1.1  christos 
   9827   1.1  christos {
   9828   1.1  christos   DI tmp_src1;
   9829   1.1  christos   DI tmp_src2;
   9830   1.1  christos   DI tmp_tmpr;
   9831   1.1  christos   tmp_src1 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
   9832   1.1  christos   tmp_src2 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
   9833   1.1  christos   tmp_tmpr = MULDI (tmp_src1, tmp_src2);
   9834   1.1  christos   {
   9835   1.1  christos     SI opval = TRUNCDISI (tmp_tmpr);
   9836   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9837   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9838   1.1  christos   }
   9839   1.1  christos   {
   9840   1.1  christos     SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
   9841   1.1  christos     SET_H_SR (((UINT) 7), opval);
   9842   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   9843   1.1  christos   }
   9844   1.1  christos {
   9845   1.1  christos   {
   9846   1.1  christos     BI opval = ANDIF (GET_H_V32_V32 (), CPU (h_cbit));
   9847   1.1  christos     CPU (h_cbit) = opval;
   9848   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   9849   1.1  christos   }
   9850   1.1  christos   {
   9851   1.1  christos     BI opval = LTDI (tmp_tmpr, 0);
   9852   1.1  christos     CPU (h_nbit) = opval;
   9853   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9854   1.1  christos   }
   9855   1.1  christos   {
   9856   1.1  christos     BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9857   1.1  christos     CPU (h_zbit) = opval;
   9858   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9859   1.1  christos   }
   9860   1.1  christos   {
   9861   1.1  christos     BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
   9862   1.1  christos     CPU (h_vbit) = opval;
   9863   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9864   1.1  christos   }
   9865   1.1  christos {
   9866   1.1  christos   {
   9867   1.1  christos     BI opval = 0;
   9868   1.1  christos     CPU (h_xbit) = opval;
   9869   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9870   1.1  christos   }
   9871   1.1  christos   {
   9872   1.1  christos     BI opval = 0;
   9873   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9874   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9875   1.1  christos   }
   9876   1.1  christos }
   9877   1.1  christos }
   9878   1.1  christos }
   9879   1.1  christos 
   9880   1.1  christos #undef FLD
   9881   1.1  christos }
   9882   1.1  christos   NEXT (vpc);
   9883   1.1  christos 
   9884   1.1  christos   CASE (sem, INSN_MCP) : /* mcp $Ps,$Rd */
   9885   1.1  christos {
   9886   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9887   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9888   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   9889   1.1  christos   int UNUSED written = 0;
   9890   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9891   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9892   1.1  christos 
   9893   1.1  christos {
   9894   1.1  christos CPU (h_xbit) = 1;
   9895   1.1  christos CPU (h_zbit) = 1;
   9896   1.1  christos {
   9897   1.1  christos   SI tmp_tmpopd;
   9898   1.1  christos   SI tmp_tmpops;
   9899   1.1  christos   BI tmp_carry;
   9900   1.1  christos   SI tmp_newval;
   9901   1.1  christos   tmp_tmpops = GET_H_SR (FLD (f_operand2));
   9902   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand1));
   9903   1.1  christos   tmp_carry = CPU (h_rbit);
   9904   1.1  christos   tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
   9905   1.1  christos   {
   9906   1.1  christos     SI opval = tmp_newval;
   9907   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   9908   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9909   1.1  christos   }
   9910   1.1  christos {
   9911   1.1  christos   {
   9912   1.1  christos     BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
   9913   1.1  christos     CPU (h_rbit) = opval;
   9914   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "rbit", 'x', opval);
   9915   1.1  christos   }
   9916   1.1  christos   {
   9917   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   9918   1.1  christos     CPU (h_nbit) = opval;
   9919   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9920   1.1  christos   }
   9921   1.1  christos   {
   9922   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
   9923   1.1  christos     CPU (h_zbit) = opval;
   9924   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9925   1.1  christos   }
   9926   1.1  christos   {
   9927   1.1  christos     BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
   9928   1.1  christos     CPU (h_vbit) = opval;
   9929   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   9930   1.1  christos   }
   9931   1.1  christos {
   9932   1.1  christos   {
   9933   1.1  christos     BI opval = 0;
   9934   1.1  christos     CPU (h_xbit) = opval;
   9935   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9936   1.1  christos   }
   9937   1.1  christos   {
   9938   1.1  christos     BI opval = 0;
   9939   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9940   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9941   1.1  christos   }
   9942   1.1  christos }
   9943   1.1  christos }
   9944   1.1  christos }
   9945   1.1  christos }
   9946   1.1  christos 
   9947   1.1  christos #undef FLD
   9948   1.1  christos }
   9949   1.1  christos   NEXT (vpc);
   9950   1.1  christos 
   9951   1.1  christos   CASE (sem, INSN_DSTEP) : /* dstep $Rs,$Rd */
   9952   1.1  christos {
   9953   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   9954   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   9955   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   9956   1.1  christos   int UNUSED written = 0;
   9957   1.1  christos   IADDR UNUSED pc = abuf->addr;
   9958   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   9959   1.1  christos 
   9960   1.1  christos {
   9961   1.1  christos   SI tmp_tmp;
   9962   1.1  christos   SI tmp_tmps;
   9963   1.1  christos   SI tmp_tmpd;
   9964   1.1  christos   tmp_tmps = GET_H_GR (FLD (f_operand1));
   9965   1.1  christos   tmp_tmp = SLLSI (GET_H_GR (FLD (f_operand2)), 1);
   9966   1.1  christos   tmp_tmpd = ((GEUSI (tmp_tmp, tmp_tmps)) ? (SUBSI (tmp_tmp, tmp_tmps)) : (tmp_tmp));
   9967   1.1  christos   {
   9968   1.1  christos     SI opval = tmp_tmpd;
   9969   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   9970   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   9971   1.1  christos   }
   9972   1.1  christos {
   9973   1.1  christos   {
   9974   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   9975   1.1  christos     CPU (h_nbit) = opval;
   9976   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   9977   1.1  christos   }
   9978   1.1  christos   {
   9979   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   9980   1.1  christos     CPU (h_zbit) = opval;
   9981   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   9982   1.1  christos   }
   9983   1.1  christos SET_H_CBIT_MOVE (0);
   9984   1.1  christos SET_H_VBIT_MOVE (0);
   9985   1.1  christos {
   9986   1.1  christos   {
   9987   1.1  christos     BI opval = 0;
   9988   1.1  christos     CPU (h_xbit) = opval;
   9989   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   9990   1.1  christos   }
   9991   1.1  christos   {
   9992   1.1  christos     BI opval = 0;
   9993   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   9994   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   9995   1.1  christos   }
   9996   1.1  christos }
   9997   1.1  christos }
   9998   1.1  christos }
   9999   1.1  christos 
   10000   1.1  christos #undef FLD
   10001   1.1  christos }
   10002   1.1  christos   NEXT (vpc);
   10003   1.1  christos 
   10004   1.1  christos   CASE (sem, INSN_ABS) : /* abs $Rs,$Rd */
   10005   1.1  christos {
   10006   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10007   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10008   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   10009   1.1  christos   int UNUSED written = 0;
   10010   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10011   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10012   1.1  christos 
   10013   1.1  christos {
   10014   1.1  christos   SI tmp_tmpd;
   10015   1.1  christos   tmp_tmpd = ABSSI (GET_H_GR (FLD (f_operand1)));
   10016   1.1  christos   {
   10017   1.1  christos     SI opval = tmp_tmpd;
   10018   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10019   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10020   1.1  christos   }
   10021   1.1  christos {
   10022   1.1  christos   {
   10023   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10024   1.1  christos     CPU (h_nbit) = opval;
   10025   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10026   1.1  christos   }
   10027   1.1  christos   {
   10028   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10029   1.1  christos     CPU (h_zbit) = opval;
   10030   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10031   1.1  christos   }
   10032   1.1  christos SET_H_CBIT_MOVE (0);
   10033   1.1  christos SET_H_VBIT_MOVE (0);
   10034   1.1  christos {
   10035   1.1  christos   {
   10036   1.1  christos     BI opval = 0;
   10037   1.1  christos     CPU (h_xbit) = opval;
   10038   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10039   1.1  christos   }
   10040   1.1  christos   {
   10041   1.1  christos     BI opval = 0;
   10042   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10043   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10044   1.1  christos   }
   10045   1.1  christos }
   10046   1.1  christos }
   10047   1.1  christos }
   10048   1.1  christos 
   10049   1.1  christos #undef FLD
   10050   1.1  christos }
   10051   1.1  christos   NEXT (vpc);
   10052   1.1  christos 
   10053   1.1  christos   CASE (sem, INSN_AND_B_R) : /* and.b $Rs,$Rd */
   10054   1.1  christos {
   10055   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10056   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10057   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10058   1.1  christos   int UNUSED written = 0;
   10059   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10060   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10061   1.1  christos 
   10062   1.1  christos {
   10063   1.1  christos   QI tmp_tmpd;
   10064   1.1  christos   tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10065   1.1  christos {
   10066   1.1  christos   SI tmp_oldregval;
   10067   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10068   1.1  christos   {
   10069   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10070   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10071   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10072   1.1  christos   }
   10073   1.1  christos }
   10074   1.1  christos {
   10075   1.1  christos   {
   10076   1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10077   1.1  christos     CPU (h_nbit) = opval;
   10078   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10079   1.1  christos   }
   10080   1.1  christos   {
   10081   1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10082   1.1  christos     CPU (h_zbit) = opval;
   10083   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10084   1.1  christos   }
   10085   1.1  christos SET_H_CBIT_MOVE (0);
   10086   1.1  christos SET_H_VBIT_MOVE (0);
   10087   1.1  christos {
   10088   1.1  christos   {
   10089   1.1  christos     BI opval = 0;
   10090   1.1  christos     CPU (h_xbit) = opval;
   10091   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10092   1.1  christos   }
   10093   1.1  christos   {
   10094   1.1  christos     BI opval = 0;
   10095   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10096   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10097   1.1  christos   }
   10098   1.1  christos }
   10099   1.1  christos }
   10100   1.1  christos }
   10101   1.1  christos 
   10102   1.1  christos #undef FLD
   10103   1.1  christos }
   10104   1.1  christos   NEXT (vpc);
   10105   1.1  christos 
   10106   1.1  christos   CASE (sem, INSN_AND_W_R) : /* and.w $Rs,$Rd */
   10107   1.1  christos {
   10108   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10109   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10110   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10111   1.1  christos   int UNUSED written = 0;
   10112   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10113   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10114   1.1  christos 
   10115   1.1  christos {
   10116   1.1  christos   HI tmp_tmpd;
   10117   1.1  christos   tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10118   1.1  christos {
   10119   1.1  christos   SI tmp_oldregval;
   10120   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10121   1.1  christos   {
   10122   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10123   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10124   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10125   1.1  christos   }
   10126   1.1  christos }
   10127   1.1  christos {
   10128   1.1  christos   {
   10129   1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10130   1.1  christos     CPU (h_nbit) = opval;
   10131   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10132   1.1  christos   }
   10133   1.1  christos   {
   10134   1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10135   1.1  christos     CPU (h_zbit) = opval;
   10136   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10137   1.1  christos   }
   10138   1.1  christos SET_H_CBIT_MOVE (0);
   10139   1.1  christos SET_H_VBIT_MOVE (0);
   10140   1.1  christos {
   10141   1.1  christos   {
   10142   1.1  christos     BI opval = 0;
   10143   1.1  christos     CPU (h_xbit) = opval;
   10144   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10145   1.1  christos   }
   10146   1.1  christos   {
   10147   1.1  christos     BI opval = 0;
   10148   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10149   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10150   1.1  christos   }
   10151   1.1  christos }
   10152   1.1  christos }
   10153   1.1  christos }
   10154   1.1  christos 
   10155   1.1  christos #undef FLD
   10156   1.1  christos }
   10157   1.1  christos   NEXT (vpc);
   10158   1.1  christos 
   10159   1.1  christos   CASE (sem, INSN_AND_D_R) : /* and.d $Rs,$Rd */
   10160   1.1  christos {
   10161   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10162   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10163   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10164   1.1  christos   int UNUSED written = 0;
   10165   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10166   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10167   1.1  christos 
   10168   1.1  christos {
   10169   1.1  christos   SI tmp_tmpd;
   10170   1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10171   1.1  christos   {
   10172   1.1  christos     SI opval = tmp_tmpd;
   10173   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10174   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10175   1.1  christos   }
   10176   1.1  christos {
   10177   1.1  christos   {
   10178   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10179   1.1  christos     CPU (h_nbit) = opval;
   10180   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10181   1.1  christos   }
   10182   1.1  christos   {
   10183   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10184   1.1  christos     CPU (h_zbit) = opval;
   10185   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10186   1.1  christos   }
   10187   1.1  christos SET_H_CBIT_MOVE (0);
   10188   1.1  christos SET_H_VBIT_MOVE (0);
   10189   1.1  christos {
   10190   1.1  christos   {
   10191   1.1  christos     BI opval = 0;
   10192   1.1  christos     CPU (h_xbit) = opval;
   10193   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10194   1.1  christos   }
   10195   1.1  christos   {
   10196   1.1  christos     BI opval = 0;
   10197   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10198   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10199   1.1  christos   }
   10200   1.1  christos }
   10201   1.1  christos }
   10202   1.1  christos }
   10203   1.1  christos 
   10204   1.1  christos #undef FLD
   10205   1.1  christos }
   10206   1.1  christos   NEXT (vpc);
   10207   1.1  christos 
   10208   1.1  christos   CASE (sem, INSN_AND_M_B_M) : /* and-m.b [${Rs}${inc}],${Rd} */
   10209   1.1  christos {
   10210   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10211   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10212   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10213   1.1  christos   int UNUSED written = 0;
   10214   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10215   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10216   1.1  christos 
   10217   1.1  christos {
   10218   1.1  christos   QI tmp_tmpd;
   10219   1.1  christos   tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10220   1.1  christos   QI tmp_tmp_mem;
   10221   1.1  christos   BI tmp_postinc;
   10222   1.1  christos   tmp_postinc = FLD (f_memmode);
   10223   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10224   1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   10225   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10226   1.1  christos {
   10227   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10228   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   10229   1.1  christos }
   10230   1.1  christos   {
   10231   1.1  christos     SI opval = tmp_addr;
   10232   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10233   1.1  christos     written |= (1 << 11);
   10234   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10235   1.1  christos   }
   10236   1.1  christos }
   10237   1.1  christos }
   10238   1.1  christos ; tmp_tmp_mem; }));
   10239   1.1  christos {
   10240   1.1  christos   SI tmp_oldregval;
   10241   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   10242   1.1  christos   {
   10243   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10244   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10245   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10246   1.1  christos   }
   10247   1.1  christos }
   10248   1.1  christos {
   10249   1.1  christos   {
   10250   1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10251   1.1  christos     CPU (h_nbit) = opval;
   10252   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10253   1.1  christos   }
   10254   1.1  christos   {
   10255   1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10256   1.1  christos     CPU (h_zbit) = opval;
   10257   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10258   1.1  christos   }
   10259   1.1  christos SET_H_CBIT_MOVE (0);
   10260   1.1  christos SET_H_VBIT_MOVE (0);
   10261   1.1  christos {
   10262   1.1  christos   {
   10263   1.1  christos     BI opval = 0;
   10264   1.1  christos     CPU (h_xbit) = opval;
   10265   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10266   1.1  christos   }
   10267   1.1  christos   {
   10268   1.1  christos     BI opval = 0;
   10269   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10270   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10271   1.1  christos   }
   10272   1.1  christos }
   10273   1.1  christos }
   10274   1.1  christos }
   10275   1.1  christos 
   10276   1.1  christos   abuf->written = written;
   10277   1.1  christos #undef FLD
   10278   1.1  christos }
   10279   1.1  christos   NEXT (vpc);
   10280   1.1  christos 
   10281   1.1  christos   CASE (sem, INSN_AND_M_W_M) : /* and-m.w [${Rs}${inc}],${Rd} */
   10282   1.1  christos {
   10283   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10284   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10285   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10286   1.1  christos   int UNUSED written = 0;
   10287   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10288   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10289   1.1  christos 
   10290   1.1  christos {
   10291   1.1  christos   HI tmp_tmpd;
   10292   1.1  christos   tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10293   1.1  christos   HI tmp_tmp_mem;
   10294   1.1  christos   BI tmp_postinc;
   10295   1.1  christos   tmp_postinc = FLD (f_memmode);
   10296   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10297   1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   10298   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10299   1.1  christos {
   10300   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10301   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   10302   1.1  christos }
   10303   1.1  christos   {
   10304   1.1  christos     SI opval = tmp_addr;
   10305   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10306   1.1  christos     written |= (1 << 11);
   10307   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10308   1.1  christos   }
   10309   1.1  christos }
   10310   1.1  christos }
   10311   1.1  christos ; tmp_tmp_mem; }));
   10312   1.1  christos {
   10313   1.1  christos   SI tmp_oldregval;
   10314   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   10315   1.1  christos   {
   10316   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10317   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10318   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10319   1.1  christos   }
   10320   1.1  christos }
   10321   1.1  christos {
   10322   1.1  christos   {
   10323   1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10324   1.1  christos     CPU (h_nbit) = opval;
   10325   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10326   1.1  christos   }
   10327   1.1  christos   {
   10328   1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10329   1.1  christos     CPU (h_zbit) = opval;
   10330   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10331   1.1  christos   }
   10332   1.1  christos SET_H_CBIT_MOVE (0);
   10333   1.1  christos SET_H_VBIT_MOVE (0);
   10334   1.1  christos {
   10335   1.1  christos   {
   10336   1.1  christos     BI opval = 0;
   10337   1.1  christos     CPU (h_xbit) = opval;
   10338   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10339   1.1  christos   }
   10340   1.1  christos   {
   10341   1.1  christos     BI opval = 0;
   10342   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10343   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10344   1.1  christos   }
   10345   1.1  christos }
   10346   1.1  christos }
   10347   1.1  christos }
   10348   1.1  christos 
   10349   1.1  christos   abuf->written = written;
   10350   1.1  christos #undef FLD
   10351   1.1  christos }
   10352   1.1  christos   NEXT (vpc);
   10353   1.1  christos 
   10354   1.1  christos   CASE (sem, INSN_AND_M_D_M) : /* and-m.d [${Rs}${inc}],${Rd} */
   10355   1.1  christos {
   10356   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10357   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10358   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10359   1.1  christos   int UNUSED written = 0;
   10360   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10361   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10362   1.1  christos 
   10363   1.1  christos {
   10364   1.1  christos   SI tmp_tmpd;
   10365   1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10366   1.1  christos   SI tmp_tmp_mem;
   10367   1.1  christos   BI tmp_postinc;
   10368   1.1  christos   tmp_postinc = FLD (f_memmode);
   10369   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10370   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   10371   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10372   1.1  christos {
   10373   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10374   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   10375   1.1  christos }
   10376   1.1  christos   {
   10377   1.1  christos     SI opval = tmp_addr;
   10378   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10379   1.1  christos     written |= (1 << 10);
   10380   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10381   1.1  christos   }
   10382   1.1  christos }
   10383   1.1  christos }
   10384   1.1  christos ; tmp_tmp_mem; }));
   10385   1.1  christos   {
   10386   1.1  christos     SI opval = tmp_tmpd;
   10387   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10388   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10389   1.1  christos   }
   10390   1.1  christos {
   10391   1.1  christos   {
   10392   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10393   1.1  christos     CPU (h_nbit) = opval;
   10394   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10395   1.1  christos   }
   10396   1.1  christos   {
   10397   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10398   1.1  christos     CPU (h_zbit) = opval;
   10399   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10400   1.1  christos   }
   10401   1.1  christos SET_H_CBIT_MOVE (0);
   10402   1.1  christos SET_H_VBIT_MOVE (0);
   10403   1.1  christos {
   10404   1.1  christos   {
   10405   1.1  christos     BI opval = 0;
   10406   1.1  christos     CPU (h_xbit) = opval;
   10407   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10408   1.1  christos   }
   10409   1.1  christos   {
   10410   1.1  christos     BI opval = 0;
   10411   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10412   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10413   1.1  christos   }
   10414   1.1  christos }
   10415   1.1  christos }
   10416   1.1  christos }
   10417   1.1  christos 
   10418   1.1  christos   abuf->written = written;
   10419   1.1  christos #undef FLD
   10420   1.1  christos }
   10421   1.1  christos   NEXT (vpc);
   10422   1.1  christos 
   10423   1.1  christos   CASE (sem, INSN_ANDCBR) : /* and.b ${sconst8}],${Rd} */
   10424   1.1  christos {
   10425   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10426   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10427   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   10428   1.1  christos   int UNUSED written = 0;
   10429   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10430   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   10431   1.1  christos 
   10432   1.1  christos {
   10433   1.1  christos   QI tmp_tmpd;
   10434   1.1  christos   tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
   10435   1.1  christos {
   10436   1.1  christos   SI tmp_oldregval;
   10437   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10438   1.1  christos   {
   10439   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10440   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10441   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10442   1.1  christos   }
   10443   1.1  christos }
   10444   1.1  christos {
   10445   1.1  christos   {
   10446   1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10447   1.1  christos     CPU (h_nbit) = opval;
   10448   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10449   1.1  christos   }
   10450   1.1  christos   {
   10451   1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10452   1.1  christos     CPU (h_zbit) = opval;
   10453   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10454   1.1  christos   }
   10455   1.1  christos SET_H_CBIT_MOVE (0);
   10456   1.1  christos SET_H_VBIT_MOVE (0);
   10457   1.1  christos {
   10458   1.1  christos   {
   10459   1.1  christos     BI opval = 0;
   10460   1.1  christos     CPU (h_xbit) = opval;
   10461   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10462   1.1  christos   }
   10463   1.1  christos   {
   10464   1.1  christos     BI opval = 0;
   10465   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10466   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10467   1.1  christos   }
   10468   1.1  christos }
   10469   1.1  christos }
   10470   1.1  christos }
   10471   1.1  christos 
   10472   1.1  christos #undef FLD
   10473   1.1  christos }
   10474   1.1  christos   NEXT (vpc);
   10475   1.1  christos 
   10476   1.1  christos   CASE (sem, INSN_ANDCWR) : /* and.w ${sconst16}],${Rd} */
   10477   1.1  christos {
   10478   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10479   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10480   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   10481   1.1  christos   int UNUSED written = 0;
   10482   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10483   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   10484   1.1  christos 
   10485   1.1  christos {
   10486   1.1  christos   HI tmp_tmpd;
   10487   1.1  christos   tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
   10488   1.1  christos {
   10489   1.1  christos   SI tmp_oldregval;
   10490   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10491   1.1  christos   {
   10492   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10493   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10494   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10495   1.1  christos   }
   10496   1.1  christos }
   10497   1.1  christos {
   10498   1.1  christos   {
   10499   1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10500   1.1  christos     CPU (h_nbit) = opval;
   10501   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10502   1.1  christos   }
   10503   1.1  christos   {
   10504   1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10505   1.1  christos     CPU (h_zbit) = opval;
   10506   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10507   1.1  christos   }
   10508   1.1  christos SET_H_CBIT_MOVE (0);
   10509   1.1  christos SET_H_VBIT_MOVE (0);
   10510   1.1  christos {
   10511   1.1  christos   {
   10512   1.1  christos     BI opval = 0;
   10513   1.1  christos     CPU (h_xbit) = opval;
   10514   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10515   1.1  christos   }
   10516   1.1  christos   {
   10517   1.1  christos     BI opval = 0;
   10518   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10519   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10520   1.1  christos   }
   10521   1.1  christos }
   10522   1.1  christos }
   10523   1.1  christos }
   10524   1.1  christos 
   10525   1.1  christos #undef FLD
   10526   1.1  christos }
   10527   1.1  christos   NEXT (vpc);
   10528   1.1  christos 
   10529   1.1  christos   CASE (sem, INSN_ANDCDR) : /* and.d ${const32}],${Rd} */
   10530   1.1  christos {
   10531   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10532   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10533   1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   10534   1.1  christos   int UNUSED written = 0;
   10535   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10536   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   10537   1.1  christos 
   10538   1.1  christos {
   10539   1.1  christos   SI tmp_tmpd;
   10540   1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
   10541   1.1  christos   {
   10542   1.1  christos     SI opval = tmp_tmpd;
   10543   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10544   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10545   1.1  christos   }
   10546   1.1  christos {
   10547   1.1  christos   {
   10548   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10549   1.1  christos     CPU (h_nbit) = opval;
   10550   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10551   1.1  christos   }
   10552   1.1  christos   {
   10553   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10554   1.1  christos     CPU (h_zbit) = opval;
   10555   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10556   1.1  christos   }
   10557   1.1  christos SET_H_CBIT_MOVE (0);
   10558   1.1  christos SET_H_VBIT_MOVE (0);
   10559   1.1  christos {
   10560   1.1  christos   {
   10561   1.1  christos     BI opval = 0;
   10562   1.1  christos     CPU (h_xbit) = opval;
   10563   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10564   1.1  christos   }
   10565   1.1  christos   {
   10566   1.1  christos     BI opval = 0;
   10567   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10568   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10569   1.1  christos   }
   10570   1.1  christos }
   10571   1.1  christos }
   10572   1.1  christos }
   10573   1.1  christos 
   10574   1.1  christos #undef FLD
   10575   1.1  christos }
   10576   1.1  christos   NEXT (vpc);
   10577   1.1  christos 
   10578   1.1  christos   CASE (sem, INSN_ANDQ) : /* andq $i,$Rd */
   10579   1.1  christos {
   10580   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10581   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10582   1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   10583   1.1  christos   int UNUSED written = 0;
   10584   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10585   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10586   1.1  christos 
   10587   1.1  christos {
   10588   1.1  christos   SI tmp_tmpd;
   10589   1.1  christos   tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
   10590   1.1  christos   {
   10591   1.1  christos     SI opval = tmp_tmpd;
   10592   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10593   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10594   1.1  christos   }
   10595   1.1  christos {
   10596   1.1  christos   {
   10597   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10598   1.1  christos     CPU (h_nbit) = opval;
   10599   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10600   1.1  christos   }
   10601   1.1  christos   {
   10602   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10603   1.1  christos     CPU (h_zbit) = opval;
   10604   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10605   1.1  christos   }
   10606   1.1  christos SET_H_CBIT_MOVE (0);
   10607   1.1  christos SET_H_VBIT_MOVE (0);
   10608   1.1  christos {
   10609   1.1  christos   {
   10610   1.1  christos     BI opval = 0;
   10611   1.1  christos     CPU (h_xbit) = opval;
   10612   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10613   1.1  christos   }
   10614   1.1  christos   {
   10615   1.1  christos     BI opval = 0;
   10616   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10617   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10618   1.1  christos   }
   10619   1.1  christos }
   10620   1.1  christos }
   10621   1.1  christos }
   10622   1.1  christos 
   10623   1.1  christos #undef FLD
   10624   1.1  christos }
   10625   1.1  christos   NEXT (vpc);
   10626   1.1  christos 
   10627   1.1  christos   CASE (sem, INSN_ORR_B_R) : /* orr.b $Rs,$Rd */
   10628   1.1  christos {
   10629   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10630   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10631   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10632   1.1  christos   int UNUSED written = 0;
   10633   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10634   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10635   1.1  christos 
   10636   1.1  christos {
   10637   1.1  christos   QI tmp_tmpd;
   10638   1.1  christos   tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10639   1.1  christos {
   10640   1.1  christos   SI tmp_oldregval;
   10641   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10642   1.1  christos   {
   10643   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10644   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10645   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10646   1.1  christos   }
   10647   1.1  christos }
   10648   1.1  christos {
   10649   1.1  christos   {
   10650   1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10651   1.1  christos     CPU (h_nbit) = opval;
   10652   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10653   1.1  christos   }
   10654   1.1  christos   {
   10655   1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10656   1.1  christos     CPU (h_zbit) = opval;
   10657   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10658   1.1  christos   }
   10659   1.1  christos SET_H_CBIT_MOVE (0);
   10660   1.1  christos SET_H_VBIT_MOVE (0);
   10661   1.1  christos {
   10662   1.1  christos   {
   10663   1.1  christos     BI opval = 0;
   10664   1.1  christos     CPU (h_xbit) = opval;
   10665   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10666   1.1  christos   }
   10667   1.1  christos   {
   10668   1.1  christos     BI opval = 0;
   10669   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10670   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10671   1.1  christos   }
   10672   1.1  christos }
   10673   1.1  christos }
   10674   1.1  christos }
   10675   1.1  christos 
   10676   1.1  christos #undef FLD
   10677   1.1  christos }
   10678   1.1  christos   NEXT (vpc);
   10679   1.1  christos 
   10680   1.1  christos   CASE (sem, INSN_ORR_W_R) : /* orr.w $Rs,$Rd */
   10681   1.1  christos {
   10682   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10683   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10684   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10685   1.1  christos   int UNUSED written = 0;
   10686   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10687   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10688   1.1  christos 
   10689   1.1  christos {
   10690   1.1  christos   HI tmp_tmpd;
   10691   1.1  christos   tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10692   1.1  christos {
   10693   1.1  christos   SI tmp_oldregval;
   10694   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   10695   1.1  christos   {
   10696   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10697   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10698   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10699   1.1  christos   }
   10700   1.1  christos }
   10701   1.1  christos {
   10702   1.1  christos   {
   10703   1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10704   1.1  christos     CPU (h_nbit) = opval;
   10705   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10706   1.1  christos   }
   10707   1.1  christos   {
   10708   1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10709   1.1  christos     CPU (h_zbit) = opval;
   10710   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10711   1.1  christos   }
   10712   1.1  christos SET_H_CBIT_MOVE (0);
   10713   1.1  christos SET_H_VBIT_MOVE (0);
   10714   1.1  christos {
   10715   1.1  christos   {
   10716   1.1  christos     BI opval = 0;
   10717   1.1  christos     CPU (h_xbit) = opval;
   10718   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10719   1.1  christos   }
   10720   1.1  christos   {
   10721   1.1  christos     BI opval = 0;
   10722   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10723   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10724   1.1  christos   }
   10725   1.1  christos }
   10726   1.1  christos }
   10727   1.1  christos }
   10728   1.1  christos 
   10729   1.1  christos #undef FLD
   10730   1.1  christos }
   10731   1.1  christos   NEXT (vpc);
   10732   1.1  christos 
   10733   1.1  christos   CASE (sem, INSN_ORR_D_R) : /* orr.d $Rs,$Rd */
   10734   1.1  christos {
   10735   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10736   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10737   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   10738   1.1  christos   int UNUSED written = 0;
   10739   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10740   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10741   1.1  christos 
   10742   1.1  christos {
   10743   1.1  christos   SI tmp_tmpd;
   10744   1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   10745   1.1  christos   {
   10746   1.1  christos     SI opval = tmp_tmpd;
   10747   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   10748   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10749   1.1  christos   }
   10750   1.1  christos {
   10751   1.1  christos   {
   10752   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10753   1.1  christos     CPU (h_nbit) = opval;
   10754   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10755   1.1  christos   }
   10756   1.1  christos   {
   10757   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10758   1.1  christos     CPU (h_zbit) = opval;
   10759   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10760   1.1  christos   }
   10761   1.1  christos SET_H_CBIT_MOVE (0);
   10762   1.1  christos SET_H_VBIT_MOVE (0);
   10763   1.1  christos {
   10764   1.1  christos   {
   10765   1.1  christos     BI opval = 0;
   10766   1.1  christos     CPU (h_xbit) = opval;
   10767   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10768   1.1  christos   }
   10769   1.1  christos   {
   10770   1.1  christos     BI opval = 0;
   10771   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10772   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10773   1.1  christos   }
   10774   1.1  christos }
   10775   1.1  christos }
   10776   1.1  christos }
   10777   1.1  christos 
   10778   1.1  christos #undef FLD
   10779   1.1  christos }
   10780   1.1  christos   NEXT (vpc);
   10781   1.1  christos 
   10782   1.1  christos   CASE (sem, INSN_OR_M_B_M) : /* or-m.b [${Rs}${inc}],${Rd} */
   10783   1.1  christos {
   10784   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10785   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10786   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10787   1.1  christos   int UNUSED written = 0;
   10788   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10789   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10790   1.1  christos 
   10791   1.1  christos {
   10792   1.1  christos   QI tmp_tmpd;
   10793   1.1  christos   tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10794   1.1  christos   QI tmp_tmp_mem;
   10795   1.1  christos   BI tmp_postinc;
   10796   1.1  christos   tmp_postinc = FLD (f_memmode);
   10797   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10798   1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   10799   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10800   1.1  christos {
   10801   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10802   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   10803   1.1  christos }
   10804   1.1  christos   {
   10805   1.1  christos     SI opval = tmp_addr;
   10806   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10807   1.1  christos     written |= (1 << 11);
   10808   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10809   1.1  christos   }
   10810   1.1  christos }
   10811   1.1  christos }
   10812   1.1  christos ; tmp_tmp_mem; }));
   10813   1.1  christos {
   10814   1.1  christos   SI tmp_oldregval;
   10815   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   10816   1.1  christos   {
   10817   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   10818   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10819   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10820   1.1  christos   }
   10821   1.1  christos }
   10822   1.1  christos {
   10823   1.1  christos   {
   10824   1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   10825   1.1  christos     CPU (h_nbit) = opval;
   10826   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10827   1.1  christos   }
   10828   1.1  christos   {
   10829   1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10830   1.1  christos     CPU (h_zbit) = opval;
   10831   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10832   1.1  christos   }
   10833   1.1  christos SET_H_CBIT_MOVE (0);
   10834   1.1  christos SET_H_VBIT_MOVE (0);
   10835   1.1  christos {
   10836   1.1  christos   {
   10837   1.1  christos     BI opval = 0;
   10838   1.1  christos     CPU (h_xbit) = opval;
   10839   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10840   1.1  christos   }
   10841   1.1  christos   {
   10842   1.1  christos     BI opval = 0;
   10843   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10844   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10845   1.1  christos   }
   10846   1.1  christos }
   10847   1.1  christos }
   10848   1.1  christos }
   10849   1.1  christos 
   10850   1.1  christos   abuf->written = written;
   10851   1.1  christos #undef FLD
   10852   1.1  christos }
   10853   1.1  christos   NEXT (vpc);
   10854   1.1  christos 
   10855   1.1  christos   CASE (sem, INSN_OR_M_W_M) : /* or-m.w [${Rs}${inc}],${Rd} */
   10856   1.1  christos {
   10857   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10858   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10859   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10860   1.1  christos   int UNUSED written = 0;
   10861   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10862   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10863   1.1  christos 
   10864   1.1  christos {
   10865   1.1  christos   HI tmp_tmpd;
   10866   1.1  christos   tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10867   1.1  christos   HI tmp_tmp_mem;
   10868   1.1  christos   BI tmp_postinc;
   10869   1.1  christos   tmp_postinc = FLD (f_memmode);
   10870   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10871   1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   10872   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10873   1.1  christos {
   10874   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10875   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   10876   1.1  christos }
   10877   1.1  christos   {
   10878   1.1  christos     SI opval = tmp_addr;
   10879   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10880   1.1  christos     written |= (1 << 11);
   10881   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10882   1.1  christos   }
   10883   1.1  christos }
   10884   1.1  christos }
   10885   1.1  christos ; tmp_tmp_mem; }));
   10886   1.1  christos {
   10887   1.1  christos   SI tmp_oldregval;
   10888   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
   10889   1.1  christos   {
   10890   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   10891   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10892   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10893   1.1  christos   }
   10894   1.1  christos }
   10895   1.1  christos {
   10896   1.1  christos   {
   10897   1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   10898   1.1  christos     CPU (h_nbit) = opval;
   10899   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10900   1.1  christos   }
   10901   1.1  christos   {
   10902   1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10903   1.1  christos     CPU (h_zbit) = opval;
   10904   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10905   1.1  christos   }
   10906   1.1  christos SET_H_CBIT_MOVE (0);
   10907   1.1  christos SET_H_VBIT_MOVE (0);
   10908   1.1  christos {
   10909   1.1  christos   {
   10910   1.1  christos     BI opval = 0;
   10911   1.1  christos     CPU (h_xbit) = opval;
   10912   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10913   1.1  christos   }
   10914   1.1  christos   {
   10915   1.1  christos     BI opval = 0;
   10916   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10917   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10918   1.1  christos   }
   10919   1.1  christos }
   10920   1.1  christos }
   10921   1.1  christos }
   10922   1.1  christos 
   10923   1.1  christos   abuf->written = written;
   10924   1.1  christos #undef FLD
   10925   1.1  christos }
   10926   1.1  christos   NEXT (vpc);
   10927   1.1  christos 
   10928   1.1  christos   CASE (sem, INSN_OR_M_D_M) : /* or-m.d [${Rs}${inc}],${Rd} */
   10929   1.1  christos {
   10930   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   10931   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   10932   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   10933   1.1  christos   int UNUSED written = 0;
   10934   1.1  christos   IADDR UNUSED pc = abuf->addr;
   10935   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   10936   1.1  christos 
   10937   1.1  christos {
   10938   1.1  christos   SI tmp_tmpd;
   10939   1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), ({   SI tmp_addr;
   10940   1.1  christos   SI tmp_tmp_mem;
   10941   1.1  christos   BI tmp_postinc;
   10942   1.1  christos   tmp_postinc = FLD (f_memmode);
   10943   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   10944   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   10945   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   10946   1.1  christos {
   10947   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   10948   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   10949   1.1  christos }
   10950   1.1  christos   {
   10951   1.1  christos     SI opval = tmp_addr;
   10952   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   10953   1.1  christos     written |= (1 << 10);
   10954   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10955   1.1  christos   }
   10956   1.1  christos }
   10957   1.1  christos }
   10958   1.1  christos ; tmp_tmp_mem; }));
   10959   1.1  christos   {
   10960   1.1  christos     SI opval = tmp_tmpd;
   10961   1.1  christos     SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
   10962   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   10963   1.1  christos   }
   10964   1.1  christos {
   10965   1.1  christos   {
   10966   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   10967   1.1  christos     CPU (h_nbit) = opval;
   10968   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   10969   1.1  christos   }
   10970   1.1  christos   {
   10971   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   10972   1.1  christos     CPU (h_zbit) = opval;
   10973   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   10974   1.1  christos   }
   10975   1.1  christos SET_H_CBIT_MOVE (0);
   10976   1.1  christos SET_H_VBIT_MOVE (0);
   10977   1.1  christos {
   10978   1.1  christos   {
   10979   1.1  christos     BI opval = 0;
   10980   1.1  christos     CPU (h_xbit) = opval;
   10981   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   10982   1.1  christos   }
   10983   1.1  christos   {
   10984   1.1  christos     BI opval = 0;
   10985   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   10986   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   10987   1.1  christos   }
   10988   1.1  christos }
   10989   1.1  christos }
   10990   1.1  christos }
   10991   1.1  christos 
   10992   1.1  christos   abuf->written = written;
   10993   1.1  christos #undef FLD
   10994   1.1  christos }
   10995   1.1  christos   NEXT (vpc);
   10996   1.1  christos 
   10997   1.1  christos   CASE (sem, INSN_ORCBR) : /* or.b ${sconst8}],${Rd} */
   10998   1.1  christos {
   10999   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11000   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11001   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   11002   1.1  christos   int UNUSED written = 0;
   11003   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11004   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   11005   1.1  christos 
   11006   1.1  christos {
   11007   1.1  christos   QI tmp_tmpd;
   11008   1.1  christos   tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
   11009   1.1  christos {
   11010   1.1  christos   SI tmp_oldregval;
   11011   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11012   1.1  christos   {
   11013   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11014   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11015   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11016   1.1  christos   }
   11017   1.1  christos }
   11018   1.1  christos {
   11019   1.1  christos   {
   11020   1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11021   1.1  christos     CPU (h_nbit) = opval;
   11022   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11023   1.1  christos   }
   11024   1.1  christos   {
   11025   1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11026   1.1  christos     CPU (h_zbit) = opval;
   11027   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11028   1.1  christos   }
   11029   1.1  christos SET_H_CBIT_MOVE (0);
   11030   1.1  christos SET_H_VBIT_MOVE (0);
   11031   1.1  christos {
   11032   1.1  christos   {
   11033   1.1  christos     BI opval = 0;
   11034   1.1  christos     CPU (h_xbit) = opval;
   11035   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11036   1.1  christos   }
   11037   1.1  christos   {
   11038   1.1  christos     BI opval = 0;
   11039   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11040   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11041   1.1  christos   }
   11042   1.1  christos }
   11043   1.1  christos }
   11044   1.1  christos }
   11045   1.1  christos 
   11046   1.1  christos #undef FLD
   11047   1.1  christos }
   11048   1.1  christos   NEXT (vpc);
   11049   1.1  christos 
   11050   1.1  christos   CASE (sem, INSN_ORCWR) : /* or.w ${sconst16}],${Rd} */
   11051   1.1  christos {
   11052   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11053   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11054   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   11055   1.1  christos   int UNUSED written = 0;
   11056   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11057   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   11058   1.1  christos 
   11059   1.1  christos {
   11060   1.1  christos   HI tmp_tmpd;
   11061   1.1  christos   tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
   11062   1.1  christos {
   11063   1.1  christos   SI tmp_oldregval;
   11064   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11065   1.1  christos   {
   11066   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11067   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11068   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11069   1.1  christos   }
   11070   1.1  christos }
   11071   1.1  christos {
   11072   1.1  christos   {
   11073   1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11074   1.1  christos     CPU (h_nbit) = opval;
   11075   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11076   1.1  christos   }
   11077   1.1  christos   {
   11078   1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11079   1.1  christos     CPU (h_zbit) = opval;
   11080   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11081   1.1  christos   }
   11082   1.1  christos SET_H_CBIT_MOVE (0);
   11083   1.1  christos SET_H_VBIT_MOVE (0);
   11084   1.1  christos {
   11085   1.1  christos   {
   11086   1.1  christos     BI opval = 0;
   11087   1.1  christos     CPU (h_xbit) = opval;
   11088   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11089   1.1  christos   }
   11090   1.1  christos   {
   11091   1.1  christos     BI opval = 0;
   11092   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11093   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11094   1.1  christos   }
   11095   1.1  christos }
   11096   1.1  christos }
   11097   1.1  christos }
   11098   1.1  christos 
   11099   1.1  christos #undef FLD
   11100   1.1  christos }
   11101   1.1  christos   NEXT (vpc);
   11102   1.1  christos 
   11103   1.1  christos   CASE (sem, INSN_ORCDR) : /* or.d ${const32}],${Rd} */
   11104   1.1  christos {
   11105   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11106   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11107   1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   11108   1.1  christos   int UNUSED written = 0;
   11109   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11110   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   11111   1.1  christos 
   11112   1.1  christos {
   11113   1.1  christos   SI tmp_tmpd;
   11114   1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
   11115   1.1  christos   {
   11116   1.1  christos     SI opval = tmp_tmpd;
   11117   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11118   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11119   1.1  christos   }
   11120   1.1  christos {
   11121   1.1  christos   {
   11122   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11123   1.1  christos     CPU (h_nbit) = opval;
   11124   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11125   1.1  christos   }
   11126   1.1  christos   {
   11127   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11128   1.1  christos     CPU (h_zbit) = opval;
   11129   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11130   1.1  christos   }
   11131   1.1  christos SET_H_CBIT_MOVE (0);
   11132   1.1  christos SET_H_VBIT_MOVE (0);
   11133   1.1  christos {
   11134   1.1  christos   {
   11135   1.1  christos     BI opval = 0;
   11136   1.1  christos     CPU (h_xbit) = opval;
   11137   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11138   1.1  christos   }
   11139   1.1  christos   {
   11140   1.1  christos     BI opval = 0;
   11141   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11142   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11143   1.1  christos   }
   11144   1.1  christos }
   11145   1.1  christos }
   11146   1.1  christos }
   11147   1.1  christos 
   11148   1.1  christos #undef FLD
   11149   1.1  christos }
   11150   1.1  christos   NEXT (vpc);
   11151   1.1  christos 
   11152   1.1  christos   CASE (sem, INSN_ORQ) : /* orq $i,$Rd */
   11153   1.1  christos {
   11154   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11155   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11156   1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   11157   1.1  christos   int UNUSED written = 0;
   11158   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11159   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11160   1.1  christos 
   11161   1.1  christos {
   11162   1.1  christos   SI tmp_tmpd;
   11163   1.1  christos   tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
   11164   1.1  christos   {
   11165   1.1  christos     SI opval = tmp_tmpd;
   11166   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11167   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11168   1.1  christos   }
   11169   1.1  christos {
   11170   1.1  christos   {
   11171   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11172   1.1  christos     CPU (h_nbit) = opval;
   11173   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11174   1.1  christos   }
   11175   1.1  christos   {
   11176   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11177   1.1  christos     CPU (h_zbit) = opval;
   11178   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11179   1.1  christos   }
   11180   1.1  christos SET_H_CBIT_MOVE (0);
   11181   1.1  christos SET_H_VBIT_MOVE (0);
   11182   1.1  christos {
   11183   1.1  christos   {
   11184   1.1  christos     BI opval = 0;
   11185   1.1  christos     CPU (h_xbit) = opval;
   11186   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11187   1.1  christos   }
   11188   1.1  christos   {
   11189   1.1  christos     BI opval = 0;
   11190   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11191   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11192   1.1  christos   }
   11193   1.1  christos }
   11194   1.1  christos }
   11195   1.1  christos }
   11196   1.1  christos 
   11197   1.1  christos #undef FLD
   11198   1.1  christos }
   11199   1.1  christos   NEXT (vpc);
   11200   1.1  christos 
   11201   1.1  christos   CASE (sem, INSN_XOR) : /* xor $Rs,$Rd */
   11202   1.1  christos {
   11203   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11204   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11205   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   11206   1.1  christos   int UNUSED written = 0;
   11207   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11208   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11209   1.1  christos 
   11210   1.1  christos {
   11211   1.1  christos   SI tmp_tmpd;
   11212   1.1  christos   tmp_tmpd = XORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
   11213   1.1  christos   {
   11214   1.1  christos     SI opval = tmp_tmpd;
   11215   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11216   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11217   1.1  christos   }
   11218   1.1  christos {
   11219   1.1  christos   {
   11220   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11221   1.1  christos     CPU (h_nbit) = opval;
   11222   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11223   1.1  christos   }
   11224   1.1  christos   {
   11225   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11226   1.1  christos     CPU (h_zbit) = opval;
   11227   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11228   1.1  christos   }
   11229   1.1  christos SET_H_CBIT_MOVE (0);
   11230   1.1  christos SET_H_VBIT_MOVE (0);
   11231   1.1  christos {
   11232   1.1  christos   {
   11233   1.1  christos     BI opval = 0;
   11234   1.1  christos     CPU (h_xbit) = opval;
   11235   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11236   1.1  christos   }
   11237   1.1  christos   {
   11238   1.1  christos     BI opval = 0;
   11239   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11240   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11241   1.1  christos   }
   11242   1.1  christos }
   11243   1.1  christos }
   11244   1.1  christos }
   11245   1.1  christos 
   11246   1.1  christos #undef FLD
   11247   1.1  christos }
   11248   1.1  christos   NEXT (vpc);
   11249   1.1  christos 
   11250   1.1  christos   CASE (sem, INSN_SWAP) : /* swap${swapoption} ${Rs} */
   11251   1.1  christos {
   11252   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11253   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11254   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   11255   1.1  christos   int UNUSED written = 0;
   11256   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11257   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11258   1.1  christos 
   11259   1.1  christos {
   11260   1.1  christos   SI tmp_tmps;
   11261   1.1  christos   SI tmp_tmpd;
   11262   1.1  christos   tmp_tmps = GET_H_GR (FLD (f_operand1));
   11263   1.1  christos   tmp_tmpd = ({   SI tmp_tmpcode;
   11264   1.1  christos   SI tmp_tmpval;
   11265   1.1  christos   SI tmp_tmpres;
   11266   1.1  christos   tmp_tmpcode = FLD (f_operand2);
   11267   1.1  christos ;   tmp_tmpval = tmp_tmps;
   11268   1.1  christos ; if (EQSI (tmp_tmpcode, 0)) {
   11269   1.1  christos   tmp_tmpres = (cgen_rtx_error (current_cpu, "SWAP without swap modifier isn't implemented"), 0);
   11270   1.1  christos }
   11271   1.1  christos  else if (EQSI (tmp_tmpcode, 1)) {
   11272   1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11273   1.1  christos   tmp_tmpr = tmp_tmpval;
   11274   1.1  christos ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
   11275   1.1  christos }
   11276   1.1  christos  else if (EQSI (tmp_tmpcode, 2)) {
   11277   1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11278   1.1  christos   tmp_tmpb = tmp_tmpval;
   11279   1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11280   1.1  christos }
   11281   1.1  christos  else if (EQSI (tmp_tmpcode, 3)) {
   11282   1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11283   1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11284   1.1  christos   tmp_tmpb = tmp_tmpval;
   11285   1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11286   1.1  christos ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
   11287   1.1  christos }
   11288   1.1  christos  else if (EQSI (tmp_tmpcode, 4)) {
   11289  1.11  christos   tmp_tmpres = ({   SI tmp_tmpw;
   11290  1.11  christos   tmp_tmpw = tmp_tmpval;
   11291  1.11  christos ; ORSI (ANDSI (SLLSI (tmp_tmpw, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpw, 16), 65535)); });
   11292   1.1  christos }
   11293   1.1  christos  else if (EQSI (tmp_tmpcode, 5)) {
   11294   1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11295  1.11  christos   tmp_tmpr = ({   SI tmp_tmpw;
   11296  1.11  christos   tmp_tmpw = tmp_tmpval;
   11297  1.11  christos ; ORSI (ANDSI (SLLSI (tmp_tmpw, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpw, 16), 65535)); });
   11298   1.1  christos ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
   11299   1.1  christos }
   11300   1.1  christos  else if (EQSI (tmp_tmpcode, 6)) {
   11301   1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11302  1.11  christos   tmp_tmpb = ({   SI tmp_tmpw;
   11303  1.11  christos   tmp_tmpw = tmp_tmpval;
   11304  1.11  christos ; ORSI (ANDSI (SLLSI (tmp_tmpw, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpw, 16), 65535)); });
   11305   1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11306   1.1  christos }
   11307   1.1  christos  else if (EQSI (tmp_tmpcode, 7)) {
   11308   1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11309   1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11310  1.11  christos   tmp_tmpb = ({   SI tmp_tmpw;
   11311  1.11  christos   tmp_tmpw = tmp_tmpval;
   11312  1.11  christos ; ORSI (ANDSI (SLLSI (tmp_tmpw, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpw, 16), 65535)); });
   11313   1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11314   1.1  christos ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
   11315   1.1  christos }
   11316   1.1  christos  else if (EQSI (tmp_tmpcode, 8)) {
   11317   1.1  christos   tmp_tmpres = INVSI (tmp_tmpval);
   11318   1.1  christos }
   11319   1.1  christos  else if (EQSI (tmp_tmpcode, 9)) {
   11320   1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11321   1.1  christos   tmp_tmpr = INVSI (tmp_tmpval);
   11322   1.1  christos ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
   11323   1.1  christos }
   11324   1.1  christos  else if (EQSI (tmp_tmpcode, 10)) {
   11325   1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11326   1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11327   1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11328   1.1  christos }
   11329   1.1  christos  else if (EQSI (tmp_tmpcode, 11)) {
   11330   1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11331   1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11332   1.1  christos   tmp_tmpb = INVSI (tmp_tmpval);
   11333   1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11334   1.1  christos ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
   11335   1.1  christos }
   11336   1.1  christos  else if (EQSI (tmp_tmpcode, 12)) {
   11337  1.11  christos   tmp_tmpres = ({   SI tmp_tmpw;
   11338  1.11  christos   tmp_tmpw = INVSI (tmp_tmpval);
   11339  1.11  christos ; ORSI (ANDSI (SLLSI (tmp_tmpw, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpw, 16), 65535)); });
   11340   1.1  christos }
   11341   1.1  christos  else if (EQSI (tmp_tmpcode, 13)) {
   11342   1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11343  1.11  christos   tmp_tmpr = ({   SI tmp_tmpw;
   11344  1.11  christos   tmp_tmpw = INVSI (tmp_tmpval);
   11345  1.11  christos ; ORSI (ANDSI (SLLSI (tmp_tmpw, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpw, 16), 65535)); });
   11346   1.1  christos ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
   11347   1.1  christos }
   11348   1.1  christos  else if (EQSI (tmp_tmpcode, 14)) {
   11349   1.1  christos   tmp_tmpres = ({   SI tmp_tmpb;
   11350  1.11  christos   tmp_tmpb = ({   SI tmp_tmpw;
   11351  1.11  christos   tmp_tmpw = INVSI (tmp_tmpval);
   11352  1.11  christos ; ORSI (ANDSI (SLLSI (tmp_tmpw, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpw, 16), 65535)); });
   11353   1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11354   1.1  christos }
   11355   1.1  christos  else if (EQSI (tmp_tmpcode, 15)) {
   11356   1.1  christos   tmp_tmpres = ({   SI tmp_tmpr;
   11357   1.1  christos   tmp_tmpr = ({   SI tmp_tmpb;
   11358  1.11  christos   tmp_tmpb = ({   SI tmp_tmpw;
   11359  1.11  christos   tmp_tmpw = INVSI (tmp_tmpval);
   11360  1.11  christos ; ORSI (ANDSI (SLLSI (tmp_tmpw, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpw, 16), 65535)); });
   11361   1.1  christos ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
   11362   1.1  christos ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
   11363   1.1  christos }
   11364  1.11  christos  else {
   11365  1.11  christos cgen_rtx_error (current_cpu, "Unknown swapcode");
   11366  1.11  christos }
   11367   1.1  christos ; tmp_tmpres; });
   11368   1.1  christos   {
   11369   1.1  christos     SI opval = tmp_tmpd;
   11370   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   11371   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11372   1.1  christos   }
   11373   1.1  christos {
   11374   1.1  christos   {
   11375   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11376   1.1  christos     CPU (h_nbit) = opval;
   11377   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11378   1.1  christos   }
   11379   1.1  christos   {
   11380   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11381   1.1  christos     CPU (h_zbit) = opval;
   11382   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11383   1.1  christos   }
   11384   1.1  christos SET_H_CBIT_MOVE (0);
   11385   1.1  christos SET_H_VBIT_MOVE (0);
   11386   1.1  christos {
   11387   1.1  christos   {
   11388   1.1  christos     BI opval = 0;
   11389   1.1  christos     CPU (h_xbit) = opval;
   11390   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11391   1.1  christos   }
   11392   1.1  christos   {
   11393   1.1  christos     BI opval = 0;
   11394   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11395   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11396   1.1  christos   }
   11397   1.1  christos }
   11398   1.1  christos }
   11399   1.1  christos }
   11400   1.1  christos 
   11401   1.1  christos #undef FLD
   11402   1.1  christos }
   11403   1.1  christos   NEXT (vpc);
   11404   1.1  christos 
   11405   1.1  christos   CASE (sem, INSN_ASRR_B_R) : /* asrr.b $Rs,$Rd */
   11406   1.1  christos {
   11407   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11408   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11409   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11410   1.1  christos   int UNUSED written = 0;
   11411   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11412   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11413   1.1  christos 
   11414   1.1  christos {
   11415   1.1  christos   QI tmp_tmpd;
   11416   1.1  christos   SI tmp_cnt1;
   11417   1.1  christos   SI tmp_cnt2;
   11418   1.1  christos   tmp_cnt1 = GET_H_GR (FLD (f_operand1));
   11419   1.1  christos   tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
   11420   1.1  christos   tmp_tmpd = SRASI (EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
   11421   1.1  christos {
   11422   1.1  christos   SI tmp_oldregval;
   11423   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11424   1.1  christos   {
   11425   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11426   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11427   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11428   1.1  christos   }
   11429   1.1  christos }
   11430   1.1  christos {
   11431   1.1  christos   {
   11432   1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11433   1.1  christos     CPU (h_nbit) = opval;
   11434   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11435   1.1  christos   }
   11436   1.1  christos   {
   11437   1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11438   1.1  christos     CPU (h_zbit) = opval;
   11439   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11440   1.1  christos   }
   11441   1.1  christos SET_H_CBIT_MOVE (0);
   11442   1.1  christos SET_H_VBIT_MOVE (0);
   11443   1.1  christos {
   11444   1.1  christos   {
   11445   1.1  christos     BI opval = 0;
   11446   1.1  christos     CPU (h_xbit) = opval;
   11447   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11448   1.1  christos   }
   11449   1.1  christos   {
   11450   1.1  christos     BI opval = 0;
   11451   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11452   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11453   1.1  christos   }
   11454   1.1  christos }
   11455   1.1  christos }
   11456   1.1  christos }
   11457   1.1  christos 
   11458   1.1  christos #undef FLD
   11459   1.1  christos }
   11460   1.1  christos   NEXT (vpc);
   11461   1.1  christos 
   11462   1.1  christos   CASE (sem, INSN_ASRR_W_R) : /* asrr.w $Rs,$Rd */
   11463   1.1  christos {
   11464   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11465   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11466   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11467   1.1  christos   int UNUSED written = 0;
   11468   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11469   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11470   1.1  christos 
   11471   1.1  christos {
   11472   1.1  christos   HI tmp_tmpd;
   11473   1.1  christos   SI tmp_cnt1;
   11474   1.1  christos   SI tmp_cnt2;
   11475   1.1  christos   tmp_cnt1 = GET_H_GR (FLD (f_operand1));
   11476   1.1  christos   tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
   11477   1.1  christos   tmp_tmpd = SRASI (EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
   11478   1.1  christos {
   11479   1.1  christos   SI tmp_oldregval;
   11480   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11481   1.1  christos   {
   11482   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11483   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11484   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11485   1.1  christos   }
   11486   1.1  christos }
   11487   1.1  christos {
   11488   1.1  christos   {
   11489   1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11490   1.1  christos     CPU (h_nbit) = opval;
   11491   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11492   1.1  christos   }
   11493   1.1  christos   {
   11494   1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11495   1.1  christos     CPU (h_zbit) = opval;
   11496   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11497   1.1  christos   }
   11498   1.1  christos SET_H_CBIT_MOVE (0);
   11499   1.1  christos SET_H_VBIT_MOVE (0);
   11500   1.1  christos {
   11501   1.1  christos   {
   11502   1.1  christos     BI opval = 0;
   11503   1.1  christos     CPU (h_xbit) = opval;
   11504   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11505   1.1  christos   }
   11506   1.1  christos   {
   11507   1.1  christos     BI opval = 0;
   11508   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11509   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11510   1.1  christos   }
   11511   1.1  christos }
   11512   1.1  christos }
   11513   1.1  christos }
   11514   1.1  christos 
   11515   1.1  christos #undef FLD
   11516   1.1  christos }
   11517   1.1  christos   NEXT (vpc);
   11518   1.1  christos 
   11519   1.1  christos   CASE (sem, INSN_ASRR_D_R) : /* asrr.d $Rs,$Rd */
   11520   1.1  christos {
   11521   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11522   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11523   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11524   1.1  christos   int UNUSED written = 0;
   11525   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11526   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11527   1.1  christos 
   11528   1.1  christos {
   11529   1.1  christos   SI tmp_tmpd;
   11530   1.1  christos   SI tmp_cnt1;
   11531   1.1  christos   SI tmp_cnt2;
   11532   1.1  christos   tmp_cnt1 = GET_H_GR (FLD (f_operand1));
   11533   1.1  christos   tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
   11534   1.1  christos   tmp_tmpd = SRASI (EXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
   11535   1.1  christos   {
   11536   1.1  christos     SI opval = tmp_tmpd;
   11537   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11538   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11539   1.1  christos   }
   11540   1.1  christos {
   11541   1.1  christos   {
   11542   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11543   1.1  christos     CPU (h_nbit) = opval;
   11544   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11545   1.1  christos   }
   11546   1.1  christos   {
   11547   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11548   1.1  christos     CPU (h_zbit) = opval;
   11549   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11550   1.1  christos   }
   11551   1.1  christos SET_H_CBIT_MOVE (0);
   11552   1.1  christos SET_H_VBIT_MOVE (0);
   11553   1.1  christos {
   11554   1.1  christos   {
   11555   1.1  christos     BI opval = 0;
   11556   1.1  christos     CPU (h_xbit) = opval;
   11557   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11558   1.1  christos   }
   11559   1.1  christos   {
   11560   1.1  christos     BI opval = 0;
   11561   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11562   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11563   1.1  christos   }
   11564   1.1  christos }
   11565   1.1  christos }
   11566   1.1  christos }
   11567   1.1  christos 
   11568   1.1  christos #undef FLD
   11569   1.1  christos }
   11570   1.1  christos   NEXT (vpc);
   11571   1.1  christos 
   11572   1.1  christos   CASE (sem, INSN_ASRQ) : /* asrq $c,${Rd} */
   11573   1.1  christos {
   11574   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11575   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11576   1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   11577   1.1  christos   int UNUSED written = 0;
   11578   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11579   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11580   1.1  christos 
   11581   1.1  christos {
   11582   1.1  christos   SI tmp_tmpd;
   11583   1.1  christos   tmp_tmpd = SRASI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
   11584   1.1  christos   {
   11585   1.1  christos     SI opval = tmp_tmpd;
   11586   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11587   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11588   1.1  christos   }
   11589   1.1  christos {
   11590   1.1  christos   {
   11591   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11592   1.1  christos     CPU (h_nbit) = opval;
   11593   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11594   1.1  christos   }
   11595   1.1  christos   {
   11596   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11597   1.1  christos     CPU (h_zbit) = opval;
   11598   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11599   1.1  christos   }
   11600   1.1  christos SET_H_CBIT_MOVE (0);
   11601   1.1  christos SET_H_VBIT_MOVE (0);
   11602   1.1  christos {
   11603   1.1  christos   {
   11604   1.1  christos     BI opval = 0;
   11605   1.1  christos     CPU (h_xbit) = opval;
   11606   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11607   1.1  christos   }
   11608   1.1  christos   {
   11609   1.1  christos     BI opval = 0;
   11610   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11611   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11612   1.1  christos   }
   11613   1.1  christos }
   11614   1.1  christos }
   11615   1.1  christos }
   11616   1.1  christos 
   11617   1.1  christos #undef FLD
   11618   1.1  christos }
   11619   1.1  christos   NEXT (vpc);
   11620   1.1  christos 
   11621   1.1  christos   CASE (sem, INSN_LSRR_B_R) : /* lsrr.b $Rs,$Rd */
   11622   1.1  christos {
   11623   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11624   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11625   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11626   1.1  christos   int UNUSED written = 0;
   11627   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11628   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11629   1.1  christos 
   11630   1.1  christos {
   11631   1.1  christos   SI tmp_tmpd;
   11632   1.1  christos   SI tmp_cnt;
   11633   1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11634   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))));
   11635   1.1  christos {
   11636   1.1  christos   SI tmp_oldregval;
   11637   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11638   1.1  christos   {
   11639   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11640   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11641   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11642   1.1  christos   }
   11643   1.1  christos }
   11644   1.1  christos {
   11645   1.1  christos   {
   11646   1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11647   1.1  christos     CPU (h_nbit) = opval;
   11648   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11649   1.1  christos   }
   11650   1.1  christos   {
   11651   1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11652   1.1  christos     CPU (h_zbit) = opval;
   11653   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11654   1.1  christos   }
   11655   1.1  christos SET_H_CBIT_MOVE (0);
   11656   1.1  christos SET_H_VBIT_MOVE (0);
   11657   1.1  christos {
   11658   1.1  christos   {
   11659   1.1  christos     BI opval = 0;
   11660   1.1  christos     CPU (h_xbit) = opval;
   11661   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11662   1.1  christos   }
   11663   1.1  christos   {
   11664   1.1  christos     BI opval = 0;
   11665   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11666   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11667   1.1  christos   }
   11668   1.1  christos }
   11669   1.1  christos }
   11670   1.1  christos }
   11671   1.1  christos 
   11672   1.1  christos #undef FLD
   11673   1.1  christos }
   11674   1.1  christos   NEXT (vpc);
   11675   1.1  christos 
   11676   1.1  christos   CASE (sem, INSN_LSRR_W_R) : /* lsrr.w $Rs,$Rd */
   11677   1.1  christos {
   11678   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11679   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11680   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11681   1.1  christos   int UNUSED written = 0;
   11682   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11683   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11684   1.1  christos 
   11685   1.1  christos {
   11686   1.1  christos   SI tmp_tmpd;
   11687   1.1  christos   SI tmp_cnt;
   11688   1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11689   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))));
   11690   1.1  christos {
   11691   1.1  christos   SI tmp_oldregval;
   11692   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11693   1.1  christos   {
   11694   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11695   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11696   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11697   1.1  christos   }
   11698   1.1  christos }
   11699   1.1  christos {
   11700   1.1  christos   {
   11701   1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11702   1.1  christos     CPU (h_nbit) = opval;
   11703   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11704   1.1  christos   }
   11705   1.1  christos   {
   11706   1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11707   1.1  christos     CPU (h_zbit) = opval;
   11708   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11709   1.1  christos   }
   11710   1.1  christos SET_H_CBIT_MOVE (0);
   11711   1.1  christos SET_H_VBIT_MOVE (0);
   11712   1.1  christos {
   11713   1.1  christos   {
   11714   1.1  christos     BI opval = 0;
   11715   1.1  christos     CPU (h_xbit) = opval;
   11716   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11717   1.1  christos   }
   11718   1.1  christos   {
   11719   1.1  christos     BI opval = 0;
   11720   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11721   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11722   1.1  christos   }
   11723   1.1  christos }
   11724   1.1  christos }
   11725   1.1  christos }
   11726   1.1  christos 
   11727   1.1  christos #undef FLD
   11728   1.1  christos }
   11729   1.1  christos   NEXT (vpc);
   11730   1.1  christos 
   11731   1.1  christos   CASE (sem, INSN_LSRR_D_R) : /* lsrr.d $Rs,$Rd */
   11732   1.1  christos {
   11733   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11734   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11735   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11736   1.1  christos   int UNUSED written = 0;
   11737   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11738   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11739   1.1  christos 
   11740   1.1  christos {
   11741   1.1  christos   SI tmp_tmpd;
   11742   1.1  christos   SI tmp_cnt;
   11743   1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11744   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))));
   11745   1.1  christos   {
   11746   1.1  christos     SI opval = tmp_tmpd;
   11747   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11748   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11749   1.1  christos   }
   11750   1.1  christos {
   11751   1.1  christos   {
   11752   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11753   1.1  christos     CPU (h_nbit) = opval;
   11754   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11755   1.1  christos   }
   11756   1.1  christos   {
   11757   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11758   1.1  christos     CPU (h_zbit) = opval;
   11759   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11760   1.1  christos   }
   11761   1.1  christos SET_H_CBIT_MOVE (0);
   11762   1.1  christos SET_H_VBIT_MOVE (0);
   11763   1.1  christos {
   11764   1.1  christos   {
   11765   1.1  christos     BI opval = 0;
   11766   1.1  christos     CPU (h_xbit) = opval;
   11767   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11768   1.1  christos   }
   11769   1.1  christos   {
   11770   1.1  christos     BI opval = 0;
   11771   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11772   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11773   1.1  christos   }
   11774   1.1  christos }
   11775   1.1  christos }
   11776   1.1  christos }
   11777   1.1  christos 
   11778   1.1  christos #undef FLD
   11779   1.1  christos }
   11780   1.1  christos   NEXT (vpc);
   11781   1.1  christos 
   11782   1.1  christos   CASE (sem, INSN_LSRQ) : /* lsrq $c,${Rd} */
   11783   1.1  christos {
   11784   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11785   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11786   1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   11787   1.1  christos   int UNUSED written = 0;
   11788   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11789   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11790   1.1  christos 
   11791   1.1  christos {
   11792   1.1  christos   SI tmp_tmpd;
   11793   1.1  christos   tmp_tmpd = SRLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
   11794   1.1  christos   {
   11795   1.1  christos     SI opval = tmp_tmpd;
   11796   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11797   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11798   1.1  christos   }
   11799   1.1  christos {
   11800   1.1  christos   {
   11801   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11802   1.1  christos     CPU (h_nbit) = opval;
   11803   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11804   1.1  christos   }
   11805   1.1  christos   {
   11806   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11807   1.1  christos     CPU (h_zbit) = opval;
   11808   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11809   1.1  christos   }
   11810   1.1  christos SET_H_CBIT_MOVE (0);
   11811   1.1  christos SET_H_VBIT_MOVE (0);
   11812   1.1  christos {
   11813   1.1  christos   {
   11814   1.1  christos     BI opval = 0;
   11815   1.1  christos     CPU (h_xbit) = opval;
   11816   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11817   1.1  christos   }
   11818   1.1  christos   {
   11819   1.1  christos     BI opval = 0;
   11820   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11821   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11822   1.1  christos   }
   11823   1.1  christos }
   11824   1.1  christos }
   11825   1.1  christos }
   11826   1.1  christos 
   11827   1.1  christos #undef FLD
   11828   1.1  christos }
   11829   1.1  christos   NEXT (vpc);
   11830   1.1  christos 
   11831   1.1  christos   CASE (sem, INSN_LSLR_B_R) : /* lslr.b $Rs,$Rd */
   11832   1.1  christos {
   11833   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11834   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11835   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11836   1.1  christos   int UNUSED written = 0;
   11837   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11838   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11839   1.1  christos 
   11840   1.1  christos {
   11841   1.1  christos   SI tmp_tmpd;
   11842   1.1  christos   SI tmp_cnt;
   11843   1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11844   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))));
   11845   1.1  christos {
   11846   1.1  christos   SI tmp_oldregval;
   11847   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11848   1.1  christos   {
   11849   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
   11850   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11851   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11852   1.1  christos   }
   11853   1.1  christos }
   11854   1.1  christos {
   11855   1.1  christos   {
   11856   1.1  christos     BI opval = LTQI (tmp_tmpd, 0);
   11857   1.1  christos     CPU (h_nbit) = opval;
   11858   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11859   1.1  christos   }
   11860   1.1  christos   {
   11861   1.1  christos     BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11862   1.1  christos     CPU (h_zbit) = opval;
   11863   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11864   1.1  christos   }
   11865   1.1  christos SET_H_CBIT_MOVE (0);
   11866   1.1  christos SET_H_VBIT_MOVE (0);
   11867   1.1  christos {
   11868   1.1  christos   {
   11869   1.1  christos     BI opval = 0;
   11870   1.1  christos     CPU (h_xbit) = opval;
   11871   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11872   1.1  christos   }
   11873   1.1  christos   {
   11874   1.1  christos     BI opval = 0;
   11875   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11876   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11877   1.1  christos   }
   11878   1.1  christos }
   11879   1.1  christos }
   11880   1.1  christos }
   11881   1.1  christos 
   11882   1.1  christos #undef FLD
   11883   1.1  christos }
   11884   1.1  christos   NEXT (vpc);
   11885   1.1  christos 
   11886   1.1  christos   CASE (sem, INSN_LSLR_W_R) : /* lslr.w $Rs,$Rd */
   11887   1.1  christos {
   11888   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11889   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11890   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11891   1.1  christos   int UNUSED written = 0;
   11892   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11893   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11894   1.1  christos 
   11895   1.1  christos {
   11896   1.1  christos   SI tmp_tmpd;
   11897   1.1  christos   SI tmp_cnt;
   11898   1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11899   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))));
   11900   1.1  christos {
   11901   1.1  christos   SI tmp_oldregval;
   11902   1.1  christos   tmp_oldregval = GET_H_RAW_GR_ACR (FLD (f_operand2));
   11903   1.1  christos   {
   11904   1.1  christos     SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
   11905   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11906   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11907   1.1  christos   }
   11908   1.1  christos }
   11909   1.1  christos {
   11910   1.1  christos   {
   11911   1.1  christos     BI opval = LTHI (tmp_tmpd, 0);
   11912   1.1  christos     CPU (h_nbit) = opval;
   11913   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11914   1.1  christos   }
   11915   1.1  christos   {
   11916   1.1  christos     BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11917   1.1  christos     CPU (h_zbit) = opval;
   11918   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11919   1.1  christos   }
   11920   1.1  christos SET_H_CBIT_MOVE (0);
   11921   1.1  christos SET_H_VBIT_MOVE (0);
   11922   1.1  christos {
   11923   1.1  christos   {
   11924   1.1  christos     BI opval = 0;
   11925   1.1  christos     CPU (h_xbit) = opval;
   11926   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11927   1.1  christos   }
   11928   1.1  christos   {
   11929   1.1  christos     BI opval = 0;
   11930   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11931   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11932   1.1  christos   }
   11933   1.1  christos }
   11934   1.1  christos }
   11935   1.1  christos }
   11936   1.1  christos 
   11937   1.1  christos #undef FLD
   11938   1.1  christos }
   11939   1.1  christos   NEXT (vpc);
   11940   1.1  christos 
   11941   1.1  christos   CASE (sem, INSN_LSLR_D_R) : /* lslr.d $Rs,$Rd */
   11942   1.1  christos {
   11943   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11944   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11945   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   11946   1.1  christos   int UNUSED written = 0;
   11947   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11948   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   11949   1.1  christos 
   11950   1.1  christos {
   11951   1.1  christos   SI tmp_tmpd;
   11952   1.1  christos   SI tmp_cnt;
   11953   1.1  christos   tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
   11954   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))));
   11955   1.1  christos   {
   11956   1.1  christos     SI opval = tmp_tmpd;
   11957   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   11958   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   11959   1.1  christos   }
   11960   1.1  christos {
   11961   1.1  christos   {
   11962   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   11963   1.1  christos     CPU (h_nbit) = opval;
   11964   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   11965   1.1  christos   }
   11966   1.1  christos   {
   11967   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   11968   1.1  christos     CPU (h_zbit) = opval;
   11969   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   11970   1.1  christos   }
   11971   1.1  christos SET_H_CBIT_MOVE (0);
   11972   1.1  christos SET_H_VBIT_MOVE (0);
   11973   1.1  christos {
   11974   1.1  christos   {
   11975   1.1  christos     BI opval = 0;
   11976   1.1  christos     CPU (h_xbit) = opval;
   11977   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   11978   1.1  christos   }
   11979   1.1  christos   {
   11980   1.1  christos     BI opval = 0;
   11981   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   11982   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   11983   1.1  christos   }
   11984   1.1  christos }
   11985   1.1  christos }
   11986   1.1  christos }
   11987   1.1  christos 
   11988   1.1  christos #undef FLD
   11989   1.1  christos }
   11990   1.1  christos   NEXT (vpc);
   11991   1.1  christos 
   11992   1.1  christos   CASE (sem, INSN_LSLQ) : /* lslq $c,${Rd} */
   11993   1.1  christos {
   11994   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   11995   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   11996   1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   11997   1.1  christos   int UNUSED written = 0;
   11998   1.1  christos   IADDR UNUSED pc = abuf->addr;
   11999   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12000   1.1  christos 
   12001   1.1  christos {
   12002   1.1  christos   SI tmp_tmpd;
   12003   1.1  christos   tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
   12004   1.1  christos   {
   12005   1.1  christos     SI opval = tmp_tmpd;
   12006   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   12007   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   12008   1.1  christos   }
   12009   1.1  christos {
   12010   1.1  christos   {
   12011   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   12012   1.1  christos     CPU (h_nbit) = opval;
   12013   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12014   1.1  christos   }
   12015   1.1  christos   {
   12016   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   12017   1.1  christos     CPU (h_zbit) = opval;
   12018   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12019   1.1  christos   }
   12020   1.1  christos SET_H_CBIT_MOVE (0);
   12021   1.1  christos SET_H_VBIT_MOVE (0);
   12022   1.1  christos {
   12023   1.1  christos   {
   12024   1.1  christos     BI opval = 0;
   12025   1.1  christos     CPU (h_xbit) = opval;
   12026   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12027   1.1  christos   }
   12028   1.1  christos   {
   12029   1.1  christos     BI opval = 0;
   12030   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12031   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12032   1.1  christos   }
   12033   1.1  christos }
   12034   1.1  christos }
   12035   1.1  christos }
   12036   1.1  christos 
   12037   1.1  christos #undef FLD
   12038   1.1  christos }
   12039   1.1  christos   NEXT (vpc);
   12040   1.1  christos 
   12041   1.1  christos   CASE (sem, INSN_BTST) : /* $Rs,$Rd */
   12042   1.1  christos {
   12043   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12044   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12045   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   12046   1.1  christos   int UNUSED written = 0;
   12047   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12048   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12049   1.1  christos 
   12050   1.1  christos {
   12051   1.1  christos   SI tmp_tmpd;
   12052   1.1  christos   SI tmp_cnt;
   12053  1.11  christos   tmp_cnt = SUBSI (31, ANDSI (GET_H_GR (FLD (f_operand1)), 31));
   12054  1.11  christos   tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), tmp_cnt);
   12055   1.1  christos {
   12056   1.1  christos   {
   12057   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   12058   1.1  christos     CPU (h_nbit) = opval;
   12059   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12060   1.1  christos   }
   12061   1.1  christos   {
   12062   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   12063   1.1  christos     CPU (h_zbit) = opval;
   12064   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12065   1.1  christos   }
   12066   1.1  christos SET_H_CBIT_MOVE (0);
   12067   1.1  christos SET_H_VBIT_MOVE (0);
   12068   1.1  christos {
   12069   1.1  christos   {
   12070   1.1  christos     BI opval = 0;
   12071   1.1  christos     CPU (h_xbit) = opval;
   12072   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12073   1.1  christos   }
   12074   1.1  christos   {
   12075   1.1  christos     BI opval = 0;
   12076   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12077   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12078   1.1  christos   }
   12079   1.1  christos }
   12080   1.1  christos }
   12081   1.1  christos }
   12082   1.1  christos 
   12083   1.1  christos #undef FLD
   12084   1.1  christos }
   12085   1.1  christos   NEXT (vpc);
   12086   1.1  christos 
   12087   1.1  christos   CASE (sem, INSN_BTSTQ) : /* btstq $c,${Rd} */
   12088   1.1  christos {
   12089   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12090   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12091   1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   12092   1.1  christos   int UNUSED written = 0;
   12093   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12094   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12095   1.1  christos 
   12096   1.1  christos {
   12097   1.1  christos   SI tmp_tmpd;
   12098   1.1  christos   tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, FLD (f_u5)));
   12099   1.1  christos {
   12100   1.1  christos   {
   12101   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   12102   1.1  christos     CPU (h_nbit) = opval;
   12103   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12104   1.1  christos   }
   12105   1.1  christos   {
   12106   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   12107   1.1  christos     CPU (h_zbit) = opval;
   12108   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12109   1.1  christos   }
   12110   1.1  christos SET_H_CBIT_MOVE (0);
   12111   1.1  christos SET_H_VBIT_MOVE (0);
   12112   1.1  christos {
   12113   1.1  christos   {
   12114   1.1  christos     BI opval = 0;
   12115   1.1  christos     CPU (h_xbit) = opval;
   12116   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12117   1.1  christos   }
   12118   1.1  christos   {
   12119   1.1  christos     BI opval = 0;
   12120   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12121   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12122   1.1  christos   }
   12123   1.1  christos }
   12124   1.1  christos }
   12125   1.1  christos }
   12126   1.1  christos 
   12127   1.1  christos #undef FLD
   12128   1.1  christos }
   12129   1.1  christos   NEXT (vpc);
   12130   1.1  christos 
   12131   1.1  christos   CASE (sem, INSN_SETF) : /* setf ${list-of-flags} */
   12132   1.1  christos {
   12133   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12134   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12135   1.1  christos #define FLD(f) abuf->fields.sfmt_setf.f
   12136   1.1  christos   int UNUSED written = 0;
   12137   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12138   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12139   1.1  christos 
   12140   1.1  christos {
   12141   1.1  christos   SI tmp_tmp;
   12142   1.1  christos   tmp_tmp = FLD (f_dstsrc);
   12143   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
   12144   1.1  christos   {
   12145   1.1  christos     BI opval = 1;
   12146   1.1  christos     CPU (h_cbit) = opval;
   12147   1.1  christos     written |= (1 << 1);
   12148   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   12149   1.1  christos   }
   12150   1.1  christos }
   12151   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
   12152   1.1  christos   {
   12153   1.1  christos     BI opval = 1;
   12154   1.1  christos     CPU (h_vbit) = opval;
   12155   1.1  christos     written |= (1 << 7);
   12156   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   12157   1.1  christos   }
   12158   1.1  christos }
   12159   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
   12160   1.1  christos   {
   12161   1.1  christos     BI opval = 1;
   12162   1.1  christos     CPU (h_zbit) = opval;
   12163   1.1  christos     written |= (1 << 9);
   12164   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12165   1.1  christos   }
   12166   1.1  christos }
   12167   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
   12168   1.1  christos   {
   12169   1.1  christos     BI opval = 1;
   12170   1.1  christos     CPU (h_nbit) = opval;
   12171   1.1  christos     written |= (1 << 3);
   12172   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12173   1.1  christos   }
   12174   1.1  christos }
   12175   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
   12176   1.1  christos   {
   12177   1.1  christos     BI opval = 1;
   12178   1.1  christos     CPU (h_xbit) = opval;
   12179   1.1  christos     written |= (1 << 8);
   12180   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12181   1.1  christos   }
   12182   1.1  christos }
   12183   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
   12184   1.1  christos   {
   12185   1.1  christos     BI opval = 1;
   12186   1.1  christos     SET_H_IBIT (opval);
   12187   1.1  christos     written |= (1 << 2);
   12188   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
   12189   1.1  christos   }
   12190   1.1  christos }
   12191   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
   12192   1.1  christos   {
   12193   1.1  christos     BI opval = 1;
   12194   1.1  christos     SET_H_UBIT (opval);
   12195   1.1  christos     written |= (1 << 6);
   12196   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
   12197   1.1  christos   }
   12198   1.1  christos }
   12199   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
   12200   1.1  christos   {
   12201   1.1  christos     BI opval = 1;
   12202   1.1  christos     CPU (h_pbit) = opval;
   12203   1.1  christos     written |= (1 << 4);
   12204   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
   12205   1.1  christos   }
   12206   1.1  christos }
   12207   1.1  christos   {
   12208   1.1  christos     BI opval = 0;
   12209   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12210   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12211   1.1  christos   }
   12212   1.1  christos if (EQSI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
   12213   1.1  christos   {
   12214   1.1  christos     BI opval = 0;
   12215   1.1  christos     CPU (h_xbit) = opval;
   12216   1.1  christos     written |= (1 << 8);
   12217   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12218   1.1  christos   }
   12219   1.1  christos }
   12220   1.1  christos }
   12221   1.1  christos 
   12222   1.1  christos   abuf->written = written;
   12223   1.1  christos #undef FLD
   12224   1.1  christos }
   12225   1.1  christos   NEXT (vpc);
   12226   1.1  christos 
   12227   1.1  christos   CASE (sem, INSN_CLEARF) : /* clearf ${list-of-flags} */
   12228   1.1  christos {
   12229   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12230   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12231   1.1  christos #define FLD(f) abuf->fields.sfmt_setf.f
   12232   1.1  christos   int UNUSED written = 0;
   12233   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12234   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12235   1.1  christos 
   12236   1.1  christos {
   12237   1.1  christos   SI tmp_tmp;
   12238   1.1  christos   tmp_tmp = FLD (f_dstsrc);
   12239   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
   12240   1.1  christos   {
   12241   1.1  christos     BI opval = 0;
   12242   1.1  christos     CPU (h_cbit) = opval;
   12243   1.1  christos     written |= (1 << 1);
   12244   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
   12245   1.1  christos   }
   12246   1.1  christos }
   12247   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
   12248   1.1  christos   {
   12249   1.1  christos     BI opval = 0;
   12250   1.1  christos     CPU (h_vbit) = opval;
   12251   1.1  christos     written |= (1 << 7);
   12252   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
   12253   1.1  christos   }
   12254   1.1  christos }
   12255   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
   12256   1.1  christos   {
   12257   1.1  christos     BI opval = 0;
   12258   1.1  christos     CPU (h_zbit) = opval;
   12259   1.1  christos     written |= (1 << 9);
   12260   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   12261   1.1  christos   }
   12262   1.1  christos }
   12263   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
   12264   1.1  christos   {
   12265   1.1  christos     BI opval = 0;
   12266   1.1  christos     CPU (h_nbit) = opval;
   12267   1.1  christos     written |= (1 << 3);
   12268   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   12269   1.1  christos   }
   12270   1.1  christos }
   12271   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
   12272   1.1  christos   {
   12273   1.1  christos     BI opval = 0;
   12274   1.1  christos     CPU (h_xbit) = opval;
   12275   1.1  christos     written |= (1 << 8);
   12276   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12277   1.1  christos   }
   12278   1.1  christos }
   12279   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
   12280   1.1  christos   {
   12281   1.1  christos     BI opval = 0;
   12282   1.1  christos     SET_H_IBIT (opval);
   12283   1.1  christos     written |= (1 << 2);
   12284   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
   12285   1.1  christos   }
   12286   1.1  christos }
   12287   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
   12288   1.1  christos   {
   12289   1.1  christos     BI opval = 0;
   12290   1.1  christos     SET_H_UBIT (opval);
   12291   1.1  christos     written |= (1 << 6);
   12292   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
   12293   1.1  christos   }
   12294   1.1  christos }
   12295   1.1  christos if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
   12296   1.1  christos   {
   12297   1.1  christos     BI opval = 0;
   12298   1.1  christos     CPU (h_pbit) = opval;
   12299   1.1  christos     written |= (1 << 4);
   12300   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
   12301   1.1  christos   }
   12302   1.1  christos }
   12303   1.1  christos {
   12304   1.1  christos   {
   12305   1.1  christos     BI opval = 0;
   12306   1.1  christos     CPU (h_xbit) = opval;
   12307   1.1  christos     written |= (1 << 8);
   12308   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12309   1.1  christos   }
   12310   1.1  christos   {
   12311   1.1  christos     BI opval = 0;
   12312   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12313   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12314   1.1  christos   }
   12315   1.1  christos }
   12316   1.1  christos }
   12317   1.1  christos 
   12318   1.1  christos   abuf->written = written;
   12319   1.1  christos #undef FLD
   12320   1.1  christos }
   12321   1.1  christos   NEXT (vpc);
   12322   1.1  christos 
   12323   1.1  christos   CASE (sem, INSN_RFE) : /* rfe */
   12324   1.1  christos {
   12325   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12326   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12327   1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   12328   1.1  christos   int UNUSED written = 0;
   12329   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12330   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12331   1.1  christos 
   12332   1.1  christos {
   12333   1.1  christos   USI tmp_oldccs;
   12334   1.1  christos   USI tmp_samebits;
   12335   1.1  christos   USI tmp_shiftbits;
   12336   1.1  christos   USI tmp_keepmask;
   12337   1.1  christos   BI tmp_p1;
   12338   1.1  christos   tmp_oldccs = GET_H_SR (((UINT) 13));
   12339   1.1  christos   tmp_keepmask = 0xc0000000;
   12340   1.1  christos   tmp_samebits = ANDSI (tmp_oldccs, tmp_keepmask);
   12341   1.1  christos   tmp_shiftbits = ANDSI (SRLSI (ANDSI (tmp_oldccs, 1073609728), 10), INVSI (tmp_keepmask));
   12342   1.1  christos   tmp_p1 = NESI (0, ANDSI (tmp_oldccs, 131072));
   12343   1.1  christos   {
   12344   1.1  christos     SI opval = ORSI (ORSI (tmp_samebits, tmp_shiftbits), ((ANDBI (CPU (h_rbit), NOTBI (tmp_p1))) ? (0) : (128)));
   12345   1.1  christos     SET_H_SR (((UINT) 13), opval);
   12346   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12347   1.1  christos   }
   12348   1.1  christos }
   12349   1.1  christos 
   12350   1.1  christos #undef FLD
   12351   1.1  christos }
   12352   1.1  christos   NEXT (vpc);
   12353   1.1  christos 
   12354   1.1  christos   CASE (sem, INSN_SFE) : /* sfe */
   12355   1.1  christos {
   12356   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12357   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12358   1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   12359   1.1  christos   int UNUSED written = 0;
   12360   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12361   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12362   1.1  christos 
   12363   1.1  christos {
   12364   1.1  christos   SI tmp_oldccs;
   12365   1.1  christos   SI tmp_savemask;
   12366   1.1  christos   tmp_savemask = 0xc0000000;
   12367   1.1  christos   tmp_oldccs = GET_H_SR (((UINT) 13));
   12368   1.1  christos   {
   12369   1.1  christos     SI opval = ORSI (ANDSI (tmp_savemask, tmp_oldccs), ANDSI (INVSI (tmp_savemask), SLLSI (tmp_oldccs, 10)));
   12370   1.1  christos     SET_H_SR (((UINT) 13), opval);
   12371   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12372   1.1  christos   }
   12373   1.1  christos }
   12374   1.1  christos 
   12375   1.1  christos #undef FLD
   12376   1.1  christos }
   12377   1.1  christos   NEXT (vpc);
   12378   1.1  christos 
   12379   1.1  christos   CASE (sem, INSN_RFG) : /* rfg */
   12380   1.1  christos {
   12381   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12382   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12383   1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   12384   1.1  christos   int UNUSED written = 0;
   12385   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12386   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12387   1.1  christos 
   12388   1.1  christos crisv32f_rfg_handler (current_cpu, pc);
   12389   1.1  christos 
   12390   1.1  christos #undef FLD
   12391   1.1  christos }
   12392   1.1  christos   NEXT (vpc);
   12393   1.1  christos 
   12394   1.1  christos   CASE (sem, INSN_RFN) : /* rfn */
   12395   1.1  christos {
   12396   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12397   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12398   1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   12399   1.1  christos   int UNUSED written = 0;
   12400   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12401   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12402   1.1  christos 
   12403   1.1  christos {
   12404   1.1  christos {
   12405   1.1  christos   USI tmp_oldccs;
   12406   1.1  christos   USI tmp_samebits;
   12407   1.1  christos   USI tmp_shiftbits;
   12408   1.1  christos   USI tmp_keepmask;
   12409   1.1  christos   BI tmp_p1;
   12410   1.1  christos   tmp_oldccs = GET_H_SR (((UINT) 13));
   12411   1.1  christos   tmp_keepmask = 0xc0000000;
   12412   1.1  christos   tmp_samebits = ANDSI (tmp_oldccs, tmp_keepmask);
   12413   1.1  christos   tmp_shiftbits = ANDSI (SRLSI (ANDSI (tmp_oldccs, 1073609728), 10), INVSI (tmp_keepmask));
   12414   1.1  christos   tmp_p1 = NESI (0, ANDSI (tmp_oldccs, 131072));
   12415   1.1  christos   {
   12416   1.1  christos     SI opval = ORSI (ORSI (tmp_samebits, tmp_shiftbits), ((ANDBI (CPU (h_rbit), NOTBI (tmp_p1))) ? (0) : (128)));
   12417   1.1  christos     SET_H_SR (((UINT) 13), opval);
   12418   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12419   1.1  christos   }
   12420   1.1  christos }
   12421   1.1  christos   {
   12422   1.1  christos     BI opval = 1;
   12423   1.1  christos     SET_H_MBIT (opval);
   12424   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "mbit", 'x', opval);
   12425   1.1  christos   }
   12426   1.1  christos }
   12427   1.1  christos 
   12428   1.1  christos #undef FLD
   12429   1.1  christos }
   12430   1.1  christos   NEXT (vpc);
   12431   1.1  christos 
   12432   1.1  christos   CASE (sem, INSN_HALT) : /* halt */
   12433   1.1  christos {
   12434   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12435   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12436   1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   12437   1.1  christos   int UNUSED written = 0;
   12438   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12439   1.1  christos   SEM_BRANCH_INIT
   12440   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12441   1.1  christos 
   12442   1.1  christos   {
   12443   1.1  christos     USI opval = crisv32f_halt_handler (current_cpu, pc);
   12444   1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12445   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12446   1.1  christos   }
   12447   1.1  christos 
   12448   1.1  christos   SEM_BRANCH_FINI (vpc);
   12449   1.1  christos #undef FLD
   12450   1.1  christos }
   12451   1.1  christos   NEXT (vpc);
   12452   1.1  christos 
   12453   1.1  christos   CASE (sem, INSN_BCC_B) : /* b${cc} ${o-pcrel} */
   12454   1.1  christos {
   12455   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12456   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12457   1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
   12458   1.1  christos   int UNUSED written = 0;
   12459   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12460   1.1  christos   SEM_BRANCH_INIT
   12461   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12462   1.1  christos 
   12463   1.1  christos {
   12464   1.1  christos   BI tmp_truthval;
   12465   1.1  christos   tmp_truthval = ({   SI tmp_tmpcond;
   12466   1.1  christos   BI tmp_condres;
   12467   1.1  christos   tmp_tmpcond = FLD (f_operand2);
   12468   1.1  christos ; if (EQSI (tmp_tmpcond, 0)) {
   12469   1.1  christos   tmp_condres = NOTBI (CPU (h_cbit));
   12470   1.1  christos }
   12471   1.1  christos  else if (EQSI (tmp_tmpcond, 1)) {
   12472   1.1  christos   tmp_condres = CPU (h_cbit);
   12473   1.1  christos }
   12474   1.1  christos  else if (EQSI (tmp_tmpcond, 2)) {
   12475   1.1  christos   tmp_condres = NOTBI (CPU (h_zbit));
   12476   1.1  christos }
   12477   1.1  christos  else if (EQSI (tmp_tmpcond, 3)) {
   12478   1.1  christos   tmp_condres = CPU (h_zbit);
   12479   1.1  christos }
   12480   1.1  christos  else if (EQSI (tmp_tmpcond, 4)) {
   12481   1.1  christos   tmp_condres = NOTBI (CPU (h_vbit));
   12482   1.1  christos }
   12483   1.1  christos  else if (EQSI (tmp_tmpcond, 5)) {
   12484   1.1  christos   tmp_condres = CPU (h_vbit);
   12485   1.1  christos }
   12486   1.1  christos  else if (EQSI (tmp_tmpcond, 6)) {
   12487   1.1  christos   tmp_condres = NOTBI (CPU (h_nbit));
   12488   1.1  christos }
   12489   1.1  christos  else if (EQSI (tmp_tmpcond, 7)) {
   12490   1.1  christos   tmp_condres = CPU (h_nbit);
   12491   1.1  christos }
   12492   1.1  christos  else if (EQSI (tmp_tmpcond, 8)) {
   12493   1.1  christos   tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
   12494   1.1  christos }
   12495   1.1  christos  else if (EQSI (tmp_tmpcond, 9)) {
   12496   1.1  christos   tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
   12497   1.1  christos }
   12498   1.1  christos  else if (EQSI (tmp_tmpcond, 10)) {
   12499   1.1  christos   tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
   12500   1.1  christos }
   12501   1.1  christos  else if (EQSI (tmp_tmpcond, 11)) {
   12502   1.1  christos   tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
   12503   1.1  christos }
   12504   1.1  christos  else if (EQSI (tmp_tmpcond, 12)) {
   12505   1.1  christos   tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
   12506   1.1  christos }
   12507   1.1  christos  else if (EQSI (tmp_tmpcond, 13)) {
   12508   1.1  christos   tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
   12509   1.1  christos }
   12510   1.1  christos  else if (EQSI (tmp_tmpcond, 14)) {
   12511   1.1  christos   tmp_condres = 1;
   12512   1.1  christos }
   12513   1.1  christos  else if (EQSI (tmp_tmpcond, 15)) {
   12514   1.1  christos   tmp_condres = CPU (h_pbit);
   12515   1.1  christos }
   12516  1.11  christos  else {
   12517  1.11  christos cgen_rtx_error (current_cpu, "Unknown condition code");
   12518  1.11  christos }
   12519   1.1  christos ; tmp_condres; });
   12520   1.1  christos crisv32f_branch_taken (current_cpu, pc, FLD (i_o_pcrel), tmp_truthval);
   12521   1.1  christos {
   12522   1.1  christos   {
   12523   1.1  christos     BI opval = 0;
   12524   1.1  christos     CPU (h_xbit) = opval;
   12525   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12526   1.1  christos   }
   12527   1.1  christos   {
   12528   1.1  christos     BI opval = 0;
   12529   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12530   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12531   1.1  christos   }
   12532   1.1  christos }
   12533   1.1  christos if (tmp_truthval) {
   12534   1.1  christos {
   12535   1.1  christos   {
   12536   1.1  christos     USI opval = FLD (i_o_pcrel);
   12537   1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12538   1.1  christos     written |= (1 << 8);
   12539   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12540   1.1  christos   }
   12541   1.1  christos }
   12542   1.1  christos }
   12543   1.1  christos }
   12544   1.1  christos 
   12545   1.1  christos   abuf->written = written;
   12546   1.1  christos   SEM_BRANCH_FINI (vpc);
   12547   1.1  christos #undef FLD
   12548   1.1  christos }
   12549   1.1  christos   NEXT (vpc);
   12550   1.1  christos 
   12551   1.1  christos   CASE (sem, INSN_BA_B) : /* ba ${o-pcrel} */
   12552   1.1  christos {
   12553   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12554   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12555   1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
   12556   1.1  christos   int UNUSED written = 0;
   12557   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12558   1.1  christos   SEM_BRANCH_INIT
   12559   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12560   1.1  christos 
   12561   1.1  christos {
   12562   1.1  christos {
   12563   1.1  christos   {
   12564   1.1  christos     BI opval = 0;
   12565   1.1  christos     CPU (h_xbit) = opval;
   12566   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12567   1.1  christos   }
   12568   1.1  christos   {
   12569   1.1  christos     BI opval = 0;
   12570   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12571   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12572   1.1  christos   }
   12573   1.1  christos }
   12574   1.1  christos {
   12575   1.1  christos   {
   12576   1.1  christos     USI opval = FLD (i_o_pcrel);
   12577   1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12578   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12579   1.1  christos   }
   12580   1.1  christos }
   12581   1.1  christos }
   12582   1.1  christos 
   12583   1.1  christos   SEM_BRANCH_FINI (vpc);
   12584   1.1  christos #undef FLD
   12585   1.1  christos }
   12586   1.1  christos   NEXT (vpc);
   12587   1.1  christos 
   12588   1.1  christos   CASE (sem, INSN_BCC_W) : /* b${cc} ${o-word-pcrel} */
   12589   1.1  christos {
   12590   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12591   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12592   1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
   12593   1.1  christos   int UNUSED written = 0;
   12594   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12595   1.1  christos   SEM_BRANCH_INIT
   12596   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   12597   1.1  christos 
   12598   1.1  christos {
   12599   1.1  christos   BI tmp_truthval;
   12600   1.1  christos   tmp_truthval = ({   SI tmp_tmpcond;
   12601   1.1  christos   BI tmp_condres;
   12602   1.1  christos   tmp_tmpcond = FLD (f_operand2);
   12603   1.1  christos ; if (EQSI (tmp_tmpcond, 0)) {
   12604   1.1  christos   tmp_condres = NOTBI (CPU (h_cbit));
   12605   1.1  christos }
   12606   1.1  christos  else if (EQSI (tmp_tmpcond, 1)) {
   12607   1.1  christos   tmp_condres = CPU (h_cbit);
   12608   1.1  christos }
   12609   1.1  christos  else if (EQSI (tmp_tmpcond, 2)) {
   12610   1.1  christos   tmp_condres = NOTBI (CPU (h_zbit));
   12611   1.1  christos }
   12612   1.1  christos  else if (EQSI (tmp_tmpcond, 3)) {
   12613   1.1  christos   tmp_condres = CPU (h_zbit);
   12614   1.1  christos }
   12615   1.1  christos  else if (EQSI (tmp_tmpcond, 4)) {
   12616   1.1  christos   tmp_condres = NOTBI (CPU (h_vbit));
   12617   1.1  christos }
   12618   1.1  christos  else if (EQSI (tmp_tmpcond, 5)) {
   12619   1.1  christos   tmp_condres = CPU (h_vbit);
   12620   1.1  christos }
   12621   1.1  christos  else if (EQSI (tmp_tmpcond, 6)) {
   12622   1.1  christos   tmp_condres = NOTBI (CPU (h_nbit));
   12623   1.1  christos }
   12624   1.1  christos  else if (EQSI (tmp_tmpcond, 7)) {
   12625   1.1  christos   tmp_condres = CPU (h_nbit);
   12626   1.1  christos }
   12627   1.1  christos  else if (EQSI (tmp_tmpcond, 8)) {
   12628   1.1  christos   tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
   12629   1.1  christos }
   12630   1.1  christos  else if (EQSI (tmp_tmpcond, 9)) {
   12631   1.1  christos   tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
   12632   1.1  christos }
   12633   1.1  christos  else if (EQSI (tmp_tmpcond, 10)) {
   12634   1.1  christos   tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
   12635   1.1  christos }
   12636   1.1  christos  else if (EQSI (tmp_tmpcond, 11)) {
   12637   1.1  christos   tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
   12638   1.1  christos }
   12639   1.1  christos  else if (EQSI (tmp_tmpcond, 12)) {
   12640   1.1  christos   tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
   12641   1.1  christos }
   12642   1.1  christos  else if (EQSI (tmp_tmpcond, 13)) {
   12643   1.1  christos   tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
   12644   1.1  christos }
   12645   1.1  christos  else if (EQSI (tmp_tmpcond, 14)) {
   12646   1.1  christos   tmp_condres = 1;
   12647   1.1  christos }
   12648   1.1  christos  else if (EQSI (tmp_tmpcond, 15)) {
   12649   1.1  christos   tmp_condres = CPU (h_pbit);
   12650   1.1  christos }
   12651  1.11  christos  else {
   12652  1.11  christos cgen_rtx_error (current_cpu, "Unknown condition code");
   12653  1.11  christos }
   12654   1.1  christos ; tmp_condres; });
   12655   1.1  christos crisv32f_branch_taken (current_cpu, pc, FLD (i_o_word_pcrel), tmp_truthval);
   12656   1.1  christos {
   12657   1.1  christos   {
   12658   1.1  christos     BI opval = 0;
   12659   1.1  christos     CPU (h_xbit) = opval;
   12660   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12661   1.1  christos   }
   12662   1.1  christos   {
   12663   1.1  christos     BI opval = 0;
   12664   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12665   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12666   1.1  christos   }
   12667   1.1  christos }
   12668   1.1  christos if (tmp_truthval) {
   12669   1.1  christos {
   12670   1.1  christos   {
   12671   1.1  christos     USI opval = FLD (i_o_word_pcrel);
   12672   1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12673   1.1  christos     written |= (1 << 8);
   12674   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12675   1.1  christos   }
   12676   1.1  christos }
   12677   1.1  christos }
   12678   1.1  christos }
   12679   1.1  christos 
   12680   1.1  christos   abuf->written = written;
   12681   1.1  christos   SEM_BRANCH_FINI (vpc);
   12682   1.1  christos #undef FLD
   12683   1.1  christos }
   12684   1.1  christos   NEXT (vpc);
   12685   1.1  christos 
   12686   1.1  christos   CASE (sem, INSN_BA_W) : /* ba ${o-word-pcrel} */
   12687   1.1  christos {
   12688   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12689   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12690   1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
   12691   1.1  christos   int UNUSED written = 0;
   12692   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12693   1.1  christos   SEM_BRANCH_INIT
   12694   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   12695   1.1  christos 
   12696   1.1  christos {
   12697   1.1  christos {
   12698   1.1  christos   {
   12699   1.1  christos     BI opval = 0;
   12700   1.1  christos     CPU (h_xbit) = opval;
   12701   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12702   1.1  christos   }
   12703   1.1  christos   {
   12704   1.1  christos     BI opval = 0;
   12705   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12706   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12707   1.1  christos   }
   12708   1.1  christos }
   12709   1.1  christos {
   12710   1.1  christos   {
   12711   1.1  christos     USI opval = FLD (i_o_word_pcrel);
   12712   1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12713   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12714   1.1  christos   }
   12715   1.1  christos }
   12716   1.1  christos }
   12717   1.1  christos 
   12718   1.1  christos   SEM_BRANCH_FINI (vpc);
   12719   1.1  christos #undef FLD
   12720   1.1  christos }
   12721   1.1  christos   NEXT (vpc);
   12722   1.1  christos 
   12723   1.1  christos   CASE (sem, INSN_JAS_R) : /* jas ${Rs},${Pd} */
   12724   1.1  christos {
   12725   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12726   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12727   1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   12728   1.1  christos   int UNUSED written = 0;
   12729   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12730   1.1  christos   SEM_BRANCH_INIT
   12731   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12732   1.1  christos 
   12733   1.1  christos {
   12734   1.1  christos {
   12735   1.1  christos   {
   12736   1.1  christos     BI opval = 0;
   12737   1.1  christos     CPU (h_xbit) = opval;
   12738   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12739   1.1  christos   }
   12740   1.1  christos   {
   12741   1.1  christos     BI opval = 0;
   12742   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12743   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12744   1.1  christos   }
   12745   1.1  christos }
   12746   1.1  christos if (ANDIF (EQSI (FLD (f_operand1), 1), EQSI (FLD (f_operand2), 11))) {
   12747   1.1  christos cris_flush_simulator_decode_cache (current_cpu, pc);
   12748   1.1  christos }
   12749   1.1  christos {
   12750   1.1  christos {
   12751   1.1  christos   {
   12752   1.1  christos     SI opval = ADDSI (pc, 4);
   12753   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12754   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12755   1.1  christos   }
   12756   1.1  christos   {
   12757   1.1  christos     USI opval = GET_H_GR (FLD (f_operand1));
   12758   1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12759   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12760   1.1  christos   }
   12761   1.1  christos }
   12762   1.1  christos }
   12763   1.1  christos }
   12764   1.1  christos 
   12765   1.1  christos   SEM_BRANCH_FINI (vpc);
   12766   1.1  christos #undef FLD
   12767   1.1  christos }
   12768   1.1  christos   NEXT (vpc);
   12769   1.1  christos 
   12770   1.1  christos   CASE (sem, INSN_JAS_C) : /* jas ${const32},${Pd} */
   12771   1.1  christos {
   12772   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12773   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12774   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   12775   1.1  christos   int UNUSED written = 0;
   12776   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12777   1.1  christos   SEM_BRANCH_INIT
   12778   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12779   1.1  christos 
   12780   1.1  christos {
   12781   1.1  christos {
   12782   1.1  christos   {
   12783   1.1  christos     BI opval = 0;
   12784   1.1  christos     CPU (h_xbit) = opval;
   12785   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12786   1.1  christos   }
   12787   1.1  christos   {
   12788   1.1  christos     BI opval = 0;
   12789   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12790   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12791   1.1  christos   }
   12792   1.1  christos }
   12793   1.1  christos {
   12794   1.1  christos {
   12795   1.1  christos   {
   12796   1.1  christos     SI opval = ADDSI (pc, 8);
   12797   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12798   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12799   1.1  christos   }
   12800   1.1  christos   {
   12801   1.1  christos     USI opval = FLD (f_indir_pc__dword);
   12802   1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12803   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12804   1.1  christos   }
   12805   1.1  christos }
   12806   1.1  christos }
   12807   1.1  christos }
   12808   1.1  christos 
   12809   1.1  christos   SEM_BRANCH_FINI (vpc);
   12810   1.1  christos #undef FLD
   12811   1.1  christos }
   12812   1.1  christos   NEXT (vpc);
   12813   1.1  christos 
   12814   1.1  christos   CASE (sem, INSN_JUMP_P) : /* jump ${Ps} */
   12815   1.1  christos {
   12816   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12817   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12818   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   12819   1.1  christos   int UNUSED written = 0;
   12820   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12821   1.1  christos   SEM_BRANCH_INIT
   12822   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12823   1.1  christos 
   12824   1.1  christos {
   12825   1.1  christos {
   12826   1.1  christos   {
   12827   1.1  christos     BI opval = 0;
   12828   1.1  christos     CPU (h_xbit) = opval;
   12829   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12830   1.1  christos   }
   12831   1.1  christos   {
   12832   1.1  christos     BI opval = 0;
   12833   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12834   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12835   1.1  christos   }
   12836   1.1  christos }
   12837   1.1  christos {
   12838   1.1  christos   {
   12839   1.1  christos     USI opval = GET_H_SR (FLD (f_operand2));
   12840   1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12841   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12842   1.1  christos   }
   12843   1.1  christos }
   12844   1.1  christos }
   12845   1.1  christos 
   12846   1.1  christos   SEM_BRANCH_FINI (vpc);
   12847   1.1  christos #undef FLD
   12848   1.1  christos }
   12849   1.1  christos   NEXT (vpc);
   12850   1.1  christos 
   12851   1.1  christos   CASE (sem, INSN_BAS_C) : /* bas ${const32},${Pd} */
   12852   1.1  christos {
   12853   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12854   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12855   1.1  christos #define FLD(f) abuf->fields.sfmt_bas_c.f
   12856   1.1  christos   int UNUSED written = 0;
   12857   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12858   1.1  christos   SEM_BRANCH_INIT
   12859   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12860   1.1  christos 
   12861   1.1  christos {
   12862   1.1  christos {
   12863   1.1  christos   {
   12864   1.1  christos     BI opval = 0;
   12865   1.1  christos     CPU (h_xbit) = opval;
   12866   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12867   1.1  christos   }
   12868   1.1  christos   {
   12869   1.1  christos     BI opval = 0;
   12870   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12871   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12872   1.1  christos   }
   12873   1.1  christos }
   12874   1.1  christos {
   12875   1.1  christos {
   12876   1.1  christos   {
   12877   1.1  christos     SI opval = ADDSI (pc, 8);
   12878   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12879   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12880   1.1  christos   }
   12881   1.1  christos   {
   12882   1.1  christos     USI opval = FLD (i_const32_pcrel);
   12883   1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12884   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12885   1.1  christos   }
   12886   1.1  christos }
   12887   1.1  christos }
   12888   1.1  christos }
   12889   1.1  christos 
   12890   1.1  christos   SEM_BRANCH_FINI (vpc);
   12891   1.1  christos #undef FLD
   12892   1.1  christos }
   12893   1.1  christos   NEXT (vpc);
   12894   1.1  christos 
   12895   1.1  christos   CASE (sem, INSN_JASC_R) : /* jasc ${Rs},${Pd} */
   12896   1.1  christos {
   12897   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12898   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12899   1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   12900   1.1  christos   int UNUSED written = 0;
   12901   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12902   1.1  christos   SEM_BRANCH_INIT
   12903   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   12904   1.1  christos 
   12905   1.1  christos {
   12906   1.1  christos {
   12907   1.1  christos   {
   12908   1.1  christos     BI opval = 0;
   12909   1.1  christos     CPU (h_xbit) = opval;
   12910   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12911   1.1  christos   }
   12912   1.1  christos   {
   12913   1.1  christos     BI opval = 0;
   12914   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12915   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12916   1.1  christos   }
   12917   1.1  christos }
   12918   1.1  christos {
   12919   1.1  christos {
   12920   1.1  christos   {
   12921   1.1  christos     SI opval = ADDSI (pc, 8);
   12922   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12923   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12924   1.1  christos   }
   12925   1.1  christos   {
   12926   1.1  christos     USI opval = GET_H_GR (FLD (f_operand1));
   12927   1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   12928   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12929   1.1  christos   }
   12930   1.1  christos }
   12931   1.1  christos }
   12932   1.1  christos }
   12933   1.1  christos 
   12934   1.1  christos   SEM_BRANCH_FINI (vpc);
   12935   1.1  christos #undef FLD
   12936   1.1  christos }
   12937   1.1  christos   NEXT (vpc);
   12938   1.1  christos 
   12939   1.1  christos   CASE (sem, INSN_JASC_C) : /* jasc ${const32},${Pd} */
   12940   1.1  christos {
   12941   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12942   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12943   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   12944   1.1  christos   int UNUSED written = 0;
   12945   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12946   1.1  christos   SEM_BRANCH_INIT
   12947   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12948   1.1  christos 
   12949   1.1  christos {
   12950   1.1  christos {
   12951   1.1  christos   {
   12952   1.1  christos     BI opval = 0;
   12953   1.1  christos     CPU (h_xbit) = opval;
   12954   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12955   1.1  christos   }
   12956   1.1  christos   {
   12957   1.1  christos     BI opval = 0;
   12958   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   12959   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   12960   1.1  christos   }
   12961   1.1  christos }
   12962   1.1  christos {
   12963   1.1  christos {
   12964   1.1  christos   {
   12965   1.1  christos     SI opval = ADDSI (pc, 12);
   12966   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   12967   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   12968   1.1  christos   }
   12969   1.1  christos   {
   12970   1.1  christos     USI opval = FLD (f_indir_pc__dword);
   12971   1.1  christos     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
   12972   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   12973   1.1  christos   }
   12974   1.1  christos }
   12975   1.1  christos }
   12976   1.1  christos }
   12977   1.1  christos 
   12978   1.1  christos   SEM_BRANCH_FINI (vpc);
   12979   1.1  christos #undef FLD
   12980   1.1  christos }
   12981   1.1  christos   NEXT (vpc);
   12982   1.1  christos 
   12983   1.1  christos   CASE (sem, INSN_BASC_C) : /* basc ${const32},${Pd} */
   12984   1.1  christos {
   12985   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   12986   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   12987   1.1  christos #define FLD(f) abuf->fields.sfmt_bas_c.f
   12988   1.1  christos   int UNUSED written = 0;
   12989   1.1  christos   IADDR UNUSED pc = abuf->addr;
   12990   1.1  christos   SEM_BRANCH_INIT
   12991   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   12992   1.1  christos 
   12993   1.1  christos {
   12994   1.1  christos {
   12995   1.1  christos   {
   12996   1.1  christos     BI opval = 0;
   12997   1.1  christos     CPU (h_xbit) = opval;
   12998   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   12999   1.1  christos   }
   13000   1.1  christos   {
   13001   1.1  christos     BI opval = 0;
   13002   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13003   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13004   1.1  christos   }
   13005   1.1  christos }
   13006   1.1  christos {
   13007   1.1  christos {
   13008   1.1  christos   {
   13009   1.1  christos     SI opval = ADDSI (pc, 12);
   13010   1.1  christos     SET_H_SR (FLD (f_operand2), opval);
   13011   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   13012   1.1  christos   }
   13013   1.1  christos   {
   13014   1.1  christos     USI opval = FLD (i_const32_pcrel);
   13015   1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   13016   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   13017   1.1  christos   }
   13018   1.1  christos }
   13019   1.1  christos }
   13020   1.1  christos }
   13021   1.1  christos 
   13022   1.1  christos   SEM_BRANCH_FINI (vpc);
   13023   1.1  christos #undef FLD
   13024   1.1  christos }
   13025   1.1  christos   NEXT (vpc);
   13026   1.1  christos 
   13027   1.1  christos   CASE (sem, INSN_BREAK) : /* break $n */
   13028   1.1  christos {
   13029   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13030   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13031   1.1  christos #define FLD(f) abuf->fields.sfmt_break.f
   13032   1.1  christos   int UNUSED written = 0;
   13033   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13034   1.1  christos   SEM_BRANCH_INIT
   13035   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13036   1.1  christos 
   13037   1.1  christos {
   13038   1.1  christos {
   13039   1.1  christos   {
   13040   1.1  christos     BI opval = 0;
   13041   1.1  christos     CPU (h_xbit) = opval;
   13042   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13043   1.1  christos   }
   13044   1.1  christos   {
   13045   1.1  christos     BI opval = 0;
   13046   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13047   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13048   1.1  christos   }
   13049   1.1  christos }
   13050   1.1  christos   {
   13051   1.1  christos     USI opval = crisv32f_break_handler (current_cpu, FLD (f_u4), pc);
   13052   1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   13053   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   13054   1.1  christos   }
   13055   1.1  christos }
   13056   1.1  christos 
   13057   1.1  christos   SEM_BRANCH_FINI (vpc);
   13058   1.1  christos #undef FLD
   13059   1.1  christos }
   13060   1.1  christos   NEXT (vpc);
   13061   1.1  christos 
   13062   1.1  christos   CASE (sem, INSN_BOUND_R_B_R) : /* bound-r.b ${Rs},${Rd} */
   13063   1.1  christos {
   13064   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13065   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13066   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13067   1.1  christos   int UNUSED written = 0;
   13068   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13069   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13070   1.1  christos 
   13071   1.1  christos {
   13072   1.1  christos   SI tmp_tmpopd;
   13073   1.1  christos   SI tmp_tmpops;
   13074   1.1  christos   SI tmp_newval;
   13075   1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
   13076   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13077   1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13078   1.1  christos   {
   13079   1.1  christos     SI opval = tmp_newval;
   13080   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13081   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13082   1.1  christos   }
   13083   1.1  christos {
   13084   1.1  christos   {
   13085   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13086   1.1  christos     CPU (h_nbit) = opval;
   13087   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13088   1.1  christos   }
   13089   1.1  christos   {
   13090   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13091   1.1  christos     CPU (h_zbit) = opval;
   13092   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13093   1.1  christos   }
   13094   1.1  christos SET_H_CBIT_MOVE (0);
   13095   1.1  christos SET_H_VBIT_MOVE (0);
   13096   1.1  christos {
   13097   1.1  christos   {
   13098   1.1  christos     BI opval = 0;
   13099   1.1  christos     CPU (h_xbit) = opval;
   13100   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13101   1.1  christos   }
   13102   1.1  christos   {
   13103   1.1  christos     BI opval = 0;
   13104   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13105   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13106   1.1  christos   }
   13107   1.1  christos }
   13108   1.1  christos }
   13109   1.1  christos }
   13110   1.1  christos 
   13111   1.1  christos #undef FLD
   13112   1.1  christos }
   13113   1.1  christos   NEXT (vpc);
   13114   1.1  christos 
   13115   1.1  christos   CASE (sem, INSN_BOUND_R_W_R) : /* bound-r.w ${Rs},${Rd} */
   13116   1.1  christos {
   13117   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13118   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13119   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13120   1.1  christos   int UNUSED written = 0;
   13121   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13122   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13123   1.1  christos 
   13124   1.1  christos {
   13125   1.1  christos   SI tmp_tmpopd;
   13126   1.1  christos   SI tmp_tmpops;
   13127   1.1  christos   SI tmp_newval;
   13128   1.1  christos   tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
   13129   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13130   1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13131   1.1  christos   {
   13132   1.1  christos     SI opval = tmp_newval;
   13133   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13134   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13135   1.1  christos   }
   13136   1.1  christos {
   13137   1.1  christos   {
   13138   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13139   1.1  christos     CPU (h_nbit) = opval;
   13140   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13141   1.1  christos   }
   13142   1.1  christos   {
   13143   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13144   1.1  christos     CPU (h_zbit) = opval;
   13145   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13146   1.1  christos   }
   13147   1.1  christos SET_H_CBIT_MOVE (0);
   13148   1.1  christos SET_H_VBIT_MOVE (0);
   13149   1.1  christos {
   13150   1.1  christos   {
   13151   1.1  christos     BI opval = 0;
   13152   1.1  christos     CPU (h_xbit) = opval;
   13153   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13154   1.1  christos   }
   13155   1.1  christos   {
   13156   1.1  christos     BI opval = 0;
   13157   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13158   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13159   1.1  christos   }
   13160   1.1  christos }
   13161   1.1  christos }
   13162   1.1  christos }
   13163   1.1  christos 
   13164   1.1  christos #undef FLD
   13165   1.1  christos }
   13166   1.1  christos   NEXT (vpc);
   13167   1.1  christos 
   13168   1.1  christos   CASE (sem, INSN_BOUND_R_D_R) : /* bound-r.d ${Rs},${Rd} */
   13169   1.1  christos {
   13170   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13171   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13172   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13173   1.1  christos   int UNUSED written = 0;
   13174   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13175   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13176   1.1  christos 
   13177   1.1  christos {
   13178   1.1  christos   SI tmp_tmpopd;
   13179   1.1  christos   SI tmp_tmpops;
   13180   1.1  christos   SI tmp_newval;
   13181   1.1  christos   tmp_tmpops = TRUNCSISI (GET_H_GR (FLD (f_operand1)));
   13182   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13183   1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13184   1.1  christos   {
   13185   1.1  christos     SI opval = tmp_newval;
   13186   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13187   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13188   1.1  christos   }
   13189   1.1  christos {
   13190   1.1  christos   {
   13191   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13192   1.1  christos     CPU (h_nbit) = opval;
   13193   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13194   1.1  christos   }
   13195   1.1  christos   {
   13196   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13197   1.1  christos     CPU (h_zbit) = opval;
   13198   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13199   1.1  christos   }
   13200   1.1  christos SET_H_CBIT_MOVE (0);
   13201   1.1  christos SET_H_VBIT_MOVE (0);
   13202   1.1  christos {
   13203   1.1  christos   {
   13204   1.1  christos     BI opval = 0;
   13205   1.1  christos     CPU (h_xbit) = opval;
   13206   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13207   1.1  christos   }
   13208   1.1  christos   {
   13209   1.1  christos     BI opval = 0;
   13210   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13211   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13212   1.1  christos   }
   13213   1.1  christos }
   13214   1.1  christos }
   13215   1.1  christos }
   13216   1.1  christos 
   13217   1.1  christos #undef FLD
   13218   1.1  christos }
   13219   1.1  christos   NEXT (vpc);
   13220   1.1  christos 
   13221   1.1  christos   CASE (sem, INSN_BOUND_CB) : /* bound.b [PC+],${Rd} */
   13222   1.1  christos {
   13223   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13224   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13225   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   13226   1.1  christos   int UNUSED written = 0;
   13227   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13228   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13229   1.1  christos 
   13230   1.1  christos {
   13231   1.1  christos   SI tmp_tmpopd;
   13232   1.1  christos   SI tmp_tmpops;
   13233   1.1  christos   SI tmp_newval;
   13234   1.1  christos   tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
   13235   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13236   1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13237   1.1  christos   {
   13238   1.1  christos     SI opval = tmp_newval;
   13239   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13240   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13241   1.1  christos   }
   13242   1.1  christos {
   13243   1.1  christos   {
   13244   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13245   1.1  christos     CPU (h_nbit) = opval;
   13246   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13247   1.1  christos   }
   13248   1.1  christos   {
   13249   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13250   1.1  christos     CPU (h_zbit) = opval;
   13251   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13252   1.1  christos   }
   13253   1.1  christos SET_H_CBIT_MOVE (0);
   13254   1.1  christos SET_H_VBIT_MOVE (0);
   13255   1.1  christos {
   13256   1.1  christos   {
   13257   1.1  christos     BI opval = 0;
   13258   1.1  christos     CPU (h_xbit) = opval;
   13259   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13260   1.1  christos   }
   13261   1.1  christos   {
   13262   1.1  christos     BI opval = 0;
   13263   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13264   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13265   1.1  christos   }
   13266   1.1  christos }
   13267   1.1  christos }
   13268   1.1  christos }
   13269   1.1  christos 
   13270   1.1  christos #undef FLD
   13271   1.1  christos }
   13272   1.1  christos   NEXT (vpc);
   13273   1.1  christos 
   13274   1.1  christos   CASE (sem, INSN_BOUND_CW) : /* bound.w [PC+],${Rd} */
   13275   1.1  christos {
   13276   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13277   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13278   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   13279   1.1  christos   int UNUSED written = 0;
   13280   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13281   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13282   1.1  christos 
   13283   1.1  christos {
   13284   1.1  christos   SI tmp_tmpopd;
   13285   1.1  christos   SI tmp_tmpops;
   13286   1.1  christos   SI tmp_newval;
   13287   1.1  christos   tmp_tmpops = ZEXTSISI (FLD (f_indir_pc__word));
   13288   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13289   1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13290   1.1  christos   {
   13291   1.1  christos     SI opval = tmp_newval;
   13292   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13293   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13294   1.1  christos   }
   13295   1.1  christos {
   13296   1.1  christos   {
   13297   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13298   1.1  christos     CPU (h_nbit) = opval;
   13299   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13300   1.1  christos   }
   13301   1.1  christos   {
   13302   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13303   1.1  christos     CPU (h_zbit) = opval;
   13304   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13305   1.1  christos   }
   13306   1.1  christos SET_H_CBIT_MOVE (0);
   13307   1.1  christos SET_H_VBIT_MOVE (0);
   13308   1.1  christos {
   13309   1.1  christos   {
   13310   1.1  christos     BI opval = 0;
   13311   1.1  christos     CPU (h_xbit) = opval;
   13312   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13313   1.1  christos   }
   13314   1.1  christos   {
   13315   1.1  christos     BI opval = 0;
   13316   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13317   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13318   1.1  christos   }
   13319   1.1  christos }
   13320   1.1  christos }
   13321   1.1  christos }
   13322   1.1  christos 
   13323   1.1  christos #undef FLD
   13324   1.1  christos }
   13325   1.1  christos   NEXT (vpc);
   13326   1.1  christos 
   13327   1.1  christos   CASE (sem, INSN_BOUND_CD) : /* bound.d [PC+],${Rd} */
   13328   1.1  christos {
   13329   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13330   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13331   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   13332   1.1  christos   int UNUSED written = 0;
   13333   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13334   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   13335   1.1  christos 
   13336   1.1  christos {
   13337   1.1  christos   SI tmp_tmpopd;
   13338   1.1  christos   SI tmp_tmpops;
   13339   1.1  christos   SI tmp_newval;
   13340   1.1  christos   tmp_tmpops = FLD (f_indir_pc__dword);
   13341   1.1  christos   tmp_tmpopd = GET_H_GR (FLD (f_operand2));
   13342   1.1  christos   tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
   13343   1.1  christos   {
   13344   1.1  christos     SI opval = tmp_newval;
   13345   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13346   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13347   1.1  christos   }
   13348   1.1  christos {
   13349   1.1  christos   {
   13350   1.1  christos     BI opval = LTSI (tmp_newval, 0);
   13351   1.1  christos     CPU (h_nbit) = opval;
   13352   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13353   1.1  christos   }
   13354   1.1  christos   {
   13355   1.1  christos     BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13356   1.1  christos     CPU (h_zbit) = opval;
   13357   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13358   1.1  christos   }
   13359   1.1  christos SET_H_CBIT_MOVE (0);
   13360   1.1  christos SET_H_VBIT_MOVE (0);
   13361   1.1  christos {
   13362   1.1  christos   {
   13363   1.1  christos     BI opval = 0;
   13364   1.1  christos     CPU (h_xbit) = opval;
   13365   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13366   1.1  christos   }
   13367   1.1  christos   {
   13368   1.1  christos     BI opval = 0;
   13369   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13370   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13371   1.1  christos   }
   13372   1.1  christos }
   13373   1.1  christos }
   13374   1.1  christos }
   13375   1.1  christos 
   13376   1.1  christos #undef FLD
   13377   1.1  christos }
   13378   1.1  christos   NEXT (vpc);
   13379   1.1  christos 
   13380   1.1  christos   CASE (sem, INSN_SCC) : /* s${cc} ${Rd-sfield} */
   13381   1.1  christos {
   13382   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13383   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13384   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   13385   1.1  christos   int UNUSED written = 0;
   13386   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13387   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13388   1.1  christos 
   13389   1.1  christos {
   13390   1.1  christos   BI tmp_truthval;
   13391   1.1  christos   tmp_truthval = ({   SI tmp_tmpcond;
   13392   1.1  christos   BI tmp_condres;
   13393   1.1  christos   tmp_tmpcond = FLD (f_operand2);
   13394   1.1  christos ; if (EQSI (tmp_tmpcond, 0)) {
   13395   1.1  christos   tmp_condres = NOTBI (CPU (h_cbit));
   13396   1.1  christos }
   13397   1.1  christos  else if (EQSI (tmp_tmpcond, 1)) {
   13398   1.1  christos   tmp_condres = CPU (h_cbit);
   13399   1.1  christos }
   13400   1.1  christos  else if (EQSI (tmp_tmpcond, 2)) {
   13401   1.1  christos   tmp_condres = NOTBI (CPU (h_zbit));
   13402   1.1  christos }
   13403   1.1  christos  else if (EQSI (tmp_tmpcond, 3)) {
   13404   1.1  christos   tmp_condres = CPU (h_zbit);
   13405   1.1  christos }
   13406   1.1  christos  else if (EQSI (tmp_tmpcond, 4)) {
   13407   1.1  christos   tmp_condres = NOTBI (CPU (h_vbit));
   13408   1.1  christos }
   13409   1.1  christos  else if (EQSI (tmp_tmpcond, 5)) {
   13410   1.1  christos   tmp_condres = CPU (h_vbit);
   13411   1.1  christos }
   13412   1.1  christos  else if (EQSI (tmp_tmpcond, 6)) {
   13413   1.1  christos   tmp_condres = NOTBI (CPU (h_nbit));
   13414   1.1  christos }
   13415   1.1  christos  else if (EQSI (tmp_tmpcond, 7)) {
   13416   1.1  christos   tmp_condres = CPU (h_nbit);
   13417   1.1  christos }
   13418   1.1  christos  else if (EQSI (tmp_tmpcond, 8)) {
   13419   1.1  christos   tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
   13420   1.1  christos }
   13421   1.1  christos  else if (EQSI (tmp_tmpcond, 9)) {
   13422   1.1  christos   tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
   13423   1.1  christos }
   13424   1.1  christos  else if (EQSI (tmp_tmpcond, 10)) {
   13425   1.1  christos   tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
   13426   1.1  christos }
   13427   1.1  christos  else if (EQSI (tmp_tmpcond, 11)) {
   13428   1.1  christos   tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
   13429   1.1  christos }
   13430   1.1  christos  else if (EQSI (tmp_tmpcond, 12)) {
   13431   1.1  christos   tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
   13432   1.1  christos }
   13433   1.1  christos  else if (EQSI (tmp_tmpcond, 13)) {
   13434   1.1  christos   tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
   13435   1.1  christos }
   13436   1.1  christos  else if (EQSI (tmp_tmpcond, 14)) {
   13437   1.1  christos   tmp_condres = 1;
   13438   1.1  christos }
   13439   1.1  christos  else if (EQSI (tmp_tmpcond, 15)) {
   13440   1.1  christos   tmp_condres = CPU (h_pbit);
   13441   1.1  christos }
   13442  1.11  christos  else {
   13443  1.11  christos cgen_rtx_error (current_cpu, "Unknown condition code");
   13444  1.11  christos }
   13445   1.1  christos ; tmp_condres; });
   13446   1.1  christos   {
   13447   1.1  christos     SI opval = ZEXTBISI (tmp_truthval);
   13448   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13449   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13450   1.1  christos   }
   13451   1.1  christos {
   13452   1.1  christos   {
   13453   1.1  christos     BI opval = 0;
   13454   1.1  christos     CPU (h_xbit) = opval;
   13455   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13456   1.1  christos   }
   13457   1.1  christos   {
   13458   1.1  christos     BI opval = 0;
   13459   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13460   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13461   1.1  christos   }
   13462   1.1  christos }
   13463   1.1  christos }
   13464   1.1  christos 
   13465   1.1  christos #undef FLD
   13466   1.1  christos }
   13467   1.1  christos   NEXT (vpc);
   13468   1.1  christos 
   13469   1.1  christos   CASE (sem, INSN_LZ) : /* lz ${Rs},${Rd} */
   13470   1.1  christos {
   13471   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13472   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13473   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13474   1.1  christos   int UNUSED written = 0;
   13475   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13476   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13477   1.1  christos 
   13478   1.1  christos {
   13479   1.1  christos   SI tmp_tmpd;
   13480   1.1  christos   SI tmp_tmp;
   13481   1.1  christos   tmp_tmp = GET_H_GR (FLD (f_operand1));
   13482   1.1  christos   tmp_tmpd = 0;
   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 if (GESI (tmp_tmp, 0)) {
   13665   1.1  christos {
   13666   1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13667   1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13668   1.1  christos }
   13669   1.1  christos }
   13670   1.1  christos if (GESI (tmp_tmp, 0)) {
   13671   1.1  christos {
   13672   1.1  christos   tmp_tmp = SLLSI (tmp_tmp, 1);
   13673   1.1  christos   tmp_tmpd = ADDSI (tmp_tmpd, 1);
   13674   1.1  christos }
   13675   1.1  christos }
   13676   1.1  christos }
   13677   1.1  christos   {
   13678   1.1  christos     SI opval = tmp_tmpd;
   13679   1.1  christos     SET_H_GR (FLD (f_operand2), opval);
   13680   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13681   1.1  christos   }
   13682   1.1  christos {
   13683   1.1  christos   {
   13684   1.1  christos     BI opval = LTSI (tmp_tmpd, 0);
   13685   1.1  christos     CPU (h_nbit) = opval;
   13686   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
   13687   1.1  christos   }
   13688   1.1  christos   {
   13689   1.1  christos     BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
   13690   1.1  christos     CPU (h_zbit) = opval;
   13691   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
   13692   1.1  christos   }
   13693   1.1  christos SET_H_CBIT_MOVE (0);
   13694   1.1  christos SET_H_VBIT_MOVE (0);
   13695   1.1  christos {
   13696   1.1  christos   {
   13697   1.1  christos     BI opval = 0;
   13698   1.1  christos     CPU (h_xbit) = opval;
   13699   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
   13700   1.1  christos   }
   13701   1.1  christos   {
   13702   1.1  christos     BI opval = 0;
   13703   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13704   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13705   1.1  christos   }
   13706   1.1  christos }
   13707   1.1  christos }
   13708   1.1  christos }
   13709   1.1  christos 
   13710   1.1  christos #undef FLD
   13711   1.1  christos }
   13712   1.1  christos   NEXT (vpc);
   13713   1.1  christos 
   13714   1.1  christos   CASE (sem, INSN_ADDOQ) : /* addoq $o,$Rs,ACR */
   13715   1.1  christos {
   13716   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13717   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13718   1.1  christos #define FLD(f) abuf->fields.sfmt_addoq.f
   13719   1.1  christos   int UNUSED written = 0;
   13720   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13721   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13722   1.1  christos 
   13723   1.1  christos {
   13724   1.1  christos   {
   13725   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s8));
   13726   1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13727   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13728   1.1  christos   }
   13729   1.1  christos   {
   13730   1.1  christos     BI opval = 1;
   13731   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13732   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13733   1.1  christos   }
   13734   1.1  christos }
   13735   1.1  christos 
   13736   1.1  christos #undef FLD
   13737   1.1  christos }
   13738   1.1  christos   NEXT (vpc);
   13739   1.1  christos 
   13740   1.1  christos   CASE (sem, INSN_ADDO_M_B_M) : /* addo-m.b [${Rs}${inc}],$Rd,ACR */
   13741   1.1  christos {
   13742   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13743   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13744   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   13745   1.1  christos   int UNUSED written = 0;
   13746   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13747   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13748   1.1  christos 
   13749   1.1  christos {
   13750   1.1  christos   QI tmp_tmps;
   13751   1.1  christos   tmp_tmps = ({   SI tmp_addr;
   13752   1.1  christos   QI tmp_tmp_mem;
   13753   1.1  christos   BI tmp_postinc;
   13754   1.1  christos   tmp_postinc = FLD (f_memmode);
   13755   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   13756   1.1  christos ;   tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
   13757   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   13758   1.1  christos {
   13759   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   13760   1.1  christos   tmp_addr = ADDSI (tmp_addr, 1);
   13761   1.1  christos }
   13762   1.1  christos   {
   13763   1.1  christos     SI opval = tmp_addr;
   13764   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13765   1.1  christos     written |= (1 << 6);
   13766   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13767   1.1  christos   }
   13768   1.1  christos }
   13769   1.1  christos }
   13770   1.1  christos ; tmp_tmp_mem; });
   13771   1.1  christos   {
   13772   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (tmp_tmps));
   13773   1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13774   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13775   1.1  christos   }
   13776   1.1  christos   {
   13777   1.1  christos     BI opval = 1;
   13778   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13779   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13780   1.1  christos   }
   13781   1.1  christos }
   13782   1.1  christos 
   13783   1.1  christos   abuf->written = written;
   13784   1.1  christos #undef FLD
   13785   1.1  christos }
   13786   1.1  christos   NEXT (vpc);
   13787   1.1  christos 
   13788   1.1  christos   CASE (sem, INSN_ADDO_M_W_M) : /* addo-m.w [${Rs}${inc}],$Rd,ACR */
   13789   1.1  christos {
   13790   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13791   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13792   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   13793   1.1  christos   int UNUSED written = 0;
   13794   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13795   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13796   1.1  christos 
   13797   1.1  christos {
   13798   1.1  christos   HI tmp_tmps;
   13799   1.1  christos   tmp_tmps = ({   SI tmp_addr;
   13800   1.1  christos   HI tmp_tmp_mem;
   13801   1.1  christos   BI tmp_postinc;
   13802   1.1  christos   tmp_postinc = FLD (f_memmode);
   13803   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   13804   1.1  christos ;   tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
   13805   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   13806   1.1  christos {
   13807   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   13808   1.1  christos   tmp_addr = ADDSI (tmp_addr, 2);
   13809   1.1  christos }
   13810   1.1  christos   {
   13811   1.1  christos     SI opval = tmp_addr;
   13812   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13813   1.1  christos     written |= (1 << 6);
   13814   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13815   1.1  christos   }
   13816   1.1  christos }
   13817   1.1  christos }
   13818   1.1  christos ; tmp_tmp_mem; });
   13819   1.1  christos   {
   13820   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (tmp_tmps));
   13821   1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13822   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13823   1.1  christos   }
   13824   1.1  christos   {
   13825   1.1  christos     BI opval = 1;
   13826   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13827   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13828   1.1  christos   }
   13829   1.1  christos }
   13830   1.1  christos 
   13831   1.1  christos   abuf->written = written;
   13832   1.1  christos #undef FLD
   13833   1.1  christos }
   13834   1.1  christos   NEXT (vpc);
   13835   1.1  christos 
   13836   1.1  christos   CASE (sem, INSN_ADDO_M_D_M) : /* addo-m.d [${Rs}${inc}],$Rd,ACR */
   13837   1.1  christos {
   13838   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13839   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13840   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   13841   1.1  christos   int UNUSED written = 0;
   13842   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13843   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13844   1.1  christos 
   13845   1.1  christos {
   13846   1.1  christos   SI tmp_tmps;
   13847   1.1  christos   tmp_tmps = ({   SI tmp_addr;
   13848   1.1  christos   SI tmp_tmp_mem;
   13849   1.1  christos   BI tmp_postinc;
   13850   1.1  christos   tmp_postinc = FLD (f_memmode);
   13851   1.1  christos ;   tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (GET_H_PREFIXREG_V32 ()));
   13852   1.1  christos ;   tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
   13853   1.1  christos ; if (NEBI (tmp_postinc, 0)) {
   13854   1.1  christos {
   13855   1.1  christos if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
   13856   1.1  christos   tmp_addr = ADDSI (tmp_addr, 4);
   13857   1.1  christos }
   13858   1.1  christos   {
   13859   1.1  christos     SI opval = tmp_addr;
   13860   1.1  christos     SET_H_GR (FLD (f_operand1), opval);
   13861   1.1  christos     written |= (1 << 6);
   13862   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
   13863   1.1  christos   }
   13864   1.1  christos }
   13865   1.1  christos }
   13866   1.1  christos ; tmp_tmp_mem; });
   13867   1.1  christos   {
   13868   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), tmp_tmps);
   13869   1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13870   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13871   1.1  christos   }
   13872   1.1  christos   {
   13873   1.1  christos     BI opval = 1;
   13874   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13875   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13876   1.1  christos   }
   13877   1.1  christos }
   13878   1.1  christos 
   13879   1.1  christos   abuf->written = written;
   13880   1.1  christos #undef FLD
   13881   1.1  christos }
   13882   1.1  christos   NEXT (vpc);
   13883   1.1  christos 
   13884   1.1  christos   CASE (sem, INSN_ADDO_CB) : /* addo.b [PC+],$Rd,ACR */
   13885   1.1  christos {
   13886   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13887   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13888   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   13889   1.1  christos   int UNUSED written = 0;
   13890   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13891   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13892   1.1  christos 
   13893   1.1  christos {
   13894   1.1  christos   {
   13895   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))));
   13896   1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13897   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13898   1.1  christos   }
   13899   1.1  christos   {
   13900   1.1  christos     BI opval = 1;
   13901   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13902   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13903   1.1  christos   }
   13904   1.1  christos }
   13905   1.1  christos 
   13906   1.1  christos #undef FLD
   13907   1.1  christos }
   13908   1.1  christos   NEXT (vpc);
   13909   1.1  christos 
   13910   1.1  christos   CASE (sem, INSN_ADDO_CW) : /* addo.w [PC+],$Rd,ACR */
   13911   1.1  christos {
   13912   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13913   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13914   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   13915   1.1  christos   int UNUSED written = 0;
   13916   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13917   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   13918   1.1  christos 
   13919   1.1  christos {
   13920   1.1  christos   {
   13921   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))));
   13922   1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13923   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13924   1.1  christos   }
   13925   1.1  christos   {
   13926   1.1  christos     BI opval = 1;
   13927   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13928   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13929   1.1  christos   }
   13930   1.1  christos }
   13931   1.1  christos 
   13932   1.1  christos #undef FLD
   13933   1.1  christos }
   13934   1.1  christos   NEXT (vpc);
   13935   1.1  christos 
   13936   1.1  christos   CASE (sem, INSN_ADDO_CD) : /* addo.d [PC+],$Rd,ACR */
   13937   1.1  christos {
   13938   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13939   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13940   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   13941   1.1  christos   int UNUSED written = 0;
   13942   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13943   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
   13944   1.1  christos 
   13945   1.1  christos {
   13946   1.1  christos   {
   13947   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
   13948   1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13949   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13950   1.1  christos   }
   13951   1.1  christos   {
   13952   1.1  christos     BI opval = 1;
   13953   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13954   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13955   1.1  christos   }
   13956   1.1  christos }
   13957   1.1  christos 
   13958   1.1  christos #undef FLD
   13959   1.1  christos }
   13960   1.1  christos   NEXT (vpc);
   13961   1.1  christos 
   13962   1.1  christos   CASE (sem, INSN_ADDI_ACR_B_R) : /* addi-acr.b ${Rs-dfield}.m,${Rd-sfield},ACR */
   13963   1.1  christos {
   13964   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13965   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13966   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13967   1.1  christos   int UNUSED written = 0;
   13968   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13969   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13970   1.1  christos 
   13971   1.1  christos {
   13972   1.1  christos   {
   13973   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
   13974   1.1  christos     SET_H_PREFIXREG_V32 (opval);
   13975   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   13976   1.1  christos   }
   13977   1.1  christos   {
   13978   1.1  christos     BI opval = 1;
   13979   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   13980   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   13981   1.1  christos   }
   13982   1.1  christos }
   13983   1.1  christos 
   13984   1.1  christos #undef FLD
   13985   1.1  christos }
   13986   1.1  christos   NEXT (vpc);
   13987   1.1  christos 
   13988   1.1  christos   CASE (sem, INSN_ADDI_ACR_W_R) : /* addi-acr.w ${Rs-dfield}.m,${Rd-sfield},ACR */
   13989   1.1  christos {
   13990   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   13991   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   13992   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   13993   1.1  christos   int UNUSED written = 0;
   13994   1.1  christos   IADDR UNUSED pc = abuf->addr;
   13995   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   13996   1.1  christos 
   13997   1.1  christos {
   13998   1.1  christos   {
   13999   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
   14000   1.1  christos     SET_H_PREFIXREG_V32 (opval);
   14001   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   14002   1.1  christos   }
   14003   1.1  christos   {
   14004   1.1  christos     BI opval = 1;
   14005   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   14006   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   14007   1.1  christos   }
   14008   1.1  christos }
   14009   1.1  christos 
   14010   1.1  christos #undef FLD
   14011   1.1  christos }
   14012   1.1  christos   NEXT (vpc);
   14013   1.1  christos 
   14014   1.1  christos   CASE (sem, INSN_ADDI_ACR_D_R) : /* addi-acr.d ${Rs-dfield}.m,${Rd-sfield},ACR */
   14015   1.1  christos {
   14016   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14017   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14018   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   14019   1.1  christos   int UNUSED written = 0;
   14020   1.1  christos   IADDR UNUSED pc = abuf->addr;
   14021   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14022   1.1  christos 
   14023   1.1  christos {
   14024   1.1  christos   {
   14025   1.1  christos     SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
   14026   1.1  christos     SET_H_PREFIXREG_V32 (opval);
   14027   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
   14028   1.1  christos   }
   14029   1.1  christos   {
   14030   1.1  christos     BI opval = 1;
   14031   1.1  christos     SET_H_INSN_PREFIXED_P (opval);
   14032   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
   14033   1.1  christos   }
   14034   1.1  christos }
   14035   1.1  christos 
   14036   1.1  christos #undef FLD
   14037   1.1  christos }
   14038   1.1  christos   NEXT (vpc);
   14039   1.1  christos 
   14040   1.1  christos   CASE (sem, INSN_FIDXI) : /* fidxi [$Rs] */
   14041   1.1  christos {
   14042   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14043   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14044   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14045   1.1  christos   int UNUSED written = 0;
   14046   1.1  christos   IADDR UNUSED pc = abuf->addr;
   14047   1.1  christos   SEM_BRANCH_INIT
   14048   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14049   1.1  christos 
   14050   1.1  christos   {
   14051   1.1  christos     USI opval = crisv32f_fidxi_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14052   1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14053   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14054   1.1  christos   }
   14055   1.1  christos 
   14056   1.1  christos   SEM_BRANCH_FINI (vpc);
   14057   1.1  christos #undef FLD
   14058   1.1  christos }
   14059   1.1  christos   NEXT (vpc);
   14060   1.1  christos 
   14061   1.1  christos   CASE (sem, INSN_FTAGI) : /* fidxi [$Rs] */
   14062   1.1  christos {
   14063   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14064   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14065   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14066   1.1  christos   int UNUSED written = 0;
   14067   1.1  christos   IADDR UNUSED pc = abuf->addr;
   14068   1.1  christos   SEM_BRANCH_INIT
   14069   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14070   1.1  christos 
   14071   1.1  christos   {
   14072   1.1  christos     USI opval = crisv32f_ftagi_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14073   1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14074   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14075   1.1  christos   }
   14076   1.1  christos 
   14077   1.1  christos   SEM_BRANCH_FINI (vpc);
   14078   1.1  christos #undef FLD
   14079   1.1  christos }
   14080   1.1  christos   NEXT (vpc);
   14081   1.1  christos 
   14082   1.1  christos   CASE (sem, INSN_FIDXD) : /* fidxd [$Rs] */
   14083   1.1  christos {
   14084   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14085   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14086   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14087   1.1  christos   int UNUSED written = 0;
   14088   1.1  christos   IADDR UNUSED pc = abuf->addr;
   14089   1.1  christos   SEM_BRANCH_INIT
   14090   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14091   1.1  christos 
   14092   1.1  christos   {
   14093   1.1  christos     USI opval = crisv32f_fidxd_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14094   1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14095   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14096   1.1  christos   }
   14097   1.1  christos 
   14098   1.1  christos   SEM_BRANCH_FINI (vpc);
   14099   1.1  christos #undef FLD
   14100   1.1  christos }
   14101   1.1  christos   NEXT (vpc);
   14102   1.1  christos 
   14103   1.1  christos   CASE (sem, INSN_FTAGD) : /* ftagd [$Rs] */
   14104   1.1  christos {
   14105   1.1  christos   SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
   14106   1.1  christos   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   14107   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   14108   1.1  christos   int UNUSED written = 0;
   14109   1.1  christos   IADDR UNUSED pc = abuf->addr;
   14110   1.1  christos   SEM_BRANCH_INIT
   14111   1.1  christos   vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
   14112   1.1  christos 
   14113   1.1  christos   {
   14114   1.1  christos     USI opval = crisv32f_ftagd_handler (current_cpu, pc, GET_H_GR (FLD (f_operand1)));
   14115   1.1  christos     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
   14116   1.5  christos     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
   14117   1.1  christos   }
   14118   1.1  christos 
   14119   1.1  christos   SEM_BRANCH_FINI (vpc);
   14120   1.1  christos #undef FLD
   14121   1.1  christos }
   14122   1.1  christos   NEXT (vpc);
   14123   1.1  christos 
   14124   1.1  christos 
   14125   1.1  christos     }
   14126   1.1  christos   ENDSWITCH (sem) /* End of semantic switch.  */
   14127   1.1  christos 
   14128   1.1  christos   /* At this point `vpc' contains the next insn to execute.  */
   14129   1.1  christos }
   14130   1.1  christos 
   14131   1.1  christos #undef DEFINE_SWITCH
   14132   1.1  christos #endif /* DEFINE_SWITCH */
   14133