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