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