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