Home | History | Annotate | Line # | Download | only in cris
decodev32.c revision 1.11
      1   1.1  christos /* Simulator instruction decoder 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 #define WANT_CPU crisv32f
     26   1.1  christos #define WANT_CPU_CRISV32F
     27   1.1  christos 
     28   1.1  christos #include "sim-main.h"
     29   1.1  christos #include "sim-assert.h"
     30  1.10  christos #include "cgen-mem.h"
     31   1.1  christos #include "cgen-ops.h"
     32   1.1  christos 
     33   1.1  christos /* The instruction descriptor array.
     34   1.1  christos    This is computed at runtime.  Space for it is not malloc'd to save a
     35   1.1  christos    teensy bit of cpu in the decoder.  Moving it to malloc space is trivial
     36   1.1  christos    but won't be done until necessary (we don't currently support the runtime
     37   1.1  christos    addition of instructions nor an SMP machine with different cpus).  */
     38   1.1  christos static IDESC crisv32f_insn_data[CRISV32F_INSN__MAX];
     39   1.1  christos 
     40   1.1  christos /* Commas between elements are contained in the macros.
     41   1.1  christos    Some of these are conditionally compiled out.  */
     42   1.1  christos 
     43   1.1  christos static const struct insn_sem crisv32f_insn_sem[] =
     44   1.1  christos {
     45   1.1  christos   { VIRTUAL_INSN_X_INVALID, CRISV32F_INSN_X_INVALID, CRISV32F_SFMT_EMPTY },
     46   1.1  christos   { VIRTUAL_INSN_X_AFTER, CRISV32F_INSN_X_AFTER, CRISV32F_SFMT_EMPTY },
     47   1.1  christos   { VIRTUAL_INSN_X_BEFORE, CRISV32F_INSN_X_BEFORE, CRISV32F_SFMT_EMPTY },
     48   1.1  christos   { VIRTUAL_INSN_X_CTI_CHAIN, CRISV32F_INSN_X_CTI_CHAIN, CRISV32F_SFMT_EMPTY },
     49   1.1  christos   { VIRTUAL_INSN_X_CHAIN, CRISV32F_INSN_X_CHAIN, CRISV32F_SFMT_EMPTY },
     50   1.1  christos   { VIRTUAL_INSN_X_BEGIN, CRISV32F_INSN_X_BEGIN, CRISV32F_SFMT_EMPTY },
     51   1.1  christos   { CRIS_INSN_MOVE_B_R, CRISV32F_INSN_MOVE_B_R, CRISV32F_SFMT_MOVE_B_R },
     52   1.1  christos   { CRIS_INSN_MOVE_W_R, CRISV32F_INSN_MOVE_W_R, CRISV32F_SFMT_MOVE_B_R },
     53   1.1  christos   { CRIS_INSN_MOVE_D_R, CRISV32F_INSN_MOVE_D_R, CRISV32F_SFMT_MOVE_D_R },
     54   1.1  christos   { CRIS_INSN_MOVEQ, CRISV32F_INSN_MOVEQ, CRISV32F_SFMT_MOVEQ },
     55   1.1  christos   { CRIS_INSN_MOVS_B_R, CRISV32F_INSN_MOVS_B_R, CRISV32F_SFMT_MOVS_B_R },
     56   1.1  christos   { CRIS_INSN_MOVS_W_R, CRISV32F_INSN_MOVS_W_R, CRISV32F_SFMT_MOVS_B_R },
     57   1.1  christos   { CRIS_INSN_MOVU_B_R, CRISV32F_INSN_MOVU_B_R, CRISV32F_SFMT_MOVS_B_R },
     58   1.1  christos   { CRIS_INSN_MOVU_W_R, CRISV32F_INSN_MOVU_W_R, CRISV32F_SFMT_MOVS_B_R },
     59   1.1  christos   { CRIS_INSN_MOVECBR, CRISV32F_INSN_MOVECBR, CRISV32F_SFMT_MOVECBR },
     60   1.1  christos   { CRIS_INSN_MOVECWR, CRISV32F_INSN_MOVECWR, CRISV32F_SFMT_MOVECWR },
     61   1.1  christos   { CRIS_INSN_MOVECDR, CRISV32F_INSN_MOVECDR, CRISV32F_SFMT_MOVECDR },
     62   1.1  christos   { CRIS_INSN_MOVSCBR, CRISV32F_INSN_MOVSCBR, CRISV32F_SFMT_MOVSCBR },
     63   1.1  christos   { CRIS_INSN_MOVSCWR, CRISV32F_INSN_MOVSCWR, CRISV32F_SFMT_MOVSCWR },
     64   1.1  christos   { CRIS_INSN_MOVUCBR, CRISV32F_INSN_MOVUCBR, CRISV32F_SFMT_MOVUCBR },
     65   1.1  christos   { CRIS_INSN_MOVUCWR, CRISV32F_INSN_MOVUCWR, CRISV32F_SFMT_MOVUCWR },
     66   1.1  christos   { CRIS_INSN_ADDQ, CRISV32F_INSN_ADDQ, CRISV32F_SFMT_ADDQ },
     67   1.1  christos   { CRIS_INSN_SUBQ, CRISV32F_INSN_SUBQ, CRISV32F_SFMT_ADDQ },
     68   1.1  christos   { CRIS_INSN_CMP_R_B_R, CRISV32F_INSN_CMP_R_B_R, CRISV32F_SFMT_CMP_R_B_R },
     69   1.1  christos   { CRIS_INSN_CMP_R_W_R, CRISV32F_INSN_CMP_R_W_R, CRISV32F_SFMT_CMP_R_B_R },
     70   1.1  christos   { CRIS_INSN_CMP_R_D_R, CRISV32F_INSN_CMP_R_D_R, CRISV32F_SFMT_CMP_R_B_R },
     71   1.1  christos   { CRIS_INSN_CMP_M_B_M, CRISV32F_INSN_CMP_M_B_M, CRISV32F_SFMT_CMP_M_B_M },
     72   1.1  christos   { CRIS_INSN_CMP_M_W_M, CRISV32F_INSN_CMP_M_W_M, CRISV32F_SFMT_CMP_M_W_M },
     73   1.1  christos   { CRIS_INSN_CMP_M_D_M, CRISV32F_INSN_CMP_M_D_M, CRISV32F_SFMT_CMP_M_D_M },
     74   1.1  christos   { CRIS_INSN_CMPCBR, CRISV32F_INSN_CMPCBR, CRISV32F_SFMT_CMPCBR },
     75   1.1  christos   { CRIS_INSN_CMPCWR, CRISV32F_INSN_CMPCWR, CRISV32F_SFMT_CMPCWR },
     76   1.1  christos   { CRIS_INSN_CMPCDR, CRISV32F_INSN_CMPCDR, CRISV32F_SFMT_CMPCDR },
     77   1.1  christos   { CRIS_INSN_CMPQ, CRISV32F_INSN_CMPQ, CRISV32F_SFMT_CMPQ },
     78   1.1  christos   { CRIS_INSN_CMPS_M_B_M, CRISV32F_INSN_CMPS_M_B_M, CRISV32F_SFMT_CMP_M_B_M },
     79   1.1  christos   { CRIS_INSN_CMPS_M_W_M, CRISV32F_INSN_CMPS_M_W_M, CRISV32F_SFMT_CMP_M_W_M },
     80   1.1  christos   { CRIS_INSN_CMPSCBR, CRISV32F_INSN_CMPSCBR, CRISV32F_SFMT_CMPCBR },
     81   1.1  christos   { CRIS_INSN_CMPSCWR, CRISV32F_INSN_CMPSCWR, CRISV32F_SFMT_CMPCWR },
     82   1.1  christos   { CRIS_INSN_CMPU_M_B_M, CRISV32F_INSN_CMPU_M_B_M, CRISV32F_SFMT_CMP_M_B_M },
     83   1.1  christos   { CRIS_INSN_CMPU_M_W_M, CRISV32F_INSN_CMPU_M_W_M, CRISV32F_SFMT_CMP_M_W_M },
     84   1.1  christos   { CRIS_INSN_CMPUCBR, CRISV32F_INSN_CMPUCBR, CRISV32F_SFMT_CMPUCBR },
     85   1.1  christos   { CRIS_INSN_CMPUCWR, CRISV32F_INSN_CMPUCWR, CRISV32F_SFMT_CMPUCWR },
     86   1.1  christos   { CRIS_INSN_MOVE_M_B_M, CRISV32F_INSN_MOVE_M_B_M, CRISV32F_SFMT_MOVE_M_B_M },
     87   1.1  christos   { CRIS_INSN_MOVE_M_W_M, CRISV32F_INSN_MOVE_M_W_M, CRISV32F_SFMT_MOVE_M_W_M },
     88   1.1  christos   { CRIS_INSN_MOVE_M_D_M, CRISV32F_INSN_MOVE_M_D_M, CRISV32F_SFMT_MOVE_M_D_M },
     89   1.1  christos   { CRIS_INSN_MOVS_M_B_M, CRISV32F_INSN_MOVS_M_B_M, CRISV32F_SFMT_MOVS_M_B_M },
     90   1.1  christos   { CRIS_INSN_MOVS_M_W_M, CRISV32F_INSN_MOVS_M_W_M, CRISV32F_SFMT_MOVS_M_W_M },
     91   1.1  christos   { CRIS_INSN_MOVU_M_B_M, CRISV32F_INSN_MOVU_M_B_M, CRISV32F_SFMT_MOVS_M_B_M },
     92   1.1  christos   { CRIS_INSN_MOVU_M_W_M, CRISV32F_INSN_MOVU_M_W_M, CRISV32F_SFMT_MOVS_M_W_M },
     93   1.1  christos   { CRIS_INSN_MOVE_R_SPRV32, CRISV32F_INSN_MOVE_R_SPRV32, CRISV32F_SFMT_MOVE_R_SPRV32 },
     94   1.1  christos   { CRIS_INSN_MOVE_SPR_RV32, CRISV32F_INSN_MOVE_SPR_RV32, CRISV32F_SFMT_MOVE_SPR_RV32 },
     95   1.1  christos   { CRIS_INSN_MOVE_M_SPRV32, CRISV32F_INSN_MOVE_M_SPRV32, CRISV32F_SFMT_MOVE_M_SPRV32 },
     96   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P2, CRISV32F_INSN_MOVE_C_SPRV32_P2, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
     97   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P3, CRISV32F_INSN_MOVE_C_SPRV32_P3, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
     98   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P5, CRISV32F_INSN_MOVE_C_SPRV32_P5, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
     99   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P6, CRISV32F_INSN_MOVE_C_SPRV32_P6, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
    100   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P7, CRISV32F_INSN_MOVE_C_SPRV32_P7, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
    101   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P9, CRISV32F_INSN_MOVE_C_SPRV32_P9, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
    102   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P10, CRISV32F_INSN_MOVE_C_SPRV32_P10, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
    103   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P11, CRISV32F_INSN_MOVE_C_SPRV32_P11, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
    104   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P12, CRISV32F_INSN_MOVE_C_SPRV32_P12, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
    105   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P13, CRISV32F_INSN_MOVE_C_SPRV32_P13, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
    106   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P14, CRISV32F_INSN_MOVE_C_SPRV32_P14, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
    107   1.1  christos   { CRIS_INSN_MOVE_C_SPRV32_P15, CRISV32F_INSN_MOVE_C_SPRV32_P15, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
    108   1.1  christos   { CRIS_INSN_MOVE_SPR_MV32, CRISV32F_INSN_MOVE_SPR_MV32, CRISV32F_SFMT_MOVE_SPR_MV32 },
    109   1.1  christos   { CRIS_INSN_MOVE_SS_R, CRISV32F_INSN_MOVE_SS_R, CRISV32F_SFMT_MOVE_SS_R },
    110   1.1  christos   { CRIS_INSN_MOVE_R_SS, CRISV32F_INSN_MOVE_R_SS, CRISV32F_SFMT_MOVE_R_SS },
    111   1.1  christos   { CRIS_INSN_MOVEM_R_M_V32, CRISV32F_INSN_MOVEM_R_M_V32, CRISV32F_SFMT_MOVEM_R_M_V32 },
    112   1.1  christos   { CRIS_INSN_MOVEM_M_R_V32, CRISV32F_INSN_MOVEM_M_R_V32, CRISV32F_SFMT_MOVEM_M_R_V32 },
    113   1.1  christos   { CRIS_INSN_ADD_B_R, CRISV32F_INSN_ADD_B_R, CRISV32F_SFMT_ADD_B_R },
    114   1.1  christos   { CRIS_INSN_ADD_W_R, CRISV32F_INSN_ADD_W_R, CRISV32F_SFMT_ADD_B_R },
    115   1.1  christos   { CRIS_INSN_ADD_D_R, CRISV32F_INSN_ADD_D_R, CRISV32F_SFMT_ADD_D_R },
    116   1.1  christos   { CRIS_INSN_ADD_M_B_M, CRISV32F_INSN_ADD_M_B_M, CRISV32F_SFMT_ADD_M_B_M },
    117   1.1  christos   { CRIS_INSN_ADD_M_W_M, CRISV32F_INSN_ADD_M_W_M, CRISV32F_SFMT_ADD_M_W_M },
    118   1.1  christos   { CRIS_INSN_ADD_M_D_M, CRISV32F_INSN_ADD_M_D_M, CRISV32F_SFMT_ADD_M_D_M },
    119   1.1  christos   { CRIS_INSN_ADDCBR, CRISV32F_INSN_ADDCBR, CRISV32F_SFMT_ADDCBR },
    120   1.1  christos   { CRIS_INSN_ADDCWR, CRISV32F_INSN_ADDCWR, CRISV32F_SFMT_ADDCWR },
    121   1.1  christos   { CRIS_INSN_ADDCDR, CRISV32F_INSN_ADDCDR, CRISV32F_SFMT_ADDCDR },
    122   1.1  christos   { CRIS_INSN_ADDS_B_R, CRISV32F_INSN_ADDS_B_R, CRISV32F_SFMT_ADD_D_R },
    123   1.1  christos   { CRIS_INSN_ADDS_W_R, CRISV32F_INSN_ADDS_W_R, CRISV32F_SFMT_ADD_D_R },
    124   1.1  christos   { CRIS_INSN_ADDS_M_B_M, CRISV32F_INSN_ADDS_M_B_M, CRISV32F_SFMT_ADDS_M_B_M },
    125   1.1  christos   { CRIS_INSN_ADDS_M_W_M, CRISV32F_INSN_ADDS_M_W_M, CRISV32F_SFMT_ADDS_M_W_M },
    126   1.1  christos   { CRIS_INSN_ADDSCBR, CRISV32F_INSN_ADDSCBR, CRISV32F_SFMT_ADDSCBR },
    127   1.1  christos   { CRIS_INSN_ADDSCWR, CRISV32F_INSN_ADDSCWR, CRISV32F_SFMT_ADDSCWR },
    128   1.1  christos   { CRIS_INSN_ADDU_B_R, CRISV32F_INSN_ADDU_B_R, CRISV32F_SFMT_ADD_D_R },
    129   1.1  christos   { CRIS_INSN_ADDU_W_R, CRISV32F_INSN_ADDU_W_R, CRISV32F_SFMT_ADD_D_R },
    130   1.1  christos   { CRIS_INSN_ADDU_M_B_M, CRISV32F_INSN_ADDU_M_B_M, CRISV32F_SFMT_ADDS_M_B_M },
    131   1.1  christos   { CRIS_INSN_ADDU_M_W_M, CRISV32F_INSN_ADDU_M_W_M, CRISV32F_SFMT_ADDS_M_W_M },
    132   1.1  christos   { CRIS_INSN_ADDUCBR, CRISV32F_INSN_ADDUCBR, CRISV32F_SFMT_ADDSCBR },
    133   1.1  christos   { CRIS_INSN_ADDUCWR, CRISV32F_INSN_ADDUCWR, CRISV32F_SFMT_ADDSCWR },
    134   1.1  christos   { CRIS_INSN_SUB_B_R, CRISV32F_INSN_SUB_B_R, CRISV32F_SFMT_ADD_B_R },
    135   1.1  christos   { CRIS_INSN_SUB_W_R, CRISV32F_INSN_SUB_W_R, CRISV32F_SFMT_ADD_B_R },
    136   1.1  christos   { CRIS_INSN_SUB_D_R, CRISV32F_INSN_SUB_D_R, CRISV32F_SFMT_ADD_D_R },
    137   1.1  christos   { CRIS_INSN_SUB_M_B_M, CRISV32F_INSN_SUB_M_B_M, CRISV32F_SFMT_ADD_M_B_M },
    138   1.1  christos   { CRIS_INSN_SUB_M_W_M, CRISV32F_INSN_SUB_M_W_M, CRISV32F_SFMT_ADD_M_W_M },
    139   1.1  christos   { CRIS_INSN_SUB_M_D_M, CRISV32F_INSN_SUB_M_D_M, CRISV32F_SFMT_ADD_M_D_M },
    140   1.1  christos   { CRIS_INSN_SUBCBR, CRISV32F_INSN_SUBCBR, CRISV32F_SFMT_ADDCBR },
    141   1.1  christos   { CRIS_INSN_SUBCWR, CRISV32F_INSN_SUBCWR, CRISV32F_SFMT_ADDCWR },
    142   1.1  christos   { CRIS_INSN_SUBCDR, CRISV32F_INSN_SUBCDR, CRISV32F_SFMT_ADDCDR },
    143   1.1  christos   { CRIS_INSN_SUBS_B_R, CRISV32F_INSN_SUBS_B_R, CRISV32F_SFMT_ADD_D_R },
    144   1.1  christos   { CRIS_INSN_SUBS_W_R, CRISV32F_INSN_SUBS_W_R, CRISV32F_SFMT_ADD_D_R },
    145   1.1  christos   { CRIS_INSN_SUBS_M_B_M, CRISV32F_INSN_SUBS_M_B_M, CRISV32F_SFMT_ADDS_M_B_M },
    146   1.1  christos   { CRIS_INSN_SUBS_M_W_M, CRISV32F_INSN_SUBS_M_W_M, CRISV32F_SFMT_ADDS_M_W_M },
    147   1.1  christos   { CRIS_INSN_SUBSCBR, CRISV32F_INSN_SUBSCBR, CRISV32F_SFMT_ADDSCBR },
    148   1.1  christos   { CRIS_INSN_SUBSCWR, CRISV32F_INSN_SUBSCWR, CRISV32F_SFMT_ADDSCWR },
    149   1.1  christos   { CRIS_INSN_SUBU_B_R, CRISV32F_INSN_SUBU_B_R, CRISV32F_SFMT_ADD_D_R },
    150   1.1  christos   { CRIS_INSN_SUBU_W_R, CRISV32F_INSN_SUBU_W_R, CRISV32F_SFMT_ADD_D_R },
    151   1.1  christos   { CRIS_INSN_SUBU_M_B_M, CRISV32F_INSN_SUBU_M_B_M, CRISV32F_SFMT_ADDS_M_B_M },
    152   1.1  christos   { CRIS_INSN_SUBU_M_W_M, CRISV32F_INSN_SUBU_M_W_M, CRISV32F_SFMT_ADDS_M_W_M },
    153   1.1  christos   { CRIS_INSN_SUBUCBR, CRISV32F_INSN_SUBUCBR, CRISV32F_SFMT_ADDSCBR },
    154   1.1  christos   { CRIS_INSN_SUBUCWR, CRISV32F_INSN_SUBUCWR, CRISV32F_SFMT_ADDSCWR },
    155   1.1  christos   { CRIS_INSN_ADDC_R, CRISV32F_INSN_ADDC_R, CRISV32F_SFMT_ADD_D_R },
    156   1.1  christos   { CRIS_INSN_ADDC_M, CRISV32F_INSN_ADDC_M, CRISV32F_SFMT_ADDC_M },
    157   1.1  christos   { CRIS_INSN_ADDC_C, CRISV32F_INSN_ADDC_C, CRISV32F_SFMT_ADDCDR },
    158   1.1  christos   { CRIS_INSN_LAPC_D, CRISV32F_INSN_LAPC_D, CRISV32F_SFMT_LAPC_D },
    159   1.1  christos   { CRIS_INSN_LAPCQ, CRISV32F_INSN_LAPCQ, CRISV32F_SFMT_LAPCQ },
    160   1.1  christos   { CRIS_INSN_ADDI_B_R, CRISV32F_INSN_ADDI_B_R, CRISV32F_SFMT_ADDI_B_R },
    161   1.1  christos   { CRIS_INSN_ADDI_W_R, CRISV32F_INSN_ADDI_W_R, CRISV32F_SFMT_ADDI_B_R },
    162   1.1  christos   { CRIS_INSN_ADDI_D_R, CRISV32F_INSN_ADDI_D_R, CRISV32F_SFMT_ADDI_B_R },
    163   1.1  christos   { CRIS_INSN_NEG_B_R, CRISV32F_INSN_NEG_B_R, CRISV32F_SFMT_NEG_B_R },
    164   1.1  christos   { CRIS_INSN_NEG_W_R, CRISV32F_INSN_NEG_W_R, CRISV32F_SFMT_NEG_B_R },
    165   1.1  christos   { CRIS_INSN_NEG_D_R, CRISV32F_INSN_NEG_D_R, CRISV32F_SFMT_NEG_D_R },
    166   1.1  christos   { CRIS_INSN_TEST_M_B_M, CRISV32F_INSN_TEST_M_B_M, CRISV32F_SFMT_TEST_M_B_M },
    167   1.1  christos   { CRIS_INSN_TEST_M_W_M, CRISV32F_INSN_TEST_M_W_M, CRISV32F_SFMT_TEST_M_W_M },
    168   1.1  christos   { CRIS_INSN_TEST_M_D_M, CRISV32F_INSN_TEST_M_D_M, CRISV32F_SFMT_TEST_M_D_M },
    169   1.1  christos   { CRIS_INSN_MOVE_R_M_B_M, CRISV32F_INSN_MOVE_R_M_B_M, CRISV32F_SFMT_MOVE_R_M_B_M },
    170   1.1  christos   { CRIS_INSN_MOVE_R_M_W_M, CRISV32F_INSN_MOVE_R_M_W_M, CRISV32F_SFMT_MOVE_R_M_W_M },
    171   1.1  christos   { CRIS_INSN_MOVE_R_M_D_M, CRISV32F_INSN_MOVE_R_M_D_M, CRISV32F_SFMT_MOVE_R_M_D_M },
    172   1.1  christos   { CRIS_INSN_MULS_B, CRISV32F_INSN_MULS_B, CRISV32F_SFMT_MULS_B },
    173   1.1  christos   { CRIS_INSN_MULS_W, CRISV32F_INSN_MULS_W, CRISV32F_SFMT_MULS_B },
    174   1.1  christos   { CRIS_INSN_MULS_D, CRISV32F_INSN_MULS_D, CRISV32F_SFMT_MULS_B },
    175   1.1  christos   { CRIS_INSN_MULU_B, CRISV32F_INSN_MULU_B, CRISV32F_SFMT_MULS_B },
    176   1.1  christos   { CRIS_INSN_MULU_W, CRISV32F_INSN_MULU_W, CRISV32F_SFMT_MULS_B },
    177   1.1  christos   { CRIS_INSN_MULU_D, CRISV32F_INSN_MULU_D, CRISV32F_SFMT_MULS_B },
    178   1.1  christos   { CRIS_INSN_MCP, CRISV32F_INSN_MCP, CRISV32F_SFMT_MCP },
    179   1.1  christos   { CRIS_INSN_DSTEP, CRISV32F_INSN_DSTEP, CRISV32F_SFMT_DSTEP },
    180   1.1  christos   { CRIS_INSN_ABS, CRISV32F_INSN_ABS, CRISV32F_SFMT_MOVS_B_R },
    181   1.1  christos   { CRIS_INSN_AND_B_R, CRISV32F_INSN_AND_B_R, CRISV32F_SFMT_AND_B_R },
    182   1.1  christos   { CRIS_INSN_AND_W_R, CRISV32F_INSN_AND_W_R, CRISV32F_SFMT_AND_B_R },
    183   1.1  christos   { CRIS_INSN_AND_D_R, CRISV32F_INSN_AND_D_R, CRISV32F_SFMT_AND_D_R },
    184   1.1  christos   { CRIS_INSN_AND_M_B_M, CRISV32F_INSN_AND_M_B_M, CRISV32F_SFMT_AND_M_B_M },
    185   1.1  christos   { CRIS_INSN_AND_M_W_M, CRISV32F_INSN_AND_M_W_M, CRISV32F_SFMT_AND_M_W_M },
    186   1.1  christos   { CRIS_INSN_AND_M_D_M, CRISV32F_INSN_AND_M_D_M, CRISV32F_SFMT_AND_M_D_M },
    187   1.1  christos   { CRIS_INSN_ANDCBR, CRISV32F_INSN_ANDCBR, CRISV32F_SFMT_ANDCBR },
    188   1.1  christos   { CRIS_INSN_ANDCWR, CRISV32F_INSN_ANDCWR, CRISV32F_SFMT_ANDCWR },
    189   1.1  christos   { CRIS_INSN_ANDCDR, CRISV32F_INSN_ANDCDR, CRISV32F_SFMT_ANDCDR },
    190   1.1  christos   { CRIS_INSN_ANDQ, CRISV32F_INSN_ANDQ, CRISV32F_SFMT_ANDQ },
    191   1.1  christos   { CRIS_INSN_ORR_B_R, CRISV32F_INSN_ORR_B_R, CRISV32F_SFMT_AND_B_R },
    192   1.1  christos   { CRIS_INSN_ORR_W_R, CRISV32F_INSN_ORR_W_R, CRISV32F_SFMT_AND_B_R },
    193   1.1  christos   { CRIS_INSN_ORR_D_R, CRISV32F_INSN_ORR_D_R, CRISV32F_SFMT_AND_D_R },
    194   1.1  christos   { CRIS_INSN_OR_M_B_M, CRISV32F_INSN_OR_M_B_M, CRISV32F_SFMT_AND_M_B_M },
    195   1.1  christos   { CRIS_INSN_OR_M_W_M, CRISV32F_INSN_OR_M_W_M, CRISV32F_SFMT_AND_M_W_M },
    196   1.1  christos   { CRIS_INSN_OR_M_D_M, CRISV32F_INSN_OR_M_D_M, CRISV32F_SFMT_AND_M_D_M },
    197   1.1  christos   { CRIS_INSN_ORCBR, CRISV32F_INSN_ORCBR, CRISV32F_SFMT_ANDCBR },
    198   1.1  christos   { CRIS_INSN_ORCWR, CRISV32F_INSN_ORCWR, CRISV32F_SFMT_ANDCWR },
    199   1.1  christos   { CRIS_INSN_ORCDR, CRISV32F_INSN_ORCDR, CRISV32F_SFMT_ANDCDR },
    200   1.1  christos   { CRIS_INSN_ORQ, CRISV32F_INSN_ORQ, CRISV32F_SFMT_ANDQ },
    201   1.1  christos   { CRIS_INSN_XOR, CRISV32F_INSN_XOR, CRISV32F_SFMT_DSTEP },
    202   1.1  christos   { CRIS_INSN_SWAP, CRISV32F_INSN_SWAP, CRISV32F_SFMT_SWAP },
    203   1.1  christos   { CRIS_INSN_ASRR_B_R, CRISV32F_INSN_ASRR_B_R, CRISV32F_SFMT_AND_B_R },
    204   1.1  christos   { CRIS_INSN_ASRR_W_R, CRISV32F_INSN_ASRR_W_R, CRISV32F_SFMT_AND_B_R },
    205   1.1  christos   { CRIS_INSN_ASRR_D_R, CRISV32F_INSN_ASRR_D_R, CRISV32F_SFMT_AND_D_R },
    206   1.1  christos   { CRIS_INSN_ASRQ, CRISV32F_INSN_ASRQ, CRISV32F_SFMT_ASRQ },
    207   1.1  christos   { CRIS_INSN_LSRR_B_R, CRISV32F_INSN_LSRR_B_R, CRISV32F_SFMT_LSRR_B_R },
    208   1.1  christos   { CRIS_INSN_LSRR_W_R, CRISV32F_INSN_LSRR_W_R, CRISV32F_SFMT_LSRR_B_R },
    209   1.1  christos   { CRIS_INSN_LSRR_D_R, CRISV32F_INSN_LSRR_D_R, CRISV32F_SFMT_LSRR_D_R },
    210   1.1  christos   { CRIS_INSN_LSRQ, CRISV32F_INSN_LSRQ, CRISV32F_SFMT_ASRQ },
    211   1.1  christos   { CRIS_INSN_LSLR_B_R, CRISV32F_INSN_LSLR_B_R, CRISV32F_SFMT_LSRR_B_R },
    212   1.1  christos   { CRIS_INSN_LSLR_W_R, CRISV32F_INSN_LSLR_W_R, CRISV32F_SFMT_LSRR_B_R },
    213   1.1  christos   { CRIS_INSN_LSLR_D_R, CRISV32F_INSN_LSLR_D_R, CRISV32F_SFMT_LSRR_D_R },
    214   1.1  christos   { CRIS_INSN_LSLQ, CRISV32F_INSN_LSLQ, CRISV32F_SFMT_ASRQ },
    215   1.1  christos   { CRIS_INSN_BTST, CRISV32F_INSN_BTST, CRISV32F_SFMT_BTST },
    216   1.1  christos   { CRIS_INSN_BTSTQ, CRISV32F_INSN_BTSTQ, CRISV32F_SFMT_BTSTQ },
    217   1.1  christos   { CRIS_INSN_SETF, CRISV32F_INSN_SETF, CRISV32F_SFMT_SETF },
    218   1.1  christos   { CRIS_INSN_CLEARF, CRISV32F_INSN_CLEARF, CRISV32F_SFMT_SETF },
    219   1.1  christos   { CRIS_INSN_RFE, CRISV32F_INSN_RFE, CRISV32F_SFMT_RFE },
    220   1.1  christos   { CRIS_INSN_SFE, CRISV32F_INSN_SFE, CRISV32F_SFMT_SFE },
    221   1.1  christos   { CRIS_INSN_RFG, CRISV32F_INSN_RFG, CRISV32F_SFMT_RFG },
    222   1.1  christos   { CRIS_INSN_RFN, CRISV32F_INSN_RFN, CRISV32F_SFMT_RFN },
    223   1.1  christos   { CRIS_INSN_HALT, CRISV32F_INSN_HALT, CRISV32F_SFMT_HALT },
    224   1.1  christos   { CRIS_INSN_BCC_B, CRISV32F_INSN_BCC_B, CRISV32F_SFMT_BCC_B },
    225   1.1  christos   { CRIS_INSN_BA_B, CRISV32F_INSN_BA_B, CRISV32F_SFMT_BA_B },
    226   1.1  christos   { CRIS_INSN_BCC_W, CRISV32F_INSN_BCC_W, CRISV32F_SFMT_BCC_W },
    227   1.1  christos   { CRIS_INSN_BA_W, CRISV32F_INSN_BA_W, CRISV32F_SFMT_BA_W },
    228   1.1  christos   { CRIS_INSN_JAS_R, CRISV32F_INSN_JAS_R, CRISV32F_SFMT_JAS_R },
    229   1.1  christos   { CRIS_INSN_JAS_C, CRISV32F_INSN_JAS_C, CRISV32F_SFMT_JAS_C },
    230   1.1  christos   { CRIS_INSN_JUMP_P, CRISV32F_INSN_JUMP_P, CRISV32F_SFMT_JUMP_P },
    231   1.1  christos   { CRIS_INSN_BAS_C, CRISV32F_INSN_BAS_C, CRISV32F_SFMT_BAS_C },
    232   1.1  christos   { CRIS_INSN_JASC_R, CRISV32F_INSN_JASC_R, CRISV32F_SFMT_JASC_R },
    233   1.1  christos   { CRIS_INSN_JASC_C, CRISV32F_INSN_JASC_C, CRISV32F_SFMT_JAS_C },
    234   1.1  christos   { CRIS_INSN_BASC_C, CRISV32F_INSN_BASC_C, CRISV32F_SFMT_BAS_C },
    235   1.1  christos   { CRIS_INSN_BREAK, CRISV32F_INSN_BREAK, CRISV32F_SFMT_BREAK },
    236   1.1  christos   { CRIS_INSN_BOUND_R_B_R, CRISV32F_INSN_BOUND_R_B_R, CRISV32F_SFMT_DSTEP },
    237   1.1  christos   { CRIS_INSN_BOUND_R_W_R, CRISV32F_INSN_BOUND_R_W_R, CRISV32F_SFMT_DSTEP },
    238   1.1  christos   { CRIS_INSN_BOUND_R_D_R, CRISV32F_INSN_BOUND_R_D_R, CRISV32F_SFMT_DSTEP },
    239   1.1  christos   { CRIS_INSN_BOUND_CB, CRISV32F_INSN_BOUND_CB, CRISV32F_SFMT_BOUND_CB },
    240   1.1  christos   { CRIS_INSN_BOUND_CW, CRISV32F_INSN_BOUND_CW, CRISV32F_SFMT_BOUND_CW },
    241   1.1  christos   { CRIS_INSN_BOUND_CD, CRISV32F_INSN_BOUND_CD, CRISV32F_SFMT_BOUND_CD },
    242   1.1  christos   { CRIS_INSN_SCC, CRISV32F_INSN_SCC, CRISV32F_SFMT_SCC },
    243   1.1  christos   { CRIS_INSN_LZ, CRISV32F_INSN_LZ, CRISV32F_SFMT_MOVS_B_R },
    244   1.1  christos   { CRIS_INSN_ADDOQ, CRISV32F_INSN_ADDOQ, CRISV32F_SFMT_ADDOQ },
    245   1.1  christos   { CRIS_INSN_ADDO_M_B_M, CRISV32F_INSN_ADDO_M_B_M, CRISV32F_SFMT_ADDO_M_B_M },
    246   1.1  christos   { CRIS_INSN_ADDO_M_W_M, CRISV32F_INSN_ADDO_M_W_M, CRISV32F_SFMT_ADDO_M_W_M },
    247   1.1  christos   { CRIS_INSN_ADDO_M_D_M, CRISV32F_INSN_ADDO_M_D_M, CRISV32F_SFMT_ADDO_M_D_M },
    248   1.1  christos   { CRIS_INSN_ADDO_CB, CRISV32F_INSN_ADDO_CB, CRISV32F_SFMT_ADDO_CB },
    249   1.1  christos   { CRIS_INSN_ADDO_CW, CRISV32F_INSN_ADDO_CW, CRISV32F_SFMT_ADDO_CW },
    250   1.1  christos   { CRIS_INSN_ADDO_CD, CRISV32F_INSN_ADDO_CD, CRISV32F_SFMT_ADDO_CD },
    251   1.1  christos   { CRIS_INSN_ADDI_ACR_B_R, CRISV32F_INSN_ADDI_ACR_B_R, CRISV32F_SFMT_ADDI_ACR_B_R },
    252   1.1  christos   { CRIS_INSN_ADDI_ACR_W_R, CRISV32F_INSN_ADDI_ACR_W_R, CRISV32F_SFMT_ADDI_ACR_B_R },
    253   1.1  christos   { CRIS_INSN_ADDI_ACR_D_R, CRISV32F_INSN_ADDI_ACR_D_R, CRISV32F_SFMT_ADDI_ACR_B_R },
    254   1.1  christos   { CRIS_INSN_FIDXI, CRISV32F_INSN_FIDXI, CRISV32F_SFMT_FIDXI },
    255   1.1  christos   { CRIS_INSN_FTAGI, CRISV32F_INSN_FTAGI, CRISV32F_SFMT_FIDXI },
    256   1.1  christos   { CRIS_INSN_FIDXD, CRISV32F_INSN_FIDXD, CRISV32F_SFMT_FIDXI },
    257   1.1  christos   { CRIS_INSN_FTAGD, CRISV32F_INSN_FTAGD, CRISV32F_SFMT_FIDXI },
    258   1.1  christos };
    259   1.1  christos 
    260   1.1  christos static const struct insn_sem crisv32f_insn_sem_invalid =
    261   1.1  christos {
    262   1.1  christos   VIRTUAL_INSN_X_INVALID, CRISV32F_INSN_X_INVALID, CRISV32F_SFMT_EMPTY
    263   1.1  christos };
    264   1.1  christos 
    265   1.1  christos /* Initialize an IDESC from the compile-time computable parts.  */
    266   1.1  christos 
    267   1.1  christos static INLINE void
    268   1.1  christos init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
    269   1.1  christos {
    270   1.1  christos   const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
    271   1.1  christos 
    272   1.1  christos   id->num = t->index;
    273   1.1  christos   id->sfmt = t->sfmt;
    274   1.1  christos   if ((int) t->type <= 0)
    275   1.1  christos     id->idata = & cgen_virtual_insn_table[- (int) t->type];
    276   1.1  christos   else
    277   1.1  christos     id->idata = & insn_table[t->type];
    278   1.1  christos   id->attrs = CGEN_INSN_ATTRS (id->idata);
    279   1.1  christos   /* Oh my god, a magic number.  */
    280   1.1  christos   id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
    281   1.1  christos 
    282   1.1  christos #if WITH_PROFILE_MODEL_P
    283   1.1  christos   id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
    284   1.1  christos   {
    285   1.1  christos     SIM_DESC sd = CPU_STATE (cpu);
    286   1.1  christos     SIM_ASSERT (t->index == id->timing->num);
    287   1.1  christos   }
    288   1.1  christos #endif
    289   1.1  christos 
    290   1.1  christos   /* Semantic pointers are initialized elsewhere.  */
    291   1.1  christos }
    292   1.1  christos 
    293   1.1  christos /* Initialize the instruction descriptor table.  */
    294   1.1  christos 
    295   1.1  christos void
    296   1.1  christos crisv32f_init_idesc_table (SIM_CPU *cpu)
    297   1.1  christos {
    298   1.1  christos   IDESC *id,*tabend;
    299   1.1  christos   const struct insn_sem *t,*tend;
    300   1.1  christos   int tabsize = CRISV32F_INSN__MAX;
    301   1.1  christos   IDESC *table = crisv32f_insn_data;
    302   1.1  christos 
    303   1.1  christos   memset (table, 0, tabsize * sizeof (IDESC));
    304   1.1  christos 
    305   1.1  christos   /* First set all entries to the `invalid insn'.  */
    306   1.1  christos   t = & crisv32f_insn_sem_invalid;
    307   1.1  christos   for (id = table, tabend = table + tabsize; id < tabend; ++id)
    308   1.1  christos     init_idesc (cpu, id, t);
    309   1.1  christos 
    310   1.1  christos   /* Now fill in the values for the chosen cpu.  */
    311   1.7  christos   for (t = crisv32f_insn_sem, tend = t + ARRAY_SIZE (crisv32f_insn_sem);
    312   1.1  christos        t != tend; ++t)
    313   1.1  christos     {
    314   1.1  christos       init_idesc (cpu, & table[t->index], t);
    315   1.1  christos     }
    316   1.1  christos 
    317   1.1  christos   /* Link the IDESC table into the cpu.  */
    318   1.1  christos   CPU_IDESC (cpu) = table;
    319   1.1  christos }
    320   1.1  christos 
    321   1.1  christos /* Given an instruction, return a pointer to its IDESC entry.  */
    322   1.1  christos 
    323   1.1  christos const IDESC *
    324   1.1  christos crisv32f_decode (SIM_CPU *current_cpu, IADDR pc,
    325   1.1  christos               CGEN_INSN_WORD base_insn,
    326   1.1  christos               ARGBUF *abuf)
    327   1.1  christos {
    328   1.1  christos   /* Result of decoder.  */
    329   1.1  christos   CRISV32F_INSN_TYPE itype;
    330   1.1  christos 
    331   1.1  christos   {
    332   1.1  christos     CGEN_INSN_WORD insn = base_insn;
    333   1.1  christos 
    334   1.1  christos     {
    335  1.11  christos       unsigned int val0 = (((insn >> 4) & (255 << 0)));
    336  1.11  christos       switch (val0)
    337   1.1  christos       {
    338  1.11  christos       case 0:
    339  1.11  christos       case 1:
    340  1.11  christos       case 2:
    341  1.11  christos       case 3:
    342  1.11  christos       case 4:
    343  1.11  christos       case 5:
    344  1.11  christos       case 6:
    345  1.11  christos       case 7:
    346  1.11  christos       case 8:
    347  1.11  christos       case 9:
    348  1.11  christos       case 10:
    349  1.11  christos       case 11:
    350  1.11  christos       case 12:
    351  1.11  christos       case 13:
    352  1.11  christos       case 14:
    353  1.11  christos       case 15:
    354  1.11  christos         {
    355  1.11  christos           unsigned int val1 = (((insn >> 12) & (15 << 0)));
    356  1.11  christos           switch (val1)
    357  1.11  christos           {
    358  1.11  christos           case 0:
    359  1.11  christos           case 1:
    360  1.11  christos           case 2:
    361  1.11  christos           case 3:
    362  1.11  christos           case 4:
    363  1.11  christos           case 5:
    364  1.11  christos           case 6:
    365  1.11  christos           case 7:
    366  1.11  christos           case 8:
    367  1.11  christos           case 9:
    368  1.11  christos           case 10:
    369  1.11  christos           case 11:
    370  1.11  christos           case 12:
    371  1.11  christos           case 13:
    372  1.11  christos           case 15: itype = CRISV32F_INSN_BCC_B; goto extract_sfmt_bcc_b;
    373  1.11  christos           case 14: itype = CRISV32F_INSN_BA_B; goto extract_sfmt_ba_b;
    374  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    375  1.11  christos           }
    376  1.11  christos         }
    377  1.11  christos       case 16:
    378  1.11  christos       case 17:
    379  1.11  christos       case 18:
    380  1.11  christos       case 19:
    381  1.11  christos       case 20:
    382  1.11  christos       case 21:
    383  1.11  christos       case 22:
    384  1.11  christos       case 23:
    385  1.11  christos       case 24:
    386  1.11  christos       case 25:
    387  1.11  christos       case 26:
    388  1.11  christos       case 27:
    389  1.11  christos       case 28:
    390  1.11  christos       case 29:
    391  1.11  christos       case 30:
    392  1.11  christos       case 31: itype = CRISV32F_INSN_ADDOQ; goto extract_sfmt_addoq;
    393  1.11  christos       case 32:
    394  1.11  christos       case 33:
    395  1.11  christos       case 34:
    396  1.11  christos       case 35: itype = CRISV32F_INSN_ADDQ; goto extract_sfmt_addq;
    397  1.11  christos       case 36:
    398  1.11  christos       case 37:
    399  1.11  christos       case 38:
    400  1.11  christos       case 39: itype = CRISV32F_INSN_MOVEQ; goto extract_sfmt_moveq;
    401  1.11  christos       case 40:
    402  1.11  christos       case 41:
    403  1.11  christos       case 42:
    404  1.11  christos       case 43: itype = CRISV32F_INSN_SUBQ; goto extract_sfmt_addq;
    405  1.11  christos       case 44:
    406  1.11  christos       case 45:
    407  1.11  christos       case 46:
    408  1.11  christos       case 47: itype = CRISV32F_INSN_CMPQ; goto extract_sfmt_cmpq;
    409  1.11  christos       case 48:
    410  1.11  christos       case 49:
    411  1.11  christos       case 50:
    412  1.11  christos       case 51: itype = CRISV32F_INSN_ANDQ; goto extract_sfmt_andq;
    413  1.11  christos       case 52:
    414  1.11  christos       case 53:
    415  1.11  christos       case 54:
    416  1.11  christos       case 55: itype = CRISV32F_INSN_ORQ; goto extract_sfmt_andq;
    417  1.11  christos       case 56:
    418  1.11  christos       case 57: itype = CRISV32F_INSN_BTSTQ; goto extract_sfmt_btstq;
    419  1.11  christos       case 58:
    420  1.11  christos       case 59: itype = CRISV32F_INSN_ASRQ; goto extract_sfmt_asrq;
    421  1.11  christos       case 60:
    422  1.11  christos       case 61: itype = CRISV32F_INSN_LSLQ; goto extract_sfmt_asrq;
    423  1.11  christos       case 62:
    424  1.11  christos       case 63: itype = CRISV32F_INSN_LSRQ; goto extract_sfmt_asrq;
    425  1.11  christos       case 64: itype = CRISV32F_INSN_ADDU_B_R; goto extract_sfmt_add_d_r;
    426  1.11  christos       case 65: itype = CRISV32F_INSN_ADDU_W_R; goto extract_sfmt_add_d_r;
    427  1.11  christos       case 66: itype = CRISV32F_INSN_ADDS_B_R; goto extract_sfmt_add_d_r;
    428  1.11  christos       case 67: itype = CRISV32F_INSN_ADDS_W_R; goto extract_sfmt_add_d_r;
    429  1.11  christos       case 68: itype = CRISV32F_INSN_MOVU_B_R; goto extract_sfmt_movs_b_r;
    430  1.11  christos       case 69: itype = CRISV32F_INSN_MOVU_W_R; goto extract_sfmt_movs_b_r;
    431  1.11  christos       case 70: itype = CRISV32F_INSN_MOVS_B_R; goto extract_sfmt_movs_b_r;
    432  1.11  christos       case 71: itype = CRISV32F_INSN_MOVS_W_R; goto extract_sfmt_movs_b_r;
    433  1.11  christos       case 72: itype = CRISV32F_INSN_SUBU_B_R; goto extract_sfmt_add_d_r;
    434  1.11  christos       case 73: itype = CRISV32F_INSN_SUBU_W_R; goto extract_sfmt_add_d_r;
    435  1.11  christos       case 74: itype = CRISV32F_INSN_SUBS_B_R; goto extract_sfmt_add_d_r;
    436  1.11  christos       case 75: itype = CRISV32F_INSN_SUBS_W_R; goto extract_sfmt_add_d_r;
    437  1.11  christos       case 76: itype = CRISV32F_INSN_LSLR_B_R; goto extract_sfmt_lsrr_b_r;
    438  1.11  christos       case 77: itype = CRISV32F_INSN_LSLR_W_R; goto extract_sfmt_lsrr_b_r;
    439  1.11  christos       case 78: itype = CRISV32F_INSN_LSLR_D_R; goto extract_sfmt_lsrr_d_r;
    440  1.11  christos       case 79: itype = CRISV32F_INSN_BTST; goto extract_sfmt_btst;
    441  1.11  christos       case 80: itype = CRISV32F_INSN_ADDI_B_R; goto extract_sfmt_addi_b_r;
    442  1.11  christos       case 81: itype = CRISV32F_INSN_ADDI_W_R; goto extract_sfmt_addi_b_r;
    443  1.11  christos       case 82: itype = CRISV32F_INSN_ADDI_D_R; goto extract_sfmt_addi_b_r;
    444  1.11  christos       case 83: itype = CRISV32F_INSN_SCC; goto extract_sfmt_scc;
    445  1.11  christos       case 84: itype = CRISV32F_INSN_ADDI_ACR_B_R; goto extract_sfmt_addi_acr_b_r;
    446  1.11  christos       case 85: itype = CRISV32F_INSN_ADDI_ACR_W_R; goto extract_sfmt_addi_acr_b_r;
    447  1.11  christos       case 86: itype = CRISV32F_INSN_ADDI_ACR_D_R; goto extract_sfmt_addi_acr_b_r;
    448  1.11  christos       case 87: itype = CRISV32F_INSN_ADDC_R; goto extract_sfmt_add_d_r;
    449  1.11  christos       case 88: itype = CRISV32F_INSN_NEG_B_R; goto extract_sfmt_neg_b_r;
    450  1.11  christos       case 89: itype = CRISV32F_INSN_NEG_W_R; goto extract_sfmt_neg_b_r;
    451  1.11  christos       case 90: itype = CRISV32F_INSN_NEG_D_R; goto extract_sfmt_neg_d_r;
    452  1.11  christos       case 91: itype = CRISV32F_INSN_SETF; goto extract_sfmt_setf;
    453  1.11  christos       case 92: itype = CRISV32F_INSN_BOUND_R_B_R; goto extract_sfmt_dstep;
    454  1.11  christos       case 93: itype = CRISV32F_INSN_BOUND_R_W_R; goto extract_sfmt_dstep;
    455  1.11  christos       case 94: itype = CRISV32F_INSN_BOUND_R_D_R; goto extract_sfmt_dstep;
    456  1.11  christos       case 95: itype = CRISV32F_INSN_CLEARF; goto extract_sfmt_setf;
    457  1.11  christos       case 96: itype = CRISV32F_INSN_ADD_B_R; goto extract_sfmt_add_b_r;
    458  1.11  christos       case 97: itype = CRISV32F_INSN_ADD_W_R; goto extract_sfmt_add_b_r;
    459  1.11  christos       case 98: itype = CRISV32F_INSN_ADD_D_R; goto extract_sfmt_add_d_r;
    460  1.11  christos       case 99: itype = CRISV32F_INSN_MOVE_R_SPRV32; goto extract_sfmt_move_r_sprv32;
    461  1.11  christos       case 100: itype = CRISV32F_INSN_MOVE_B_R; goto extract_sfmt_move_b_r;
    462  1.11  christos       case 101: itype = CRISV32F_INSN_MOVE_W_R; goto extract_sfmt_move_b_r;
    463  1.11  christos       case 102: itype = CRISV32F_INSN_MOVE_D_R; goto extract_sfmt_move_d_r;
    464  1.11  christos       case 103: itype = CRISV32F_INSN_MOVE_SPR_RV32; goto extract_sfmt_move_spr_rv32;
    465  1.11  christos       case 104: itype = CRISV32F_INSN_SUB_B_R; goto extract_sfmt_add_b_r;
    466  1.11  christos       case 105: itype = CRISV32F_INSN_SUB_W_R; goto extract_sfmt_add_b_r;
    467  1.11  christos       case 106: itype = CRISV32F_INSN_SUB_D_R; goto extract_sfmt_add_d_r;
    468  1.11  christos       case 107: itype = CRISV32F_INSN_ABS; goto extract_sfmt_movs_b_r;
    469  1.11  christos       case 108: itype = CRISV32F_INSN_CMP_R_B_R; goto extract_sfmt_cmp_r_b_r;
    470  1.11  christos       case 109: itype = CRISV32F_INSN_CMP_R_W_R; goto extract_sfmt_cmp_r_b_r;
    471  1.11  christos       case 110: itype = CRISV32F_INSN_CMP_R_D_R; goto extract_sfmt_cmp_r_b_r;
    472  1.11  christos       case 111: itype = CRISV32F_INSN_DSTEP; goto extract_sfmt_dstep;
    473  1.11  christos       case 112: itype = CRISV32F_INSN_AND_B_R; goto extract_sfmt_and_b_r;
    474  1.11  christos       case 113: itype = CRISV32F_INSN_AND_W_R; goto extract_sfmt_and_b_r;
    475  1.11  christos       case 114: itype = CRISV32F_INSN_AND_D_R; goto extract_sfmt_and_d_r;
    476  1.11  christos       case 115: itype = CRISV32F_INSN_LZ; goto extract_sfmt_movs_b_r;
    477  1.11  christos       case 116: itype = CRISV32F_INSN_ORR_B_R; goto extract_sfmt_and_b_r;
    478  1.11  christos       case 117: itype = CRISV32F_INSN_ORR_W_R; goto extract_sfmt_and_b_r;
    479  1.11  christos       case 118: itype = CRISV32F_INSN_ORR_D_R; goto extract_sfmt_and_d_r;
    480  1.11  christos       case 119: itype = CRISV32F_INSN_SWAP; goto extract_sfmt_swap;
    481  1.11  christos       case 120: itype = CRISV32F_INSN_ASRR_B_R; goto extract_sfmt_and_b_r;
    482  1.11  christos       case 121: itype = CRISV32F_INSN_ASRR_W_R; goto extract_sfmt_and_b_r;
    483  1.11  christos       case 122: itype = CRISV32F_INSN_ASRR_D_R; goto extract_sfmt_and_d_r;
    484  1.11  christos       case 123: itype = CRISV32F_INSN_XOR; goto extract_sfmt_dstep;
    485  1.11  christos       case 124: itype = CRISV32F_INSN_LSRR_B_R; goto extract_sfmt_lsrr_b_r;
    486  1.11  christos       case 125: itype = CRISV32F_INSN_LSRR_W_R; goto extract_sfmt_lsrr_b_r;
    487  1.11  christos       case 126: itype = CRISV32F_INSN_LSRR_D_R; goto extract_sfmt_lsrr_d_r;
    488  1.11  christos       case 127: itype = CRISV32F_INSN_MCP; goto extract_sfmt_mcp;
    489  1.11  christos       case 128: itype = CRISV32F_INSN_ADDU_M_B_M; goto extract_sfmt_adds_m_b_m;
    490  1.11  christos       case 129: itype = CRISV32F_INSN_ADDU_M_W_M; goto extract_sfmt_adds_m_w_m;
    491  1.11  christos       case 130: itype = CRISV32F_INSN_ADDS_M_B_M; goto extract_sfmt_adds_m_b_m;
    492  1.11  christos       case 131: itype = CRISV32F_INSN_ADDS_M_W_M; goto extract_sfmt_adds_m_w_m;
    493  1.11  christos       case 132: itype = CRISV32F_INSN_MOVU_M_B_M; goto extract_sfmt_movs_m_b_m;
    494  1.11  christos       case 133: itype = CRISV32F_INSN_MOVU_M_W_M; goto extract_sfmt_movs_m_w_m;
    495  1.11  christos       case 134: itype = CRISV32F_INSN_MOVS_M_B_M; goto extract_sfmt_movs_m_b_m;
    496  1.11  christos       case 135: itype = CRISV32F_INSN_MOVS_M_W_M; goto extract_sfmt_movs_m_w_m;
    497  1.11  christos       case 136: itype = CRISV32F_INSN_SUBU_M_B_M; goto extract_sfmt_adds_m_b_m;
    498  1.11  christos       case 137: itype = CRISV32F_INSN_SUBU_M_W_M; goto extract_sfmt_adds_m_w_m;
    499  1.11  christos       case 138: itype = CRISV32F_INSN_SUBS_M_B_M; goto extract_sfmt_adds_m_b_m;
    500  1.11  christos       case 139: itype = CRISV32F_INSN_SUBS_M_W_M; goto extract_sfmt_adds_m_w_m;
    501  1.11  christos       case 140: itype = CRISV32F_INSN_CMPU_M_B_M; goto extract_sfmt_cmp_m_b_m;
    502  1.11  christos       case 141: itype = CRISV32F_INSN_CMPU_M_W_M; goto extract_sfmt_cmp_m_w_m;
    503  1.11  christos       case 142: itype = CRISV32F_INSN_CMPS_M_B_M; goto extract_sfmt_cmp_m_b_m;
    504  1.11  christos       case 143: itype = CRISV32F_INSN_CMPS_M_W_M; goto extract_sfmt_cmp_m_w_m;
    505  1.11  christos       case 144: itype = CRISV32F_INSN_MULU_B; goto extract_sfmt_muls_b;
    506  1.11  christos       case 145: itype = CRISV32F_INSN_MULU_W; goto extract_sfmt_muls_b;
    507  1.11  christos       case 146: itype = CRISV32F_INSN_MULU_D; goto extract_sfmt_muls_b;
    508  1.11  christos       case 147:
    509   1.1  christos         {
    510  1.11  christos           unsigned int val1 = (((insn >> 12) & (15 << 0)));
    511  1.11  christos           switch (val1)
    512   1.1  christos           {
    513  1.11  christos           case 2:
    514   1.1  christos             if ((base_insn & 0xffff) == 0x2930)
    515   1.1  christos               { itype = CRISV32F_INSN_RFE; goto extract_sfmt_rfe; }
    516   1.1  christos             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    517  1.11  christos           case 3:
    518   1.1  christos             if ((base_insn & 0xffff) == 0x3930)
    519   1.1  christos               { itype = CRISV32F_INSN_SFE; goto extract_sfmt_sfe; }
    520   1.1  christos             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    521  1.11  christos           case 4:
    522   1.1  christos             if ((base_insn & 0xffff) == 0x4930)
    523   1.1  christos               { itype = CRISV32F_INSN_RFG; goto extract_sfmt_rfg; }
    524   1.1  christos             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    525  1.11  christos           case 5:
    526   1.1  christos             if ((base_insn & 0xffff) == 0x5930)
    527   1.1  christos               { itype = CRISV32F_INSN_RFN; goto extract_sfmt_rfn; }
    528   1.1  christos             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    529  1.11  christos           case 14: itype = CRISV32F_INSN_BREAK; goto extract_sfmt_break;
    530  1.11  christos           case 15:
    531   1.1  christos             if ((base_insn & 0xffff) == 0xf930)
    532   1.1  christos               { itype = CRISV32F_INSN_HALT; goto extract_sfmt_halt; }
    533   1.1  christos             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    534  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    535   1.1  christos           }
    536   1.1  christos         }
    537  1.11  christos       case 148: itype = CRISV32F_INSN_ADDO_M_B_M; goto extract_sfmt_addo_m_b_m;
    538  1.11  christos       case 149: itype = CRISV32F_INSN_ADDO_M_W_M; goto extract_sfmt_addo_m_w_m;
    539  1.11  christos       case 150: itype = CRISV32F_INSN_ADDO_M_D_M; goto extract_sfmt_addo_m_d_m;
    540  1.11  christos       case 151: itype = CRISV32F_INSN_LAPCQ; goto extract_sfmt_lapcq;
    541  1.11  christos       case 154: itype = CRISV32F_INSN_ADDC_M; goto extract_sfmt_addc_m;
    542  1.11  christos       case 155: itype = CRISV32F_INSN_JAS_R; goto extract_sfmt_jas_r;
    543  1.11  christos       case 159:
    544   1.1  christos         if ((base_insn & 0xfff) == 0x9f0)
    545   1.1  christos           { itype = CRISV32F_INSN_JUMP_P; goto extract_sfmt_jump_p; }
    546   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    547  1.11  christos       case 160: itype = CRISV32F_INSN_ADD_M_B_M; goto extract_sfmt_add_m_b_m;
    548  1.11  christos       case 161: itype = CRISV32F_INSN_ADD_M_W_M; goto extract_sfmt_add_m_w_m;
    549  1.11  christos       case 162: itype = CRISV32F_INSN_ADD_M_D_M; goto extract_sfmt_add_m_d_m;
    550  1.11  christos       case 163: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
    551  1.11  christos       case 164: itype = CRISV32F_INSN_MOVE_M_B_M; goto extract_sfmt_move_m_b_m;
    552  1.11  christos       case 165: itype = CRISV32F_INSN_MOVE_M_W_M; goto extract_sfmt_move_m_w_m;
    553  1.11  christos       case 166: itype = CRISV32F_INSN_MOVE_M_D_M; goto extract_sfmt_move_m_d_m;
    554  1.11  christos       case 167:
    555  1.11  christos       case 231: itype = CRISV32F_INSN_MOVE_SPR_MV32; goto extract_sfmt_move_spr_mv32;
    556  1.11  christos       case 168: itype = CRISV32F_INSN_SUB_M_B_M; goto extract_sfmt_add_m_b_m;
    557  1.11  christos       case 169: itype = CRISV32F_INSN_SUB_M_W_M; goto extract_sfmt_add_m_w_m;
    558  1.11  christos       case 170: itype = CRISV32F_INSN_SUB_M_D_M; goto extract_sfmt_add_m_d_m;
    559  1.11  christos       case 171:
    560   1.1  christos         {
    561  1.11  christos           unsigned int val1 = (((insn >> 12) & (1 << 0)));
    562  1.11  christos           switch (val1)
    563   1.1  christos           {
    564  1.11  christos           case 0:
    565   1.1  christos             if ((base_insn & 0xfff0) == 0xab0)
    566   1.1  christos               { itype = CRISV32F_INSN_FIDXD; goto extract_sfmt_fidxi; }
    567   1.1  christos             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    568  1.11  christos           case 1:
    569   1.1  christos             if ((base_insn & 0xfff0) == 0x1ab0)
    570   1.1  christos               { itype = CRISV32F_INSN_FTAGD; goto extract_sfmt_fidxi; }
    571   1.1  christos             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    572  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    573   1.1  christos           }
    574   1.1  christos         }
    575  1.11  christos       case 172: itype = CRISV32F_INSN_CMP_M_B_M; goto extract_sfmt_cmp_m_b_m;
    576  1.11  christos       case 173: itype = CRISV32F_INSN_CMP_M_W_M; goto extract_sfmt_cmp_m_w_m;
    577  1.11  christos       case 174: itype = CRISV32F_INSN_CMP_M_D_M; goto extract_sfmt_cmp_m_d_m;
    578  1.11  christos       case 176: itype = CRISV32F_INSN_AND_M_B_M; goto extract_sfmt_and_m_b_m;
    579  1.11  christos       case 177: itype = CRISV32F_INSN_AND_M_W_M; goto extract_sfmt_and_m_w_m;
    580  1.11  christos       case 178: itype = CRISV32F_INSN_AND_M_D_M; goto extract_sfmt_and_m_d_m;
    581  1.11  christos       case 179: itype = CRISV32F_INSN_JASC_R; goto extract_sfmt_jasc_r;
    582  1.11  christos       case 180: itype = CRISV32F_INSN_OR_M_B_M; goto extract_sfmt_and_m_b_m;
    583  1.11  christos       case 181: itype = CRISV32F_INSN_OR_M_W_M; goto extract_sfmt_and_m_w_m;
    584  1.11  christos       case 182: itype = CRISV32F_INSN_OR_M_D_M; goto extract_sfmt_and_m_d_m;
    585  1.11  christos       case 183: itype = CRISV32F_INSN_MOVE_R_SS; goto extract_sfmt_move_r_ss;
    586  1.11  christos       case 184:
    587  1.11  christos       case 248:
    588   1.1  christos         if ((base_insn & 0xfbf0) == 0xb80)
    589   1.1  christos           { itype = CRISV32F_INSN_TEST_M_B_M; goto extract_sfmt_test_m_b_m; }
    590   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    591  1.11  christos       case 185:
    592  1.11  christos       case 249:
    593   1.1  christos         if ((base_insn & 0xfbf0) == 0xb90)
    594   1.1  christos           { itype = CRISV32F_INSN_TEST_M_W_M; goto extract_sfmt_test_m_w_m; }
    595   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    596  1.11  christos       case 186:
    597  1.11  christos       case 250:
    598   1.1  christos         if ((base_insn & 0xfbf0) == 0xba0)
    599   1.1  christos           { itype = CRISV32F_INSN_TEST_M_D_M; goto extract_sfmt_test_m_d_m; }
    600   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    601  1.11  christos       case 187:
    602  1.11  christos       case 251: itype = CRISV32F_INSN_MOVEM_M_R_V32; goto extract_sfmt_movem_m_r_v32;
    603  1.11  christos       case 188:
    604  1.11  christos       case 252: itype = CRISV32F_INSN_MOVE_R_M_B_M; goto extract_sfmt_move_r_m_b_m;
    605  1.11  christos       case 189:
    606  1.11  christos       case 253: itype = CRISV32F_INSN_MOVE_R_M_W_M; goto extract_sfmt_move_r_m_w_m;
    607  1.11  christos       case 190:
    608  1.11  christos       case 254: itype = CRISV32F_INSN_MOVE_R_M_D_M; goto extract_sfmt_move_r_m_d_m;
    609  1.11  christos       case 191:
    610  1.11  christos       case 255: itype = CRISV32F_INSN_MOVEM_R_M_V32; goto extract_sfmt_movem_r_m_v32;
    611  1.11  christos       case 192:
    612  1.11  christos         {
    613  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    614  1.11  christos           switch (val1)
    615  1.11  christos           {
    616  1.11  christos           case 0:
    617  1.11  christos           case 1:
    618  1.11  christos           case 2:
    619  1.11  christos           case 3:
    620  1.11  christos           case 4:
    621  1.11  christos           case 5:
    622  1.11  christos           case 6:
    623  1.11  christos           case 7:
    624  1.11  christos           case 8:
    625  1.11  christos           case 9:
    626  1.11  christos           case 10:
    627  1.11  christos           case 11:
    628  1.11  christos           case 12:
    629  1.11  christos           case 13:
    630  1.11  christos           case 14: itype = CRISV32F_INSN_ADDU_M_B_M; goto extract_sfmt_adds_m_b_m;
    631  1.11  christos           case 15: itype = CRISV32F_INSN_ADDUCBR; goto extract_sfmt_addscbr;
    632  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    633  1.11  christos           }
    634  1.11  christos         }
    635  1.11  christos       case 193:
    636  1.11  christos         {
    637  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    638  1.11  christos           switch (val1)
    639  1.11  christos           {
    640  1.11  christos           case 0:
    641  1.11  christos           case 1:
    642  1.11  christos           case 2:
    643  1.11  christos           case 3:
    644  1.11  christos           case 4:
    645  1.11  christos           case 5:
    646  1.11  christos           case 6:
    647  1.11  christos           case 7:
    648  1.11  christos           case 8:
    649  1.11  christos           case 9:
    650  1.11  christos           case 10:
    651  1.11  christos           case 11:
    652  1.11  christos           case 12:
    653  1.11  christos           case 13:
    654  1.11  christos           case 14: itype = CRISV32F_INSN_ADDU_M_W_M; goto extract_sfmt_adds_m_w_m;
    655  1.11  christos           case 15: itype = CRISV32F_INSN_ADDUCWR; goto extract_sfmt_addscwr;
    656  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    657  1.11  christos           }
    658  1.11  christos         }
    659  1.11  christos       case 194:
    660  1.11  christos         {
    661  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    662  1.11  christos           switch (val1)
    663  1.11  christos           {
    664  1.11  christos           case 0:
    665  1.11  christos           case 1:
    666  1.11  christos           case 2:
    667  1.11  christos           case 3:
    668  1.11  christos           case 4:
    669  1.11  christos           case 5:
    670  1.11  christos           case 6:
    671  1.11  christos           case 7:
    672  1.11  christos           case 8:
    673  1.11  christos           case 9:
    674  1.11  christos           case 10:
    675  1.11  christos           case 11:
    676  1.11  christos           case 12:
    677  1.11  christos           case 13:
    678  1.11  christos           case 14: itype = CRISV32F_INSN_ADDS_M_B_M; goto extract_sfmt_adds_m_b_m;
    679  1.11  christos           case 15: itype = CRISV32F_INSN_ADDSCBR; goto extract_sfmt_addscbr;
    680  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    681  1.11  christos           }
    682  1.11  christos         }
    683  1.11  christos       case 195:
    684  1.11  christos         {
    685  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    686  1.11  christos           switch (val1)
    687  1.11  christos           {
    688  1.11  christos           case 0:
    689  1.11  christos           case 1:
    690  1.11  christos           case 2:
    691  1.11  christos           case 3:
    692  1.11  christos           case 4:
    693  1.11  christos           case 5:
    694  1.11  christos           case 6:
    695  1.11  christos           case 7:
    696  1.11  christos           case 8:
    697  1.11  christos           case 9:
    698  1.11  christos           case 10:
    699  1.11  christos           case 11:
    700  1.11  christos           case 12:
    701  1.11  christos           case 13:
    702  1.11  christos           case 14: itype = CRISV32F_INSN_ADDS_M_W_M; goto extract_sfmt_adds_m_w_m;
    703  1.11  christos           case 15: itype = CRISV32F_INSN_ADDSCWR; goto extract_sfmt_addscwr;
    704  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    705  1.11  christos           }
    706  1.11  christos         }
    707  1.11  christos       case 196:
    708  1.11  christos         {
    709  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    710  1.11  christos           switch (val1)
    711  1.11  christos           {
    712  1.11  christos           case 0:
    713  1.11  christos           case 1:
    714  1.11  christos           case 2:
    715  1.11  christos           case 3:
    716  1.11  christos           case 4:
    717  1.11  christos           case 5:
    718  1.11  christos           case 6:
    719  1.11  christos           case 7:
    720  1.11  christos           case 8:
    721  1.11  christos           case 9:
    722  1.11  christos           case 10:
    723  1.11  christos           case 11:
    724  1.11  christos           case 12:
    725  1.11  christos           case 13:
    726  1.11  christos           case 14: itype = CRISV32F_INSN_MOVU_M_B_M; goto extract_sfmt_movs_m_b_m;
    727  1.11  christos           case 15: itype = CRISV32F_INSN_MOVUCBR; goto extract_sfmt_movucbr;
    728  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    729  1.11  christos           }
    730  1.11  christos         }
    731  1.11  christos       case 197:
    732  1.11  christos         {
    733  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    734  1.11  christos           switch (val1)
    735  1.11  christos           {
    736  1.11  christos           case 0:
    737  1.11  christos           case 1:
    738  1.11  christos           case 2:
    739  1.11  christos           case 3:
    740  1.11  christos           case 4:
    741  1.11  christos           case 5:
    742  1.11  christos           case 6:
    743  1.11  christos           case 7:
    744  1.11  christos           case 8:
    745  1.11  christos           case 9:
    746  1.11  christos           case 10:
    747  1.11  christos           case 11:
    748  1.11  christos           case 12:
    749  1.11  christos           case 13:
    750  1.11  christos           case 14: itype = CRISV32F_INSN_MOVU_M_W_M; goto extract_sfmt_movs_m_w_m;
    751  1.11  christos           case 15: itype = CRISV32F_INSN_MOVUCWR; goto extract_sfmt_movucwr;
    752  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    753  1.11  christos           }
    754  1.11  christos         }
    755  1.11  christos       case 198:
    756  1.11  christos         {
    757  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    758  1.11  christos           switch (val1)
    759  1.11  christos           {
    760  1.11  christos           case 0:
    761  1.11  christos           case 1:
    762  1.11  christos           case 2:
    763  1.11  christos           case 3:
    764  1.11  christos           case 4:
    765  1.11  christos           case 5:
    766  1.11  christos           case 6:
    767  1.11  christos           case 7:
    768  1.11  christos           case 8:
    769  1.11  christos           case 9:
    770  1.11  christos           case 10:
    771  1.11  christos           case 11:
    772  1.11  christos           case 12:
    773  1.11  christos           case 13:
    774  1.11  christos           case 14: itype = CRISV32F_INSN_MOVS_M_B_M; goto extract_sfmt_movs_m_b_m;
    775  1.11  christos           case 15: itype = CRISV32F_INSN_MOVSCBR; goto extract_sfmt_movscbr;
    776  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    777  1.11  christos           }
    778  1.11  christos         }
    779  1.11  christos       case 199:
    780  1.11  christos         {
    781  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    782  1.11  christos           switch (val1)
    783  1.11  christos           {
    784  1.11  christos           case 0:
    785  1.11  christos           case 1:
    786  1.11  christos           case 2:
    787  1.11  christos           case 3:
    788  1.11  christos           case 4:
    789  1.11  christos           case 5:
    790  1.11  christos           case 6:
    791  1.11  christos           case 7:
    792  1.11  christos           case 8:
    793  1.11  christos           case 9:
    794  1.11  christos           case 10:
    795  1.11  christos           case 11:
    796  1.11  christos           case 12:
    797  1.11  christos           case 13:
    798  1.11  christos           case 14: itype = CRISV32F_INSN_MOVS_M_W_M; goto extract_sfmt_movs_m_w_m;
    799  1.11  christos           case 15: itype = CRISV32F_INSN_MOVSCWR; goto extract_sfmt_movscwr;
    800  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    801  1.11  christos           }
    802  1.11  christos         }
    803  1.11  christos       case 200:
    804  1.11  christos         {
    805  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    806  1.11  christos           switch (val1)
    807  1.11  christos           {
    808  1.11  christos           case 0:
    809  1.11  christos           case 1:
    810  1.11  christos           case 2:
    811  1.11  christos           case 3:
    812  1.11  christos           case 4:
    813  1.11  christos           case 5:
    814  1.11  christos           case 6:
    815  1.11  christos           case 7:
    816  1.11  christos           case 8:
    817  1.11  christos           case 9:
    818  1.11  christos           case 10:
    819  1.11  christos           case 11:
    820  1.11  christos           case 12:
    821  1.11  christos           case 13:
    822  1.11  christos           case 14: itype = CRISV32F_INSN_SUBU_M_B_M; goto extract_sfmt_adds_m_b_m;
    823  1.11  christos           case 15: itype = CRISV32F_INSN_SUBUCBR; goto extract_sfmt_addscbr;
    824  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    825  1.11  christos           }
    826  1.11  christos         }
    827  1.11  christos       case 201:
    828  1.11  christos         {
    829  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    830  1.11  christos           switch (val1)
    831  1.11  christos           {
    832  1.11  christos           case 0:
    833  1.11  christos           case 1:
    834  1.11  christos           case 2:
    835  1.11  christos           case 3:
    836  1.11  christos           case 4:
    837  1.11  christos           case 5:
    838  1.11  christos           case 6:
    839  1.11  christos           case 7:
    840  1.11  christos           case 8:
    841  1.11  christos           case 9:
    842  1.11  christos           case 10:
    843  1.11  christos           case 11:
    844  1.11  christos           case 12:
    845  1.11  christos           case 13:
    846  1.11  christos           case 14: itype = CRISV32F_INSN_SUBU_M_W_M; goto extract_sfmt_adds_m_w_m;
    847  1.11  christos           case 15: itype = CRISV32F_INSN_SUBUCWR; goto extract_sfmt_addscwr;
    848  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    849  1.11  christos           }
    850  1.11  christos         }
    851  1.11  christos       case 202:
    852  1.11  christos         {
    853  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    854  1.11  christos           switch (val1)
    855  1.11  christos           {
    856  1.11  christos           case 0:
    857  1.11  christos           case 1:
    858  1.11  christos           case 2:
    859  1.11  christos           case 3:
    860  1.11  christos           case 4:
    861  1.11  christos           case 5:
    862  1.11  christos           case 6:
    863  1.11  christos           case 7:
    864  1.11  christos           case 8:
    865  1.11  christos           case 9:
    866  1.11  christos           case 10:
    867  1.11  christos           case 11:
    868  1.11  christos           case 12:
    869  1.11  christos           case 13:
    870  1.11  christos           case 14: itype = CRISV32F_INSN_SUBS_M_B_M; goto extract_sfmt_adds_m_b_m;
    871  1.11  christos           case 15: itype = CRISV32F_INSN_SUBSCBR; goto extract_sfmt_addscbr;
    872  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    873  1.11  christos           }
    874  1.11  christos         }
    875  1.11  christos       case 203:
    876  1.11  christos         {
    877  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    878  1.11  christos           switch (val1)
    879  1.11  christos           {
    880  1.11  christos           case 0:
    881  1.11  christos           case 1:
    882  1.11  christos           case 2:
    883  1.11  christos           case 3:
    884  1.11  christos           case 4:
    885  1.11  christos           case 5:
    886  1.11  christos           case 6:
    887  1.11  christos           case 7:
    888  1.11  christos           case 8:
    889  1.11  christos           case 9:
    890  1.11  christos           case 10:
    891  1.11  christos           case 11:
    892  1.11  christos           case 12:
    893  1.11  christos           case 13:
    894  1.11  christos           case 14: itype = CRISV32F_INSN_SUBS_M_W_M; goto extract_sfmt_adds_m_w_m;
    895  1.11  christos           case 15: itype = CRISV32F_INSN_SUBSCWR; goto extract_sfmt_addscwr;
    896  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    897  1.11  christos           }
    898  1.11  christos         }
    899  1.11  christos       case 204:
    900  1.11  christos         {
    901  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    902  1.11  christos           switch (val1)
    903  1.11  christos           {
    904  1.11  christos           case 0:
    905  1.11  christos           case 1:
    906  1.11  christos           case 2:
    907  1.11  christos           case 3:
    908  1.11  christos           case 4:
    909  1.11  christos           case 5:
    910  1.11  christos           case 6:
    911  1.11  christos           case 7:
    912  1.11  christos           case 8:
    913  1.11  christos           case 9:
    914  1.11  christos           case 10:
    915  1.11  christos           case 11:
    916  1.11  christos           case 12:
    917  1.11  christos           case 13:
    918  1.11  christos           case 14: itype = CRISV32F_INSN_CMPU_M_B_M; goto extract_sfmt_cmp_m_b_m;
    919  1.11  christos           case 15: itype = CRISV32F_INSN_CMPUCBR; goto extract_sfmt_cmpucbr;
    920  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    921  1.11  christos           }
    922  1.11  christos         }
    923  1.11  christos       case 205:
    924  1.11  christos         {
    925  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    926  1.11  christos           switch (val1)
    927  1.11  christos           {
    928  1.11  christos           case 0:
    929  1.11  christos           case 1:
    930  1.11  christos           case 2:
    931  1.11  christos           case 3:
    932  1.11  christos           case 4:
    933  1.11  christos           case 5:
    934  1.11  christos           case 6:
    935  1.11  christos           case 7:
    936  1.11  christos           case 8:
    937  1.11  christos           case 9:
    938  1.11  christos           case 10:
    939  1.11  christos           case 11:
    940  1.11  christos           case 12:
    941  1.11  christos           case 13:
    942  1.11  christos           case 14: itype = CRISV32F_INSN_CMPU_M_W_M; goto extract_sfmt_cmp_m_w_m;
    943  1.11  christos           case 15: itype = CRISV32F_INSN_CMPUCWR; goto extract_sfmt_cmpucwr;
    944  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    945  1.11  christos           }
    946  1.11  christos         }
    947  1.11  christos       case 206:
    948  1.11  christos         {
    949  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    950  1.11  christos           switch (val1)
    951  1.11  christos           {
    952  1.11  christos           case 0:
    953  1.11  christos           case 1:
    954  1.11  christos           case 2:
    955  1.11  christos           case 3:
    956  1.11  christos           case 4:
    957  1.11  christos           case 5:
    958  1.11  christos           case 6:
    959  1.11  christos           case 7:
    960  1.11  christos           case 8:
    961  1.11  christos           case 9:
    962  1.11  christos           case 10:
    963  1.11  christos           case 11:
    964  1.11  christos           case 12:
    965  1.11  christos           case 13:
    966  1.11  christos           case 14: itype = CRISV32F_INSN_CMPS_M_B_M; goto extract_sfmt_cmp_m_b_m;
    967  1.11  christos           case 15: itype = CRISV32F_INSN_CMPSCBR; goto extract_sfmt_cmpcbr;
    968  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    969  1.11  christos           }
    970  1.11  christos         }
    971  1.11  christos       case 207:
    972  1.11  christos         {
    973  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
    974  1.11  christos           switch (val1)
    975  1.11  christos           {
    976  1.11  christos           case 0:
    977  1.11  christos           case 1:
    978  1.11  christos           case 2:
    979  1.11  christos           case 3:
    980  1.11  christos           case 4:
    981  1.11  christos           case 5:
    982  1.11  christos           case 6:
    983  1.11  christos           case 7:
    984  1.11  christos           case 8:
    985  1.11  christos           case 9:
    986  1.11  christos           case 10:
    987  1.11  christos           case 11:
    988  1.11  christos           case 12:
    989  1.11  christos           case 13:
    990  1.11  christos           case 14: itype = CRISV32F_INSN_CMPS_M_W_M; goto extract_sfmt_cmp_m_w_m;
    991  1.11  christos           case 15: itype = CRISV32F_INSN_CMPSCWR; goto extract_sfmt_cmpcwr;
    992  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
    993  1.11  christos           }
    994  1.11  christos         }
    995  1.11  christos       case 208: itype = CRISV32F_INSN_MULS_B; goto extract_sfmt_muls_b;
    996  1.11  christos       case 209: itype = CRISV32F_INSN_MULS_W; goto extract_sfmt_muls_b;
    997  1.11  christos       case 210: itype = CRISV32F_INSN_MULS_D; goto extract_sfmt_muls_b;
    998  1.11  christos       case 211:
    999   1.1  christos         {
   1000  1.11  christos           unsigned int val1 = (((insn >> 12) & (1 << 0)));
   1001  1.11  christos           switch (val1)
   1002   1.1  christos           {
   1003  1.11  christos           case 0:
   1004   1.1  christos             if ((base_insn & 0xfff0) == 0xd30)
   1005   1.1  christos               { itype = CRISV32F_INSN_FIDXI; goto extract_sfmt_fidxi; }
   1006   1.1  christos             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1007  1.11  christos           case 1:
   1008   1.1  christos             if ((base_insn & 0xfff0) == 0x1d30)
   1009   1.1  christos               { itype = CRISV32F_INSN_FTAGI; goto extract_sfmt_fidxi; }
   1010   1.1  christos             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1011  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1012   1.1  christos           }
   1013   1.1  christos         }
   1014  1.11  christos       case 212:
   1015   1.1  christos         {
   1016  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1017  1.11  christos           switch (val1)
   1018   1.1  christos           {
   1019  1.11  christos           case 0:
   1020  1.11  christos           case 1:
   1021  1.11  christos           case 2:
   1022  1.11  christos           case 3:
   1023  1.11  christos           case 4:
   1024  1.11  christos           case 5:
   1025  1.11  christos           case 6:
   1026  1.11  christos           case 7:
   1027  1.11  christos           case 8:
   1028  1.11  christos           case 9:
   1029  1.11  christos           case 10:
   1030  1.11  christos           case 11:
   1031  1.11  christos           case 12:
   1032  1.11  christos           case 13:
   1033  1.11  christos           case 14: itype = CRISV32F_INSN_ADDO_M_B_M; goto extract_sfmt_addo_m_b_m;
   1034  1.11  christos           case 15: itype = CRISV32F_INSN_ADDO_CB; goto extract_sfmt_addo_cb;
   1035  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1036  1.11  christos           }
   1037  1.11  christos         }
   1038  1.11  christos       case 213:
   1039  1.11  christos         {
   1040  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1041  1.11  christos           switch (val1)
   1042  1.11  christos           {
   1043  1.11  christos           case 0:
   1044  1.11  christos           case 1:
   1045  1.11  christos           case 2:
   1046  1.11  christos           case 3:
   1047  1.11  christos           case 4:
   1048  1.11  christos           case 5:
   1049  1.11  christos           case 6:
   1050  1.11  christos           case 7:
   1051  1.11  christos           case 8:
   1052  1.11  christos           case 9:
   1053  1.11  christos           case 10:
   1054  1.11  christos           case 11:
   1055  1.11  christos           case 12:
   1056  1.11  christos           case 13:
   1057  1.11  christos           case 14: itype = CRISV32F_INSN_ADDO_M_W_M; goto extract_sfmt_addo_m_w_m;
   1058  1.11  christos           case 15: itype = CRISV32F_INSN_ADDO_CW; goto extract_sfmt_addo_cw;
   1059  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1060  1.11  christos           }
   1061  1.11  christos         }
   1062  1.11  christos       case 214:
   1063  1.11  christos         {
   1064  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1065  1.11  christos           switch (val1)
   1066  1.11  christos           {
   1067  1.11  christos           case 0:
   1068  1.11  christos           case 1:
   1069  1.11  christos           case 2:
   1070  1.11  christos           case 3:
   1071  1.11  christos           case 4:
   1072  1.11  christos           case 5:
   1073  1.11  christos           case 6:
   1074  1.11  christos           case 7:
   1075  1.11  christos           case 8:
   1076  1.11  christos           case 9:
   1077  1.11  christos           case 10:
   1078  1.11  christos           case 11:
   1079  1.11  christos           case 12:
   1080  1.11  christos           case 13:
   1081  1.11  christos           case 14: itype = CRISV32F_INSN_ADDO_M_D_M; goto extract_sfmt_addo_m_d_m;
   1082  1.11  christos           case 15: itype = CRISV32F_INSN_ADDO_CD; goto extract_sfmt_addo_cd;
   1083  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1084   1.1  christos           }
   1085   1.1  christos         }
   1086  1.11  christos       case 215:
   1087   1.1  christos         if ((base_insn & 0xfff) == 0xd7f)
   1088   1.1  christos           { itype = CRISV32F_INSN_LAPC_D; goto extract_sfmt_lapc_d; }
   1089   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1090  1.11  christos       case 218:
   1091   1.1  christos         {
   1092  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1093  1.11  christos           switch (val1)
   1094   1.1  christos           {
   1095  1.11  christos           case 0:
   1096  1.11  christos           case 1:
   1097  1.11  christos           case 2:
   1098  1.11  christos           case 3:
   1099  1.11  christos           case 4:
   1100  1.11  christos           case 5:
   1101  1.11  christos           case 6:
   1102  1.11  christos           case 7:
   1103  1.11  christos           case 8:
   1104  1.11  christos           case 9:
   1105  1.11  christos           case 10:
   1106  1.11  christos           case 11:
   1107  1.11  christos           case 12:
   1108  1.11  christos           case 13:
   1109  1.11  christos           case 14: itype = CRISV32F_INSN_ADDC_M; goto extract_sfmt_addc_m;
   1110  1.11  christos           case 15: itype = CRISV32F_INSN_ADDC_C; goto extract_sfmt_addcdr;
   1111  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1112   1.1  christos           }
   1113   1.1  christos         }
   1114  1.11  christos       case 219:
   1115   1.1  christos         if ((base_insn & 0xfff) == 0xdbf)
   1116   1.1  christos           { itype = CRISV32F_INSN_JAS_C; goto extract_sfmt_jas_c; }
   1117   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1118  1.11  christos       case 220:
   1119   1.1  christos         if ((base_insn & 0xfff) == 0xdcf)
   1120   1.1  christos           { itype = CRISV32F_INSN_BOUND_CB; goto extract_sfmt_bound_cb; }
   1121   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1122  1.11  christos       case 221:
   1123   1.1  christos         if ((base_insn & 0xfff) == 0xddf)
   1124   1.1  christos           { itype = CRISV32F_INSN_BOUND_CW; goto extract_sfmt_bound_cw; }
   1125   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1126  1.11  christos       case 222:
   1127   1.1  christos         if ((base_insn & 0xfff) == 0xdef)
   1128   1.1  christos           { itype = CRISV32F_INSN_BOUND_CD; goto extract_sfmt_bound_cd; }
   1129   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1130  1.11  christos       case 223:
   1131   1.1  christos         {
   1132  1.11  christos           unsigned int val1 = (((insn >> 12) & (15 << 0)));
   1133  1.11  christos           switch (val1)
   1134   1.1  christos           {
   1135  1.11  christos           case 0:
   1136  1.11  christos           case 1:
   1137  1.11  christos           case 2:
   1138  1.11  christos           case 3:
   1139  1.11  christos           case 4:
   1140  1.11  christos           case 5:
   1141  1.11  christos           case 6:
   1142  1.11  christos           case 7:
   1143  1.11  christos           case 8:
   1144  1.11  christos           case 9:
   1145  1.11  christos           case 10:
   1146  1.11  christos           case 11:
   1147  1.11  christos           case 12:
   1148  1.11  christos           case 13:
   1149  1.11  christos           case 15:
   1150   1.1  christos             if ((base_insn & 0xfff) == 0xdff)
   1151   1.1  christos               { itype = CRISV32F_INSN_BCC_W; goto extract_sfmt_bcc_w; }
   1152   1.1  christos             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1153  1.11  christos           case 14:
   1154   1.1  christos             if ((base_insn & 0xffff) == 0xedff)
   1155   1.1  christos               { itype = CRISV32F_INSN_BA_W; goto extract_sfmt_ba_w; }
   1156   1.1  christos             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1157  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1158   1.1  christos           }
   1159   1.1  christos         }
   1160  1.11  christos       case 224:
   1161   1.1  christos         {
   1162  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1163  1.11  christos           switch (val1)
   1164   1.1  christos           {
   1165  1.11  christos           case 0:
   1166  1.11  christos           case 1:
   1167  1.11  christos           case 2:
   1168  1.11  christos           case 3:
   1169  1.11  christos           case 4:
   1170  1.11  christos           case 5:
   1171  1.11  christos           case 6:
   1172  1.11  christos           case 7:
   1173  1.11  christos           case 8:
   1174  1.11  christos           case 9:
   1175  1.11  christos           case 10:
   1176  1.11  christos           case 11:
   1177  1.11  christos           case 12:
   1178  1.11  christos           case 13:
   1179  1.11  christos           case 14: itype = CRISV32F_INSN_ADD_M_B_M; goto extract_sfmt_add_m_b_m;
   1180  1.11  christos           case 15: itype = CRISV32F_INSN_ADDCBR; goto extract_sfmt_addcbr;
   1181  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1182  1.11  christos           }
   1183  1.11  christos         }
   1184  1.11  christos       case 225:
   1185  1.11  christos         {
   1186  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1187  1.11  christos           switch (val1)
   1188  1.11  christos           {
   1189  1.11  christos           case 0:
   1190  1.11  christos           case 1:
   1191  1.11  christos           case 2:
   1192  1.11  christos           case 3:
   1193  1.11  christos           case 4:
   1194  1.11  christos           case 5:
   1195  1.11  christos           case 6:
   1196  1.11  christos           case 7:
   1197  1.11  christos           case 8:
   1198  1.11  christos           case 9:
   1199  1.11  christos           case 10:
   1200  1.11  christos           case 11:
   1201  1.11  christos           case 12:
   1202  1.11  christos           case 13:
   1203  1.11  christos           case 14: itype = CRISV32F_INSN_ADD_M_W_M; goto extract_sfmt_add_m_w_m;
   1204  1.11  christos           case 15: itype = CRISV32F_INSN_ADDCWR; goto extract_sfmt_addcwr;
   1205  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1206  1.11  christos           }
   1207  1.11  christos         }
   1208  1.11  christos       case 226:
   1209  1.11  christos         {
   1210  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1211  1.11  christos           switch (val1)
   1212  1.11  christos           {
   1213  1.11  christos           case 0:
   1214  1.11  christos           case 1:
   1215  1.11  christos           case 2:
   1216  1.11  christos           case 3:
   1217  1.11  christos           case 4:
   1218  1.11  christos           case 5:
   1219  1.11  christos           case 6:
   1220  1.11  christos           case 7:
   1221  1.11  christos           case 8:
   1222  1.11  christos           case 9:
   1223  1.11  christos           case 10:
   1224  1.11  christos           case 11:
   1225  1.11  christos           case 12:
   1226  1.11  christos           case 13:
   1227  1.11  christos           case 14: itype = CRISV32F_INSN_ADD_M_D_M; goto extract_sfmt_add_m_d_m;
   1228  1.11  christos           case 15: itype = CRISV32F_INSN_ADDCDR; goto extract_sfmt_addcdr;
   1229  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1230  1.11  christos           }
   1231  1.11  christos         }
   1232  1.11  christos       case 227:
   1233  1.11  christos         {
   1234  1.11  christos           unsigned int val1 = (((insn >> 12) & (15 << 0)));
   1235  1.11  christos           switch (val1)
   1236  1.11  christos           {
   1237  1.11  christos           case 0:
   1238  1.11  christos           case 1:
   1239  1.11  christos           case 4:
   1240  1.11  christos           case 8: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1241  1.11  christos           case 2:
   1242   1.1  christos             {
   1243  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1244  1.11  christos               switch (val2)
   1245   1.1  christos               {
   1246  1.11  christos               case 0:
   1247  1.11  christos               case 1:
   1248  1.11  christos               case 2:
   1249  1.11  christos               case 3:
   1250  1.11  christos               case 4:
   1251  1.11  christos               case 5:
   1252  1.11  christos               case 6:
   1253  1.11  christos               case 7:
   1254  1.11  christos               case 8:
   1255  1.11  christos               case 9:
   1256  1.11  christos               case 10:
   1257  1.11  christos               case 11:
   1258  1.11  christos               case 12:
   1259  1.11  christos               case 13:
   1260  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1261  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P2; goto extract_sfmt_move_c_sprv32_p2;
   1262  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1263   1.1  christos               }
   1264   1.1  christos             }
   1265  1.11  christos           case 3:
   1266   1.1  christos             {
   1267  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1268  1.11  christos               switch (val2)
   1269   1.1  christos               {
   1270  1.11  christos               case 0:
   1271  1.11  christos               case 1:
   1272  1.11  christos               case 2:
   1273  1.11  christos               case 3:
   1274  1.11  christos               case 4:
   1275  1.11  christos               case 5:
   1276  1.11  christos               case 6:
   1277  1.11  christos               case 7:
   1278  1.11  christos               case 8:
   1279  1.11  christos               case 9:
   1280  1.11  christos               case 10:
   1281  1.11  christos               case 11:
   1282  1.11  christos               case 12:
   1283  1.11  christos               case 13:
   1284  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1285  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P3; goto extract_sfmt_move_c_sprv32_p2;
   1286  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1287   1.1  christos               }
   1288   1.1  christos             }
   1289  1.11  christos           case 5:
   1290   1.1  christos             {
   1291  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1292  1.11  christos               switch (val2)
   1293   1.1  christos               {
   1294  1.11  christos               case 0:
   1295  1.11  christos               case 1:
   1296  1.11  christos               case 2:
   1297  1.11  christos               case 3:
   1298  1.11  christos               case 4:
   1299  1.11  christos               case 5:
   1300  1.11  christos               case 6:
   1301  1.11  christos               case 7:
   1302  1.11  christos               case 8:
   1303  1.11  christos               case 9:
   1304  1.11  christos               case 10:
   1305  1.11  christos               case 11:
   1306  1.11  christos               case 12:
   1307  1.11  christos               case 13:
   1308  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1309  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P5; goto extract_sfmt_move_c_sprv32_p2;
   1310  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1311   1.1  christos               }
   1312   1.1  christos             }
   1313  1.11  christos           case 6:
   1314   1.1  christos             {
   1315  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1316  1.11  christos               switch (val2)
   1317   1.1  christos               {
   1318  1.11  christos               case 0:
   1319  1.11  christos               case 1:
   1320  1.11  christos               case 2:
   1321  1.11  christos               case 3:
   1322  1.11  christos               case 4:
   1323  1.11  christos               case 5:
   1324  1.11  christos               case 6:
   1325  1.11  christos               case 7:
   1326  1.11  christos               case 8:
   1327  1.11  christos               case 9:
   1328  1.11  christos               case 10:
   1329  1.11  christos               case 11:
   1330  1.11  christos               case 12:
   1331  1.11  christos               case 13:
   1332  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1333  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P6; goto extract_sfmt_move_c_sprv32_p2;
   1334  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1335   1.1  christos               }
   1336   1.1  christos             }
   1337  1.11  christos           case 7:
   1338   1.1  christos             {
   1339  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1340  1.11  christos               switch (val2)
   1341   1.1  christos               {
   1342  1.11  christos               case 0:
   1343  1.11  christos               case 1:
   1344  1.11  christos               case 2:
   1345  1.11  christos               case 3:
   1346  1.11  christos               case 4:
   1347  1.11  christos               case 5:
   1348  1.11  christos               case 6:
   1349  1.11  christos               case 7:
   1350  1.11  christos               case 8:
   1351  1.11  christos               case 9:
   1352  1.11  christos               case 10:
   1353  1.11  christos               case 11:
   1354  1.11  christos               case 12:
   1355  1.11  christos               case 13:
   1356  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1357  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P7; goto extract_sfmt_move_c_sprv32_p2;
   1358  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1359   1.1  christos               }
   1360   1.1  christos             }
   1361  1.11  christos           case 9:
   1362   1.1  christos             {
   1363  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1364  1.11  christos               switch (val2)
   1365   1.1  christos               {
   1366  1.11  christos               case 0:
   1367  1.11  christos               case 1:
   1368  1.11  christos               case 2:
   1369  1.11  christos               case 3:
   1370  1.11  christos               case 4:
   1371  1.11  christos               case 5:
   1372  1.11  christos               case 6:
   1373  1.11  christos               case 7:
   1374  1.11  christos               case 8:
   1375  1.11  christos               case 9:
   1376  1.11  christos               case 10:
   1377  1.11  christos               case 11:
   1378  1.11  christos               case 12:
   1379  1.11  christos               case 13:
   1380  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1381  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P9; goto extract_sfmt_move_c_sprv32_p2;
   1382  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1383   1.1  christos               }
   1384   1.1  christos             }
   1385  1.11  christos           case 10:
   1386   1.1  christos             {
   1387  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1388  1.11  christos               switch (val2)
   1389   1.1  christos               {
   1390  1.11  christos               case 0:
   1391  1.11  christos               case 1:
   1392  1.11  christos               case 2:
   1393  1.11  christos               case 3:
   1394  1.11  christos               case 4:
   1395  1.11  christos               case 5:
   1396  1.11  christos               case 6:
   1397  1.11  christos               case 7:
   1398  1.11  christos               case 8:
   1399  1.11  christos               case 9:
   1400  1.11  christos               case 10:
   1401  1.11  christos               case 11:
   1402  1.11  christos               case 12:
   1403  1.11  christos               case 13:
   1404  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1405  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P10; goto extract_sfmt_move_c_sprv32_p2;
   1406  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1407   1.1  christos               }
   1408   1.1  christos             }
   1409  1.11  christos           case 11:
   1410   1.1  christos             {
   1411  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1412  1.11  christos               switch (val2)
   1413   1.1  christos               {
   1414  1.11  christos               case 0:
   1415  1.11  christos               case 1:
   1416  1.11  christos               case 2:
   1417  1.11  christos               case 3:
   1418  1.11  christos               case 4:
   1419  1.11  christos               case 5:
   1420  1.11  christos               case 6:
   1421  1.11  christos               case 7:
   1422  1.11  christos               case 8:
   1423  1.11  christos               case 9:
   1424  1.11  christos               case 10:
   1425  1.11  christos               case 11:
   1426  1.11  christos               case 12:
   1427  1.11  christos               case 13:
   1428  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1429  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P11; goto extract_sfmt_move_c_sprv32_p2;
   1430  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1431   1.1  christos               }
   1432   1.1  christos             }
   1433  1.11  christos           case 12:
   1434   1.1  christos             {
   1435  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1436  1.11  christos               switch (val2)
   1437   1.1  christos               {
   1438  1.11  christos               case 0:
   1439  1.11  christos               case 1:
   1440  1.11  christos               case 2:
   1441  1.11  christos               case 3:
   1442  1.11  christos               case 4:
   1443  1.11  christos               case 5:
   1444  1.11  christos               case 6:
   1445  1.11  christos               case 7:
   1446  1.11  christos               case 8:
   1447  1.11  christos               case 9:
   1448  1.11  christos               case 10:
   1449  1.11  christos               case 11:
   1450  1.11  christos               case 12:
   1451  1.11  christos               case 13:
   1452  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1453  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P12; goto extract_sfmt_move_c_sprv32_p2;
   1454  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1455   1.1  christos               }
   1456   1.1  christos             }
   1457  1.11  christos           case 13:
   1458   1.1  christos             {
   1459  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1460  1.11  christos               switch (val2)
   1461   1.1  christos               {
   1462  1.11  christos               case 0:
   1463  1.11  christos               case 1:
   1464  1.11  christos               case 2:
   1465  1.11  christos               case 3:
   1466  1.11  christos               case 4:
   1467  1.11  christos               case 5:
   1468  1.11  christos               case 6:
   1469  1.11  christos               case 7:
   1470  1.11  christos               case 8:
   1471  1.11  christos               case 9:
   1472  1.11  christos               case 10:
   1473  1.11  christos               case 11:
   1474  1.11  christos               case 12:
   1475  1.11  christos               case 13:
   1476  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1477  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P13; goto extract_sfmt_move_c_sprv32_p2;
   1478  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1479   1.1  christos               }
   1480   1.1  christos             }
   1481  1.11  christos           case 14:
   1482   1.1  christos             {
   1483  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1484  1.11  christos               switch (val2)
   1485   1.1  christos               {
   1486  1.11  christos               case 0:
   1487  1.11  christos               case 1:
   1488  1.11  christos               case 2:
   1489  1.11  christos               case 3:
   1490  1.11  christos               case 4:
   1491  1.11  christos               case 5:
   1492  1.11  christos               case 6:
   1493  1.11  christos               case 7:
   1494  1.11  christos               case 8:
   1495  1.11  christos               case 9:
   1496  1.11  christos               case 10:
   1497  1.11  christos               case 11:
   1498  1.11  christos               case 12:
   1499  1.11  christos               case 13:
   1500  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1501  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P14; goto extract_sfmt_move_c_sprv32_p2;
   1502  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1503   1.1  christos               }
   1504   1.1  christos             }
   1505  1.11  christos           case 15:
   1506   1.1  christos             {
   1507  1.11  christos               unsigned int val2 = (((insn >> 0) & (15 << 0)));
   1508  1.11  christos               switch (val2)
   1509   1.1  christos               {
   1510  1.11  christos               case 0:
   1511  1.11  christos               case 1:
   1512  1.11  christos               case 2:
   1513  1.11  christos               case 3:
   1514  1.11  christos               case 4:
   1515  1.11  christos               case 5:
   1516  1.11  christos               case 6:
   1517  1.11  christos               case 7:
   1518  1.11  christos               case 8:
   1519  1.11  christos               case 9:
   1520  1.11  christos               case 10:
   1521  1.11  christos               case 11:
   1522  1.11  christos               case 12:
   1523  1.11  christos               case 13:
   1524  1.11  christos               case 14: itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
   1525  1.11  christos               case 15: itype = CRISV32F_INSN_MOVE_C_SPRV32_P15; goto extract_sfmt_move_c_sprv32_p2;
   1526  1.11  christos               default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1527   1.1  christos               }
   1528   1.1  christos             }
   1529  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1530   1.1  christos           }
   1531   1.1  christos         }
   1532  1.11  christos       case 228:
   1533   1.1  christos         {
   1534  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1535  1.11  christos           switch (val1)
   1536   1.1  christos           {
   1537  1.11  christos           case 0:
   1538  1.11  christos           case 1:
   1539  1.11  christos           case 2:
   1540  1.11  christos           case 3:
   1541  1.11  christos           case 4:
   1542  1.11  christos           case 5:
   1543  1.11  christos           case 6:
   1544  1.11  christos           case 7:
   1545  1.11  christos           case 8:
   1546  1.11  christos           case 9:
   1547  1.11  christos           case 10:
   1548  1.11  christos           case 11:
   1549  1.11  christos           case 12:
   1550  1.11  christos           case 13:
   1551  1.11  christos           case 14: itype = CRISV32F_INSN_MOVE_M_B_M; goto extract_sfmt_move_m_b_m;
   1552  1.11  christos           case 15: itype = CRISV32F_INSN_MOVECBR; goto extract_sfmt_movecbr;
   1553  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1554  1.11  christos           }
   1555  1.11  christos         }
   1556  1.11  christos       case 229:
   1557  1.11  christos         {
   1558  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1559  1.11  christos           switch (val1)
   1560  1.11  christos           {
   1561  1.11  christos           case 0:
   1562  1.11  christos           case 1:
   1563  1.11  christos           case 2:
   1564  1.11  christos           case 3:
   1565  1.11  christos           case 4:
   1566  1.11  christos           case 5:
   1567  1.11  christos           case 6:
   1568  1.11  christos           case 7:
   1569  1.11  christos           case 8:
   1570  1.11  christos           case 9:
   1571  1.11  christos           case 10:
   1572  1.11  christos           case 11:
   1573  1.11  christos           case 12:
   1574  1.11  christos           case 13:
   1575  1.11  christos           case 14: itype = CRISV32F_INSN_MOVE_M_W_M; goto extract_sfmt_move_m_w_m;
   1576  1.11  christos           case 15: itype = CRISV32F_INSN_MOVECWR; goto extract_sfmt_movecwr;
   1577  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1578  1.11  christos           }
   1579  1.11  christos         }
   1580  1.11  christos       case 230:
   1581  1.11  christos         {
   1582  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1583  1.11  christos           switch (val1)
   1584  1.11  christos           {
   1585  1.11  christos           case 0:
   1586  1.11  christos           case 1:
   1587  1.11  christos           case 2:
   1588  1.11  christos           case 3:
   1589  1.11  christos           case 4:
   1590  1.11  christos           case 5:
   1591  1.11  christos           case 6:
   1592  1.11  christos           case 7:
   1593  1.11  christos           case 8:
   1594  1.11  christos           case 9:
   1595  1.11  christos           case 10:
   1596  1.11  christos           case 11:
   1597  1.11  christos           case 12:
   1598  1.11  christos           case 13:
   1599  1.11  christos           case 14: itype = CRISV32F_INSN_MOVE_M_D_M; goto extract_sfmt_move_m_d_m;
   1600  1.11  christos           case 15: itype = CRISV32F_INSN_MOVECDR; goto extract_sfmt_movecdr;
   1601  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1602  1.11  christos           }
   1603  1.11  christos         }
   1604  1.11  christos       case 232:
   1605  1.11  christos         {
   1606  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1607  1.11  christos           switch (val1)
   1608  1.11  christos           {
   1609  1.11  christos           case 0:
   1610  1.11  christos           case 1:
   1611  1.11  christos           case 2:
   1612  1.11  christos           case 3:
   1613  1.11  christos           case 4:
   1614  1.11  christos           case 5:
   1615  1.11  christos           case 6:
   1616  1.11  christos           case 7:
   1617  1.11  christos           case 8:
   1618  1.11  christos           case 9:
   1619  1.11  christos           case 10:
   1620  1.11  christos           case 11:
   1621  1.11  christos           case 12:
   1622  1.11  christos           case 13:
   1623  1.11  christos           case 14: itype = CRISV32F_INSN_SUB_M_B_M; goto extract_sfmt_add_m_b_m;
   1624  1.11  christos           case 15: itype = CRISV32F_INSN_SUBCBR; goto extract_sfmt_addcbr;
   1625  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1626  1.11  christos           }
   1627  1.11  christos         }
   1628  1.11  christos       case 233:
   1629  1.11  christos         {
   1630  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1631  1.11  christos           switch (val1)
   1632  1.11  christos           {
   1633  1.11  christos           case 0:
   1634  1.11  christos           case 1:
   1635  1.11  christos           case 2:
   1636  1.11  christos           case 3:
   1637  1.11  christos           case 4:
   1638  1.11  christos           case 5:
   1639  1.11  christos           case 6:
   1640  1.11  christos           case 7:
   1641  1.11  christos           case 8:
   1642  1.11  christos           case 9:
   1643  1.11  christos           case 10:
   1644  1.11  christos           case 11:
   1645  1.11  christos           case 12:
   1646  1.11  christos           case 13:
   1647  1.11  christos           case 14: itype = CRISV32F_INSN_SUB_M_W_M; goto extract_sfmt_add_m_w_m;
   1648  1.11  christos           case 15: itype = CRISV32F_INSN_SUBCWR; goto extract_sfmt_addcwr;
   1649  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1650  1.11  christos           }
   1651  1.11  christos         }
   1652  1.11  christos       case 234:
   1653  1.11  christos         {
   1654  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1655  1.11  christos           switch (val1)
   1656  1.11  christos           {
   1657  1.11  christos           case 0:
   1658  1.11  christos           case 1:
   1659  1.11  christos           case 2:
   1660  1.11  christos           case 3:
   1661  1.11  christos           case 4:
   1662  1.11  christos           case 5:
   1663  1.11  christos           case 6:
   1664  1.11  christos           case 7:
   1665  1.11  christos           case 8:
   1666  1.11  christos           case 9:
   1667  1.11  christos           case 10:
   1668  1.11  christos           case 11:
   1669  1.11  christos           case 12:
   1670  1.11  christos           case 13:
   1671  1.11  christos           case 14: itype = CRISV32F_INSN_SUB_M_D_M; goto extract_sfmt_add_m_d_m;
   1672  1.11  christos           case 15: itype = CRISV32F_INSN_SUBCDR; goto extract_sfmt_addcdr;
   1673  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1674   1.1  christos           }
   1675   1.1  christos         }
   1676  1.11  christos       case 235:
   1677   1.1  christos         if ((base_insn & 0xfff) == 0xebf)
   1678   1.1  christos           { itype = CRISV32F_INSN_BAS_C; goto extract_sfmt_bas_c; }
   1679   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1680  1.11  christos       case 236:
   1681   1.1  christos         {
   1682  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1683  1.11  christos           switch (val1)
   1684   1.1  christos           {
   1685  1.11  christos           case 0:
   1686  1.11  christos           case 1:
   1687  1.11  christos           case 2:
   1688  1.11  christos           case 3:
   1689  1.11  christos           case 4:
   1690  1.11  christos           case 5:
   1691  1.11  christos           case 6:
   1692  1.11  christos           case 7:
   1693  1.11  christos           case 8:
   1694  1.11  christos           case 9:
   1695  1.11  christos           case 10:
   1696  1.11  christos           case 11:
   1697  1.11  christos           case 12:
   1698  1.11  christos           case 13:
   1699  1.11  christos           case 14: itype = CRISV32F_INSN_CMP_M_B_M; goto extract_sfmt_cmp_m_b_m;
   1700  1.11  christos           case 15: itype = CRISV32F_INSN_CMPCBR; goto extract_sfmt_cmpcbr;
   1701  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1702  1.11  christos           }
   1703  1.11  christos         }
   1704  1.11  christos       case 237:
   1705  1.11  christos         {
   1706  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1707  1.11  christos           switch (val1)
   1708  1.11  christos           {
   1709  1.11  christos           case 0:
   1710  1.11  christos           case 1:
   1711  1.11  christos           case 2:
   1712  1.11  christos           case 3:
   1713  1.11  christos           case 4:
   1714  1.11  christos           case 5:
   1715  1.11  christos           case 6:
   1716  1.11  christos           case 7:
   1717  1.11  christos           case 8:
   1718  1.11  christos           case 9:
   1719  1.11  christos           case 10:
   1720  1.11  christos           case 11:
   1721  1.11  christos           case 12:
   1722  1.11  christos           case 13:
   1723  1.11  christos           case 14: itype = CRISV32F_INSN_CMP_M_W_M; goto extract_sfmt_cmp_m_w_m;
   1724  1.11  christos           case 15: itype = CRISV32F_INSN_CMPCWR; goto extract_sfmt_cmpcwr;
   1725  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1726  1.11  christos           }
   1727  1.11  christos         }
   1728  1.11  christos       case 238:
   1729  1.11  christos         {
   1730  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1731  1.11  christos           switch (val1)
   1732  1.11  christos           {
   1733  1.11  christos           case 0:
   1734  1.11  christos           case 1:
   1735  1.11  christos           case 2:
   1736  1.11  christos           case 3:
   1737  1.11  christos           case 4:
   1738  1.11  christos           case 5:
   1739  1.11  christos           case 6:
   1740  1.11  christos           case 7:
   1741  1.11  christos           case 8:
   1742  1.11  christos           case 9:
   1743  1.11  christos           case 10:
   1744  1.11  christos           case 11:
   1745  1.11  christos           case 12:
   1746  1.11  christos           case 13:
   1747  1.11  christos           case 14: itype = CRISV32F_INSN_CMP_M_D_M; goto extract_sfmt_cmp_m_d_m;
   1748  1.11  christos           case 15: itype = CRISV32F_INSN_CMPCDR; goto extract_sfmt_cmpcdr;
   1749  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1750   1.1  christos           }
   1751   1.1  christos         }
   1752  1.11  christos       case 239:
   1753   1.1  christos         if ((base_insn & 0xfff) == 0xeff)
   1754   1.1  christos           { itype = CRISV32F_INSN_BASC_C; goto extract_sfmt_bas_c; }
   1755   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1756  1.11  christos       case 240:
   1757   1.1  christos         {
   1758  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1759  1.11  christos           switch (val1)
   1760   1.1  christos           {
   1761  1.11  christos           case 0:
   1762  1.11  christos           case 1:
   1763  1.11  christos           case 2:
   1764  1.11  christos           case 3:
   1765  1.11  christos           case 4:
   1766  1.11  christos           case 5:
   1767  1.11  christos           case 6:
   1768  1.11  christos           case 7:
   1769  1.11  christos           case 8:
   1770  1.11  christos           case 9:
   1771  1.11  christos           case 10:
   1772  1.11  christos           case 11:
   1773  1.11  christos           case 12:
   1774  1.11  christos           case 13:
   1775  1.11  christos           case 14: itype = CRISV32F_INSN_AND_M_B_M; goto extract_sfmt_and_m_b_m;
   1776  1.11  christos           case 15: itype = CRISV32F_INSN_ANDCBR; goto extract_sfmt_andcbr;
   1777  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1778  1.11  christos           }
   1779  1.11  christos         }
   1780  1.11  christos       case 241:
   1781  1.11  christos         {
   1782  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1783  1.11  christos           switch (val1)
   1784  1.11  christos           {
   1785  1.11  christos           case 0:
   1786  1.11  christos           case 1:
   1787  1.11  christos           case 2:
   1788  1.11  christos           case 3:
   1789  1.11  christos           case 4:
   1790  1.11  christos           case 5:
   1791  1.11  christos           case 6:
   1792  1.11  christos           case 7:
   1793  1.11  christos           case 8:
   1794  1.11  christos           case 9:
   1795  1.11  christos           case 10:
   1796  1.11  christos           case 11:
   1797  1.11  christos           case 12:
   1798  1.11  christos           case 13:
   1799  1.11  christos           case 14: itype = CRISV32F_INSN_AND_M_W_M; goto extract_sfmt_and_m_w_m;
   1800  1.11  christos           case 15: itype = CRISV32F_INSN_ANDCWR; goto extract_sfmt_andcwr;
   1801  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1802  1.11  christos           }
   1803  1.11  christos         }
   1804  1.11  christos       case 242:
   1805  1.11  christos         {
   1806  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1807  1.11  christos           switch (val1)
   1808  1.11  christos           {
   1809  1.11  christos           case 0:
   1810  1.11  christos           case 1:
   1811  1.11  christos           case 2:
   1812  1.11  christos           case 3:
   1813  1.11  christos           case 4:
   1814  1.11  christos           case 5:
   1815  1.11  christos           case 6:
   1816  1.11  christos           case 7:
   1817  1.11  christos           case 8:
   1818  1.11  christos           case 9:
   1819  1.11  christos           case 10:
   1820  1.11  christos           case 11:
   1821  1.11  christos           case 12:
   1822  1.11  christos           case 13:
   1823  1.11  christos           case 14: itype = CRISV32F_INSN_AND_M_D_M; goto extract_sfmt_and_m_d_m;
   1824  1.11  christos           case 15: itype = CRISV32F_INSN_ANDCDR; goto extract_sfmt_andcdr;
   1825  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1826   1.1  christos           }
   1827   1.1  christos         }
   1828  1.11  christos       case 243:
   1829   1.1  christos         if ((base_insn & 0xfff) == 0xf3f)
   1830   1.1  christos           { itype = CRISV32F_INSN_JASC_C; goto extract_sfmt_jas_c; }
   1831   1.1  christos         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1832  1.11  christos       case 244:
   1833   1.1  christos         {
   1834  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1835  1.11  christos           switch (val1)
   1836   1.1  christos           {
   1837  1.11  christos           case 0:
   1838  1.11  christos           case 1:
   1839  1.11  christos           case 2:
   1840  1.11  christos           case 3:
   1841  1.11  christos           case 4:
   1842  1.11  christos           case 5:
   1843  1.11  christos           case 6:
   1844  1.11  christos           case 7:
   1845  1.11  christos           case 8:
   1846  1.11  christos           case 9:
   1847  1.11  christos           case 10:
   1848  1.11  christos           case 11:
   1849  1.11  christos           case 12:
   1850  1.11  christos           case 13:
   1851  1.11  christos           case 14: itype = CRISV32F_INSN_OR_M_B_M; goto extract_sfmt_and_m_b_m;
   1852  1.11  christos           case 15: itype = CRISV32F_INSN_ORCBR; goto extract_sfmt_andcbr;
   1853  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1854  1.11  christos           }
   1855  1.11  christos         }
   1856  1.11  christos       case 245:
   1857  1.11  christos         {
   1858  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1859  1.11  christos           switch (val1)
   1860  1.11  christos           {
   1861  1.11  christos           case 0:
   1862  1.11  christos           case 1:
   1863  1.11  christos           case 2:
   1864  1.11  christos           case 3:
   1865  1.11  christos           case 4:
   1866  1.11  christos           case 5:
   1867  1.11  christos           case 6:
   1868  1.11  christos           case 7:
   1869  1.11  christos           case 8:
   1870  1.11  christos           case 9:
   1871  1.11  christos           case 10:
   1872  1.11  christos           case 11:
   1873  1.11  christos           case 12:
   1874  1.11  christos           case 13:
   1875  1.11  christos           case 14: itype = CRISV32F_INSN_OR_M_W_M; goto extract_sfmt_and_m_w_m;
   1876  1.11  christos           case 15: itype = CRISV32F_INSN_ORCWR; goto extract_sfmt_andcwr;
   1877  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1878  1.11  christos           }
   1879  1.11  christos         }
   1880  1.11  christos       case 246:
   1881  1.11  christos         {
   1882  1.11  christos           unsigned int val1 = (((insn >> 0) & (15 << 0)));
   1883  1.11  christos           switch (val1)
   1884  1.11  christos           {
   1885  1.11  christos           case 0:
   1886  1.11  christos           case 1:
   1887  1.11  christos           case 2:
   1888  1.11  christos           case 3:
   1889  1.11  christos           case 4:
   1890  1.11  christos           case 5:
   1891  1.11  christos           case 6:
   1892  1.11  christos           case 7:
   1893  1.11  christos           case 8:
   1894  1.11  christos           case 9:
   1895  1.11  christos           case 10:
   1896  1.11  christos           case 11:
   1897  1.11  christos           case 12:
   1898  1.11  christos           case 13:
   1899  1.11  christos           case 14: itype = CRISV32F_INSN_OR_M_D_M; goto extract_sfmt_and_m_d_m;
   1900  1.11  christos           case 15: itype = CRISV32F_INSN_ORCDR; goto extract_sfmt_andcdr;
   1901  1.11  christos           default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1902   1.1  christos           }
   1903   1.1  christos         }
   1904  1.11  christos       case 247: itype = CRISV32F_INSN_MOVE_SS_R; goto extract_sfmt_move_ss_r;
   1905  1.11  christos       default: itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
   1906   1.1  christos       }
   1907   1.1  christos     }
   1908   1.1  christos   }
   1909   1.1  christos 
   1910   1.1  christos   /* The instruction has been decoded, now extract the fields.  */
   1911   1.1  christos 
   1912   1.1  christos  extract_sfmt_empty:
   1913   1.1  christos   {
   1914   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   1915   1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   1916   1.1  christos 
   1917   1.1  christos 
   1918   1.1  christos   /* Record the fields for the semantic handler.  */
   1919   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
   1920   1.1  christos 
   1921   1.1  christos #undef FLD
   1922   1.1  christos     return idesc;
   1923   1.1  christos   }
   1924   1.1  christos 
   1925   1.1  christos  extract_sfmt_move_b_r:
   1926   1.1  christos   {
   1927   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   1928  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   1929   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   1930   1.1  christos     UINT f_operand2;
   1931   1.1  christos     UINT f_operand1;
   1932   1.1  christos 
   1933   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   1934   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   1935   1.1  christos 
   1936   1.1  christos   /* Record the fields for the semantic handler.  */
   1937   1.1  christos   FLD (f_operand1) = f_operand1;
   1938   1.1  christos   FLD (f_operand2) = f_operand2;
   1939   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_b_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   1940   1.1  christos 
   1941   1.1  christos #if WITH_PROFILE_MODEL_P
   1942   1.1  christos   /* Record the fields for profiling.  */
   1943   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   1944   1.1  christos     {
   1945   1.1  christos       FLD (in_Rs) = f_operand1;
   1946   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   1947   1.1  christos     }
   1948   1.1  christos #endif
   1949   1.1  christos #undef FLD
   1950   1.1  christos     return idesc;
   1951   1.1  christos   }
   1952   1.1  christos 
   1953   1.1  christos  extract_sfmt_move_d_r:
   1954   1.1  christos   {
   1955   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   1956  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   1957   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   1958   1.1  christos     UINT f_operand2;
   1959   1.1  christos     UINT f_operand1;
   1960   1.1  christos 
   1961   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   1962   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   1963   1.1  christos 
   1964   1.1  christos   /* Record the fields for the semantic handler.  */
   1965   1.1  christos   FLD (f_operand1) = f_operand1;
   1966   1.1  christos   FLD (f_operand2) = f_operand2;
   1967   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_d_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   1968   1.1  christos 
   1969   1.1  christos #if WITH_PROFILE_MODEL_P
   1970   1.1  christos   /* Record the fields for profiling.  */
   1971   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   1972   1.1  christos     {
   1973   1.1  christos       FLD (in_Rs) = f_operand1;
   1974   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   1975   1.1  christos     }
   1976   1.1  christos #endif
   1977   1.1  christos #undef FLD
   1978   1.1  christos     return idesc;
   1979   1.1  christos   }
   1980   1.1  christos 
   1981   1.1  christos  extract_sfmt_moveq:
   1982   1.1  christos   {
   1983   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   1984  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   1985   1.1  christos #define FLD(f) abuf->fields.sfmt_moveq.f
   1986   1.1  christos     UINT f_operand2;
   1987   1.1  christos     INT f_s6;
   1988   1.1  christos 
   1989   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   1990   1.1  christos     f_s6 = EXTRACT_LSB0_SINT (insn, 16, 5, 6);
   1991   1.1  christos 
   1992   1.1  christos   /* Record the fields for the semantic handler.  */
   1993   1.1  christos   FLD (f_s6) = f_s6;
   1994   1.1  christos   FLD (f_operand2) = f_operand2;
   1995   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_moveq", "f_s6 0x%x", 'x', f_s6, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   1996   1.1  christos 
   1997   1.1  christos #if WITH_PROFILE_MODEL_P
   1998   1.1  christos   /* Record the fields for profiling.  */
   1999   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2000   1.1  christos     {
   2001   1.1  christos       FLD (out_Rd) = f_operand2;
   2002   1.1  christos     }
   2003   1.1  christos #endif
   2004   1.1  christos #undef FLD
   2005   1.1  christos     return idesc;
   2006   1.1  christos   }
   2007   1.1  christos 
   2008   1.1  christos  extract_sfmt_movs_b_r:
   2009   1.1  christos   {
   2010   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2011  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2012   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2013   1.1  christos     UINT f_operand2;
   2014   1.1  christos     UINT f_operand1;
   2015   1.1  christos 
   2016   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2017   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2018   1.1  christos 
   2019   1.1  christos   /* Record the fields for the semantic handler.  */
   2020   1.1  christos   FLD (f_operand1) = f_operand1;
   2021   1.1  christos   FLD (f_operand2) = f_operand2;
   2022   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movs_b_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   2023   1.1  christos 
   2024   1.1  christos #if WITH_PROFILE_MODEL_P
   2025   1.1  christos   /* Record the fields for profiling.  */
   2026   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2027   1.1  christos     {
   2028   1.1  christos       FLD (in_Rs) = f_operand1;
   2029   1.1  christos       FLD (out_Rd) = f_operand2;
   2030   1.1  christos     }
   2031   1.1  christos #endif
   2032   1.1  christos #undef FLD
   2033   1.1  christos     return idesc;
   2034   1.1  christos   }
   2035   1.1  christos 
   2036   1.1  christos  extract_sfmt_movecbr:
   2037   1.1  christos   {
   2038   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2039  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2040   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   2041   1.1  christos     INT f_indir_pc__byte;
   2042   1.1  christos     UINT f_operand2;
   2043   1.1  christos     /* Contents of trailing part of insn.  */
   2044   1.1  christos     UINT word_1;
   2045   1.1  christos 
   2046   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2047   1.1  christos     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   2048   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2049   1.1  christos 
   2050   1.1  christos   /* Record the fields for the semantic handler.  */
   2051   1.1  christos   FLD (f_operand2) = f_operand2;
   2052   1.1  christos   FLD (f_indir_pc__byte) = f_indir_pc__byte;
   2053   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movecbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
   2054   1.1  christos 
   2055   1.1  christos #if WITH_PROFILE_MODEL_P
   2056   1.1  christos   /* Record the fields for profiling.  */
   2057   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2058   1.1  christos     {
   2059   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   2060   1.1  christos     }
   2061   1.1  christos #endif
   2062   1.1  christos #undef FLD
   2063   1.1  christos     return idesc;
   2064   1.1  christos   }
   2065   1.1  christos 
   2066   1.1  christos  extract_sfmt_movecwr:
   2067   1.1  christos   {
   2068   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2069  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2070   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   2071   1.1  christos     INT f_indir_pc__word;
   2072   1.1  christos     UINT f_operand2;
   2073   1.1  christos     /* Contents of trailing part of insn.  */
   2074   1.1  christos     UINT word_1;
   2075   1.1  christos 
   2076   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2077   1.1  christos     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   2078   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2079   1.1  christos 
   2080   1.1  christos   /* Record the fields for the semantic handler.  */
   2081   1.1  christos   FLD (f_operand2) = f_operand2;
   2082   1.1  christos   FLD (f_indir_pc__word) = f_indir_pc__word;
   2083   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movecwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
   2084   1.1  christos 
   2085   1.1  christos #if WITH_PROFILE_MODEL_P
   2086   1.1  christos   /* Record the fields for profiling.  */
   2087   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2088   1.1  christos     {
   2089   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   2090   1.1  christos     }
   2091   1.1  christos #endif
   2092   1.1  christos #undef FLD
   2093   1.1  christos     return idesc;
   2094   1.1  christos   }
   2095   1.1  christos 
   2096   1.1  christos  extract_sfmt_movecdr:
   2097   1.1  christos   {
   2098   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2099  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2100   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   2101   1.1  christos     INT f_indir_pc__dword;
   2102   1.1  christos     UINT f_operand2;
   2103   1.1  christos     /* Contents of trailing part of insn.  */
   2104   1.1  christos     UINT word_1;
   2105   1.1  christos 
   2106   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2107   1.1  christos     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
   2108   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2109   1.1  christos 
   2110   1.1  christos   /* Record the fields for the semantic handler.  */
   2111   1.1  christos   FLD (f_indir_pc__dword) = f_indir_pc__dword;
   2112   1.1  christos   FLD (f_operand2) = f_operand2;
   2113   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movecdr", "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   2114   1.1  christos 
   2115   1.1  christos #if WITH_PROFILE_MODEL_P
   2116   1.1  christos   /* Record the fields for profiling.  */
   2117   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2118   1.1  christos     {
   2119   1.1  christos       FLD (out_Rd) = f_operand2;
   2120   1.1  christos     }
   2121   1.1  christos #endif
   2122   1.1  christos #undef FLD
   2123   1.1  christos     return idesc;
   2124   1.1  christos   }
   2125   1.1  christos 
   2126   1.1  christos  extract_sfmt_movscbr:
   2127   1.1  christos   {
   2128   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2129  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2130   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   2131   1.1  christos     UINT f_operand2;
   2132   1.1  christos     INT f_indir_pc__byte;
   2133   1.1  christos     /* Contents of trailing part of insn.  */
   2134   1.1  christos     UINT word_1;
   2135   1.1  christos 
   2136   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2137   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2138   1.1  christos     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   2139   1.1  christos 
   2140   1.1  christos   /* Record the fields for the semantic handler.  */
   2141   1.1  christos   FLD (f_indir_pc__byte) = f_indir_pc__byte;
   2142   1.1  christos   FLD (f_operand2) = f_operand2;
   2143   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movscbr", "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   2144   1.1  christos 
   2145   1.1  christos #if WITH_PROFILE_MODEL_P
   2146   1.1  christos   /* Record the fields for profiling.  */
   2147   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2148   1.1  christos     {
   2149   1.1  christos       FLD (out_Rd) = f_operand2;
   2150   1.1  christos     }
   2151   1.1  christos #endif
   2152   1.1  christos #undef FLD
   2153   1.1  christos     return idesc;
   2154   1.1  christos   }
   2155   1.1  christos 
   2156   1.1  christos  extract_sfmt_movscwr:
   2157   1.1  christos   {
   2158   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2159  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2160   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   2161   1.1  christos     UINT f_operand2;
   2162   1.1  christos     INT f_indir_pc__word;
   2163   1.1  christos     /* Contents of trailing part of insn.  */
   2164   1.1  christos     UINT word_1;
   2165   1.1  christos 
   2166   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2167   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2168   1.1  christos     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   2169   1.1  christos 
   2170   1.1  christos   /* Record the fields for the semantic handler.  */
   2171   1.1  christos   FLD (f_indir_pc__word) = f_indir_pc__word;
   2172   1.1  christos   FLD (f_operand2) = f_operand2;
   2173   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movscwr", "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   2174   1.1  christos 
   2175   1.1  christos #if WITH_PROFILE_MODEL_P
   2176   1.1  christos   /* Record the fields for profiling.  */
   2177   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2178   1.1  christos     {
   2179   1.1  christos       FLD (out_Rd) = f_operand2;
   2180   1.1  christos     }
   2181   1.1  christos #endif
   2182   1.1  christos #undef FLD
   2183   1.1  christos     return idesc;
   2184   1.1  christos   }
   2185   1.1  christos 
   2186   1.1  christos  extract_sfmt_movucbr:
   2187   1.1  christos   {
   2188   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2189  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2190   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   2191   1.1  christos     UINT f_operand2;
   2192   1.1  christos     INT f_indir_pc__byte;
   2193   1.1  christos     /* Contents of trailing part of insn.  */
   2194   1.1  christos     UINT word_1;
   2195   1.1  christos 
   2196   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2197   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2198   1.1  christos     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   2199   1.1  christos 
   2200   1.1  christos   /* Record the fields for the semantic handler.  */
   2201   1.1  christos   FLD (f_indir_pc__byte) = f_indir_pc__byte;
   2202   1.1  christos   FLD (f_operand2) = f_operand2;
   2203   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movucbr", "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   2204   1.1  christos 
   2205   1.1  christos #if WITH_PROFILE_MODEL_P
   2206   1.1  christos   /* Record the fields for profiling.  */
   2207   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2208   1.1  christos     {
   2209   1.1  christos       FLD (out_Rd) = f_operand2;
   2210   1.1  christos     }
   2211   1.1  christos #endif
   2212   1.1  christos #undef FLD
   2213   1.1  christos     return idesc;
   2214   1.1  christos   }
   2215   1.1  christos 
   2216   1.1  christos  extract_sfmt_movucwr:
   2217   1.1  christos   {
   2218   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2219  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2220   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   2221   1.1  christos     UINT f_operand2;
   2222   1.1  christos     INT f_indir_pc__word;
   2223   1.1  christos     /* Contents of trailing part of insn.  */
   2224   1.1  christos     UINT word_1;
   2225   1.1  christos 
   2226   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2227   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2228   1.1  christos     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   2229   1.1  christos 
   2230   1.1  christos   /* Record the fields for the semantic handler.  */
   2231   1.1  christos   FLD (f_indir_pc__word) = f_indir_pc__word;
   2232   1.1  christos   FLD (f_operand2) = f_operand2;
   2233   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movucwr", "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   2234   1.1  christos 
   2235   1.1  christos #if WITH_PROFILE_MODEL_P
   2236   1.1  christos   /* Record the fields for profiling.  */
   2237   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2238   1.1  christos     {
   2239   1.1  christos       FLD (out_Rd) = f_operand2;
   2240   1.1  christos     }
   2241   1.1  christos #endif
   2242   1.1  christos #undef FLD
   2243   1.1  christos     return idesc;
   2244   1.1  christos   }
   2245   1.1  christos 
   2246   1.1  christos  extract_sfmt_addq:
   2247   1.1  christos   {
   2248   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2249  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2250   1.1  christos #define FLD(f) abuf->fields.sfmt_addq.f
   2251   1.1  christos     UINT f_operand2;
   2252   1.1  christos     UINT f_u6;
   2253   1.1  christos 
   2254   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2255   1.1  christos     f_u6 = EXTRACT_LSB0_UINT (insn, 16, 5, 6);
   2256   1.1  christos 
   2257   1.1  christos   /* Record the fields for the semantic handler.  */
   2258   1.1  christos   FLD (f_operand2) = f_operand2;
   2259   1.1  christos   FLD (f_u6) = f_u6;
   2260   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addq", "f_operand2 0x%x", 'x', f_operand2, "f_u6 0x%x", 'x', f_u6, (char *) 0));
   2261   1.1  christos 
   2262   1.1  christos #if WITH_PROFILE_MODEL_P
   2263   1.1  christos   /* Record the fields for profiling.  */
   2264   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2265   1.1  christos     {
   2266   1.1  christos       FLD (in_Rd) = f_operand2;
   2267   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   2268   1.1  christos     }
   2269   1.1  christos #endif
   2270   1.1  christos #undef FLD
   2271   1.1  christos     return idesc;
   2272   1.1  christos   }
   2273   1.1  christos 
   2274   1.1  christos  extract_sfmt_cmp_r_b_r:
   2275   1.1  christos   {
   2276   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2277  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2278   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2279   1.1  christos     UINT f_operand2;
   2280   1.1  christos     UINT f_operand1;
   2281   1.1  christos 
   2282   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2283   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2284   1.1  christos 
   2285   1.1  christos   /* Record the fields for the semantic handler.  */
   2286   1.1  christos   FLD (f_operand2) = f_operand2;
   2287   1.1  christos   FLD (f_operand1) = f_operand1;
   2288   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp_r_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   2289   1.1  christos 
   2290   1.1  christos #if WITH_PROFILE_MODEL_P
   2291   1.1  christos   /* Record the fields for profiling.  */
   2292   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2293   1.1  christos     {
   2294   1.1  christos       FLD (in_Rd) = f_operand2;
   2295   1.1  christos       FLD (in_Rs) = f_operand1;
   2296   1.1  christos     }
   2297   1.1  christos #endif
   2298   1.1  christos #undef FLD
   2299   1.1  christos     return idesc;
   2300   1.1  christos   }
   2301   1.1  christos 
   2302   1.1  christos  extract_sfmt_cmp_m_b_m:
   2303   1.1  christos   {
   2304   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2305  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2306   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   2307   1.1  christos     UINT f_operand2;
   2308   1.1  christos     UINT f_memmode;
   2309   1.1  christos     UINT f_operand1;
   2310   1.1  christos 
   2311   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2312   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2313   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2314   1.1  christos 
   2315   1.1  christos   /* Record the fields for the semantic handler.  */
   2316   1.1  christos   FLD (f_operand2) = f_operand2;
   2317   1.1  christos   FLD (f_operand1) = f_operand1;
   2318   1.1  christos   FLD (f_memmode) = f_memmode;
   2319   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   2320   1.1  christos 
   2321   1.1  christos #if WITH_PROFILE_MODEL_P
   2322   1.1  christos   /* Record the fields for profiling.  */
   2323   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2324   1.1  christos     {
   2325   1.1  christos       FLD (in_Rd) = f_operand2;
   2326   1.1  christos       FLD (in_Rs) = f_operand1;
   2327   1.1  christos       FLD (out_Rs) = f_operand1;
   2328   1.1  christos     }
   2329   1.1  christos #endif
   2330   1.1  christos #undef FLD
   2331   1.1  christos     return idesc;
   2332   1.1  christos   }
   2333   1.1  christos 
   2334   1.1  christos  extract_sfmt_cmp_m_w_m:
   2335   1.1  christos   {
   2336   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2337  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2338   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   2339   1.1  christos     UINT f_operand2;
   2340   1.1  christos     UINT f_memmode;
   2341   1.1  christos     UINT f_operand1;
   2342   1.1  christos 
   2343   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2344   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2345   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2346   1.1  christos 
   2347   1.1  christos   /* Record the fields for the semantic handler.  */
   2348   1.1  christos   FLD (f_operand2) = f_operand2;
   2349   1.1  christos   FLD (f_operand1) = f_operand1;
   2350   1.1  christos   FLD (f_memmode) = f_memmode;
   2351   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   2352   1.1  christos 
   2353   1.1  christos #if WITH_PROFILE_MODEL_P
   2354   1.1  christos   /* Record the fields for profiling.  */
   2355   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2356   1.1  christos     {
   2357   1.1  christos       FLD (in_Rd) = f_operand2;
   2358   1.1  christos       FLD (in_Rs) = f_operand1;
   2359   1.1  christos       FLD (out_Rs) = f_operand1;
   2360   1.1  christos     }
   2361   1.1  christos #endif
   2362   1.1  christos #undef FLD
   2363   1.1  christos     return idesc;
   2364   1.1  christos   }
   2365   1.1  christos 
   2366   1.1  christos  extract_sfmt_cmp_m_d_m:
   2367   1.1  christos   {
   2368   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2369  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2370   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   2371   1.1  christos     UINT f_operand2;
   2372   1.1  christos     UINT f_memmode;
   2373   1.1  christos     UINT f_operand1;
   2374   1.1  christos 
   2375   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2376   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2377   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2378   1.1  christos 
   2379   1.1  christos   /* Record the fields for the semantic handler.  */
   2380   1.1  christos   FLD (f_operand2) = f_operand2;
   2381   1.1  christos   FLD (f_operand1) = f_operand1;
   2382   1.1  christos   FLD (f_memmode) = f_memmode;
   2383   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp_m_d_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   2384   1.1  christos 
   2385   1.1  christos #if WITH_PROFILE_MODEL_P
   2386   1.1  christos   /* Record the fields for profiling.  */
   2387   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2388   1.1  christos     {
   2389   1.1  christos       FLD (in_Rd) = f_operand2;
   2390   1.1  christos       FLD (in_Rs) = f_operand1;
   2391   1.1  christos       FLD (out_Rs) = f_operand1;
   2392   1.1  christos     }
   2393   1.1  christos #endif
   2394   1.1  christos #undef FLD
   2395   1.1  christos     return idesc;
   2396   1.1  christos   }
   2397   1.1  christos 
   2398   1.1  christos  extract_sfmt_cmpcbr:
   2399   1.1  christos   {
   2400   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2401  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2402   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   2403   1.1  christos     INT f_indir_pc__byte;
   2404   1.1  christos     UINT f_operand2;
   2405   1.1  christos     /* Contents of trailing part of insn.  */
   2406   1.1  christos     UINT word_1;
   2407   1.1  christos 
   2408   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2409   1.1  christos     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   2410   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2411   1.1  christos 
   2412   1.1  christos   /* Record the fields for the semantic handler.  */
   2413   1.1  christos   FLD (f_operand2) = f_operand2;
   2414   1.1  christos   FLD (f_indir_pc__byte) = f_indir_pc__byte;
   2415   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpcbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
   2416   1.1  christos 
   2417   1.1  christos #if WITH_PROFILE_MODEL_P
   2418   1.1  christos   /* Record the fields for profiling.  */
   2419   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2420   1.1  christos     {
   2421   1.1  christos       FLD (in_Rd) = f_operand2;
   2422   1.1  christos     }
   2423   1.1  christos #endif
   2424   1.1  christos #undef FLD
   2425   1.1  christos     return idesc;
   2426   1.1  christos   }
   2427   1.1  christos 
   2428   1.1  christos  extract_sfmt_cmpcwr:
   2429   1.1  christos   {
   2430   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2431  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2432   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   2433   1.1  christos     INT f_indir_pc__word;
   2434   1.1  christos     UINT f_operand2;
   2435   1.1  christos     /* Contents of trailing part of insn.  */
   2436   1.1  christos     UINT word_1;
   2437   1.1  christos 
   2438   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2439   1.1  christos     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   2440   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2441   1.1  christos 
   2442   1.1  christos   /* Record the fields for the semantic handler.  */
   2443   1.1  christos   FLD (f_operand2) = f_operand2;
   2444   1.1  christos   FLD (f_indir_pc__word) = f_indir_pc__word;
   2445   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpcwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
   2446   1.1  christos 
   2447   1.1  christos #if WITH_PROFILE_MODEL_P
   2448   1.1  christos   /* Record the fields for profiling.  */
   2449   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2450   1.1  christos     {
   2451   1.1  christos       FLD (in_Rd) = f_operand2;
   2452   1.1  christos     }
   2453   1.1  christos #endif
   2454   1.1  christos #undef FLD
   2455   1.1  christos     return idesc;
   2456   1.1  christos   }
   2457   1.1  christos 
   2458   1.1  christos  extract_sfmt_cmpcdr:
   2459   1.1  christos   {
   2460   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2461  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2462   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   2463   1.1  christos     INT f_indir_pc__dword;
   2464   1.1  christos     UINT f_operand2;
   2465   1.1  christos     /* Contents of trailing part of insn.  */
   2466   1.1  christos     UINT word_1;
   2467   1.1  christos 
   2468   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2469   1.1  christos     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
   2470   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2471   1.1  christos 
   2472   1.1  christos   /* Record the fields for the semantic handler.  */
   2473   1.1  christos   FLD (f_operand2) = f_operand2;
   2474   1.1  christos   FLD (f_indir_pc__dword) = f_indir_pc__dword;
   2475   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpcdr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
   2476   1.1  christos 
   2477   1.1  christos #if WITH_PROFILE_MODEL_P
   2478   1.1  christos   /* Record the fields for profiling.  */
   2479   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2480   1.1  christos     {
   2481   1.1  christos       FLD (in_Rd) = f_operand2;
   2482   1.1  christos     }
   2483   1.1  christos #endif
   2484   1.1  christos #undef FLD
   2485   1.1  christos     return idesc;
   2486   1.1  christos   }
   2487   1.1  christos 
   2488   1.1  christos  extract_sfmt_cmpq:
   2489   1.1  christos   {
   2490   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2491  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2492   1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   2493   1.1  christos     UINT f_operand2;
   2494   1.1  christos     INT f_s6;
   2495   1.1  christos 
   2496   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2497   1.1  christos     f_s6 = EXTRACT_LSB0_SINT (insn, 16, 5, 6);
   2498   1.1  christos 
   2499   1.1  christos   /* Record the fields for the semantic handler.  */
   2500   1.1  christos   FLD (f_operand2) = f_operand2;
   2501   1.1  christos   FLD (f_s6) = f_s6;
   2502   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpq", "f_operand2 0x%x", 'x', f_operand2, "f_s6 0x%x", 'x', f_s6, (char *) 0));
   2503   1.1  christos 
   2504   1.1  christos #if WITH_PROFILE_MODEL_P
   2505   1.1  christos   /* Record the fields for profiling.  */
   2506   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2507   1.1  christos     {
   2508   1.1  christos       FLD (in_Rd) = f_operand2;
   2509   1.1  christos     }
   2510   1.1  christos #endif
   2511   1.1  christos #undef FLD
   2512   1.1  christos     return idesc;
   2513   1.1  christos   }
   2514   1.1  christos 
   2515   1.1  christos  extract_sfmt_cmpucbr:
   2516   1.1  christos   {
   2517   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2518  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2519   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   2520   1.1  christos     INT f_indir_pc__byte;
   2521   1.1  christos     UINT f_operand2;
   2522   1.1  christos     /* Contents of trailing part of insn.  */
   2523   1.1  christos     UINT word_1;
   2524   1.1  christos 
   2525   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2526   1.1  christos     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   2527   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2528   1.1  christos 
   2529   1.1  christos   /* Record the fields for the semantic handler.  */
   2530   1.1  christos   FLD (f_operand2) = f_operand2;
   2531   1.1  christos   FLD (f_indir_pc__byte) = f_indir_pc__byte;
   2532   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpucbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
   2533   1.1  christos 
   2534   1.1  christos #if WITH_PROFILE_MODEL_P
   2535   1.1  christos   /* Record the fields for profiling.  */
   2536   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2537   1.1  christos     {
   2538   1.1  christos       FLD (in_Rd) = f_operand2;
   2539   1.1  christos     }
   2540   1.1  christos #endif
   2541   1.1  christos #undef FLD
   2542   1.1  christos     return idesc;
   2543   1.1  christos   }
   2544   1.1  christos 
   2545   1.1  christos  extract_sfmt_cmpucwr:
   2546   1.1  christos   {
   2547   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2548  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2549   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   2550   1.1  christos     INT f_indir_pc__word;
   2551   1.1  christos     UINT f_operand2;
   2552   1.1  christos     /* Contents of trailing part of insn.  */
   2553   1.1  christos     UINT word_1;
   2554   1.1  christos 
   2555   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2556   1.1  christos     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   2557   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2558   1.1  christos 
   2559   1.1  christos   /* Record the fields for the semantic handler.  */
   2560   1.1  christos   FLD (f_operand2) = f_operand2;
   2561   1.1  christos   FLD (f_indir_pc__word) = f_indir_pc__word;
   2562   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpucwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
   2563   1.1  christos 
   2564   1.1  christos #if WITH_PROFILE_MODEL_P
   2565   1.1  christos   /* Record the fields for profiling.  */
   2566   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2567   1.1  christos     {
   2568   1.1  christos       FLD (in_Rd) = f_operand2;
   2569   1.1  christos     }
   2570   1.1  christos #endif
   2571   1.1  christos #undef FLD
   2572   1.1  christos     return idesc;
   2573   1.1  christos   }
   2574   1.1  christos 
   2575   1.1  christos  extract_sfmt_move_m_b_m:
   2576   1.1  christos   {
   2577   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2578  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2579   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2580   1.1  christos     UINT f_operand2;
   2581   1.1  christos     UINT f_memmode;
   2582   1.1  christos     UINT f_operand1;
   2583   1.1  christos 
   2584   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2585   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2586   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2587   1.1  christos 
   2588   1.1  christos   /* Record the fields for the semantic handler.  */
   2589   1.1  christos   FLD (f_operand1) = f_operand1;
   2590   1.1  christos   FLD (f_operand2) = f_operand2;
   2591   1.1  christos   FLD (f_memmode) = f_memmode;
   2592   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_m_b_m", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   2593   1.1  christos 
   2594   1.1  christos #if WITH_PROFILE_MODEL_P
   2595   1.1  christos   /* Record the fields for profiling.  */
   2596   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2597   1.1  christos     {
   2598   1.1  christos       FLD (in_Rs) = f_operand1;
   2599   1.1  christos       FLD (out_Rs) = f_operand1;
   2600   1.1  christos       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
   2601   1.1  christos     }
   2602   1.1  christos #endif
   2603   1.1  christos #undef FLD
   2604   1.1  christos     return idesc;
   2605   1.1  christos   }
   2606   1.1  christos 
   2607   1.1  christos  extract_sfmt_move_m_w_m:
   2608   1.1  christos   {
   2609   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2610  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2611   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2612   1.1  christos     UINT f_operand2;
   2613   1.1  christos     UINT f_memmode;
   2614   1.1  christos     UINT f_operand1;
   2615   1.1  christos 
   2616   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2617   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2618   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2619   1.1  christos 
   2620   1.1  christos   /* Record the fields for the semantic handler.  */
   2621   1.1  christos   FLD (f_operand1) = f_operand1;
   2622   1.1  christos   FLD (f_operand2) = f_operand2;
   2623   1.1  christos   FLD (f_memmode) = f_memmode;
   2624   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_m_w_m", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   2625   1.1  christos 
   2626   1.1  christos #if WITH_PROFILE_MODEL_P
   2627   1.1  christos   /* Record the fields for profiling.  */
   2628   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2629   1.1  christos     {
   2630   1.1  christos       FLD (in_Rs) = f_operand1;
   2631   1.1  christos       FLD (out_Rs) = f_operand1;
   2632   1.1  christos       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
   2633   1.1  christos     }
   2634   1.1  christos #endif
   2635   1.1  christos #undef FLD
   2636   1.1  christos     return idesc;
   2637   1.1  christos   }
   2638   1.1  christos 
   2639   1.1  christos  extract_sfmt_move_m_d_m:
   2640   1.1  christos   {
   2641   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2642  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2643   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2644   1.1  christos     UINT f_operand2;
   2645   1.1  christos     UINT f_memmode;
   2646   1.1  christos     UINT f_operand1;
   2647   1.1  christos 
   2648   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2649   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2650   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2651   1.1  christos 
   2652   1.1  christos   /* Record the fields for the semantic handler.  */
   2653   1.1  christos   FLD (f_operand1) = f_operand1;
   2654   1.1  christos   FLD (f_operand2) = f_operand2;
   2655   1.1  christos   FLD (f_memmode) = f_memmode;
   2656   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_m_d_m", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   2657   1.1  christos 
   2658   1.1  christos #if WITH_PROFILE_MODEL_P
   2659   1.1  christos   /* Record the fields for profiling.  */
   2660   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2661   1.1  christos     {
   2662   1.1  christos       FLD (in_Rs) = f_operand1;
   2663   1.1  christos       FLD (out_Rs) = f_operand1;
   2664   1.1  christos       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
   2665   1.1  christos     }
   2666   1.1  christos #endif
   2667   1.1  christos #undef FLD
   2668   1.1  christos     return idesc;
   2669   1.1  christos   }
   2670   1.1  christos 
   2671   1.1  christos  extract_sfmt_movs_m_b_m:
   2672   1.1  christos   {
   2673   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2674  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2675   1.1  christos #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   2676   1.1  christos     UINT f_operand2;
   2677   1.1  christos     UINT f_memmode;
   2678   1.1  christos     UINT f_operand1;
   2679   1.1  christos 
   2680   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2681   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2682   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2683   1.1  christos 
   2684   1.1  christos   /* Record the fields for the semantic handler.  */
   2685   1.1  christos   FLD (f_operand1) = f_operand1;
   2686   1.1  christos   FLD (f_memmode) = f_memmode;
   2687   1.1  christos   FLD (f_operand2) = f_operand2;
   2688   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movs_m_b_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   2689   1.1  christos 
   2690   1.1  christos #if WITH_PROFILE_MODEL_P
   2691   1.1  christos   /* Record the fields for profiling.  */
   2692   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2693   1.1  christos     {
   2694   1.1  christos       FLD (in_Rs) = f_operand1;
   2695   1.1  christos       FLD (out_Rd) = f_operand2;
   2696   1.1  christos       FLD (out_Rs) = f_operand1;
   2697   1.1  christos     }
   2698   1.1  christos #endif
   2699   1.1  christos #undef FLD
   2700   1.1  christos     return idesc;
   2701   1.1  christos   }
   2702   1.1  christos 
   2703   1.1  christos  extract_sfmt_movs_m_w_m:
   2704   1.1  christos   {
   2705   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2706  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2707   1.1  christos #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   2708   1.1  christos     UINT f_operand2;
   2709   1.1  christos     UINT f_memmode;
   2710   1.1  christos     UINT f_operand1;
   2711   1.1  christos 
   2712   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2713   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2714   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2715   1.1  christos 
   2716   1.1  christos   /* Record the fields for the semantic handler.  */
   2717   1.1  christos   FLD (f_operand1) = f_operand1;
   2718   1.1  christos   FLD (f_memmode) = f_memmode;
   2719   1.1  christos   FLD (f_operand2) = f_operand2;
   2720   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movs_m_w_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   2721   1.1  christos 
   2722   1.1  christos #if WITH_PROFILE_MODEL_P
   2723   1.1  christos   /* Record the fields for profiling.  */
   2724   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2725   1.1  christos     {
   2726   1.1  christos       FLD (in_Rs) = f_operand1;
   2727   1.1  christos       FLD (out_Rd) = f_operand2;
   2728   1.1  christos       FLD (out_Rs) = f_operand1;
   2729   1.1  christos     }
   2730   1.1  christos #endif
   2731   1.1  christos #undef FLD
   2732   1.1  christos     return idesc;
   2733   1.1  christos   }
   2734   1.1  christos 
   2735   1.1  christos  extract_sfmt_move_r_sprv32:
   2736   1.1  christos   {
   2737   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2738  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2739   1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   2740   1.1  christos     UINT f_operand2;
   2741   1.1  christos     UINT f_operand1;
   2742   1.1  christos 
   2743   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2744   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2745   1.1  christos 
   2746   1.1  christos   /* Record the fields for the semantic handler.  */
   2747   1.1  christos   FLD (f_operand1) = f_operand1;
   2748   1.1  christos   FLD (f_operand2) = f_operand2;
   2749   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_r_sprv32", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   2750   1.1  christos 
   2751   1.1  christos #if WITH_PROFILE_MODEL_P
   2752   1.1  christos   /* Record the fields for profiling.  */
   2753   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2754   1.1  christos     {
   2755   1.1  christos       FLD (in_Rs) = f_operand1;
   2756   1.1  christos       FLD (out_Pd) = f_operand2;
   2757   1.1  christos     }
   2758   1.1  christos #endif
   2759   1.1  christos #undef FLD
   2760   1.1  christos     return idesc;
   2761   1.1  christos   }
   2762   1.1  christos 
   2763   1.1  christos  extract_sfmt_move_spr_rv32:
   2764   1.1  christos   {
   2765   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2766  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2767   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   2768   1.1  christos     UINT f_operand2;
   2769   1.1  christos     UINT f_operand1;
   2770   1.1  christos 
   2771   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2772   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2773   1.1  christos 
   2774   1.1  christos   /* Record the fields for the semantic handler.  */
   2775   1.1  christos   FLD (f_operand2) = f_operand2;
   2776   1.1  christos   FLD (f_operand1) = f_operand1;
   2777   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_spr_rv32", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   2778   1.1  christos 
   2779   1.1  christos #if WITH_PROFILE_MODEL_P
   2780   1.1  christos   /* Record the fields for profiling.  */
   2781   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2782   1.1  christos     {
   2783   1.1  christos       FLD (in_Ps) = f_operand2;
   2784   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rs) = FLD (f_operand1);
   2785   1.1  christos     }
   2786   1.1  christos #endif
   2787   1.1  christos #undef FLD
   2788   1.1  christos     return idesc;
   2789   1.1  christos   }
   2790   1.1  christos 
   2791   1.1  christos  extract_sfmt_move_m_sprv32:
   2792   1.1  christos   {
   2793   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2794  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2795   1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   2796   1.1  christos     UINT f_operand2;
   2797   1.1  christos     UINT f_memmode;
   2798   1.1  christos     UINT f_operand1;
   2799   1.1  christos 
   2800   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2801   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2802   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2803   1.1  christos 
   2804   1.1  christos   /* Record the fields for the semantic handler.  */
   2805   1.1  christos   FLD (f_operand1) = f_operand1;
   2806   1.1  christos   FLD (f_operand2) = f_operand2;
   2807   1.1  christos   FLD (f_memmode) = f_memmode;
   2808   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_m_sprv32", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   2809   1.1  christos 
   2810   1.1  christos #if WITH_PROFILE_MODEL_P
   2811   1.1  christos   /* Record the fields for profiling.  */
   2812   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2813   1.1  christos     {
   2814   1.1  christos       FLD (in_Rs) = f_operand1;
   2815   1.1  christos       FLD (out_Pd) = f_operand2;
   2816   1.1  christos       FLD (out_Rs) = f_operand1;
   2817   1.1  christos     }
   2818   1.1  christos #endif
   2819   1.1  christos #undef FLD
   2820   1.1  christos     return idesc;
   2821   1.1  christos   }
   2822   1.1  christos 
   2823   1.1  christos  extract_sfmt_move_c_sprv32_p2:
   2824   1.1  christos   {
   2825   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2826  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2827   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   2828   1.1  christos     INT f_indir_pc__dword;
   2829   1.1  christos     UINT f_operand2;
   2830   1.1  christos     /* Contents of trailing part of insn.  */
   2831   1.1  christos     UINT word_1;
   2832   1.1  christos 
   2833   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   2834   1.1  christos     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
   2835   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2836   1.1  christos 
   2837   1.1  christos   /* Record the fields for the semantic handler.  */
   2838   1.1  christos   FLD (f_indir_pc__dword) = f_indir_pc__dword;
   2839   1.1  christos   FLD (f_operand2) = f_operand2;
   2840   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_c_sprv32_p2", "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   2841   1.1  christos 
   2842   1.1  christos #if WITH_PROFILE_MODEL_P
   2843   1.1  christos   /* Record the fields for profiling.  */
   2844   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2845   1.1  christos     {
   2846   1.1  christos       FLD (out_Pd) = f_operand2;
   2847   1.1  christos     }
   2848   1.1  christos #endif
   2849   1.1  christos #undef FLD
   2850   1.1  christos     return idesc;
   2851   1.1  christos   }
   2852   1.1  christos 
   2853   1.1  christos  extract_sfmt_move_spr_mv32:
   2854   1.1  christos   {
   2855   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2856  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2857   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   2858   1.1  christos     UINT f_operand2;
   2859   1.1  christos     UINT f_memmode;
   2860   1.1  christos     UINT f_operand1;
   2861   1.1  christos 
   2862   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2863   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2864   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2865   1.1  christos 
   2866   1.1  christos   /* Record the fields for the semantic handler.  */
   2867   1.1  christos   FLD (f_operand2) = f_operand2;
   2868   1.1  christos   FLD (f_operand1) = f_operand1;
   2869   1.1  christos   FLD (f_memmode) = f_memmode;
   2870   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_spr_mv32", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   2871   1.1  christos 
   2872   1.1  christos #if WITH_PROFILE_MODEL_P
   2873   1.1  christos   /* Record the fields for profiling.  */
   2874   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2875   1.1  christos     {
   2876   1.1  christos       FLD (in_Ps) = f_operand2;
   2877   1.1  christos       FLD (in_Rs) = f_operand1;
   2878   1.1  christos       FLD (out_Rs) = f_operand1;
   2879   1.1  christos     }
   2880   1.1  christos #endif
   2881   1.1  christos #undef FLD
   2882   1.1  christos     return idesc;
   2883   1.1  christos   }
   2884   1.1  christos 
   2885   1.1  christos  extract_sfmt_move_ss_r:
   2886   1.1  christos   {
   2887   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2888  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2889   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   2890   1.1  christos     UINT f_operand2;
   2891   1.1  christos     UINT f_operand1;
   2892   1.1  christos 
   2893   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2894   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2895   1.1  christos 
   2896   1.1  christos   /* Record the fields for the semantic handler.  */
   2897   1.1  christos   FLD (f_operand2) = f_operand2;
   2898   1.1  christos   FLD (f_operand1) = f_operand1;
   2899   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_ss_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   2900   1.1  christos 
   2901   1.1  christos #if WITH_PROFILE_MODEL_P
   2902   1.1  christos   /* Record the fields for profiling.  */
   2903   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2904   1.1  christos     {
   2905   1.1  christos       FLD (out_Rs) = f_operand1;
   2906   1.1  christos     }
   2907   1.1  christos #endif
   2908   1.1  christos #undef FLD
   2909   1.1  christos     return idesc;
   2910   1.1  christos   }
   2911   1.1  christos 
   2912   1.1  christos  extract_sfmt_move_r_ss:
   2913   1.1  christos   {
   2914   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2915  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2916   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   2917   1.1  christos     UINT f_operand2;
   2918   1.1  christos     UINT f_operand1;
   2919   1.1  christos 
   2920   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2921   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2922   1.1  christos 
   2923   1.1  christos   /* Record the fields for the semantic handler.  */
   2924   1.1  christos   FLD (f_operand1) = f_operand1;
   2925   1.1  christos   FLD (f_operand2) = f_operand2;
   2926   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_r_ss", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   2927   1.1  christos 
   2928   1.1  christos #if WITH_PROFILE_MODEL_P
   2929   1.1  christos   /* Record the fields for profiling.  */
   2930   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2931   1.1  christos     {
   2932   1.1  christos       FLD (in_Rs) = f_operand1;
   2933   1.1  christos     }
   2934   1.1  christos #endif
   2935   1.1  christos #undef FLD
   2936   1.1  christos     return idesc;
   2937   1.1  christos   }
   2938   1.1  christos 
   2939   1.1  christos  extract_sfmt_movem_r_m_v32:
   2940   1.1  christos   {
   2941   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2942  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2943   1.1  christos #define FLD(f) abuf->fields.sfmt_movem_r_m_v32.f
   2944   1.1  christos     UINT f_operand2;
   2945   1.1  christos     UINT f_memmode;
   2946   1.1  christos     UINT f_operand1;
   2947   1.1  christos 
   2948   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2949   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2950   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2951   1.1  christos 
   2952   1.1  christos   /* Record the fields for the semantic handler.  */
   2953   1.1  christos   FLD (f_operand2) = f_operand2;
   2954   1.1  christos   FLD (f_operand1) = f_operand1;
   2955   1.1  christos   FLD (f_memmode) = f_memmode;
   2956   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movem_r_m_v32", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   2957   1.1  christos 
   2958   1.1  christos #if WITH_PROFILE_MODEL_P
   2959   1.1  christos   /* Record the fields for profiling.  */
   2960   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   2961   1.1  christos     {
   2962   1.1  christos       FLD (in_Rd) = f_operand2;
   2963   1.1  christos       FLD (in_Rs) = f_operand1;
   2964   1.1  christos       FLD (in_h_gr_SI_0) = 0;
   2965   1.1  christos       FLD (in_h_gr_SI_1) = 1;
   2966   1.1  christos       FLD (in_h_gr_SI_10) = 10;
   2967   1.1  christos       FLD (in_h_gr_SI_11) = 11;
   2968   1.1  christos       FLD (in_h_gr_SI_12) = 12;
   2969   1.1  christos       FLD (in_h_gr_SI_13) = 13;
   2970   1.1  christos       FLD (in_h_gr_SI_14) = 14;
   2971   1.1  christos       FLD (in_h_gr_SI_15) = 15;
   2972   1.1  christos       FLD (in_h_gr_SI_2) = 2;
   2973   1.1  christos       FLD (in_h_gr_SI_3) = 3;
   2974   1.1  christos       FLD (in_h_gr_SI_4) = 4;
   2975   1.1  christos       FLD (in_h_gr_SI_5) = 5;
   2976   1.1  christos       FLD (in_h_gr_SI_6) = 6;
   2977   1.1  christos       FLD (in_h_gr_SI_7) = 7;
   2978   1.1  christos       FLD (in_h_gr_SI_8) = 8;
   2979   1.1  christos       FLD (in_h_gr_SI_9) = 9;
   2980   1.1  christos       FLD (out_Rs) = f_operand1;
   2981   1.1  christos     }
   2982   1.1  christos #endif
   2983   1.1  christos #undef FLD
   2984   1.1  christos     return idesc;
   2985   1.1  christos   }
   2986   1.1  christos 
   2987   1.1  christos  extract_sfmt_movem_m_r_v32:
   2988   1.1  christos   {
   2989   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   2990  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   2991   1.1  christos #define FLD(f) abuf->fields.sfmt_movem_m_r_v32.f
   2992   1.1  christos     UINT f_operand2;
   2993   1.1  christos     UINT f_memmode;
   2994   1.1  christos     UINT f_operand1;
   2995   1.1  christos 
   2996   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   2997   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   2998   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   2999   1.1  christos 
   3000   1.1  christos   /* Record the fields for the semantic handler.  */
   3001   1.1  christos   FLD (f_operand2) = f_operand2;
   3002   1.1  christos   FLD (f_operand1) = f_operand1;
   3003   1.1  christos   FLD (f_memmode) = f_memmode;
   3004   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movem_m_r_v32", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3005   1.1  christos 
   3006   1.1  christos #if WITH_PROFILE_MODEL_P
   3007   1.1  christos   /* Record the fields for profiling.  */
   3008   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3009   1.1  christos     {
   3010   1.1  christos       FLD (in_Rd) = f_operand2;
   3011   1.1  christos       FLD (in_Rs) = f_operand1;
   3012   1.1  christos       FLD (out_Rs) = f_operand1;
   3013   1.1  christos       FLD (out_h_gr_SI_0) = 0;
   3014   1.1  christos       FLD (out_h_gr_SI_1) = 1;
   3015   1.1  christos       FLD (out_h_gr_SI_10) = 10;
   3016   1.1  christos       FLD (out_h_gr_SI_11) = 11;
   3017   1.1  christos       FLD (out_h_gr_SI_12) = 12;
   3018   1.1  christos       FLD (out_h_gr_SI_13) = 13;
   3019   1.1  christos       FLD (out_h_gr_SI_14) = 14;
   3020   1.1  christos       FLD (out_h_gr_SI_15) = 15;
   3021   1.1  christos       FLD (out_h_gr_SI_2) = 2;
   3022   1.1  christos       FLD (out_h_gr_SI_3) = 3;
   3023   1.1  christos       FLD (out_h_gr_SI_4) = 4;
   3024   1.1  christos       FLD (out_h_gr_SI_5) = 5;
   3025   1.1  christos       FLD (out_h_gr_SI_6) = 6;
   3026   1.1  christos       FLD (out_h_gr_SI_7) = 7;
   3027   1.1  christos       FLD (out_h_gr_SI_8) = 8;
   3028   1.1  christos       FLD (out_h_gr_SI_9) = 9;
   3029   1.1  christos     }
   3030   1.1  christos #endif
   3031   1.1  christos #undef FLD
   3032   1.1  christos     return idesc;
   3033   1.1  christos   }
   3034   1.1  christos 
   3035   1.1  christos  extract_sfmt_add_b_r:
   3036   1.1  christos   {
   3037   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3038  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3039   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   3040   1.1  christos     UINT f_operand2;
   3041   1.1  christos     UINT f_operand1;
   3042   1.1  christos 
   3043   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3044   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3045   1.1  christos 
   3046   1.1  christos   /* Record the fields for the semantic handler.  */
   3047   1.1  christos   FLD (f_operand2) = f_operand2;
   3048   1.1  christos   FLD (f_operand1) = f_operand1;
   3049   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   3050   1.1  christos 
   3051   1.1  christos #if WITH_PROFILE_MODEL_P
   3052   1.1  christos   /* Record the fields for profiling.  */
   3053   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3054   1.1  christos     {
   3055   1.1  christos       FLD (in_Rd) = f_operand2;
   3056   1.1  christos       FLD (in_Rs) = f_operand1;
   3057   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3058   1.1  christos     }
   3059   1.1  christos #endif
   3060   1.1  christos #undef FLD
   3061   1.1  christos     return idesc;
   3062   1.1  christos   }
   3063   1.1  christos 
   3064   1.1  christos  extract_sfmt_add_d_r:
   3065   1.1  christos   {
   3066   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3067  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3068   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   3069   1.1  christos     UINT f_operand2;
   3070   1.1  christos     UINT f_operand1;
   3071   1.1  christos 
   3072   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3073   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3074   1.1  christos 
   3075   1.1  christos   /* Record the fields for the semantic handler.  */
   3076   1.1  christos   FLD (f_operand2) = f_operand2;
   3077   1.1  christos   FLD (f_operand1) = f_operand1;
   3078   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add_d_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   3079   1.1  christos 
   3080   1.1  christos #if WITH_PROFILE_MODEL_P
   3081   1.1  christos   /* Record the fields for profiling.  */
   3082   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3083   1.1  christos     {
   3084   1.1  christos       FLD (in_Rd) = f_operand2;
   3085   1.1  christos       FLD (in_Rs) = f_operand1;
   3086   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3087   1.1  christos     }
   3088   1.1  christos #endif
   3089   1.1  christos #undef FLD
   3090   1.1  christos     return idesc;
   3091   1.1  christos   }
   3092   1.1  christos 
   3093   1.1  christos  extract_sfmt_add_m_b_m:
   3094   1.1  christos   {
   3095   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3096  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3097   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   3098   1.1  christos     UINT f_operand2;
   3099   1.1  christos     UINT f_memmode;
   3100   1.1  christos     UINT f_operand1;
   3101   1.1  christos 
   3102   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3103   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3104   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3105   1.1  christos 
   3106   1.1  christos   /* Record the fields for the semantic handler.  */
   3107   1.1  christos   FLD (f_operand2) = f_operand2;
   3108   1.1  christos   FLD (f_operand1) = f_operand1;
   3109   1.1  christos   FLD (f_memmode) = f_memmode;
   3110   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3111   1.1  christos 
   3112   1.1  christos #if WITH_PROFILE_MODEL_P
   3113   1.1  christos   /* Record the fields for profiling.  */
   3114   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3115   1.1  christos     {
   3116   1.1  christos       FLD (in_Rd) = f_operand2;
   3117   1.1  christos       FLD (in_Rs) = f_operand1;
   3118   1.1  christos       FLD (out_Rs) = f_operand1;
   3119   1.1  christos       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
   3120   1.1  christos     }
   3121   1.1  christos #endif
   3122   1.1  christos #undef FLD
   3123   1.1  christos     return idesc;
   3124   1.1  christos   }
   3125   1.1  christos 
   3126   1.1  christos  extract_sfmt_add_m_w_m:
   3127   1.1  christos   {
   3128   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3129  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3130   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   3131   1.1  christos     UINT f_operand2;
   3132   1.1  christos     UINT f_memmode;
   3133   1.1  christos     UINT f_operand1;
   3134   1.1  christos 
   3135   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3136   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3137   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3138   1.1  christos 
   3139   1.1  christos   /* Record the fields for the semantic handler.  */
   3140   1.1  christos   FLD (f_operand2) = f_operand2;
   3141   1.1  christos   FLD (f_operand1) = f_operand1;
   3142   1.1  christos   FLD (f_memmode) = f_memmode;
   3143   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3144   1.1  christos 
   3145   1.1  christos #if WITH_PROFILE_MODEL_P
   3146   1.1  christos   /* Record the fields for profiling.  */
   3147   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3148   1.1  christos     {
   3149   1.1  christos       FLD (in_Rd) = f_operand2;
   3150   1.1  christos       FLD (in_Rs) = f_operand1;
   3151   1.1  christos       FLD (out_Rs) = f_operand1;
   3152   1.1  christos       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
   3153   1.1  christos     }
   3154   1.1  christos #endif
   3155   1.1  christos #undef FLD
   3156   1.1  christos     return idesc;
   3157   1.1  christos   }
   3158   1.1  christos 
   3159   1.1  christos  extract_sfmt_add_m_d_m:
   3160   1.1  christos   {
   3161   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3162  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3163   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   3164   1.1  christos     UINT f_operand2;
   3165   1.1  christos     UINT f_memmode;
   3166   1.1  christos     UINT f_operand1;
   3167   1.1  christos 
   3168   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3169   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3170   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3171   1.1  christos 
   3172   1.1  christos   /* Record the fields for the semantic handler.  */
   3173   1.1  christos   FLD (f_operand2) = f_operand2;
   3174   1.1  christos   FLD (f_operand1) = f_operand1;
   3175   1.1  christos   FLD (f_memmode) = f_memmode;
   3176   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add_m_d_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3177   1.1  christos 
   3178   1.1  christos #if WITH_PROFILE_MODEL_P
   3179   1.1  christos   /* Record the fields for profiling.  */
   3180   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3181   1.1  christos     {
   3182   1.1  christos       FLD (in_Rd) = f_operand2;
   3183   1.1  christos       FLD (in_Rs) = f_operand1;
   3184   1.1  christos       FLD (out_Rs) = f_operand1;
   3185   1.1  christos       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
   3186   1.1  christos     }
   3187   1.1  christos #endif
   3188   1.1  christos #undef FLD
   3189   1.1  christos     return idesc;
   3190   1.1  christos   }
   3191   1.1  christos 
   3192   1.1  christos  extract_sfmt_addcbr:
   3193   1.1  christos   {
   3194   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3195  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3196   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   3197   1.1  christos     INT f_indir_pc__byte;
   3198   1.1  christos     UINT f_operand2;
   3199   1.1  christos     /* Contents of trailing part of insn.  */
   3200   1.1  christos     UINT word_1;
   3201   1.1  christos 
   3202   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   3203   1.1  christos     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   3204   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3205   1.1  christos 
   3206   1.1  christos   /* Record the fields for the semantic handler.  */
   3207   1.1  christos   FLD (f_operand2) = f_operand2;
   3208   1.1  christos   FLD (f_indir_pc__byte) = f_indir_pc__byte;
   3209   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addcbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
   3210   1.1  christos 
   3211   1.1  christos #if WITH_PROFILE_MODEL_P
   3212   1.1  christos   /* Record the fields for profiling.  */
   3213   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3214   1.1  christos     {
   3215   1.1  christos       FLD (in_Rd) = f_operand2;
   3216   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3217   1.1  christos     }
   3218   1.1  christos #endif
   3219   1.1  christos #undef FLD
   3220   1.1  christos     return idesc;
   3221   1.1  christos   }
   3222   1.1  christos 
   3223   1.1  christos  extract_sfmt_addcwr:
   3224   1.1  christos   {
   3225   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3226  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3227   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   3228   1.1  christos     INT f_indir_pc__word;
   3229   1.1  christos     UINT f_operand2;
   3230   1.1  christos     /* Contents of trailing part of insn.  */
   3231   1.1  christos     UINT word_1;
   3232   1.1  christos 
   3233   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   3234   1.1  christos     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   3235   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3236   1.1  christos 
   3237   1.1  christos   /* Record the fields for the semantic handler.  */
   3238   1.1  christos   FLD (f_operand2) = f_operand2;
   3239   1.1  christos   FLD (f_indir_pc__word) = f_indir_pc__word;
   3240   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addcwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
   3241   1.1  christos 
   3242   1.1  christos #if WITH_PROFILE_MODEL_P
   3243   1.1  christos   /* Record the fields for profiling.  */
   3244   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3245   1.1  christos     {
   3246   1.1  christos       FLD (in_Rd) = f_operand2;
   3247   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3248   1.1  christos     }
   3249   1.1  christos #endif
   3250   1.1  christos #undef FLD
   3251   1.1  christos     return idesc;
   3252   1.1  christos   }
   3253   1.1  christos 
   3254   1.1  christos  extract_sfmt_addcdr:
   3255   1.1  christos   {
   3256   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3257  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3258   1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   3259   1.1  christos     INT f_indir_pc__dword;
   3260   1.1  christos     UINT f_operand2;
   3261   1.1  christos     /* Contents of trailing part of insn.  */
   3262   1.1  christos     UINT word_1;
   3263   1.1  christos 
   3264   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   3265   1.1  christos     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
   3266   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3267   1.1  christos 
   3268   1.1  christos   /* Record the fields for the semantic handler.  */
   3269   1.1  christos   FLD (f_operand2) = f_operand2;
   3270   1.1  christos   FLD (f_indir_pc__dword) = f_indir_pc__dword;
   3271   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addcdr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
   3272   1.1  christos 
   3273   1.1  christos #if WITH_PROFILE_MODEL_P
   3274   1.1  christos   /* Record the fields for profiling.  */
   3275   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3276   1.1  christos     {
   3277   1.1  christos       FLD (in_Rd) = f_operand2;
   3278   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3279   1.1  christos     }
   3280   1.1  christos #endif
   3281   1.1  christos #undef FLD
   3282   1.1  christos     return idesc;
   3283   1.1  christos   }
   3284   1.1  christos 
   3285   1.1  christos  extract_sfmt_adds_m_b_m:
   3286   1.1  christos   {
   3287   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3288  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3289   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   3290   1.1  christos     UINT f_operand2;
   3291   1.1  christos     UINT f_memmode;
   3292   1.1  christos     UINT f_operand1;
   3293   1.1  christos 
   3294   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3295   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3296   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3297   1.1  christos 
   3298   1.1  christos   /* Record the fields for the semantic handler.  */
   3299   1.1  christos   FLD (f_operand2) = f_operand2;
   3300   1.1  christos   FLD (f_operand1) = f_operand1;
   3301   1.1  christos   FLD (f_memmode) = f_memmode;
   3302   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_adds_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3303   1.1  christos 
   3304   1.1  christos #if WITH_PROFILE_MODEL_P
   3305   1.1  christos   /* Record the fields for profiling.  */
   3306   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3307   1.1  christos     {
   3308   1.1  christos       FLD (in_Rd) = f_operand2;
   3309   1.1  christos       FLD (in_Rs) = f_operand1;
   3310   1.1  christos       FLD (out_Rs) = f_operand1;
   3311   1.1  christos       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
   3312   1.1  christos     }
   3313   1.1  christos #endif
   3314   1.1  christos #undef FLD
   3315   1.1  christos     return idesc;
   3316   1.1  christos   }
   3317   1.1  christos 
   3318   1.1  christos  extract_sfmt_adds_m_w_m:
   3319   1.1  christos   {
   3320   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3321  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3322   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   3323   1.1  christos     UINT f_operand2;
   3324   1.1  christos     UINT f_memmode;
   3325   1.1  christos     UINT f_operand1;
   3326   1.1  christos 
   3327   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3328   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3329   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3330   1.1  christos 
   3331   1.1  christos   /* Record the fields for the semantic handler.  */
   3332   1.1  christos   FLD (f_operand2) = f_operand2;
   3333   1.1  christos   FLD (f_operand1) = f_operand1;
   3334   1.1  christos   FLD (f_memmode) = f_memmode;
   3335   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_adds_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3336   1.1  christos 
   3337   1.1  christos #if WITH_PROFILE_MODEL_P
   3338   1.1  christos   /* Record the fields for profiling.  */
   3339   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3340   1.1  christos     {
   3341   1.1  christos       FLD (in_Rd) = f_operand2;
   3342   1.1  christos       FLD (in_Rs) = f_operand1;
   3343   1.1  christos       FLD (out_Rs) = f_operand1;
   3344   1.1  christos       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
   3345   1.1  christos     }
   3346   1.1  christos #endif
   3347   1.1  christos #undef FLD
   3348   1.1  christos     return idesc;
   3349   1.1  christos   }
   3350   1.1  christos 
   3351   1.1  christos  extract_sfmt_addscbr:
   3352   1.1  christos   {
   3353   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3354  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3355   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   3356   1.1  christos     INT f_indir_pc__byte;
   3357   1.1  christos     UINT f_operand2;
   3358   1.1  christos     /* Contents of trailing part of insn.  */
   3359   1.1  christos     UINT word_1;
   3360   1.1  christos 
   3361   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   3362   1.1  christos     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   3363   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3364   1.1  christos 
   3365   1.1  christos   /* Record the fields for the semantic handler.  */
   3366   1.1  christos   FLD (f_operand2) = f_operand2;
   3367   1.1  christos   FLD (f_indir_pc__byte) = f_indir_pc__byte;
   3368   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addscbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
   3369   1.1  christos 
   3370   1.1  christos #if WITH_PROFILE_MODEL_P
   3371   1.1  christos   /* Record the fields for profiling.  */
   3372   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3373   1.1  christos     {
   3374   1.1  christos       FLD (in_Rd) = f_operand2;
   3375   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3376   1.1  christos     }
   3377   1.1  christos #endif
   3378   1.1  christos #undef FLD
   3379   1.1  christos     return idesc;
   3380   1.1  christos   }
   3381   1.1  christos 
   3382   1.1  christos  extract_sfmt_addscwr:
   3383   1.1  christos   {
   3384   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3385  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3386   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   3387   1.1  christos     INT f_indir_pc__word;
   3388   1.1  christos     UINT f_operand2;
   3389   1.1  christos     /* Contents of trailing part of insn.  */
   3390   1.1  christos     UINT word_1;
   3391   1.1  christos 
   3392   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   3393   1.1  christos     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   3394   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3395   1.1  christos 
   3396   1.1  christos   /* Record the fields for the semantic handler.  */
   3397   1.1  christos   FLD (f_operand2) = f_operand2;
   3398   1.1  christos   FLD (f_indir_pc__word) = f_indir_pc__word;
   3399   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addscwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
   3400   1.1  christos 
   3401   1.1  christos #if WITH_PROFILE_MODEL_P
   3402   1.1  christos   /* Record the fields for profiling.  */
   3403   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3404   1.1  christos     {
   3405   1.1  christos       FLD (in_Rd) = f_operand2;
   3406   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3407   1.1  christos     }
   3408   1.1  christos #endif
   3409   1.1  christos #undef FLD
   3410   1.1  christos     return idesc;
   3411   1.1  christos   }
   3412   1.1  christos 
   3413   1.1  christos  extract_sfmt_addc_m:
   3414   1.1  christos   {
   3415   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3416  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3417   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   3418   1.1  christos     UINT f_operand2;
   3419   1.1  christos     UINT f_memmode;
   3420   1.1  christos     UINT f_operand1;
   3421   1.1  christos 
   3422   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3423   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3424   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3425   1.1  christos 
   3426   1.1  christos   /* Record the fields for the semantic handler.  */
   3427   1.1  christos   FLD (f_operand2) = f_operand2;
   3428   1.1  christos   FLD (f_operand1) = f_operand1;
   3429   1.1  christos   FLD (f_memmode) = f_memmode;
   3430   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addc_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3431   1.1  christos 
   3432   1.1  christos #if WITH_PROFILE_MODEL_P
   3433   1.1  christos   /* Record the fields for profiling.  */
   3434   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3435   1.1  christos     {
   3436   1.1  christos       FLD (in_Rd) = f_operand2;
   3437   1.1  christos       FLD (in_Rs) = f_operand1;
   3438   1.1  christos       FLD (out_Rs) = f_operand1;
   3439   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3440   1.1  christos     }
   3441   1.1  christos #endif
   3442   1.1  christos #undef FLD
   3443   1.1  christos     return idesc;
   3444   1.1  christos   }
   3445   1.1  christos 
   3446   1.1  christos  extract_sfmt_lapc_d:
   3447   1.1  christos   {
   3448   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3449  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3450   1.1  christos #define FLD(f) abuf->fields.sfmt_lapc_d.f
   3451   1.1  christos     SI f_indir_pc__dword_pcrel;
   3452   1.1  christos     UINT f_operand2;
   3453   1.1  christos     /* Contents of trailing part of insn.  */
   3454   1.1  christos     UINT word_1;
   3455   1.1  christos 
   3456   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   3457   1.1  christos     f_indir_pc__dword_pcrel = ((pc) + ((0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0))));
   3458   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3459   1.1  christos 
   3460   1.1  christos   /* Record the fields for the semantic handler.  */
   3461   1.1  christos   FLD (f_operand2) = f_operand2;
   3462   1.1  christos   FLD (i_const32_pcrel) = f_indir_pc__dword_pcrel;
   3463   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lapc_d", "f_operand2 0x%x", 'x', f_operand2, "const32_pcrel 0x%x", 'x', f_indir_pc__dword_pcrel, (char *) 0));
   3464   1.1  christos 
   3465   1.1  christos #if WITH_PROFILE_MODEL_P
   3466   1.1  christos   /* Record the fields for profiling.  */
   3467   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3468   1.1  christos     {
   3469   1.1  christos       FLD (out_Rd) = f_operand2;
   3470   1.1  christos     }
   3471   1.1  christos #endif
   3472   1.1  christos #undef FLD
   3473   1.1  christos     return idesc;
   3474   1.1  christos   }
   3475   1.1  christos 
   3476   1.1  christos  extract_sfmt_lapcq:
   3477   1.1  christos   {
   3478   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3479  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3480   1.1  christos #define FLD(f) abuf->fields.sfmt_lapcq.f
   3481   1.1  christos     UINT f_operand2;
   3482   1.1  christos     SI f_qo;
   3483   1.1  christos 
   3484   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3485   1.1  christos     f_qo = ((pc) + (((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (1))));
   3486   1.1  christos 
   3487   1.1  christos   /* Record the fields for the semantic handler.  */
   3488   1.1  christos   FLD (f_operand2) = f_operand2;
   3489   1.1  christos   FLD (i_qo) = f_qo;
   3490   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lapcq", "f_operand2 0x%x", 'x', f_operand2, "qo 0x%x", 'x', f_qo, (char *) 0));
   3491   1.1  christos 
   3492   1.1  christos #if WITH_PROFILE_MODEL_P
   3493   1.1  christos   /* Record the fields for profiling.  */
   3494   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3495   1.1  christos     {
   3496   1.1  christos       FLD (out_Rd) = f_operand2;
   3497   1.1  christos     }
   3498   1.1  christos #endif
   3499   1.1  christos #undef FLD
   3500   1.1  christos     return idesc;
   3501   1.1  christos   }
   3502   1.1  christos 
   3503   1.1  christos  extract_sfmt_addi_b_r:
   3504   1.1  christos   {
   3505   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3506  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3507   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   3508   1.1  christos     UINT f_operand2;
   3509   1.1  christos     UINT f_operand1;
   3510   1.1  christos 
   3511   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3512   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3513   1.1  christos 
   3514   1.1  christos   /* Record the fields for the semantic handler.  */
   3515   1.1  christos   FLD (f_operand2) = f_operand2;
   3516   1.1  christos   FLD (f_operand1) = f_operand1;
   3517   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   3518   1.1  christos 
   3519   1.1  christos #if WITH_PROFILE_MODEL_P
   3520   1.1  christos   /* Record the fields for profiling.  */
   3521   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3522   1.1  christos     {
   3523   1.1  christos       FLD (in_Rd) = f_operand2;
   3524   1.1  christos       FLD (in_Rs) = f_operand1;
   3525   1.1  christos       FLD (out_Rs) = f_operand1;
   3526   1.1  christos     }
   3527   1.1  christos #endif
   3528   1.1  christos #undef FLD
   3529   1.1  christos     return idesc;
   3530   1.1  christos   }
   3531   1.1  christos 
   3532   1.1  christos  extract_sfmt_neg_b_r:
   3533   1.1  christos   {
   3534   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3535  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3536   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   3537   1.1  christos     UINT f_operand2;
   3538   1.1  christos     UINT f_operand1;
   3539   1.1  christos 
   3540   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3541   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3542   1.1  christos 
   3543   1.1  christos   /* Record the fields for the semantic handler.  */
   3544   1.1  christos   FLD (f_operand1) = f_operand1;
   3545   1.1  christos   FLD (f_operand2) = f_operand2;
   3546   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_neg_b_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   3547   1.1  christos 
   3548   1.1  christos #if WITH_PROFILE_MODEL_P
   3549   1.1  christos   /* Record the fields for profiling.  */
   3550   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3551   1.1  christos     {
   3552   1.1  christos       FLD (in_Rs) = f_operand1;
   3553   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3554   1.1  christos     }
   3555   1.1  christos #endif
   3556   1.1  christos #undef FLD
   3557   1.1  christos     return idesc;
   3558   1.1  christos   }
   3559   1.1  christos 
   3560   1.1  christos  extract_sfmt_neg_d_r:
   3561   1.1  christos   {
   3562   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3563  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3564   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   3565   1.1  christos     UINT f_operand2;
   3566   1.1  christos     UINT f_operand1;
   3567   1.1  christos 
   3568   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3569   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3570   1.1  christos 
   3571   1.1  christos   /* Record the fields for the semantic handler.  */
   3572   1.1  christos   FLD (f_operand1) = f_operand1;
   3573   1.1  christos   FLD (f_operand2) = f_operand2;
   3574   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_neg_d_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   3575   1.1  christos 
   3576   1.1  christos #if WITH_PROFILE_MODEL_P
   3577   1.1  christos   /* Record the fields for profiling.  */
   3578   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3579   1.1  christos     {
   3580   1.1  christos       FLD (in_Rs) = f_operand1;
   3581   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3582   1.1  christos     }
   3583   1.1  christos #endif
   3584   1.1  christos #undef FLD
   3585   1.1  christos     return idesc;
   3586   1.1  christos   }
   3587   1.1  christos 
   3588   1.1  christos  extract_sfmt_test_m_b_m:
   3589   1.1  christos   {
   3590   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3591  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3592   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   3593   1.1  christos     UINT f_memmode;
   3594   1.1  christos     UINT f_operand1;
   3595   1.1  christos 
   3596   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3597   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3598   1.1  christos 
   3599   1.1  christos   /* Record the fields for the semantic handler.  */
   3600   1.1  christos   FLD (f_operand1) = f_operand1;
   3601   1.1  christos   FLD (f_memmode) = f_memmode;
   3602   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_test_m_b_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3603   1.1  christos 
   3604   1.1  christos #if WITH_PROFILE_MODEL_P
   3605   1.1  christos   /* Record the fields for profiling.  */
   3606   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3607   1.1  christos     {
   3608   1.1  christos       FLD (in_Rs) = f_operand1;
   3609   1.1  christos       FLD (out_Rs) = f_operand1;
   3610   1.1  christos     }
   3611   1.1  christos #endif
   3612   1.1  christos #undef FLD
   3613   1.1  christos     return idesc;
   3614   1.1  christos   }
   3615   1.1  christos 
   3616   1.1  christos  extract_sfmt_test_m_w_m:
   3617   1.1  christos   {
   3618   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3619  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3620   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   3621   1.1  christos     UINT f_memmode;
   3622   1.1  christos     UINT f_operand1;
   3623   1.1  christos 
   3624   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3625   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3626   1.1  christos 
   3627   1.1  christos   /* Record the fields for the semantic handler.  */
   3628   1.1  christos   FLD (f_operand1) = f_operand1;
   3629   1.1  christos   FLD (f_memmode) = f_memmode;
   3630   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_test_m_w_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3631   1.1  christos 
   3632   1.1  christos #if WITH_PROFILE_MODEL_P
   3633   1.1  christos   /* Record the fields for profiling.  */
   3634   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3635   1.1  christos     {
   3636   1.1  christos       FLD (in_Rs) = f_operand1;
   3637   1.1  christos       FLD (out_Rs) = f_operand1;
   3638   1.1  christos     }
   3639   1.1  christos #endif
   3640   1.1  christos #undef FLD
   3641   1.1  christos     return idesc;
   3642   1.1  christos   }
   3643   1.1  christos 
   3644   1.1  christos  extract_sfmt_test_m_d_m:
   3645   1.1  christos   {
   3646   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3647  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3648   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   3649   1.1  christos     UINT f_memmode;
   3650   1.1  christos     UINT f_operand1;
   3651   1.1  christos 
   3652   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3653   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3654   1.1  christos 
   3655   1.1  christos   /* Record the fields for the semantic handler.  */
   3656   1.1  christos   FLD (f_operand1) = f_operand1;
   3657   1.1  christos   FLD (f_memmode) = f_memmode;
   3658   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_test_m_d_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3659   1.1  christos 
   3660   1.1  christos #if WITH_PROFILE_MODEL_P
   3661   1.1  christos   /* Record the fields for profiling.  */
   3662   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3663   1.1  christos     {
   3664   1.1  christos       FLD (in_Rs) = f_operand1;
   3665   1.1  christos       FLD (out_Rs) = f_operand1;
   3666   1.1  christos     }
   3667   1.1  christos #endif
   3668   1.1  christos #undef FLD
   3669   1.1  christos     return idesc;
   3670   1.1  christos   }
   3671   1.1  christos 
   3672   1.1  christos  extract_sfmt_move_r_m_b_m:
   3673   1.1  christos   {
   3674   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3675  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3676   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   3677   1.1  christos     UINT f_operand2;
   3678   1.1  christos     UINT f_memmode;
   3679   1.1  christos     UINT f_operand1;
   3680   1.1  christos 
   3681   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3682   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3683   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3684   1.1  christos 
   3685   1.1  christos   /* Record the fields for the semantic handler.  */
   3686   1.1  christos   FLD (f_operand2) = f_operand2;
   3687   1.1  christos   FLD (f_operand1) = f_operand1;
   3688   1.1  christos   FLD (f_memmode) = f_memmode;
   3689   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_r_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3690   1.1  christos 
   3691   1.1  christos #if WITH_PROFILE_MODEL_P
   3692   1.1  christos   /* Record the fields for profiling.  */
   3693   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3694   1.1  christos     {
   3695   1.1  christos       FLD (in_Rd) = f_operand2;
   3696   1.1  christos       FLD (in_Rs) = f_operand1;
   3697   1.1  christos       FLD (out_Rs) = f_operand1;
   3698   1.1  christos     }
   3699   1.1  christos #endif
   3700   1.1  christos #undef FLD
   3701   1.1  christos     return idesc;
   3702   1.1  christos   }
   3703   1.1  christos 
   3704   1.1  christos  extract_sfmt_move_r_m_w_m:
   3705   1.1  christos   {
   3706   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3707  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3708   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   3709   1.1  christos     UINT f_operand2;
   3710   1.1  christos     UINT f_memmode;
   3711   1.1  christos     UINT f_operand1;
   3712   1.1  christos 
   3713   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3714   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3715   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3716   1.1  christos 
   3717   1.1  christos   /* Record the fields for the semantic handler.  */
   3718   1.1  christos   FLD (f_operand2) = f_operand2;
   3719   1.1  christos   FLD (f_operand1) = f_operand1;
   3720   1.1  christos   FLD (f_memmode) = f_memmode;
   3721   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_r_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3722   1.1  christos 
   3723   1.1  christos #if WITH_PROFILE_MODEL_P
   3724   1.1  christos   /* Record the fields for profiling.  */
   3725   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3726   1.1  christos     {
   3727   1.1  christos       FLD (in_Rd) = f_operand2;
   3728   1.1  christos       FLD (in_Rs) = f_operand1;
   3729   1.1  christos       FLD (out_Rs) = f_operand1;
   3730   1.1  christos     }
   3731   1.1  christos #endif
   3732   1.1  christos #undef FLD
   3733   1.1  christos     return idesc;
   3734   1.1  christos   }
   3735   1.1  christos 
   3736   1.1  christos  extract_sfmt_move_r_m_d_m:
   3737   1.1  christos   {
   3738   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3739  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3740   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   3741   1.1  christos     UINT f_operand2;
   3742   1.1  christos     UINT f_memmode;
   3743   1.1  christos     UINT f_operand1;
   3744   1.1  christos 
   3745   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3746   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3747   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3748   1.1  christos 
   3749   1.1  christos   /* Record the fields for the semantic handler.  */
   3750   1.1  christos   FLD (f_operand2) = f_operand2;
   3751   1.1  christos   FLD (f_operand1) = f_operand1;
   3752   1.1  christos   FLD (f_memmode) = f_memmode;
   3753   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_r_m_d_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3754   1.1  christos 
   3755   1.1  christos #if WITH_PROFILE_MODEL_P
   3756   1.1  christos   /* Record the fields for profiling.  */
   3757   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3758   1.1  christos     {
   3759   1.1  christos       FLD (in_Rd) = f_operand2;
   3760   1.1  christos       FLD (in_Rs) = f_operand1;
   3761   1.1  christos       FLD (out_Rs) = f_operand1;
   3762   1.1  christos     }
   3763   1.1  christos #endif
   3764   1.1  christos #undef FLD
   3765   1.1  christos     return idesc;
   3766   1.1  christos   }
   3767   1.1  christos 
   3768   1.1  christos  extract_sfmt_muls_b:
   3769   1.1  christos   {
   3770   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3771  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3772   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   3773   1.1  christos     UINT f_operand2;
   3774   1.1  christos     UINT f_operand1;
   3775   1.1  christos 
   3776   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3777   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3778   1.1  christos 
   3779   1.1  christos   /* Record the fields for the semantic handler.  */
   3780   1.1  christos   FLD (f_operand2) = f_operand2;
   3781   1.1  christos   FLD (f_operand1) = f_operand1;
   3782   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_muls_b", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   3783   1.1  christos 
   3784   1.1  christos #if WITH_PROFILE_MODEL_P
   3785   1.1  christos   /* Record the fields for profiling.  */
   3786   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3787   1.1  christos     {
   3788   1.1  christos       FLD (in_Rd) = f_operand2;
   3789   1.1  christos       FLD (in_Rs) = f_operand1;
   3790   1.1  christos       FLD (out_Rd) = f_operand2;
   3791   1.1  christos       FLD (out_h_sr_SI_7) = 7;
   3792   1.1  christos     }
   3793   1.1  christos #endif
   3794   1.1  christos #undef FLD
   3795   1.1  christos     return idesc;
   3796   1.1  christos   }
   3797   1.1  christos 
   3798   1.1  christos  extract_sfmt_mcp:
   3799   1.1  christos   {
   3800   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3801  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3802   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   3803   1.1  christos     UINT f_operand2;
   3804   1.1  christos     UINT f_operand1;
   3805   1.1  christos 
   3806   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3807   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3808   1.1  christos 
   3809   1.1  christos   /* Record the fields for the semantic handler.  */
   3810   1.1  christos   FLD (f_operand2) = f_operand2;
   3811   1.1  christos   FLD (f_operand1) = f_operand1;
   3812   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mcp", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   3813   1.1  christos 
   3814   1.1  christos #if WITH_PROFILE_MODEL_P
   3815   1.1  christos   /* Record the fields for profiling.  */
   3816   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3817   1.1  christos     {
   3818   1.1  christos       FLD (in_Ps) = f_operand2;
   3819   1.1  christos       FLD (in_Rs) = f_operand1;
   3820   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rs) = FLD (f_operand1);
   3821   1.1  christos     }
   3822   1.1  christos #endif
   3823   1.1  christos #undef FLD
   3824   1.1  christos     return idesc;
   3825   1.1  christos   }
   3826   1.1  christos 
   3827   1.1  christos  extract_sfmt_dstep:
   3828   1.1  christos   {
   3829   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3830  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3831   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   3832   1.1  christos     UINT f_operand2;
   3833   1.1  christos     UINT f_operand1;
   3834   1.1  christos 
   3835   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3836   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3837   1.1  christos 
   3838   1.1  christos   /* Record the fields for the semantic handler.  */
   3839   1.1  christos   FLD (f_operand2) = f_operand2;
   3840   1.1  christos   FLD (f_operand1) = f_operand1;
   3841   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dstep", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   3842   1.1  christos 
   3843   1.1  christos #if WITH_PROFILE_MODEL_P
   3844   1.1  christos   /* Record the fields for profiling.  */
   3845   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3846   1.1  christos     {
   3847   1.1  christos       FLD (in_Rd) = f_operand2;
   3848   1.1  christos       FLD (in_Rs) = f_operand1;
   3849   1.1  christos       FLD (out_Rd) = f_operand2;
   3850   1.1  christos     }
   3851   1.1  christos #endif
   3852   1.1  christos #undef FLD
   3853   1.1  christos     return idesc;
   3854   1.1  christos   }
   3855   1.1  christos 
   3856   1.1  christos  extract_sfmt_and_b_r:
   3857   1.1  christos   {
   3858   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3859  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3860   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   3861   1.1  christos     UINT f_operand2;
   3862   1.1  christos     UINT f_operand1;
   3863   1.1  christos 
   3864   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3865   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3866   1.1  christos 
   3867   1.1  christos   /* Record the fields for the semantic handler.  */
   3868   1.1  christos   FLD (f_operand2) = f_operand2;
   3869   1.1  christos   FLD (f_operand1) = f_operand1;
   3870   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   3871   1.1  christos 
   3872   1.1  christos #if WITH_PROFILE_MODEL_P
   3873   1.1  christos   /* Record the fields for profiling.  */
   3874   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3875   1.1  christos     {
   3876   1.1  christos       FLD (in_Rd) = f_operand2;
   3877   1.1  christos       FLD (in_Rs) = f_operand1;
   3878   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3879   1.1  christos     }
   3880   1.1  christos #endif
   3881   1.1  christos #undef FLD
   3882   1.1  christos     return idesc;
   3883   1.1  christos   }
   3884   1.1  christos 
   3885   1.1  christos  extract_sfmt_and_d_r:
   3886   1.1  christos   {
   3887   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3888  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3889   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   3890   1.1  christos     UINT f_operand2;
   3891   1.1  christos     UINT f_operand1;
   3892   1.1  christos 
   3893   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3894   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3895   1.1  christos 
   3896   1.1  christos   /* Record the fields for the semantic handler.  */
   3897   1.1  christos   FLD (f_operand2) = f_operand2;
   3898   1.1  christos   FLD (f_operand1) = f_operand1;
   3899   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_d_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   3900   1.1  christos 
   3901   1.1  christos #if WITH_PROFILE_MODEL_P
   3902   1.1  christos   /* Record the fields for profiling.  */
   3903   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3904   1.1  christos     {
   3905   1.1  christos       FLD (in_Rd) = f_operand2;
   3906   1.1  christos       FLD (in_Rs) = f_operand1;
   3907   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   3908   1.1  christos     }
   3909   1.1  christos #endif
   3910   1.1  christos #undef FLD
   3911   1.1  christos     return idesc;
   3912   1.1  christos   }
   3913   1.1  christos 
   3914   1.1  christos  extract_sfmt_and_m_b_m:
   3915   1.1  christos   {
   3916   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3917  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3918   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   3919   1.1  christos     UINT f_operand2;
   3920   1.1  christos     UINT f_memmode;
   3921   1.1  christos     UINT f_operand1;
   3922   1.1  christos 
   3923   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3924   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3925   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3926   1.1  christos 
   3927   1.1  christos   /* Record the fields for the semantic handler.  */
   3928   1.1  christos   FLD (f_operand2) = f_operand2;
   3929   1.1  christos   FLD (f_operand1) = f_operand1;
   3930   1.1  christos   FLD (f_memmode) = f_memmode;
   3931   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3932   1.1  christos 
   3933   1.1  christos #if WITH_PROFILE_MODEL_P
   3934   1.1  christos   /* Record the fields for profiling.  */
   3935   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3936   1.1  christos     {
   3937   1.1  christos       FLD (in_Rd) = f_operand2;
   3938   1.1  christos       FLD (in_Rs) = f_operand1;
   3939   1.1  christos       FLD (out_Rs) = f_operand1;
   3940   1.1  christos       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
   3941   1.1  christos     }
   3942   1.1  christos #endif
   3943   1.1  christos #undef FLD
   3944   1.1  christos     return idesc;
   3945   1.1  christos   }
   3946   1.1  christos 
   3947   1.1  christos  extract_sfmt_and_m_w_m:
   3948   1.1  christos   {
   3949   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3950  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3951   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   3952   1.1  christos     UINT f_operand2;
   3953   1.1  christos     UINT f_memmode;
   3954   1.1  christos     UINT f_operand1;
   3955   1.1  christos 
   3956   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3957   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3958   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3959   1.1  christos 
   3960   1.1  christos   /* Record the fields for the semantic handler.  */
   3961   1.1  christos   FLD (f_operand2) = f_operand2;
   3962   1.1  christos   FLD (f_operand1) = f_operand1;
   3963   1.1  christos   FLD (f_memmode) = f_memmode;
   3964   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3965   1.1  christos 
   3966   1.1  christos #if WITH_PROFILE_MODEL_P
   3967   1.1  christos   /* Record the fields for profiling.  */
   3968   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   3969   1.1  christos     {
   3970   1.1  christos       FLD (in_Rd) = f_operand2;
   3971   1.1  christos       FLD (in_Rs) = f_operand1;
   3972   1.1  christos       FLD (out_Rs) = f_operand1;
   3973   1.1  christos       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
   3974   1.1  christos     }
   3975   1.1  christos #endif
   3976   1.1  christos #undef FLD
   3977   1.1  christos     return idesc;
   3978   1.1  christos   }
   3979   1.1  christos 
   3980   1.1  christos  extract_sfmt_and_m_d_m:
   3981   1.1  christos   {
   3982   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   3983  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   3984   1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   3985   1.1  christos     UINT f_operand2;
   3986   1.1  christos     UINT f_memmode;
   3987   1.1  christos     UINT f_operand1;
   3988   1.1  christos 
   3989   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   3990   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   3991   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   3992   1.1  christos 
   3993   1.1  christos   /* Record the fields for the semantic handler.  */
   3994   1.1  christos   FLD (f_operand2) = f_operand2;
   3995   1.1  christos   FLD (f_operand1) = f_operand1;
   3996   1.1  christos   FLD (f_memmode) = f_memmode;
   3997   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_m_d_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   3998   1.1  christos 
   3999   1.1  christos #if WITH_PROFILE_MODEL_P
   4000   1.1  christos   /* Record the fields for profiling.  */
   4001   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4002   1.1  christos     {
   4003   1.1  christos       FLD (in_Rd) = f_operand2;
   4004   1.1  christos       FLD (in_Rs) = f_operand1;
   4005   1.1  christos       FLD (out_Rs) = f_operand1;
   4006   1.1  christos       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
   4007   1.1  christos     }
   4008   1.1  christos #endif
   4009   1.1  christos #undef FLD
   4010   1.1  christos     return idesc;
   4011   1.1  christos   }
   4012   1.1  christos 
   4013   1.1  christos  extract_sfmt_andcbr:
   4014   1.1  christos   {
   4015   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4016  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4017   1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   4018   1.1  christos     INT f_indir_pc__byte;
   4019   1.1  christos     UINT f_operand2;
   4020   1.1  christos     /* Contents of trailing part of insn.  */
   4021   1.1  christos     UINT word_1;
   4022   1.1  christos 
   4023   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4024   1.1  christos     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   4025   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4026   1.1  christos 
   4027   1.1  christos   /* Record the fields for the semantic handler.  */
   4028   1.1  christos   FLD (f_operand2) = f_operand2;
   4029   1.1  christos   FLD (f_indir_pc__byte) = f_indir_pc__byte;
   4030   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andcbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
   4031   1.1  christos 
   4032   1.1  christos #if WITH_PROFILE_MODEL_P
   4033   1.1  christos   /* Record the fields for profiling.  */
   4034   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4035   1.1  christos     {
   4036   1.1  christos       FLD (in_Rd) = f_operand2;
   4037   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   4038   1.1  christos     }
   4039   1.1  christos #endif
   4040   1.1  christos #undef FLD
   4041   1.1  christos     return idesc;
   4042   1.1  christos   }
   4043   1.1  christos 
   4044   1.1  christos  extract_sfmt_andcwr:
   4045   1.1  christos   {
   4046   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4047  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4048   1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   4049   1.1  christos     INT f_indir_pc__word;
   4050   1.1  christos     UINT f_operand2;
   4051   1.1  christos     /* Contents of trailing part of insn.  */
   4052   1.1  christos     UINT word_1;
   4053   1.1  christos 
   4054   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4055   1.1  christos     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   4056   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4057   1.1  christos 
   4058   1.1  christos   /* Record the fields for the semantic handler.  */
   4059   1.1  christos   FLD (f_operand2) = f_operand2;
   4060   1.1  christos   FLD (f_indir_pc__word) = f_indir_pc__word;
   4061   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andcwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
   4062   1.1  christos 
   4063   1.1  christos #if WITH_PROFILE_MODEL_P
   4064   1.1  christos   /* Record the fields for profiling.  */
   4065   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4066   1.1  christos     {
   4067   1.1  christos       FLD (in_Rd) = f_operand2;
   4068   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   4069   1.1  christos     }
   4070   1.1  christos #endif
   4071   1.1  christos #undef FLD
   4072   1.1  christos     return idesc;
   4073   1.1  christos   }
   4074   1.1  christos 
   4075   1.1  christos  extract_sfmt_andcdr:
   4076   1.1  christos   {
   4077   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4078  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4079   1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   4080   1.1  christos     INT f_indir_pc__dword;
   4081   1.1  christos     UINT f_operand2;
   4082   1.1  christos     /* Contents of trailing part of insn.  */
   4083   1.1  christos     UINT word_1;
   4084   1.1  christos 
   4085   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4086   1.1  christos     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
   4087   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4088   1.1  christos 
   4089   1.1  christos   /* Record the fields for the semantic handler.  */
   4090   1.1  christos   FLD (f_operand2) = f_operand2;
   4091   1.1  christos   FLD (f_indir_pc__dword) = f_indir_pc__dword;
   4092   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andcdr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
   4093   1.1  christos 
   4094   1.1  christos #if WITH_PROFILE_MODEL_P
   4095   1.1  christos   /* Record the fields for profiling.  */
   4096   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4097   1.1  christos     {
   4098   1.1  christos       FLD (in_Rd) = f_operand2;
   4099   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   4100   1.1  christos     }
   4101   1.1  christos #endif
   4102   1.1  christos #undef FLD
   4103   1.1  christos     return idesc;
   4104   1.1  christos   }
   4105   1.1  christos 
   4106   1.1  christos  extract_sfmt_andq:
   4107   1.1  christos   {
   4108   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4109  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4110   1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   4111   1.1  christos     UINT f_operand2;
   4112   1.1  christos     INT f_s6;
   4113   1.1  christos 
   4114   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4115   1.1  christos     f_s6 = EXTRACT_LSB0_SINT (insn, 16, 5, 6);
   4116   1.1  christos 
   4117   1.1  christos   /* Record the fields for the semantic handler.  */
   4118   1.1  christos   FLD (f_operand2) = f_operand2;
   4119   1.1  christos   FLD (f_s6) = f_s6;
   4120   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andq", "f_operand2 0x%x", 'x', f_operand2, "f_s6 0x%x", 'x', f_s6, (char *) 0));
   4121   1.1  christos 
   4122   1.1  christos #if WITH_PROFILE_MODEL_P
   4123   1.1  christos   /* Record the fields for profiling.  */
   4124   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4125   1.1  christos     {
   4126   1.1  christos       FLD (in_Rd) = f_operand2;
   4127   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   4128   1.1  christos     }
   4129   1.1  christos #endif
   4130   1.1  christos #undef FLD
   4131   1.1  christos     return idesc;
   4132   1.1  christos   }
   4133   1.1  christos 
   4134   1.1  christos  extract_sfmt_swap:
   4135   1.1  christos   {
   4136   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4137  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4138   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   4139   1.1  christos     UINT f_operand2;
   4140   1.1  christos     UINT f_operand1;
   4141   1.1  christos 
   4142   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4143   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4144   1.1  christos 
   4145   1.1  christos   /* Record the fields for the semantic handler.  */
   4146   1.1  christos   FLD (f_operand1) = f_operand1;
   4147   1.1  christos   FLD (f_operand2) = f_operand2;
   4148   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_swap", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   4149   1.1  christos 
   4150   1.1  christos #if WITH_PROFILE_MODEL_P
   4151   1.1  christos   /* Record the fields for profiling.  */
   4152   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4153   1.1  christos     {
   4154   1.1  christos       FLD (in_Rs) = f_operand1;
   4155   1.1  christos       FLD (out_Rs) = f_operand1;
   4156   1.1  christos     }
   4157   1.1  christos #endif
   4158   1.1  christos #undef FLD
   4159   1.1  christos     return idesc;
   4160   1.1  christos   }
   4161   1.1  christos 
   4162   1.1  christos  extract_sfmt_asrq:
   4163   1.1  christos   {
   4164   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4165  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4166   1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   4167   1.1  christos     UINT f_operand2;
   4168   1.1  christos     UINT f_u5;
   4169   1.1  christos 
   4170   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4171   1.1  christos     f_u5 = EXTRACT_LSB0_UINT (insn, 16, 4, 5);
   4172   1.1  christos 
   4173   1.1  christos   /* Record the fields for the semantic handler.  */
   4174   1.1  christos   FLD (f_operand2) = f_operand2;
   4175   1.1  christos   FLD (f_u5) = f_u5;
   4176   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_asrq", "f_operand2 0x%x", 'x', f_operand2, "f_u5 0x%x", 'x', f_u5, (char *) 0));
   4177   1.1  christos 
   4178   1.1  christos #if WITH_PROFILE_MODEL_P
   4179   1.1  christos   /* Record the fields for profiling.  */
   4180   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4181   1.1  christos     {
   4182   1.1  christos       FLD (in_Rd) = f_operand2;
   4183   1.1  christos       FLD (out_Rd) = f_operand2;
   4184   1.1  christos     }
   4185   1.1  christos #endif
   4186   1.1  christos #undef FLD
   4187   1.1  christos     return idesc;
   4188   1.1  christos   }
   4189   1.1  christos 
   4190   1.1  christos  extract_sfmt_lsrr_b_r:
   4191   1.1  christos   {
   4192   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4193  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4194   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   4195   1.1  christos     UINT f_operand2;
   4196   1.1  christos     UINT f_operand1;
   4197   1.1  christos 
   4198   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4199   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4200   1.1  christos 
   4201   1.1  christos   /* Record the fields for the semantic handler.  */
   4202   1.1  christos   FLD (f_operand2) = f_operand2;
   4203   1.1  christos   FLD (f_operand1) = f_operand1;
   4204   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsrr_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   4205   1.1  christos 
   4206   1.1  christos #if WITH_PROFILE_MODEL_P
   4207   1.1  christos   /* Record the fields for profiling.  */
   4208   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4209   1.1  christos     {
   4210   1.1  christos       FLD (in_Rd) = f_operand2;
   4211   1.1  christos       FLD (in_Rs) = f_operand1;
   4212   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   4213   1.1  christos     }
   4214   1.1  christos #endif
   4215   1.1  christos #undef FLD
   4216   1.1  christos     return idesc;
   4217   1.1  christos   }
   4218   1.1  christos 
   4219   1.1  christos  extract_sfmt_lsrr_d_r:
   4220   1.1  christos   {
   4221   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4222  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4223   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   4224   1.1  christos     UINT f_operand2;
   4225   1.1  christos     UINT f_operand1;
   4226   1.1  christos 
   4227   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4228   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4229   1.1  christos 
   4230   1.1  christos   /* Record the fields for the semantic handler.  */
   4231   1.1  christos   FLD (f_operand2) = f_operand2;
   4232   1.1  christos   FLD (f_operand1) = f_operand1;
   4233   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsrr_d_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   4234   1.1  christos 
   4235   1.1  christos #if WITH_PROFILE_MODEL_P
   4236   1.1  christos   /* Record the fields for profiling.  */
   4237   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4238   1.1  christos     {
   4239   1.1  christos       FLD (in_Rd) = f_operand2;
   4240   1.1  christos       FLD (in_Rs) = f_operand1;
   4241   1.1  christos       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
   4242   1.1  christos     }
   4243   1.1  christos #endif
   4244   1.1  christos #undef FLD
   4245   1.1  christos     return idesc;
   4246   1.1  christos   }
   4247   1.1  christos 
   4248   1.1  christos  extract_sfmt_btst:
   4249   1.1  christos   {
   4250   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4251  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4252   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   4253   1.1  christos     UINT f_operand2;
   4254   1.1  christos     UINT f_operand1;
   4255   1.1  christos 
   4256   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4257   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4258   1.1  christos 
   4259   1.1  christos   /* Record the fields for the semantic handler.  */
   4260   1.1  christos   FLD (f_operand2) = f_operand2;
   4261   1.1  christos   FLD (f_operand1) = f_operand1;
   4262   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btst", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   4263   1.1  christos 
   4264   1.1  christos #if WITH_PROFILE_MODEL_P
   4265   1.1  christos   /* Record the fields for profiling.  */
   4266   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4267   1.1  christos     {
   4268   1.1  christos       FLD (in_Rd) = f_operand2;
   4269   1.1  christos       FLD (in_Rs) = f_operand1;
   4270   1.1  christos     }
   4271   1.1  christos #endif
   4272   1.1  christos #undef FLD
   4273   1.1  christos     return idesc;
   4274   1.1  christos   }
   4275   1.1  christos 
   4276   1.1  christos  extract_sfmt_btstq:
   4277   1.1  christos   {
   4278   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4279  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4280   1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   4281   1.1  christos     UINT f_operand2;
   4282   1.1  christos     UINT f_u5;
   4283   1.1  christos 
   4284   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4285   1.1  christos     f_u5 = EXTRACT_LSB0_UINT (insn, 16, 4, 5);
   4286   1.1  christos 
   4287   1.1  christos   /* Record the fields for the semantic handler.  */
   4288   1.1  christos   FLD (f_operand2) = f_operand2;
   4289   1.1  christos   FLD (f_u5) = f_u5;
   4290   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btstq", "f_operand2 0x%x", 'x', f_operand2, "f_u5 0x%x", 'x', f_u5, (char *) 0));
   4291   1.1  christos 
   4292   1.1  christos #if WITH_PROFILE_MODEL_P
   4293   1.1  christos   /* Record the fields for profiling.  */
   4294   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4295   1.1  christos     {
   4296   1.1  christos       FLD (in_Rd) = f_operand2;
   4297   1.1  christos     }
   4298   1.1  christos #endif
   4299   1.1  christos #undef FLD
   4300   1.1  christos     return idesc;
   4301   1.1  christos   }
   4302   1.1  christos 
   4303   1.1  christos  extract_sfmt_setf:
   4304   1.1  christos   {
   4305   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4306  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4307   1.1  christos #define FLD(f) abuf->fields.sfmt_setf.f
   4308   1.1  christos     UINT f_operand2;
   4309   1.1  christos     UINT f_operand1;
   4310   1.1  christos     UINT f_dstsrc;
   4311   1.1  christos 
   4312   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4313   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4314   1.1  christos   f_dstsrc = ((((f_operand1) | (((f_operand2) << (4))))) & (255));
   4315   1.1  christos 
   4316   1.1  christos   /* Record the fields for the semantic handler.  */
   4317   1.1  christos   FLD (f_dstsrc) = f_dstsrc;
   4318   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_setf", "f_dstsrc 0x%x", 'x', f_dstsrc, (char *) 0));
   4319   1.1  christos 
   4320   1.1  christos #undef FLD
   4321   1.1  christos     return idesc;
   4322   1.1  christos   }
   4323   1.1  christos 
   4324   1.1  christos  extract_sfmt_rfe:
   4325   1.1  christos   {
   4326   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4327   1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   4328   1.1  christos 
   4329   1.1  christos 
   4330   1.1  christos   /* Record the fields for the semantic handler.  */
   4331   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rfe", (char *) 0));
   4332   1.1  christos 
   4333   1.1  christos #if WITH_PROFILE_MODEL_P
   4334   1.1  christos   /* Record the fields for profiling.  */
   4335   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4336   1.1  christos     {
   4337   1.1  christos       FLD (in_h_sr_SI_13) = 13;
   4338   1.1  christos       FLD (out_h_sr_SI_13) = 13;
   4339   1.1  christos     }
   4340   1.1  christos #endif
   4341   1.1  christos #undef FLD
   4342   1.1  christos     return idesc;
   4343   1.1  christos   }
   4344   1.1  christos 
   4345   1.1  christos  extract_sfmt_sfe:
   4346   1.1  christos   {
   4347   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4348   1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   4349   1.1  christos 
   4350   1.1  christos 
   4351   1.1  christos   /* Record the fields for the semantic handler.  */
   4352   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sfe", (char *) 0));
   4353   1.1  christos 
   4354   1.1  christos #if WITH_PROFILE_MODEL_P
   4355   1.1  christos   /* Record the fields for profiling.  */
   4356   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4357   1.1  christos     {
   4358   1.1  christos       FLD (in_h_sr_SI_13) = 13;
   4359   1.1  christos       FLD (out_h_sr_SI_13) = 13;
   4360   1.1  christos     }
   4361   1.1  christos #endif
   4362   1.1  christos #undef FLD
   4363   1.1  christos     return idesc;
   4364   1.1  christos   }
   4365   1.1  christos 
   4366   1.1  christos  extract_sfmt_rfg:
   4367   1.1  christos   {
   4368   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4369   1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   4370   1.1  christos 
   4371   1.1  christos 
   4372   1.1  christos   /* Record the fields for the semantic handler.  */
   4373   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rfg", (char *) 0));
   4374   1.1  christos 
   4375   1.1  christos #if WITH_PROFILE_MODEL_P
   4376   1.1  christos   /* Record the fields for profiling.  */
   4377   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4378   1.1  christos     {
   4379   1.1  christos     }
   4380   1.1  christos #endif
   4381   1.1  christos #undef FLD
   4382   1.1  christos     return idesc;
   4383   1.1  christos   }
   4384   1.1  christos 
   4385   1.1  christos  extract_sfmt_rfn:
   4386   1.1  christos   {
   4387   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4388   1.1  christos #define FLD(f) abuf->fields.sfmt_rfe.f
   4389   1.1  christos 
   4390   1.1  christos 
   4391   1.1  christos   /* Record the fields for the semantic handler.  */
   4392   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rfn", (char *) 0));
   4393   1.1  christos 
   4394   1.1  christos #if WITH_PROFILE_MODEL_P
   4395   1.1  christos   /* Record the fields for profiling.  */
   4396   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4397   1.1  christos     {
   4398   1.1  christos       FLD (in_h_sr_SI_13) = 13;
   4399   1.1  christos       FLD (out_h_sr_SI_13) = 13;
   4400   1.1  christos     }
   4401   1.1  christos #endif
   4402   1.1  christos #undef FLD
   4403   1.1  christos     return idesc;
   4404   1.1  christos   }
   4405   1.1  christos 
   4406   1.1  christos  extract_sfmt_halt:
   4407   1.1  christos   {
   4408   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4409   1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   4410   1.1  christos 
   4411   1.1  christos 
   4412   1.1  christos   /* Record the fields for the semantic handler.  */
   4413   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_halt", (char *) 0));
   4414   1.1  christos 
   4415   1.1  christos #if WITH_PROFILE_MODEL_P
   4416   1.1  christos   /* Record the fields for profiling.  */
   4417   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4418   1.1  christos     {
   4419   1.1  christos     }
   4420   1.1  christos #endif
   4421   1.1  christos #undef FLD
   4422   1.1  christos     return idesc;
   4423   1.1  christos   }
   4424   1.1  christos 
   4425   1.1  christos  extract_sfmt_bcc_b:
   4426   1.1  christos   {
   4427   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4428  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4429   1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
   4430   1.1  christos     UINT f_operand2;
   4431   1.1  christos     UINT f_disp9_lo;
   4432   1.1  christos     INT f_disp9_hi;
   4433   1.1  christos     INT f_disp9;
   4434   1.1  christos 
   4435   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4436   1.1  christos     f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7);
   4437   1.1  christos     f_disp9_hi = EXTRACT_LSB0_SINT (insn, 16, 0, 1);
   4438   1.1  christos {
   4439   1.1  christos   SI tmp_abslo;
   4440   1.1  christos   SI tmp_absval;
   4441   1.1  christos   tmp_abslo = ((f_disp9_lo) << (1));
   4442   1.1  christos   tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));
   4443   1.1  christos   f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_V32 ()) ? (0) : (2))));
   4444   1.1  christos }
   4445   1.1  christos 
   4446   1.1  christos   /* Record the fields for the semantic handler.  */
   4447   1.1  christos   FLD (f_operand2) = f_operand2;
   4448   1.1  christos   FLD (i_o_pcrel) = f_disp9;
   4449   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcc_b", "f_operand2 0x%x", 'x', f_operand2, "o_pcrel 0x%x", 'x', f_disp9, (char *) 0));
   4450   1.1  christos 
   4451   1.1  christos #if WITH_PROFILE_MODEL_P
   4452   1.1  christos   /* Record the fields for profiling.  */
   4453   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4454   1.1  christos     {
   4455   1.1  christos     }
   4456   1.1  christos #endif
   4457   1.1  christos #undef FLD
   4458   1.1  christos     return idesc;
   4459   1.1  christos   }
   4460   1.1  christos 
   4461   1.1  christos  extract_sfmt_ba_b:
   4462   1.1  christos   {
   4463   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4464  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4465   1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
   4466   1.1  christos     UINT f_disp9_lo;
   4467   1.1  christos     INT f_disp9_hi;
   4468   1.1  christos     INT f_disp9;
   4469   1.1  christos 
   4470   1.1  christos     f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7);
   4471   1.1  christos     f_disp9_hi = EXTRACT_LSB0_SINT (insn, 16, 0, 1);
   4472   1.1  christos {
   4473   1.1  christos   SI tmp_abslo;
   4474   1.1  christos   SI tmp_absval;
   4475   1.1  christos   tmp_abslo = ((f_disp9_lo) << (1));
   4476   1.1  christos   tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));
   4477   1.1  christos   f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_V32 ()) ? (0) : (2))));
   4478   1.1  christos }
   4479   1.1  christos 
   4480   1.1  christos   /* Record the fields for the semantic handler.  */
   4481   1.1  christos   FLD (i_o_pcrel) = f_disp9;
   4482   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ba_b", "o_pcrel 0x%x", 'x', f_disp9, (char *) 0));
   4483   1.1  christos 
   4484   1.1  christos #if WITH_PROFILE_MODEL_P
   4485   1.1  christos   /* Record the fields for profiling.  */
   4486   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4487   1.1  christos     {
   4488   1.1  christos     }
   4489   1.1  christos #endif
   4490   1.1  christos #undef FLD
   4491   1.1  christos     return idesc;
   4492   1.1  christos   }
   4493   1.1  christos 
   4494   1.1  christos  extract_sfmt_bcc_w:
   4495   1.1  christos   {
   4496   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4497  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4498   1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
   4499   1.1  christos     SI f_indir_pc__word_pcrel;
   4500   1.1  christos     UINT f_operand2;
   4501   1.1  christos     /* Contents of trailing part of insn.  */
   4502   1.1  christos     UINT word_1;
   4503   1.1  christos 
   4504   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4505   1.1  christos     f_indir_pc__word_pcrel = ((EXTHISI (((HI) (UINT) ((0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)))))) + (((pc) + (((GET_H_V32_V32 ()) ? (0) : (4))))));
   4506   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4507   1.1  christos 
   4508   1.1  christos   /* Record the fields for the semantic handler.  */
   4509   1.1  christos   FLD (f_operand2) = f_operand2;
   4510   1.1  christos   FLD (i_o_word_pcrel) = f_indir_pc__word_pcrel;
   4511   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcc_w", "f_operand2 0x%x", 'x', f_operand2, "o_word_pcrel 0x%x", 'x', f_indir_pc__word_pcrel, (char *) 0));
   4512   1.1  christos 
   4513   1.1  christos #if WITH_PROFILE_MODEL_P
   4514   1.1  christos   /* Record the fields for profiling.  */
   4515   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4516   1.1  christos     {
   4517   1.1  christos     }
   4518   1.1  christos #endif
   4519   1.1  christos #undef FLD
   4520   1.1  christos     return idesc;
   4521   1.1  christos   }
   4522   1.1  christos 
   4523   1.1  christos  extract_sfmt_ba_w:
   4524   1.1  christos   {
   4525   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4526  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4527   1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
   4528   1.1  christos     SI f_indir_pc__word_pcrel;
   4529   1.1  christos     /* Contents of trailing part of insn.  */
   4530   1.1  christos     UINT word_1;
   4531   1.1  christos 
   4532   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4533   1.1  christos     f_indir_pc__word_pcrel = ((EXTHISI (((HI) (UINT) ((0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)))))) + (((pc) + (((GET_H_V32_V32 ()) ? (0) : (4))))));
   4534   1.1  christos 
   4535   1.1  christos   /* Record the fields for the semantic handler.  */
   4536   1.1  christos   FLD (i_o_word_pcrel) = f_indir_pc__word_pcrel;
   4537   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ba_w", "o_word_pcrel 0x%x", 'x', f_indir_pc__word_pcrel, (char *) 0));
   4538   1.1  christos 
   4539   1.1  christos #if WITH_PROFILE_MODEL_P
   4540   1.1  christos   /* Record the fields for profiling.  */
   4541   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4542   1.1  christos     {
   4543   1.1  christos     }
   4544   1.1  christos #endif
   4545   1.1  christos #undef FLD
   4546   1.1  christos     return idesc;
   4547   1.1  christos   }
   4548   1.1  christos 
   4549   1.1  christos  extract_sfmt_jas_r:
   4550   1.1  christos   {
   4551   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4552  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4553   1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   4554   1.1  christos     UINT f_operand2;
   4555   1.1  christos     UINT f_operand1;
   4556   1.1  christos 
   4557   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4558   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4559   1.1  christos 
   4560   1.1  christos   /* Record the fields for the semantic handler.  */
   4561   1.1  christos   FLD (f_operand1) = f_operand1;
   4562   1.1  christos   FLD (f_operand2) = f_operand2;
   4563   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jas_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   4564   1.1  christos 
   4565   1.1  christos #if WITH_PROFILE_MODEL_P
   4566   1.1  christos   /* Record the fields for profiling.  */
   4567   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4568   1.1  christos     {
   4569   1.1  christos       FLD (in_Rs) = f_operand1;
   4570   1.1  christos       FLD (out_Pd) = f_operand2;
   4571   1.1  christos     }
   4572   1.1  christos #endif
   4573   1.1  christos #undef FLD
   4574   1.1  christos     return idesc;
   4575   1.1  christos   }
   4576   1.1  christos 
   4577   1.1  christos  extract_sfmt_jas_c:
   4578   1.1  christos   {
   4579   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4580  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4581   1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   4582   1.1  christos     INT f_indir_pc__dword;
   4583   1.1  christos     UINT f_operand2;
   4584   1.1  christos     /* Contents of trailing part of insn.  */
   4585   1.1  christos     UINT word_1;
   4586   1.1  christos 
   4587   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4588   1.1  christos     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
   4589   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4590   1.1  christos 
   4591   1.1  christos   /* Record the fields for the semantic handler.  */
   4592   1.1  christos   FLD (f_indir_pc__dword) = f_indir_pc__dword;
   4593   1.1  christos   FLD (f_operand2) = f_operand2;
   4594   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jas_c", "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   4595   1.1  christos 
   4596   1.1  christos #if WITH_PROFILE_MODEL_P
   4597   1.1  christos   /* Record the fields for profiling.  */
   4598   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4599   1.1  christos     {
   4600   1.1  christos       FLD (out_Pd) = f_operand2;
   4601   1.1  christos     }
   4602   1.1  christos #endif
   4603   1.1  christos #undef FLD
   4604   1.1  christos     return idesc;
   4605   1.1  christos   }
   4606   1.1  christos 
   4607   1.1  christos  extract_sfmt_jump_p:
   4608   1.1  christos   {
   4609   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4610  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4611   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   4612   1.1  christos     UINT f_operand2;
   4613   1.1  christos 
   4614   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4615   1.1  christos 
   4616   1.1  christos   /* Record the fields for the semantic handler.  */
   4617   1.1  christos   FLD (f_operand2) = f_operand2;
   4618   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jump_p", "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   4619   1.1  christos 
   4620   1.1  christos #if WITH_PROFILE_MODEL_P
   4621   1.1  christos   /* Record the fields for profiling.  */
   4622   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4623   1.1  christos     {
   4624   1.1  christos       FLD (in_Ps) = f_operand2;
   4625   1.1  christos     }
   4626   1.1  christos #endif
   4627   1.1  christos #undef FLD
   4628   1.1  christos     return idesc;
   4629   1.1  christos   }
   4630   1.1  christos 
   4631   1.1  christos  extract_sfmt_bas_c:
   4632   1.1  christos   {
   4633   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4634  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4635   1.1  christos #define FLD(f) abuf->fields.sfmt_bas_c.f
   4636   1.1  christos     SI f_indir_pc__dword_pcrel;
   4637   1.1  christos     UINT f_operand2;
   4638   1.1  christos     /* Contents of trailing part of insn.  */
   4639   1.1  christos     UINT word_1;
   4640   1.1  christos 
   4641   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4642   1.1  christos     f_indir_pc__dword_pcrel = ((pc) + ((0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0))));
   4643   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4644   1.1  christos 
   4645   1.1  christos   /* Record the fields for the semantic handler.  */
   4646   1.1  christos   FLD (f_operand2) = f_operand2;
   4647   1.1  christos   FLD (i_const32_pcrel) = f_indir_pc__dword_pcrel;
   4648   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bas_c", "f_operand2 0x%x", 'x', f_operand2, "const32_pcrel 0x%x", 'x', f_indir_pc__dword_pcrel, (char *) 0));
   4649   1.1  christos 
   4650   1.1  christos #if WITH_PROFILE_MODEL_P
   4651   1.1  christos   /* Record the fields for profiling.  */
   4652   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4653   1.1  christos     {
   4654   1.1  christos       FLD (out_Pd) = f_operand2;
   4655   1.1  christos     }
   4656   1.1  christos #endif
   4657   1.1  christos #undef FLD
   4658   1.1  christos     return idesc;
   4659   1.1  christos   }
   4660   1.1  christos 
   4661   1.1  christos  extract_sfmt_jasc_r:
   4662   1.1  christos   {
   4663   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4664  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4665   1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   4666   1.1  christos     UINT f_operand2;
   4667   1.1  christos     UINT f_operand1;
   4668   1.1  christos 
   4669   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4670   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4671   1.1  christos 
   4672   1.1  christos   /* Record the fields for the semantic handler.  */
   4673   1.1  christos   FLD (f_operand1) = f_operand1;
   4674   1.1  christos   FLD (f_operand2) = f_operand2;
   4675   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jasc_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
   4676   1.1  christos 
   4677   1.1  christos #if WITH_PROFILE_MODEL_P
   4678   1.1  christos   /* Record the fields for profiling.  */
   4679   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4680   1.1  christos     {
   4681   1.1  christos       FLD (in_Rs) = f_operand1;
   4682   1.1  christos       FLD (out_Pd) = f_operand2;
   4683   1.1  christos     }
   4684   1.1  christos #endif
   4685   1.1  christos #undef FLD
   4686   1.1  christos     return idesc;
   4687   1.1  christos   }
   4688   1.1  christos 
   4689   1.1  christos  extract_sfmt_break:
   4690   1.1  christos   {
   4691   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4692  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4693   1.1  christos #define FLD(f) abuf->fields.sfmt_break.f
   4694   1.1  christos     UINT f_u4;
   4695   1.1  christos 
   4696   1.1  christos     f_u4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4697   1.1  christos 
   4698   1.1  christos   /* Record the fields for the semantic handler.  */
   4699   1.1  christos   FLD (f_u4) = f_u4;
   4700   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_break", "f_u4 0x%x", 'x', f_u4, (char *) 0));
   4701   1.1  christos 
   4702   1.1  christos #if WITH_PROFILE_MODEL_P
   4703   1.1  christos   /* Record the fields for profiling.  */
   4704   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4705   1.1  christos     {
   4706   1.1  christos     }
   4707   1.1  christos #endif
   4708   1.1  christos #undef FLD
   4709   1.1  christos     return idesc;
   4710   1.1  christos   }
   4711   1.1  christos 
   4712   1.1  christos  extract_sfmt_bound_cb:
   4713   1.1  christos   {
   4714   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4715  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4716   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   4717   1.1  christos     INT f_indir_pc__byte;
   4718   1.1  christos     UINT f_operand2;
   4719   1.1  christos     /* Contents of trailing part of insn.  */
   4720   1.1  christos     UINT word_1;
   4721   1.1  christos 
   4722   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4723   1.1  christos     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   4724   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4725   1.1  christos 
   4726   1.1  christos   /* Record the fields for the semantic handler.  */
   4727   1.1  christos   FLD (f_operand2) = f_operand2;
   4728   1.1  christos   FLD (f_indir_pc__byte) = f_indir_pc__byte;
   4729   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bound_cb", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
   4730   1.1  christos 
   4731   1.1  christos #if WITH_PROFILE_MODEL_P
   4732   1.1  christos   /* Record the fields for profiling.  */
   4733   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4734   1.1  christos     {
   4735   1.1  christos       FLD (in_Rd) = f_operand2;
   4736   1.1  christos       FLD (out_Rd) = f_operand2;
   4737   1.1  christos     }
   4738   1.1  christos #endif
   4739   1.1  christos #undef FLD
   4740   1.1  christos     return idesc;
   4741   1.1  christos   }
   4742   1.1  christos 
   4743   1.1  christos  extract_sfmt_bound_cw:
   4744   1.1  christos   {
   4745   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4746  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4747   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   4748   1.1  christos     INT f_indir_pc__word;
   4749   1.1  christos     UINT f_operand2;
   4750   1.1  christos     /* Contents of trailing part of insn.  */
   4751   1.1  christos     UINT word_1;
   4752   1.1  christos 
   4753   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4754   1.1  christos     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   4755   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4756   1.1  christos 
   4757   1.1  christos   /* Record the fields for the semantic handler.  */
   4758   1.1  christos   FLD (f_operand2) = f_operand2;
   4759   1.1  christos   FLD (f_indir_pc__word) = f_indir_pc__word;
   4760   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bound_cw", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
   4761   1.1  christos 
   4762   1.1  christos #if WITH_PROFILE_MODEL_P
   4763   1.1  christos   /* Record the fields for profiling.  */
   4764   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4765   1.1  christos     {
   4766   1.1  christos       FLD (in_Rd) = f_operand2;
   4767   1.1  christos       FLD (out_Rd) = f_operand2;
   4768   1.1  christos     }
   4769   1.1  christos #endif
   4770   1.1  christos #undef FLD
   4771   1.1  christos     return idesc;
   4772   1.1  christos   }
   4773   1.1  christos 
   4774   1.1  christos  extract_sfmt_bound_cd:
   4775   1.1  christos   {
   4776   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4777  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4778   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   4779   1.1  christos     INT f_indir_pc__dword;
   4780   1.1  christos     UINT f_operand2;
   4781   1.1  christos     /* Contents of trailing part of insn.  */
   4782   1.1  christos     UINT word_1;
   4783   1.1  christos 
   4784   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4785   1.1  christos     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
   4786   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4787   1.1  christos 
   4788   1.1  christos   /* Record the fields for the semantic handler.  */
   4789   1.1  christos   FLD (f_operand2) = f_operand2;
   4790   1.1  christos   FLD (f_indir_pc__dword) = f_indir_pc__dword;
   4791   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bound_cd", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
   4792   1.1  christos 
   4793   1.1  christos #if WITH_PROFILE_MODEL_P
   4794   1.1  christos   /* Record the fields for profiling.  */
   4795   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4796   1.1  christos     {
   4797   1.1  christos       FLD (in_Rd) = f_operand2;
   4798   1.1  christos       FLD (out_Rd) = f_operand2;
   4799   1.1  christos     }
   4800   1.1  christos #endif
   4801   1.1  christos #undef FLD
   4802   1.1  christos     return idesc;
   4803   1.1  christos   }
   4804   1.1  christos 
   4805   1.1  christos  extract_sfmt_scc:
   4806   1.1  christos   {
   4807   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4808  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4809   1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   4810   1.1  christos     UINT f_operand2;
   4811   1.1  christos     UINT f_operand1;
   4812   1.1  christos 
   4813   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4814   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4815   1.1  christos 
   4816   1.1  christos   /* Record the fields for the semantic handler.  */
   4817   1.1  christos   FLD (f_operand2) = f_operand2;
   4818   1.1  christos   FLD (f_operand1) = f_operand1;
   4819   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_scc", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   4820   1.1  christos 
   4821   1.1  christos #if WITH_PROFILE_MODEL_P
   4822   1.1  christos   /* Record the fields for profiling.  */
   4823   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4824   1.1  christos     {
   4825   1.1  christos       FLD (out_Rs) = f_operand1;
   4826   1.1  christos     }
   4827   1.1  christos #endif
   4828   1.1  christos #undef FLD
   4829   1.1  christos     return idesc;
   4830   1.1  christos   }
   4831   1.1  christos 
   4832   1.1  christos  extract_sfmt_addoq:
   4833   1.1  christos   {
   4834   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4835  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4836   1.1  christos #define FLD(f) abuf->fields.sfmt_addoq.f
   4837   1.1  christos     UINT f_operand2;
   4838   1.1  christos     INT f_s8;
   4839   1.1  christos 
   4840   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4841   1.1  christos     f_s8 = EXTRACT_LSB0_SINT (insn, 16, 7, 8);
   4842   1.1  christos 
   4843   1.1  christos   /* Record the fields for the semantic handler.  */
   4844   1.1  christos   FLD (f_operand2) = f_operand2;
   4845   1.1  christos   FLD (f_s8) = f_s8;
   4846   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addoq", "f_operand2 0x%x", 'x', f_operand2, "f_s8 0x%x", 'x', f_s8, (char *) 0));
   4847   1.1  christos 
   4848   1.1  christos #if WITH_PROFILE_MODEL_P
   4849   1.1  christos   /* Record the fields for profiling.  */
   4850   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4851   1.1  christos     {
   4852   1.1  christos       FLD (in_Rd) = f_operand2;
   4853   1.1  christos     }
   4854   1.1  christos #endif
   4855   1.1  christos #undef FLD
   4856   1.1  christos     return idesc;
   4857   1.1  christos   }
   4858   1.1  christos 
   4859   1.1  christos  extract_sfmt_addo_m_b_m:
   4860   1.1  christos   {
   4861   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4862  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4863   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   4864   1.1  christos     UINT f_operand2;
   4865   1.1  christos     UINT f_memmode;
   4866   1.1  christos     UINT f_operand1;
   4867   1.1  christos 
   4868   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4869   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   4870   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4871   1.1  christos 
   4872   1.1  christos   /* Record the fields for the semantic handler.  */
   4873   1.1  christos   FLD (f_operand2) = f_operand2;
   4874   1.1  christos   FLD (f_operand1) = f_operand1;
   4875   1.1  christos   FLD (f_memmode) = f_memmode;
   4876   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   4877   1.1  christos 
   4878   1.1  christos #if WITH_PROFILE_MODEL_P
   4879   1.1  christos   /* Record the fields for profiling.  */
   4880   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4881   1.1  christos     {
   4882   1.1  christos       FLD (in_Rd) = f_operand2;
   4883   1.1  christos       FLD (in_Rs) = f_operand1;
   4884   1.1  christos       FLD (out_Rs) = f_operand1;
   4885   1.1  christos     }
   4886   1.1  christos #endif
   4887   1.1  christos #undef FLD
   4888   1.1  christos     return idesc;
   4889   1.1  christos   }
   4890   1.1  christos 
   4891   1.1  christos  extract_sfmt_addo_m_w_m:
   4892   1.1  christos   {
   4893   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4894  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4895   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   4896   1.1  christos     UINT f_operand2;
   4897   1.1  christos     UINT f_memmode;
   4898   1.1  christos     UINT f_operand1;
   4899   1.1  christos 
   4900   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4901   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   4902   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4903   1.1  christos 
   4904   1.1  christos   /* Record the fields for the semantic handler.  */
   4905   1.1  christos   FLD (f_operand2) = f_operand2;
   4906   1.1  christos   FLD (f_operand1) = f_operand1;
   4907   1.1  christos   FLD (f_memmode) = f_memmode;
   4908   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   4909   1.1  christos 
   4910   1.1  christos #if WITH_PROFILE_MODEL_P
   4911   1.1  christos   /* Record the fields for profiling.  */
   4912   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4913   1.1  christos     {
   4914   1.1  christos       FLD (in_Rd) = f_operand2;
   4915   1.1  christos       FLD (in_Rs) = f_operand1;
   4916   1.1  christos       FLD (out_Rs) = f_operand1;
   4917   1.1  christos     }
   4918   1.1  christos #endif
   4919   1.1  christos #undef FLD
   4920   1.1  christos     return idesc;
   4921   1.1  christos   }
   4922   1.1  christos 
   4923   1.1  christos  extract_sfmt_addo_m_d_m:
   4924   1.1  christos   {
   4925   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4926  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4927   1.1  christos #define FLD(f) abuf->fields.sfmt_addc_m.f
   4928   1.1  christos     UINT f_operand2;
   4929   1.1  christos     UINT f_memmode;
   4930   1.1  christos     UINT f_operand1;
   4931   1.1  christos 
   4932   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4933   1.1  christos     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
   4934   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   4935   1.1  christos 
   4936   1.1  christos   /* Record the fields for the semantic handler.  */
   4937   1.1  christos   FLD (f_operand2) = f_operand2;
   4938   1.1  christos   FLD (f_operand1) = f_operand1;
   4939   1.1  christos   FLD (f_memmode) = f_memmode;
   4940   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_m_d_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
   4941   1.1  christos 
   4942   1.1  christos #if WITH_PROFILE_MODEL_P
   4943   1.1  christos   /* Record the fields for profiling.  */
   4944   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4945   1.1  christos     {
   4946   1.1  christos       FLD (in_Rd) = f_operand2;
   4947   1.1  christos       FLD (in_Rs) = f_operand1;
   4948   1.1  christos       FLD (out_Rs) = f_operand1;
   4949   1.1  christos     }
   4950   1.1  christos #endif
   4951   1.1  christos #undef FLD
   4952   1.1  christos     return idesc;
   4953   1.1  christos   }
   4954   1.1  christos 
   4955   1.1  christos  extract_sfmt_addo_cb:
   4956   1.1  christos   {
   4957   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4958  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4959   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   4960   1.1  christos     INT f_indir_pc__byte;
   4961   1.1  christos     UINT f_operand2;
   4962   1.1  christos     /* Contents of trailing part of insn.  */
   4963   1.1  christos     UINT word_1;
   4964   1.1  christos 
   4965   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4966   1.1  christos     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   4967   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4968   1.1  christos 
   4969   1.1  christos   /* Record the fields for the semantic handler.  */
   4970   1.1  christos   FLD (f_operand2) = f_operand2;
   4971   1.1  christos   FLD (f_indir_pc__byte) = f_indir_pc__byte;
   4972   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_cb", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
   4973   1.1  christos 
   4974   1.1  christos #if WITH_PROFILE_MODEL_P
   4975   1.1  christos   /* Record the fields for profiling.  */
   4976   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   4977   1.1  christos     {
   4978   1.1  christos       FLD (in_Rd) = f_operand2;
   4979   1.1  christos     }
   4980   1.1  christos #endif
   4981   1.1  christos #undef FLD
   4982   1.1  christos     return idesc;
   4983   1.1  christos   }
   4984   1.1  christos 
   4985   1.1  christos  extract_sfmt_addo_cw:
   4986   1.1  christos   {
   4987   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   4988  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   4989   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   4990   1.1  christos     INT f_indir_pc__word;
   4991   1.1  christos     UINT f_operand2;
   4992   1.1  christos     /* Contents of trailing part of insn.  */
   4993   1.1  christos     UINT word_1;
   4994   1.1  christos 
   4995   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   4996   1.1  christos     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
   4997   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   4998   1.1  christos 
   4999   1.1  christos   /* Record the fields for the semantic handler.  */
   5000   1.1  christos   FLD (f_operand2) = f_operand2;
   5001   1.1  christos   FLD (f_indir_pc__word) = f_indir_pc__word;
   5002   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_cw", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
   5003   1.1  christos 
   5004   1.1  christos #if WITH_PROFILE_MODEL_P
   5005   1.1  christos   /* Record the fields for profiling.  */
   5006   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   5007   1.1  christos     {
   5008   1.1  christos       FLD (in_Rd) = f_operand2;
   5009   1.1  christos     }
   5010   1.1  christos #endif
   5011   1.1  christos #undef FLD
   5012   1.1  christos     return idesc;
   5013   1.1  christos   }
   5014   1.1  christos 
   5015   1.1  christos  extract_sfmt_addo_cd:
   5016   1.1  christos   {
   5017   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   5018  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   5019   1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   5020   1.1  christos     INT f_indir_pc__dword;
   5021   1.1  christos     UINT f_operand2;
   5022   1.1  christos     /* Contents of trailing part of insn.  */
   5023   1.1  christos     UINT word_1;
   5024   1.1  christos 
   5025   1.1  christos   word_1 = GETIMEMUSI (current_cpu, pc + 2);
   5026   1.1  christos     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
   5027   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   5028   1.1  christos 
   5029   1.1  christos   /* Record the fields for the semantic handler.  */
   5030   1.1  christos   FLD (f_operand2) = f_operand2;
   5031   1.1  christos   FLD (f_indir_pc__dword) = f_indir_pc__dword;
   5032   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_cd", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
   5033   1.1  christos 
   5034   1.1  christos #if WITH_PROFILE_MODEL_P
   5035   1.1  christos   /* Record the fields for profiling.  */
   5036   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   5037   1.1  christos     {
   5038   1.1  christos       FLD (in_Rd) = f_operand2;
   5039   1.1  christos     }
   5040   1.1  christos #endif
   5041   1.1  christos #undef FLD
   5042   1.1  christos     return idesc;
   5043   1.1  christos   }
   5044   1.1  christos 
   5045   1.1  christos  extract_sfmt_addi_acr_b_r:
   5046   1.1  christos   {
   5047   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   5048  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   5049   1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   5050   1.1  christos     UINT f_operand2;
   5051   1.1  christos     UINT f_operand1;
   5052   1.1  christos 
   5053   1.1  christos     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
   5054   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   5055   1.1  christos 
   5056   1.1  christos   /* Record the fields for the semantic handler.  */
   5057   1.1  christos   FLD (f_operand2) = f_operand2;
   5058   1.1  christos   FLD (f_operand1) = f_operand1;
   5059   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi_acr_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   5060   1.1  christos 
   5061   1.1  christos #if WITH_PROFILE_MODEL_P
   5062   1.1  christos   /* Record the fields for profiling.  */
   5063   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   5064   1.1  christos     {
   5065   1.1  christos       FLD (in_Rd) = f_operand2;
   5066   1.1  christos       FLD (in_Rs) = f_operand1;
   5067   1.1  christos     }
   5068   1.1  christos #endif
   5069   1.1  christos #undef FLD
   5070   1.1  christos     return idesc;
   5071   1.1  christos   }
   5072   1.1  christos 
   5073   1.1  christos  extract_sfmt_fidxi:
   5074   1.1  christos   {
   5075   1.1  christos     const IDESC *idesc = &crisv32f_insn_data[itype];
   5076  1.11  christos     CGEN_INSN_WORD insn ATTRIBUTE_UNUSED = base_insn;
   5077   1.1  christos #define FLD(f) abuf->fields.sfmt_mcp.f
   5078   1.1  christos     UINT f_operand1;
   5079   1.1  christos 
   5080   1.1  christos     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
   5081   1.1  christos 
   5082   1.1  christos   /* Record the fields for the semantic handler.  */
   5083   1.1  christos   FLD (f_operand1) = f_operand1;
   5084   1.5  christos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fidxi", "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
   5085   1.1  christos 
   5086   1.1  christos #if WITH_PROFILE_MODEL_P
   5087   1.1  christos   /* Record the fields for profiling.  */
   5088   1.1  christos   if (PROFILE_MODEL_P (current_cpu))
   5089   1.1  christos     {
   5090   1.1  christos       FLD (in_Rs) = f_operand1;
   5091   1.1  christos     }
   5092   1.1  christos #endif
   5093   1.1  christos #undef FLD
   5094   1.1  christos     return idesc;
   5095   1.1  christos   }
   5096   1.1  christos 
   5097   1.1  christos }
   5098