1 1.1 christos /* Simulator instruction decoder for or1k32bf. 2 1.1 christos 3 1.1 christos THIS FILE IS MACHINE GENERATED WITH CGEN. 4 1.1 christos 5 1.1.1.4 christos Copyright (C) 1996-2024 Free Software Foundation, Inc. 6 1.1 christos 7 1.1 christos This file is part of the GNU simulators. 8 1.1 christos 9 1.1 christos This file is free software; you can redistribute it and/or modify 10 1.1 christos it under the terms of the GNU General Public License as published by 11 1.1 christos the Free Software Foundation; either version 3, or (at your option) 12 1.1 christos any later version. 13 1.1 christos 14 1.1 christos It is distributed in the hope that it will be useful, but WITHOUT 15 1.1 christos ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16 1.1 christos or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 17 1.1 christos License for more details. 18 1.1 christos 19 1.1 christos You should have received a copy of the GNU General Public License along 20 1.1 christos with this program; if not, write to the Free Software Foundation, Inc., 21 1.1 christos 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 22 1.1 christos 23 1.1 christos */ 24 1.1 christos 25 1.1 christos #define WANT_CPU or1k32bf 26 1.1 christos #define WANT_CPU_OR1K32BF 27 1.1 christos 28 1.1 christos #include "sim-main.h" 29 1.1 christos #include "sim-assert.h" 30 1.1.1.4 christos #include "cgen-mem.h" 31 1.1.1.4 christos #include "cgen-ops.h" 32 1.1 christos 33 1.1 christos /* The instruction descriptor array. 34 1.1 christos This is computed at runtime. Space for it is not malloc'd to save a 35 1.1 christos teensy bit of cpu in the decoder. Moving it to malloc space is trivial 36 1.1 christos but won't be done until necessary (we don't currently support the runtime 37 1.1 christos addition of instructions nor an SMP machine with different cpus). */ 38 1.1 christos static IDESC or1k32bf_insn_data[OR1K32BF_INSN__MAX]; 39 1.1 christos 40 1.1 christos /* Commas between elements are contained in the macros. 41 1.1 christos Some of these are conditionally compiled out. */ 42 1.1 christos 43 1.1 christos static const struct insn_sem or1k32bf_insn_sem[] = 44 1.1 christos { 45 1.1 christos { VIRTUAL_INSN_X_INVALID, OR1K32BF_INSN_X_INVALID, OR1K32BF_SFMT_EMPTY }, 46 1.1 christos { VIRTUAL_INSN_X_AFTER, OR1K32BF_INSN_X_AFTER, OR1K32BF_SFMT_EMPTY }, 47 1.1 christos { VIRTUAL_INSN_X_BEFORE, OR1K32BF_INSN_X_BEFORE, OR1K32BF_SFMT_EMPTY }, 48 1.1 christos { VIRTUAL_INSN_X_CTI_CHAIN, OR1K32BF_INSN_X_CTI_CHAIN, OR1K32BF_SFMT_EMPTY }, 49 1.1 christos { VIRTUAL_INSN_X_CHAIN, OR1K32BF_INSN_X_CHAIN, OR1K32BF_SFMT_EMPTY }, 50 1.1 christos { VIRTUAL_INSN_X_BEGIN, OR1K32BF_INSN_X_BEGIN, OR1K32BF_SFMT_EMPTY }, 51 1.1 christos { OR1K_INSN_L_J, OR1K32BF_INSN_L_J, OR1K32BF_SFMT_L_J }, 52 1.1 christos { OR1K_INSN_L_ADRP, OR1K32BF_INSN_L_ADRP, OR1K32BF_SFMT_L_ADRP }, 53 1.1 christos { OR1K_INSN_L_JAL, OR1K32BF_INSN_L_JAL, OR1K32BF_SFMT_L_JAL }, 54 1.1 christos { OR1K_INSN_L_JR, OR1K32BF_INSN_L_JR, OR1K32BF_SFMT_L_JR }, 55 1.1 christos { OR1K_INSN_L_JALR, OR1K32BF_INSN_L_JALR, OR1K32BF_SFMT_L_JALR }, 56 1.1 christos { OR1K_INSN_L_BNF, OR1K32BF_INSN_L_BNF, OR1K32BF_SFMT_L_BNF }, 57 1.1 christos { OR1K_INSN_L_BF, OR1K32BF_INSN_L_BF, OR1K32BF_SFMT_L_BNF }, 58 1.1 christos { OR1K_INSN_L_TRAP, OR1K32BF_INSN_L_TRAP, OR1K32BF_SFMT_L_TRAP }, 59 1.1 christos { OR1K_INSN_L_SYS, OR1K32BF_INSN_L_SYS, OR1K32BF_SFMT_L_TRAP }, 60 1.1 christos { OR1K_INSN_L_MSYNC, OR1K32BF_INSN_L_MSYNC, OR1K32BF_SFMT_L_MSYNC }, 61 1.1 christos { OR1K_INSN_L_PSYNC, OR1K32BF_INSN_L_PSYNC, OR1K32BF_SFMT_L_MSYNC }, 62 1.1 christos { OR1K_INSN_L_CSYNC, OR1K32BF_INSN_L_CSYNC, OR1K32BF_SFMT_L_MSYNC }, 63 1.1 christos { OR1K_INSN_L_RFE, OR1K32BF_INSN_L_RFE, OR1K32BF_SFMT_L_MSYNC }, 64 1.1 christos { OR1K_INSN_L_NOP_IMM, OR1K32BF_INSN_L_NOP_IMM, OR1K32BF_SFMT_L_NOP_IMM }, 65 1.1 christos { OR1K_INSN_L_MOVHI, OR1K32BF_INSN_L_MOVHI, OR1K32BF_SFMT_L_MOVHI }, 66 1.1 christos { OR1K_INSN_L_MACRC, OR1K32BF_INSN_L_MACRC, OR1K32BF_SFMT_L_MACRC }, 67 1.1 christos { OR1K_INSN_L_MFSPR, OR1K32BF_INSN_L_MFSPR, OR1K32BF_SFMT_L_MFSPR }, 68 1.1 christos { OR1K_INSN_L_MTSPR, OR1K32BF_INSN_L_MTSPR, OR1K32BF_SFMT_L_MTSPR }, 69 1.1 christos { OR1K_INSN_L_LWZ, OR1K32BF_INSN_L_LWZ, OR1K32BF_SFMT_L_LWZ }, 70 1.1 christos { OR1K_INSN_L_LWS, OR1K32BF_INSN_L_LWS, OR1K32BF_SFMT_L_LWS }, 71 1.1 christos { OR1K_INSN_L_LWA, OR1K32BF_INSN_L_LWA, OR1K32BF_SFMT_L_LWA }, 72 1.1 christos { OR1K_INSN_L_LBZ, OR1K32BF_INSN_L_LBZ, OR1K32BF_SFMT_L_LBZ }, 73 1.1 christos { OR1K_INSN_L_LBS, OR1K32BF_INSN_L_LBS, OR1K32BF_SFMT_L_LBS }, 74 1.1 christos { OR1K_INSN_L_LHZ, OR1K32BF_INSN_L_LHZ, OR1K32BF_SFMT_L_LHZ }, 75 1.1 christos { OR1K_INSN_L_LHS, OR1K32BF_INSN_L_LHS, OR1K32BF_SFMT_L_LHS }, 76 1.1 christos { OR1K_INSN_L_SW, OR1K32BF_INSN_L_SW, OR1K32BF_SFMT_L_SW }, 77 1.1 christos { OR1K_INSN_L_SB, OR1K32BF_INSN_L_SB, OR1K32BF_SFMT_L_SB }, 78 1.1 christos { OR1K_INSN_L_SH, OR1K32BF_INSN_L_SH, OR1K32BF_SFMT_L_SH }, 79 1.1 christos { OR1K_INSN_L_SWA, OR1K32BF_INSN_L_SWA, OR1K32BF_SFMT_L_SWA }, 80 1.1 christos { OR1K_INSN_L_SLL, OR1K32BF_INSN_L_SLL, OR1K32BF_SFMT_L_SLL }, 81 1.1 christos { OR1K_INSN_L_SLLI, OR1K32BF_INSN_L_SLLI, OR1K32BF_SFMT_L_SLLI }, 82 1.1 christos { OR1K_INSN_L_SRL, OR1K32BF_INSN_L_SRL, OR1K32BF_SFMT_L_SLL }, 83 1.1 christos { OR1K_INSN_L_SRLI, OR1K32BF_INSN_L_SRLI, OR1K32BF_SFMT_L_SLLI }, 84 1.1 christos { OR1K_INSN_L_SRA, OR1K32BF_INSN_L_SRA, OR1K32BF_SFMT_L_SLL }, 85 1.1 christos { OR1K_INSN_L_SRAI, OR1K32BF_INSN_L_SRAI, OR1K32BF_SFMT_L_SLLI }, 86 1.1 christos { OR1K_INSN_L_ROR, OR1K32BF_INSN_L_ROR, OR1K32BF_SFMT_L_SLL }, 87 1.1 christos { OR1K_INSN_L_RORI, OR1K32BF_INSN_L_RORI, OR1K32BF_SFMT_L_SLLI }, 88 1.1 christos { OR1K_INSN_L_AND, OR1K32BF_INSN_L_AND, OR1K32BF_SFMT_L_AND }, 89 1.1 christos { OR1K_INSN_L_OR, OR1K32BF_INSN_L_OR, OR1K32BF_SFMT_L_AND }, 90 1.1 christos { OR1K_INSN_L_XOR, OR1K32BF_INSN_L_XOR, OR1K32BF_SFMT_L_AND }, 91 1.1 christos { OR1K_INSN_L_ADD, OR1K32BF_INSN_L_ADD, OR1K32BF_SFMT_L_ADD }, 92 1.1 christos { OR1K_INSN_L_SUB, OR1K32BF_INSN_L_SUB, OR1K32BF_SFMT_L_ADD }, 93 1.1 christos { OR1K_INSN_L_ADDC, OR1K32BF_INSN_L_ADDC, OR1K32BF_SFMT_L_ADDC }, 94 1.1 christos { OR1K_INSN_L_MUL, OR1K32BF_INSN_L_MUL, OR1K32BF_SFMT_L_MUL }, 95 1.1 christos { OR1K_INSN_L_MULD, OR1K32BF_INSN_L_MULD, OR1K32BF_SFMT_L_MULD }, 96 1.1 christos { OR1K_INSN_L_MULU, OR1K32BF_INSN_L_MULU, OR1K32BF_SFMT_L_MULU }, 97 1.1 christos { OR1K_INSN_L_MULDU, OR1K32BF_INSN_L_MULDU, OR1K32BF_SFMT_L_MULD }, 98 1.1 christos { OR1K_INSN_L_DIV, OR1K32BF_INSN_L_DIV, OR1K32BF_SFMT_L_DIV }, 99 1.1 christos { OR1K_INSN_L_DIVU, OR1K32BF_INSN_L_DIVU, OR1K32BF_SFMT_L_DIVU }, 100 1.1 christos { OR1K_INSN_L_FF1, OR1K32BF_INSN_L_FF1, OR1K32BF_SFMT_L_FF1 }, 101 1.1 christos { OR1K_INSN_L_FL1, OR1K32BF_INSN_L_FL1, OR1K32BF_SFMT_L_FF1 }, 102 1.1 christos { OR1K_INSN_L_ANDI, OR1K32BF_INSN_L_ANDI, OR1K32BF_SFMT_L_MFSPR }, 103 1.1 christos { OR1K_INSN_L_ORI, OR1K32BF_INSN_L_ORI, OR1K32BF_SFMT_L_MFSPR }, 104 1.1 christos { OR1K_INSN_L_XORI, OR1K32BF_INSN_L_XORI, OR1K32BF_SFMT_L_XORI }, 105 1.1 christos { OR1K_INSN_L_ADDI, OR1K32BF_INSN_L_ADDI, OR1K32BF_SFMT_L_ADDI }, 106 1.1 christos { OR1K_INSN_L_ADDIC, OR1K32BF_INSN_L_ADDIC, OR1K32BF_SFMT_L_ADDIC }, 107 1.1 christos { OR1K_INSN_L_MULI, OR1K32BF_INSN_L_MULI, OR1K32BF_SFMT_L_MULI }, 108 1.1 christos { OR1K_INSN_L_EXTHS, OR1K32BF_INSN_L_EXTHS, OR1K32BF_SFMT_L_EXTHS }, 109 1.1 christos { OR1K_INSN_L_EXTBS, OR1K32BF_INSN_L_EXTBS, OR1K32BF_SFMT_L_EXTHS }, 110 1.1 christos { OR1K_INSN_L_EXTHZ, OR1K32BF_INSN_L_EXTHZ, OR1K32BF_SFMT_L_EXTHS }, 111 1.1 christos { OR1K_INSN_L_EXTBZ, OR1K32BF_INSN_L_EXTBZ, OR1K32BF_SFMT_L_EXTHS }, 112 1.1 christos { OR1K_INSN_L_EXTWS, OR1K32BF_INSN_L_EXTWS, OR1K32BF_SFMT_L_EXTHS }, 113 1.1 christos { OR1K_INSN_L_EXTWZ, OR1K32BF_INSN_L_EXTWZ, OR1K32BF_SFMT_L_EXTHS }, 114 1.1 christos { OR1K_INSN_L_CMOV, OR1K32BF_INSN_L_CMOV, OR1K32BF_SFMT_L_CMOV }, 115 1.1 christos { OR1K_INSN_L_SFGTS, OR1K32BF_INSN_L_SFGTS, OR1K32BF_SFMT_L_SFGTS }, 116 1.1 christos { OR1K_INSN_L_SFGTSI, OR1K32BF_INSN_L_SFGTSI, OR1K32BF_SFMT_L_SFGTSI }, 117 1.1 christos { OR1K_INSN_L_SFGTU, OR1K32BF_INSN_L_SFGTU, OR1K32BF_SFMT_L_SFGTS }, 118 1.1 christos { OR1K_INSN_L_SFGTUI, OR1K32BF_INSN_L_SFGTUI, OR1K32BF_SFMT_L_SFGTSI }, 119 1.1 christos { OR1K_INSN_L_SFGES, OR1K32BF_INSN_L_SFGES, OR1K32BF_SFMT_L_SFGTS }, 120 1.1 christos { OR1K_INSN_L_SFGESI, OR1K32BF_INSN_L_SFGESI, OR1K32BF_SFMT_L_SFGTSI }, 121 1.1 christos { OR1K_INSN_L_SFGEU, OR1K32BF_INSN_L_SFGEU, OR1K32BF_SFMT_L_SFGTS }, 122 1.1 christos { OR1K_INSN_L_SFGEUI, OR1K32BF_INSN_L_SFGEUI, OR1K32BF_SFMT_L_SFGTSI }, 123 1.1 christos { OR1K_INSN_L_SFLTS, OR1K32BF_INSN_L_SFLTS, OR1K32BF_SFMT_L_SFGTS }, 124 1.1 christos { OR1K_INSN_L_SFLTSI, OR1K32BF_INSN_L_SFLTSI, OR1K32BF_SFMT_L_SFGTSI }, 125 1.1 christos { OR1K_INSN_L_SFLTU, OR1K32BF_INSN_L_SFLTU, OR1K32BF_SFMT_L_SFGTS }, 126 1.1 christos { OR1K_INSN_L_SFLTUI, OR1K32BF_INSN_L_SFLTUI, OR1K32BF_SFMT_L_SFGTSI }, 127 1.1 christos { OR1K_INSN_L_SFLES, OR1K32BF_INSN_L_SFLES, OR1K32BF_SFMT_L_SFGTS }, 128 1.1 christos { OR1K_INSN_L_SFLESI, OR1K32BF_INSN_L_SFLESI, OR1K32BF_SFMT_L_SFGTSI }, 129 1.1 christos { OR1K_INSN_L_SFLEU, OR1K32BF_INSN_L_SFLEU, OR1K32BF_SFMT_L_SFGTS }, 130 1.1 christos { OR1K_INSN_L_SFLEUI, OR1K32BF_INSN_L_SFLEUI, OR1K32BF_SFMT_L_SFGTSI }, 131 1.1 christos { OR1K_INSN_L_SFEQ, OR1K32BF_INSN_L_SFEQ, OR1K32BF_SFMT_L_SFGTS }, 132 1.1 christos { OR1K_INSN_L_SFEQI, OR1K32BF_INSN_L_SFEQI, OR1K32BF_SFMT_L_SFGTSI }, 133 1.1 christos { OR1K_INSN_L_SFNE, OR1K32BF_INSN_L_SFNE, OR1K32BF_SFMT_L_SFGTS }, 134 1.1 christos { OR1K_INSN_L_SFNEI, OR1K32BF_INSN_L_SFNEI, OR1K32BF_SFMT_L_SFGTSI }, 135 1.1 christos { OR1K_INSN_L_MAC, OR1K32BF_INSN_L_MAC, OR1K32BF_SFMT_L_MAC }, 136 1.1 christos { OR1K_INSN_L_MACI, OR1K32BF_INSN_L_MACI, OR1K32BF_SFMT_L_MACI }, 137 1.1 christos { OR1K_INSN_L_MACU, OR1K32BF_INSN_L_MACU, OR1K32BF_SFMT_L_MACU }, 138 1.1 christos { OR1K_INSN_L_MSB, OR1K32BF_INSN_L_MSB, OR1K32BF_SFMT_L_MAC }, 139 1.1 christos { OR1K_INSN_L_MSBU, OR1K32BF_INSN_L_MSBU, OR1K32BF_SFMT_L_MACU }, 140 1.1 christos { OR1K_INSN_L_CUST1, OR1K32BF_INSN_L_CUST1, OR1K32BF_SFMT_L_MSYNC }, 141 1.1 christos { OR1K_INSN_L_CUST2, OR1K32BF_INSN_L_CUST2, OR1K32BF_SFMT_L_MSYNC }, 142 1.1 christos { OR1K_INSN_L_CUST3, OR1K32BF_INSN_L_CUST3, OR1K32BF_SFMT_L_MSYNC }, 143 1.1 christos { OR1K_INSN_L_CUST4, OR1K32BF_INSN_L_CUST4, OR1K32BF_SFMT_L_MSYNC }, 144 1.1 christos { OR1K_INSN_L_CUST5, OR1K32BF_INSN_L_CUST5, OR1K32BF_SFMT_L_MSYNC }, 145 1.1 christos { OR1K_INSN_L_CUST6, OR1K32BF_INSN_L_CUST6, OR1K32BF_SFMT_L_MSYNC }, 146 1.1 christos { OR1K_INSN_L_CUST7, OR1K32BF_INSN_L_CUST7, OR1K32BF_SFMT_L_MSYNC }, 147 1.1 christos { OR1K_INSN_L_CUST8, OR1K32BF_INSN_L_CUST8, OR1K32BF_SFMT_L_MSYNC }, 148 1.1 christos { OR1K_INSN_LF_ADD_S, OR1K32BF_INSN_LF_ADD_S, OR1K32BF_SFMT_LF_ADD_S }, 149 1.1.1.2 christos { OR1K_INSN_LF_ADD_D32, OR1K32BF_INSN_LF_ADD_D32, OR1K32BF_SFMT_LF_ADD_D32 }, 150 1.1 christos { OR1K_INSN_LF_SUB_S, OR1K32BF_INSN_LF_SUB_S, OR1K32BF_SFMT_LF_ADD_S }, 151 1.1.1.2 christos { OR1K_INSN_LF_SUB_D32, OR1K32BF_INSN_LF_SUB_D32, OR1K32BF_SFMT_LF_ADD_D32 }, 152 1.1 christos { OR1K_INSN_LF_MUL_S, OR1K32BF_INSN_LF_MUL_S, OR1K32BF_SFMT_LF_ADD_S }, 153 1.1.1.2 christos { OR1K_INSN_LF_MUL_D32, OR1K32BF_INSN_LF_MUL_D32, OR1K32BF_SFMT_LF_ADD_D32 }, 154 1.1 christos { OR1K_INSN_LF_DIV_S, OR1K32BF_INSN_LF_DIV_S, OR1K32BF_SFMT_LF_ADD_S }, 155 1.1.1.2 christos { OR1K_INSN_LF_DIV_D32, OR1K32BF_INSN_LF_DIV_D32, OR1K32BF_SFMT_LF_ADD_D32 }, 156 1.1 christos { OR1K_INSN_LF_REM_S, OR1K32BF_INSN_LF_REM_S, OR1K32BF_SFMT_LF_ADD_S }, 157 1.1.1.2 christos { OR1K_INSN_LF_REM_D32, OR1K32BF_INSN_LF_REM_D32, OR1K32BF_SFMT_LF_ADD_D32 }, 158 1.1 christos { OR1K_INSN_LF_ITOF_S, OR1K32BF_INSN_LF_ITOF_S, OR1K32BF_SFMT_LF_ITOF_S }, 159 1.1.1.2 christos { OR1K_INSN_LF_ITOF_D32, OR1K32BF_INSN_LF_ITOF_D32, OR1K32BF_SFMT_LF_ITOF_D32 }, 160 1.1 christos { OR1K_INSN_LF_FTOI_S, OR1K32BF_INSN_LF_FTOI_S, OR1K32BF_SFMT_LF_FTOI_S }, 161 1.1.1.2 christos { OR1K_INSN_LF_FTOI_D32, OR1K32BF_INSN_LF_FTOI_D32, OR1K32BF_SFMT_LF_FTOI_D32 }, 162 1.1.1.2 christos { OR1K_INSN_LF_SFEQ_S, OR1K32BF_INSN_LF_SFEQ_S, OR1K32BF_SFMT_LF_SFEQ_S }, 163 1.1.1.2 christos { OR1K_INSN_LF_SFEQ_D32, OR1K32BF_INSN_LF_SFEQ_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 164 1.1.1.2 christos { OR1K_INSN_LF_SFNE_S, OR1K32BF_INSN_LF_SFNE_S, OR1K32BF_SFMT_LF_SFEQ_S }, 165 1.1.1.2 christos { OR1K_INSN_LF_SFNE_D32, OR1K32BF_INSN_LF_SFNE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 166 1.1.1.2 christos { OR1K_INSN_LF_SFGE_S, OR1K32BF_INSN_LF_SFGE_S, OR1K32BF_SFMT_LF_SFEQ_S }, 167 1.1.1.2 christos { OR1K_INSN_LF_SFGE_D32, OR1K32BF_INSN_LF_SFGE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 168 1.1.1.2 christos { OR1K_INSN_LF_SFGT_S, OR1K32BF_INSN_LF_SFGT_S, OR1K32BF_SFMT_LF_SFEQ_S }, 169 1.1.1.2 christos { OR1K_INSN_LF_SFGT_D32, OR1K32BF_INSN_LF_SFGT_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 170 1.1.1.2 christos { OR1K_INSN_LF_SFLT_S, OR1K32BF_INSN_LF_SFLT_S, OR1K32BF_SFMT_LF_SFEQ_S }, 171 1.1.1.2 christos { OR1K_INSN_LF_SFLT_D32, OR1K32BF_INSN_LF_SFLT_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 172 1.1.1.2 christos { OR1K_INSN_LF_SFLE_S, OR1K32BF_INSN_LF_SFLE_S, OR1K32BF_SFMT_LF_SFEQ_S }, 173 1.1.1.2 christos { OR1K_INSN_LF_SFLE_D32, OR1K32BF_INSN_LF_SFLE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 174 1.1.1.2 christos { OR1K_INSN_LF_SFUEQ_S, OR1K32BF_INSN_LF_SFUEQ_S, OR1K32BF_SFMT_LF_SFEQ_S }, 175 1.1.1.2 christos { OR1K_INSN_LF_SFUEQ_D32, OR1K32BF_INSN_LF_SFUEQ_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 176 1.1.1.2 christos { OR1K_INSN_LF_SFUNE_S, OR1K32BF_INSN_LF_SFUNE_S, OR1K32BF_SFMT_LF_SFEQ_S }, 177 1.1.1.2 christos { OR1K_INSN_LF_SFUNE_D32, OR1K32BF_INSN_LF_SFUNE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 178 1.1.1.2 christos { OR1K_INSN_LF_SFUGT_S, OR1K32BF_INSN_LF_SFUGT_S, OR1K32BF_SFMT_LF_SFEQ_S }, 179 1.1.1.2 christos { OR1K_INSN_LF_SFUGT_D32, OR1K32BF_INSN_LF_SFUGT_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 180 1.1.1.2 christos { OR1K_INSN_LF_SFUGE_S, OR1K32BF_INSN_LF_SFUGE_S, OR1K32BF_SFMT_LF_SFEQ_S }, 181 1.1.1.2 christos { OR1K_INSN_LF_SFUGE_D32, OR1K32BF_INSN_LF_SFUGE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 182 1.1.1.2 christos { OR1K_INSN_LF_SFULT_S, OR1K32BF_INSN_LF_SFULT_S, OR1K32BF_SFMT_LF_SFEQ_S }, 183 1.1.1.2 christos { OR1K_INSN_LF_SFULT_D32, OR1K32BF_INSN_LF_SFULT_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 184 1.1.1.2 christos { OR1K_INSN_LF_SFULE_S, OR1K32BF_INSN_LF_SFULE_S, OR1K32BF_SFMT_LF_SFEQ_S }, 185 1.1.1.2 christos { OR1K_INSN_LF_SFULE_D32, OR1K32BF_INSN_LF_SFULE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 186 1.1.1.2 christos { OR1K_INSN_LF_SFUN_S, OR1K32BF_INSN_LF_SFUN_S, OR1K32BF_SFMT_LF_SFEQ_S }, 187 1.1.1.2 christos { OR1K_INSN_LF_SFUN_D32, OR1K32BF_INSN_LF_SFUN_D32, OR1K32BF_SFMT_LF_SFEQ_D32 }, 188 1.1 christos { OR1K_INSN_LF_MADD_S, OR1K32BF_INSN_LF_MADD_S, OR1K32BF_SFMT_LF_MADD_S }, 189 1.1.1.2 christos { OR1K_INSN_LF_MADD_D32, OR1K32BF_INSN_LF_MADD_D32, OR1K32BF_SFMT_LF_MADD_D32 }, 190 1.1 christos { OR1K_INSN_LF_CUST1_S, OR1K32BF_INSN_LF_CUST1_S, OR1K32BF_SFMT_L_MSYNC }, 191 1.1.1.2 christos { OR1K_INSN_LF_CUST1_D32, OR1K32BF_INSN_LF_CUST1_D32, OR1K32BF_SFMT_L_MSYNC }, 192 1.1 christos }; 193 1.1 christos 194 1.1 christos static const struct insn_sem or1k32bf_insn_sem_invalid = 195 1.1 christos { 196 1.1 christos VIRTUAL_INSN_X_INVALID, OR1K32BF_INSN_X_INVALID, OR1K32BF_SFMT_EMPTY 197 1.1 christos }; 198 1.1 christos 199 1.1 christos /* Initialize an IDESC from the compile-time computable parts. */ 200 1.1 christos 201 1.1 christos static INLINE void 202 1.1 christos init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t) 203 1.1 christos { 204 1.1 christos const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries; 205 1.1 christos 206 1.1 christos id->num = t->index; 207 1.1 christos id->sfmt = t->sfmt; 208 1.1 christos if ((int) t->type <= 0) 209 1.1 christos id->idata = & cgen_virtual_insn_table[- (int) t->type]; 210 1.1 christos else 211 1.1 christos id->idata = & insn_table[t->type]; 212 1.1 christos id->attrs = CGEN_INSN_ATTRS (id->idata); 213 1.1 christos /* Oh my god, a magic number. */ 214 1.1 christos id->length = CGEN_INSN_BITSIZE (id->idata) / 8; 215 1.1 christos 216 1.1 christos #if WITH_PROFILE_MODEL_P 217 1.1 christos id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index]; 218 1.1 christos { 219 1.1 christos SIM_DESC sd = CPU_STATE (cpu); 220 1.1 christos SIM_ASSERT (t->index == id->timing->num); 221 1.1 christos } 222 1.1 christos #endif 223 1.1 christos 224 1.1 christos /* Semantic pointers are initialized elsewhere. */ 225 1.1 christos } 226 1.1 christos 227 1.1 christos /* Initialize the instruction descriptor table. */ 228 1.1 christos 229 1.1 christos void 230 1.1 christos or1k32bf_init_idesc_table (SIM_CPU *cpu) 231 1.1 christos { 232 1.1 christos IDESC *id,*tabend; 233 1.1 christos const struct insn_sem *t,*tend; 234 1.1 christos int tabsize = OR1K32BF_INSN__MAX; 235 1.1 christos IDESC *table = or1k32bf_insn_data; 236 1.1 christos 237 1.1 christos memset (table, 0, tabsize * sizeof (IDESC)); 238 1.1 christos 239 1.1 christos /* First set all entries to the `invalid insn'. */ 240 1.1 christos t = & or1k32bf_insn_sem_invalid; 241 1.1 christos for (id = table, tabend = table + tabsize; id < tabend; ++id) 242 1.1 christos init_idesc (cpu, id, t); 243 1.1 christos 244 1.1 christos /* Now fill in the values for the chosen cpu. */ 245 1.1.1.4 christos for (t = or1k32bf_insn_sem, tend = t + ARRAY_SIZE (or1k32bf_insn_sem); 246 1.1 christos t != tend; ++t) 247 1.1 christos { 248 1.1 christos init_idesc (cpu, & table[t->index], t); 249 1.1 christos } 250 1.1 christos 251 1.1 christos /* Link the IDESC table into the cpu. */ 252 1.1 christos CPU_IDESC (cpu) = table; 253 1.1 christos } 254 1.1 christos 255 1.1 christos /* Given an instruction, return a pointer to its IDESC entry. */ 256 1.1 christos 257 1.1 christos const IDESC * 258 1.1 christos or1k32bf_decode (SIM_CPU *current_cpu, IADDR pc, 259 1.1 christos CGEN_INSN_WORD base_insn, CGEN_INSN_WORD entire_insn, 260 1.1 christos ARGBUF *abuf) 261 1.1 christos { 262 1.1 christos /* Result of decoder. */ 263 1.1 christos OR1K32BF_INSN_TYPE itype; 264 1.1 christos 265 1.1 christos { 266 1.1 christos CGEN_INSN_WORD insn = base_insn; 267 1.1 christos 268 1.1 christos { 269 1.1.1.4 christos unsigned int val0 = (((insn >> 21) & (63 << 5)) | ((insn >> 0) & (31 << 0))); 270 1.1.1.4 christos switch (val0) 271 1.1 christos { 272 1.1.1.4 christos case 0: 273 1.1.1.4 christos case 1: 274 1.1.1.4 christos case 2: 275 1.1.1.4 christos case 3: 276 1.1.1.4 christos case 4: 277 1.1.1.4 christos case 5: 278 1.1.1.4 christos case 6: 279 1.1.1.4 christos case 7: 280 1.1.1.4 christos case 8: 281 1.1.1.4 christos case 9: 282 1.1.1.4 christos case 10: 283 1.1.1.4 christos case 11: 284 1.1.1.4 christos case 12: 285 1.1.1.4 christos case 13: 286 1.1.1.4 christos case 14: 287 1.1.1.4 christos case 15: 288 1.1.1.4 christos case 16: 289 1.1.1.4 christos case 17: 290 1.1.1.4 christos case 18: 291 1.1.1.4 christos case 19: 292 1.1.1.4 christos case 20: 293 1.1.1.4 christos case 21: 294 1.1.1.4 christos case 22: 295 1.1.1.4 christos case 23: 296 1.1.1.4 christos case 24: 297 1.1.1.4 christos case 25: 298 1.1.1.4 christos case 26: 299 1.1.1.4 christos case 27: 300 1.1.1.4 christos case 28: 301 1.1.1.4 christos case 29: 302 1.1.1.4 christos case 30: 303 1.1.1.4 christos case 31: itype = OR1K32BF_INSN_L_J; goto extract_sfmt_l_j; 304 1.1.1.4 christos case 32: 305 1.1.1.4 christos case 33: 306 1.1.1.4 christos case 34: 307 1.1.1.4 christos case 35: 308 1.1.1.4 christos case 36: 309 1.1.1.4 christos case 37: 310 1.1.1.4 christos case 38: 311 1.1.1.4 christos case 39: 312 1.1.1.4 christos case 40: 313 1.1.1.4 christos case 41: 314 1.1.1.4 christos case 42: 315 1.1.1.4 christos case 43: 316 1.1.1.4 christos case 44: 317 1.1.1.4 christos case 45: 318 1.1.1.4 christos case 46: 319 1.1.1.4 christos case 47: 320 1.1.1.4 christos case 48: 321 1.1.1.4 christos case 49: 322 1.1.1.4 christos case 50: 323 1.1.1.4 christos case 51: 324 1.1.1.4 christos case 52: 325 1.1.1.4 christos case 53: 326 1.1.1.4 christos case 54: 327 1.1.1.4 christos case 55: 328 1.1.1.4 christos case 56: 329 1.1.1.4 christos case 57: 330 1.1.1.4 christos case 58: 331 1.1.1.4 christos case 59: 332 1.1.1.4 christos case 60: 333 1.1.1.4 christos case 61: 334 1.1.1.4 christos case 62: 335 1.1.1.4 christos case 63: itype = OR1K32BF_INSN_L_JAL; goto extract_sfmt_l_jal; 336 1.1.1.4 christos case 64: 337 1.1.1.4 christos case 65: 338 1.1.1.4 christos case 66: 339 1.1.1.4 christos case 67: 340 1.1.1.4 christos case 68: 341 1.1.1.4 christos case 69: 342 1.1.1.4 christos case 70: 343 1.1.1.4 christos case 71: 344 1.1.1.4 christos case 72: 345 1.1.1.4 christos case 73: 346 1.1.1.4 christos case 74: 347 1.1.1.4 christos case 75: 348 1.1.1.4 christos case 76: 349 1.1.1.4 christos case 77: 350 1.1.1.4 christos case 78: 351 1.1.1.4 christos case 79: 352 1.1.1.4 christos case 80: 353 1.1.1.4 christos case 81: 354 1.1.1.4 christos case 82: 355 1.1.1.4 christos case 83: 356 1.1.1.4 christos case 84: 357 1.1.1.4 christos case 85: 358 1.1.1.4 christos case 86: 359 1.1.1.4 christos case 87: 360 1.1.1.4 christos case 88: 361 1.1.1.4 christos case 89: 362 1.1.1.4 christos case 90: 363 1.1.1.4 christos case 91: 364 1.1.1.4 christos case 92: 365 1.1.1.4 christos case 93: 366 1.1.1.4 christos case 94: 367 1.1.1.4 christos case 95: itype = OR1K32BF_INSN_L_ADRP; goto extract_sfmt_l_adrp; 368 1.1.1.4 christos case 96: 369 1.1.1.4 christos case 97: 370 1.1.1.4 christos case 98: 371 1.1.1.4 christos case 99: 372 1.1.1.4 christos case 100: 373 1.1.1.4 christos case 101: 374 1.1.1.4 christos case 102: 375 1.1.1.4 christos case 103: 376 1.1.1.4 christos case 104: 377 1.1.1.4 christos case 105: 378 1.1.1.4 christos case 106: 379 1.1.1.4 christos case 107: 380 1.1.1.4 christos case 108: 381 1.1.1.4 christos case 109: 382 1.1.1.4 christos case 110: 383 1.1.1.4 christos case 111: 384 1.1.1.4 christos case 112: 385 1.1.1.4 christos case 113: 386 1.1.1.4 christos case 114: 387 1.1.1.4 christos case 115: 388 1.1.1.4 christos case 116: 389 1.1.1.4 christos case 117: 390 1.1.1.4 christos case 118: 391 1.1.1.4 christos case 119: 392 1.1.1.4 christos case 120: 393 1.1.1.4 christos case 121: 394 1.1.1.4 christos case 122: 395 1.1.1.4 christos case 123: 396 1.1.1.4 christos case 124: 397 1.1.1.4 christos case 125: 398 1.1.1.4 christos case 126: 399 1.1.1.4 christos case 127: itype = OR1K32BF_INSN_L_BNF; goto extract_sfmt_l_bnf; 400 1.1.1.4 christos case 128: 401 1.1.1.4 christos case 129: 402 1.1.1.4 christos case 130: 403 1.1.1.4 christos case 131: 404 1.1.1.4 christos case 132: 405 1.1.1.4 christos case 133: 406 1.1.1.4 christos case 134: 407 1.1.1.4 christos case 135: 408 1.1.1.4 christos case 136: 409 1.1.1.4 christos case 137: 410 1.1.1.4 christos case 138: 411 1.1.1.4 christos case 139: 412 1.1.1.4 christos case 140: 413 1.1.1.4 christos case 141: 414 1.1.1.4 christos case 142: 415 1.1.1.4 christos case 143: 416 1.1.1.4 christos case 144: 417 1.1.1.4 christos case 145: 418 1.1.1.4 christos case 146: 419 1.1.1.4 christos case 147: 420 1.1.1.4 christos case 148: 421 1.1.1.4 christos case 149: 422 1.1.1.4 christos case 150: 423 1.1.1.4 christos case 151: 424 1.1.1.4 christos case 152: 425 1.1.1.4 christos case 153: 426 1.1.1.4 christos case 154: 427 1.1.1.4 christos case 155: 428 1.1.1.4 christos case 156: 429 1.1.1.4 christos case 157: 430 1.1.1.4 christos case 158: 431 1.1.1.4 christos case 159: itype = OR1K32BF_INSN_L_BF; goto extract_sfmt_l_bnf; 432 1.1.1.4 christos case 160: 433 1.1.1.4 christos case 161: 434 1.1.1.4 christos case 162: 435 1.1.1.4 christos case 163: 436 1.1.1.4 christos case 164: 437 1.1.1.4 christos case 165: 438 1.1.1.4 christos case 166: 439 1.1.1.4 christos case 167: 440 1.1.1.4 christos case 168: 441 1.1.1.4 christos case 169: 442 1.1.1.4 christos case 170: 443 1.1.1.4 christos case 171: 444 1.1.1.4 christos case 172: 445 1.1.1.4 christos case 173: 446 1.1.1.4 christos case 174: 447 1.1.1.4 christos case 175: 448 1.1.1.4 christos case 176: 449 1.1.1.4 christos case 177: 450 1.1.1.4 christos case 178: 451 1.1.1.4 christos case 179: 452 1.1.1.4 christos case 180: 453 1.1.1.4 christos case 181: 454 1.1.1.4 christos case 182: 455 1.1.1.4 christos case 183: 456 1.1.1.4 christos case 184: 457 1.1.1.4 christos case 185: 458 1.1.1.4 christos case 186: 459 1.1.1.4 christos case 187: 460 1.1.1.4 christos case 188: 461 1.1.1.4 christos case 189: 462 1.1.1.4 christos case 190: 463 1.1.1.4 christos case 191: 464 1.1 christos if ((entire_insn & 0xffff0000) == 0x15000000) 465 1.1 christos { itype = OR1K32BF_INSN_L_NOP_IMM; goto extract_sfmt_l_nop_imm; } 466 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 467 1.1.1.4 christos case 192: 468 1.1 christos { 469 1.1.1.4 christos unsigned int val1 = (((insn >> 16) & (1 << 0))); 470 1.1.1.4 christos switch (val1) 471 1.1 christos { 472 1.1.1.4 christos case 0: 473 1.1 christos if ((entire_insn & 0xfc1f0000) == 0x18000000) 474 1.1 christos { itype = OR1K32BF_INSN_L_MOVHI; goto extract_sfmt_l_movhi; } 475 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 476 1.1.1.4 christos case 1: 477 1.1 christos if ((entire_insn & 0xfc1fffff) == 0x18010000) 478 1.1 christos { itype = OR1K32BF_INSN_L_MACRC; goto extract_sfmt_l_macrc; } 479 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 480 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 481 1.1 christos } 482 1.1 christos } 483 1.1.1.4 christos case 193: 484 1.1.1.4 christos case 194: 485 1.1.1.4 christos case 195: 486 1.1.1.4 christos case 196: 487 1.1.1.4 christos case 197: 488 1.1.1.4 christos case 198: 489 1.1.1.4 christos case 199: 490 1.1.1.4 christos case 200: 491 1.1.1.4 christos case 201: 492 1.1.1.4 christos case 202: 493 1.1.1.4 christos case 203: 494 1.1.1.4 christos case 204: 495 1.1.1.4 christos case 205: 496 1.1.1.4 christos case 206: 497 1.1.1.4 christos case 207: 498 1.1.1.4 christos case 208: 499 1.1.1.4 christos case 209: 500 1.1.1.4 christos case 210: 501 1.1.1.4 christos case 211: 502 1.1.1.4 christos case 212: 503 1.1.1.4 christos case 213: 504 1.1.1.4 christos case 214: 505 1.1.1.4 christos case 215: 506 1.1.1.4 christos case 216: 507 1.1.1.4 christos case 217: 508 1.1.1.4 christos case 218: 509 1.1.1.4 christos case 219: 510 1.1.1.4 christos case 220: 511 1.1.1.4 christos case 221: 512 1.1.1.4 christos case 222: 513 1.1.1.4 christos case 223: 514 1.1 christos if ((entire_insn & 0xfc1f0000) == 0x18000000) 515 1.1 christos { itype = OR1K32BF_INSN_L_MOVHI; goto extract_sfmt_l_movhi; } 516 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 517 1.1.1.4 christos case 256: 518 1.1 christos { 519 1.1.1.4 christos unsigned int val1 = (((insn >> 23) & (7 << 0))); 520 1.1.1.4 christos switch (val1) 521 1.1 christos { 522 1.1.1.4 christos case 0: 523 1.1 christos if ((entire_insn & 0xffff0000) == 0x20000000) 524 1.1 christos { itype = OR1K32BF_INSN_L_SYS; goto extract_sfmt_l_trap; } 525 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 526 1.1.1.4 christos case 2: 527 1.1 christos if ((entire_insn & 0xffff0000) == 0x21000000) 528 1.1 christos { itype = OR1K32BF_INSN_L_TRAP; goto extract_sfmt_l_trap; } 529 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 530 1.1.1.4 christos case 4: 531 1.1 christos if ((entire_insn & 0xffffffff) == 0x22000000) 532 1.1 christos { itype = OR1K32BF_INSN_L_MSYNC; goto extract_sfmt_l_msync; } 533 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 534 1.1.1.4 christos case 5: 535 1.1 christos if ((entire_insn & 0xffffffff) == 0x22800000) 536 1.1 christos { itype = OR1K32BF_INSN_L_PSYNC; goto extract_sfmt_l_msync; } 537 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 538 1.1.1.4 christos case 6: 539 1.1 christos if ((entire_insn & 0xffffffff) == 0x23000000) 540 1.1 christos { itype = OR1K32BF_INSN_L_CSYNC; goto extract_sfmt_l_msync; } 541 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 542 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 543 1.1 christos } 544 1.1 christos } 545 1.1.1.4 christos case 257: 546 1.1.1.4 christos case 258: 547 1.1.1.4 christos case 259: 548 1.1.1.4 christos case 260: 549 1.1.1.4 christos case 261: 550 1.1.1.4 christos case 262: 551 1.1.1.4 christos case 263: 552 1.1.1.4 christos case 264: 553 1.1.1.4 christos case 265: 554 1.1.1.4 christos case 266: 555 1.1.1.4 christos case 267: 556 1.1.1.4 christos case 268: 557 1.1.1.4 christos case 269: 558 1.1.1.4 christos case 270: 559 1.1.1.4 christos case 271: 560 1.1.1.4 christos case 272: 561 1.1.1.4 christos case 273: 562 1.1.1.4 christos case 274: 563 1.1.1.4 christos case 275: 564 1.1.1.4 christos case 276: 565 1.1.1.4 christos case 277: 566 1.1.1.4 christos case 278: 567 1.1.1.4 christos case 279: 568 1.1.1.4 christos case 280: 569 1.1.1.4 christos case 281: 570 1.1.1.4 christos case 282: 571 1.1.1.4 christos case 283: 572 1.1.1.4 christos case 284: 573 1.1.1.4 christos case 285: 574 1.1.1.4 christos case 286: 575 1.1.1.4 christos case 287: 576 1.1 christos { 577 1.1.1.4 christos unsigned int val1 = (((insn >> 24) & (1 << 0))); 578 1.1.1.4 christos switch (val1) 579 1.1 christos { 580 1.1.1.4 christos case 0: 581 1.1 christos if ((entire_insn & 0xffff0000) == 0x20000000) 582 1.1 christos { itype = OR1K32BF_INSN_L_SYS; goto extract_sfmt_l_trap; } 583 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 584 1.1.1.4 christos case 1: 585 1.1 christos if ((entire_insn & 0xffff0000) == 0x21000000) 586 1.1 christos { itype = OR1K32BF_INSN_L_TRAP; goto extract_sfmt_l_trap; } 587 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 588 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 589 1.1 christos } 590 1.1 christos } 591 1.1.1.4 christos case 288: 592 1.1 christos if ((entire_insn & 0xffffffff) == 0x24000000) 593 1.1 christos { itype = OR1K32BF_INSN_L_RFE; goto extract_sfmt_l_msync; } 594 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 595 1.1.1.4 christos case 544: 596 1.1 christos if ((entire_insn & 0xffff07ff) == 0x44000000) 597 1.1 christos { itype = OR1K32BF_INSN_L_JR; goto extract_sfmt_l_jr; } 598 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 599 1.1.1.4 christos case 576: 600 1.1 christos if ((entire_insn & 0xffff07ff) == 0x48000000) 601 1.1 christos { itype = OR1K32BF_INSN_L_JALR; goto extract_sfmt_l_jalr; } 602 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 603 1.1.1.4 christos case 608: 604 1.1.1.4 christos case 609: 605 1.1.1.4 christos case 610: 606 1.1.1.4 christos case 611: 607 1.1.1.4 christos case 612: 608 1.1.1.4 christos case 613: 609 1.1.1.4 christos case 614: 610 1.1.1.4 christos case 615: 611 1.1.1.4 christos case 616: 612 1.1.1.4 christos case 617: 613 1.1.1.4 christos case 618: 614 1.1.1.4 christos case 619: 615 1.1.1.4 christos case 620: 616 1.1.1.4 christos case 621: 617 1.1.1.4 christos case 622: 618 1.1.1.4 christos case 623: 619 1.1.1.4 christos case 624: 620 1.1.1.4 christos case 625: 621 1.1.1.4 christos case 626: 622 1.1.1.4 christos case 627: 623 1.1.1.4 christos case 628: 624 1.1.1.4 christos case 629: 625 1.1.1.4 christos case 630: 626 1.1.1.4 christos case 631: 627 1.1.1.4 christos case 632: 628 1.1.1.4 christos case 633: 629 1.1.1.4 christos case 634: 630 1.1.1.4 christos case 635: 631 1.1.1.4 christos case 636: 632 1.1.1.4 christos case 637: 633 1.1.1.4 christos case 638: 634 1.1.1.4 christos case 639: 635 1.1 christos if ((entire_insn & 0xffe00000) == 0x4c000000) 636 1.1 christos { itype = OR1K32BF_INSN_L_MACI; goto extract_sfmt_l_maci; } 637 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 638 1.1.1.4 christos case 864: 639 1.1.1.4 christos case 865: 640 1.1.1.4 christos case 866: 641 1.1.1.4 christos case 867: 642 1.1.1.4 christos case 868: 643 1.1.1.4 christos case 869: 644 1.1.1.4 christos case 870: 645 1.1.1.4 christos case 871: 646 1.1.1.4 christos case 872: 647 1.1.1.4 christos case 873: 648 1.1.1.4 christos case 874: 649 1.1.1.4 christos case 875: 650 1.1.1.4 christos case 876: 651 1.1.1.4 christos case 877: 652 1.1.1.4 christos case 878: 653 1.1.1.4 christos case 879: 654 1.1.1.4 christos case 880: 655 1.1.1.4 christos case 881: 656 1.1.1.4 christos case 882: 657 1.1.1.4 christos case 883: 658 1.1.1.4 christos case 884: 659 1.1.1.4 christos case 885: 660 1.1.1.4 christos case 886: 661 1.1.1.4 christos case 887: 662 1.1.1.4 christos case 888: 663 1.1.1.4 christos case 889: 664 1.1.1.4 christos case 890: 665 1.1.1.4 christos case 891: 666 1.1.1.4 christos case 892: 667 1.1.1.4 christos case 893: 668 1.1.1.4 christos case 894: 669 1.1.1.4 christos case 895: itype = OR1K32BF_INSN_L_LWA; goto extract_sfmt_l_lwa; 670 1.1.1.4 christos case 896: 671 1.1 christos if ((entire_insn & 0xffffffff) == 0x70000000) 672 1.1 christos { itype = OR1K32BF_INSN_L_CUST1; goto extract_sfmt_l_msync; } 673 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 674 1.1.1.4 christos case 928: 675 1.1 christos if ((entire_insn & 0xffffffff) == 0x74000000) 676 1.1 christos { itype = OR1K32BF_INSN_L_CUST2; goto extract_sfmt_l_msync; } 677 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 678 1.1.1.4 christos case 960: 679 1.1 christos if ((entire_insn & 0xffffffff) == 0x78000000) 680 1.1 christos { itype = OR1K32BF_INSN_L_CUST3; goto extract_sfmt_l_msync; } 681 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 682 1.1.1.4 christos case 992: 683 1.1 christos if ((entire_insn & 0xffffffff) == 0x7c000000) 684 1.1 christos { itype = OR1K32BF_INSN_L_CUST4; goto extract_sfmt_l_msync; } 685 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 686 1.1.1.4 christos case 1056: 687 1.1.1.4 christos case 1057: 688 1.1.1.4 christos case 1058: 689 1.1.1.4 christos case 1059: 690 1.1.1.4 christos case 1060: 691 1.1.1.4 christos case 1061: 692 1.1.1.4 christos case 1062: 693 1.1.1.4 christos case 1063: 694 1.1.1.4 christos case 1064: 695 1.1.1.4 christos case 1065: 696 1.1.1.4 christos case 1066: 697 1.1.1.4 christos case 1067: 698 1.1.1.4 christos case 1068: 699 1.1.1.4 christos case 1069: 700 1.1.1.4 christos case 1070: 701 1.1.1.4 christos case 1071: 702 1.1.1.4 christos case 1072: 703 1.1.1.4 christos case 1073: 704 1.1.1.4 christos case 1074: 705 1.1.1.4 christos case 1075: 706 1.1.1.4 christos case 1076: 707 1.1.1.4 christos case 1077: 708 1.1.1.4 christos case 1078: 709 1.1.1.4 christos case 1079: 710 1.1.1.4 christos case 1080: 711 1.1.1.4 christos case 1081: 712 1.1.1.4 christos case 1082: 713 1.1.1.4 christos case 1083: 714 1.1.1.4 christos case 1084: 715 1.1.1.4 christos case 1085: 716 1.1.1.4 christos case 1086: 717 1.1.1.4 christos case 1087: itype = OR1K32BF_INSN_L_LWZ; goto extract_sfmt_l_lwz; 718 1.1.1.4 christos case 1088: 719 1.1.1.4 christos case 1089: 720 1.1.1.4 christos case 1090: 721 1.1.1.4 christos case 1091: 722 1.1.1.4 christos case 1092: 723 1.1.1.4 christos case 1093: 724 1.1.1.4 christos case 1094: 725 1.1.1.4 christos case 1095: 726 1.1.1.4 christos case 1096: 727 1.1.1.4 christos case 1097: 728 1.1.1.4 christos case 1098: 729 1.1.1.4 christos case 1099: 730 1.1.1.4 christos case 1100: 731 1.1.1.4 christos case 1101: 732 1.1.1.4 christos case 1102: 733 1.1.1.4 christos case 1103: 734 1.1.1.4 christos case 1104: 735 1.1.1.4 christos case 1105: 736 1.1.1.4 christos case 1106: 737 1.1.1.4 christos case 1107: 738 1.1.1.4 christos case 1108: 739 1.1.1.4 christos case 1109: 740 1.1.1.4 christos case 1110: 741 1.1.1.4 christos case 1111: 742 1.1.1.4 christos case 1112: 743 1.1.1.4 christos case 1113: 744 1.1.1.4 christos case 1114: 745 1.1.1.4 christos case 1115: 746 1.1.1.4 christos case 1116: 747 1.1.1.4 christos case 1117: 748 1.1.1.4 christos case 1118: 749 1.1.1.4 christos case 1119: itype = OR1K32BF_INSN_L_LWS; goto extract_sfmt_l_lws; 750 1.1.1.4 christos case 1120: 751 1.1.1.4 christos case 1121: 752 1.1.1.4 christos case 1122: 753 1.1.1.4 christos case 1123: 754 1.1.1.4 christos case 1124: 755 1.1.1.4 christos case 1125: 756 1.1.1.4 christos case 1126: 757 1.1.1.4 christos case 1127: 758 1.1.1.4 christos case 1128: 759 1.1.1.4 christos case 1129: 760 1.1.1.4 christos case 1130: 761 1.1.1.4 christos case 1131: 762 1.1.1.4 christos case 1132: 763 1.1.1.4 christos case 1133: 764 1.1.1.4 christos case 1134: 765 1.1.1.4 christos case 1135: 766 1.1.1.4 christos case 1136: 767 1.1.1.4 christos case 1137: 768 1.1.1.4 christos case 1138: 769 1.1.1.4 christos case 1139: 770 1.1.1.4 christos case 1140: 771 1.1.1.4 christos case 1141: 772 1.1.1.4 christos case 1142: 773 1.1.1.4 christos case 1143: 774 1.1.1.4 christos case 1144: 775 1.1.1.4 christos case 1145: 776 1.1.1.4 christos case 1146: 777 1.1.1.4 christos case 1147: 778 1.1.1.4 christos case 1148: 779 1.1.1.4 christos case 1149: 780 1.1.1.4 christos case 1150: 781 1.1.1.4 christos case 1151: itype = OR1K32BF_INSN_L_LBZ; goto extract_sfmt_l_lbz; 782 1.1.1.4 christos case 1152: 783 1.1.1.4 christos case 1153: 784 1.1.1.4 christos case 1154: 785 1.1.1.4 christos case 1155: 786 1.1.1.4 christos case 1156: 787 1.1.1.4 christos case 1157: 788 1.1.1.4 christos case 1158: 789 1.1.1.4 christos case 1159: 790 1.1.1.4 christos case 1160: 791 1.1.1.4 christos case 1161: 792 1.1.1.4 christos case 1162: 793 1.1.1.4 christos case 1163: 794 1.1.1.4 christos case 1164: 795 1.1.1.4 christos case 1165: 796 1.1.1.4 christos case 1166: 797 1.1.1.4 christos case 1167: 798 1.1.1.4 christos case 1168: 799 1.1.1.4 christos case 1169: 800 1.1.1.4 christos case 1170: 801 1.1.1.4 christos case 1171: 802 1.1.1.4 christos case 1172: 803 1.1.1.4 christos case 1173: 804 1.1.1.4 christos case 1174: 805 1.1.1.4 christos case 1175: 806 1.1.1.4 christos case 1176: 807 1.1.1.4 christos case 1177: 808 1.1.1.4 christos case 1178: 809 1.1.1.4 christos case 1179: 810 1.1.1.4 christos case 1180: 811 1.1.1.4 christos case 1181: 812 1.1.1.4 christos case 1182: 813 1.1.1.4 christos case 1183: itype = OR1K32BF_INSN_L_LBS; goto extract_sfmt_l_lbs; 814 1.1.1.4 christos case 1184: 815 1.1.1.4 christos case 1185: 816 1.1.1.4 christos case 1186: 817 1.1.1.4 christos case 1187: 818 1.1.1.4 christos case 1188: 819 1.1.1.4 christos case 1189: 820 1.1.1.4 christos case 1190: 821 1.1.1.4 christos case 1191: 822 1.1.1.4 christos case 1192: 823 1.1.1.4 christos case 1193: 824 1.1.1.4 christos case 1194: 825 1.1.1.4 christos case 1195: 826 1.1.1.4 christos case 1196: 827 1.1.1.4 christos case 1197: 828 1.1.1.4 christos case 1198: 829 1.1.1.4 christos case 1199: 830 1.1.1.4 christos case 1200: 831 1.1.1.4 christos case 1201: 832 1.1.1.4 christos case 1202: 833 1.1.1.4 christos case 1203: 834 1.1.1.4 christos case 1204: 835 1.1.1.4 christos case 1205: 836 1.1.1.4 christos case 1206: 837 1.1.1.4 christos case 1207: 838 1.1.1.4 christos case 1208: 839 1.1.1.4 christos case 1209: 840 1.1.1.4 christos case 1210: 841 1.1.1.4 christos case 1211: 842 1.1.1.4 christos case 1212: 843 1.1.1.4 christos case 1213: 844 1.1.1.4 christos case 1214: 845 1.1.1.4 christos case 1215: itype = OR1K32BF_INSN_L_LHZ; goto extract_sfmt_l_lhz; 846 1.1.1.4 christos case 1216: 847 1.1.1.4 christos case 1217: 848 1.1.1.4 christos case 1218: 849 1.1.1.4 christos case 1219: 850 1.1.1.4 christos case 1220: 851 1.1.1.4 christos case 1221: 852 1.1.1.4 christos case 1222: 853 1.1.1.4 christos case 1223: 854 1.1.1.4 christos case 1224: 855 1.1.1.4 christos case 1225: 856 1.1.1.4 christos case 1226: 857 1.1.1.4 christos case 1227: 858 1.1.1.4 christos case 1228: 859 1.1.1.4 christos case 1229: 860 1.1.1.4 christos case 1230: 861 1.1.1.4 christos case 1231: 862 1.1.1.4 christos case 1232: 863 1.1.1.4 christos case 1233: 864 1.1.1.4 christos case 1234: 865 1.1.1.4 christos case 1235: 866 1.1.1.4 christos case 1236: 867 1.1.1.4 christos case 1237: 868 1.1.1.4 christos case 1238: 869 1.1.1.4 christos case 1239: 870 1.1.1.4 christos case 1240: 871 1.1.1.4 christos case 1241: 872 1.1.1.4 christos case 1242: 873 1.1.1.4 christos case 1243: 874 1.1.1.4 christos case 1244: 875 1.1.1.4 christos case 1245: 876 1.1.1.4 christos case 1246: 877 1.1.1.4 christos case 1247: itype = OR1K32BF_INSN_L_LHS; goto extract_sfmt_l_lhs; 878 1.1.1.4 christos case 1248: 879 1.1.1.4 christos case 1249: 880 1.1.1.4 christos case 1250: 881 1.1.1.4 christos case 1251: 882 1.1.1.4 christos case 1252: 883 1.1.1.4 christos case 1253: 884 1.1.1.4 christos case 1254: 885 1.1.1.4 christos case 1255: 886 1.1.1.4 christos case 1256: 887 1.1.1.4 christos case 1257: 888 1.1.1.4 christos case 1258: 889 1.1.1.4 christos case 1259: 890 1.1.1.4 christos case 1260: 891 1.1.1.4 christos case 1261: 892 1.1.1.4 christos case 1262: 893 1.1.1.4 christos case 1263: 894 1.1.1.4 christos case 1264: 895 1.1.1.4 christos case 1265: 896 1.1.1.4 christos case 1266: 897 1.1.1.4 christos case 1267: 898 1.1.1.4 christos case 1268: 899 1.1.1.4 christos case 1269: 900 1.1.1.4 christos case 1270: 901 1.1.1.4 christos case 1271: 902 1.1.1.4 christos case 1272: 903 1.1.1.4 christos case 1273: 904 1.1.1.4 christos case 1274: 905 1.1.1.4 christos case 1275: 906 1.1.1.4 christos case 1276: 907 1.1.1.4 christos case 1277: 908 1.1.1.4 christos case 1278: 909 1.1.1.4 christos case 1279: itype = OR1K32BF_INSN_L_ADDI; goto extract_sfmt_l_addi; 910 1.1.1.4 christos case 1280: 911 1.1.1.4 christos case 1281: 912 1.1.1.4 christos case 1282: 913 1.1.1.4 christos case 1283: 914 1.1.1.4 christos case 1284: 915 1.1.1.4 christos case 1285: 916 1.1.1.4 christos case 1286: 917 1.1.1.4 christos case 1287: 918 1.1.1.4 christos case 1288: 919 1.1.1.4 christos case 1289: 920 1.1.1.4 christos case 1290: 921 1.1.1.4 christos case 1291: 922 1.1.1.4 christos case 1292: 923 1.1.1.4 christos case 1293: 924 1.1.1.4 christos case 1294: 925 1.1.1.4 christos case 1295: 926 1.1.1.4 christos case 1296: 927 1.1.1.4 christos case 1297: 928 1.1.1.4 christos case 1298: 929 1.1.1.4 christos case 1299: 930 1.1.1.4 christos case 1300: 931 1.1.1.4 christos case 1301: 932 1.1.1.4 christos case 1302: 933 1.1.1.4 christos case 1303: 934 1.1.1.4 christos case 1304: 935 1.1.1.4 christos case 1305: 936 1.1.1.4 christos case 1306: 937 1.1.1.4 christos case 1307: 938 1.1.1.4 christos case 1308: 939 1.1.1.4 christos case 1309: 940 1.1.1.4 christos case 1310: 941 1.1.1.4 christos case 1311: itype = OR1K32BF_INSN_L_ADDIC; goto extract_sfmt_l_addic; 942 1.1.1.4 christos case 1312: 943 1.1.1.4 christos case 1313: 944 1.1.1.4 christos case 1314: 945 1.1.1.4 christos case 1315: 946 1.1.1.4 christos case 1316: 947 1.1.1.4 christos case 1317: 948 1.1.1.4 christos case 1318: 949 1.1.1.4 christos case 1319: 950 1.1.1.4 christos case 1320: 951 1.1.1.4 christos case 1321: 952 1.1.1.4 christos case 1322: 953 1.1.1.4 christos case 1323: 954 1.1.1.4 christos case 1324: 955 1.1.1.4 christos case 1325: 956 1.1.1.4 christos case 1326: 957 1.1.1.4 christos case 1327: 958 1.1.1.4 christos case 1328: 959 1.1.1.4 christos case 1329: 960 1.1.1.4 christos case 1330: 961 1.1.1.4 christos case 1331: 962 1.1.1.4 christos case 1332: 963 1.1.1.4 christos case 1333: 964 1.1.1.4 christos case 1334: 965 1.1.1.4 christos case 1335: 966 1.1.1.4 christos case 1336: 967 1.1.1.4 christos case 1337: 968 1.1.1.4 christos case 1338: 969 1.1.1.4 christos case 1339: 970 1.1.1.4 christos case 1340: 971 1.1.1.4 christos case 1341: 972 1.1.1.4 christos case 1342: 973 1.1.1.4 christos case 1343: itype = OR1K32BF_INSN_L_ANDI; goto extract_sfmt_l_mfspr; 974 1.1.1.4 christos case 1344: 975 1.1.1.4 christos case 1345: 976 1.1.1.4 christos case 1346: 977 1.1.1.4 christos case 1347: 978 1.1.1.4 christos case 1348: 979 1.1.1.4 christos case 1349: 980 1.1.1.4 christos case 1350: 981 1.1.1.4 christos case 1351: 982 1.1.1.4 christos case 1352: 983 1.1.1.4 christos case 1353: 984 1.1.1.4 christos case 1354: 985 1.1.1.4 christos case 1355: 986 1.1.1.4 christos case 1356: 987 1.1.1.4 christos case 1357: 988 1.1.1.4 christos case 1358: 989 1.1.1.4 christos case 1359: 990 1.1.1.4 christos case 1360: 991 1.1.1.4 christos case 1361: 992 1.1.1.4 christos case 1362: 993 1.1.1.4 christos case 1363: 994 1.1.1.4 christos case 1364: 995 1.1.1.4 christos case 1365: 996 1.1.1.4 christos case 1366: 997 1.1.1.4 christos case 1367: 998 1.1.1.4 christos case 1368: 999 1.1.1.4 christos case 1369: 1000 1.1.1.4 christos case 1370: 1001 1.1.1.4 christos case 1371: 1002 1.1.1.4 christos case 1372: 1003 1.1.1.4 christos case 1373: 1004 1.1.1.4 christos case 1374: 1005 1.1.1.4 christos case 1375: itype = OR1K32BF_INSN_L_ORI; goto extract_sfmt_l_mfspr; 1006 1.1.1.4 christos case 1376: 1007 1.1.1.4 christos case 1377: 1008 1.1.1.4 christos case 1378: 1009 1.1.1.4 christos case 1379: 1010 1.1.1.4 christos case 1380: 1011 1.1.1.4 christos case 1381: 1012 1.1.1.4 christos case 1382: 1013 1.1.1.4 christos case 1383: 1014 1.1.1.4 christos case 1384: 1015 1.1.1.4 christos case 1385: 1016 1.1.1.4 christos case 1386: 1017 1.1.1.4 christos case 1387: 1018 1.1.1.4 christos case 1388: 1019 1.1.1.4 christos case 1389: 1020 1.1.1.4 christos case 1390: 1021 1.1.1.4 christos case 1391: 1022 1.1.1.4 christos case 1392: 1023 1.1.1.4 christos case 1393: 1024 1.1.1.4 christos case 1394: 1025 1.1.1.4 christos case 1395: 1026 1.1.1.4 christos case 1396: 1027 1.1.1.4 christos case 1397: 1028 1.1.1.4 christos case 1398: 1029 1.1.1.4 christos case 1399: 1030 1.1.1.4 christos case 1400: 1031 1.1.1.4 christos case 1401: 1032 1.1.1.4 christos case 1402: 1033 1.1.1.4 christos case 1403: 1034 1.1.1.4 christos case 1404: 1035 1.1.1.4 christos case 1405: 1036 1.1.1.4 christos case 1406: 1037 1.1.1.4 christos case 1407: itype = OR1K32BF_INSN_L_XORI; goto extract_sfmt_l_xori; 1038 1.1.1.4 christos case 1408: 1039 1.1.1.4 christos case 1409: 1040 1.1.1.4 christos case 1410: 1041 1.1.1.4 christos case 1411: 1042 1.1.1.4 christos case 1412: 1043 1.1.1.4 christos case 1413: 1044 1.1.1.4 christos case 1414: 1045 1.1.1.4 christos case 1415: 1046 1.1.1.4 christos case 1416: 1047 1.1.1.4 christos case 1417: 1048 1.1.1.4 christos case 1418: 1049 1.1.1.4 christos case 1419: 1050 1.1.1.4 christos case 1420: 1051 1.1.1.4 christos case 1421: 1052 1.1.1.4 christos case 1422: 1053 1.1.1.4 christos case 1423: 1054 1.1.1.4 christos case 1424: 1055 1.1.1.4 christos case 1425: 1056 1.1.1.4 christos case 1426: 1057 1.1.1.4 christos case 1427: 1058 1.1.1.4 christos case 1428: 1059 1.1.1.4 christos case 1429: 1060 1.1.1.4 christos case 1430: 1061 1.1.1.4 christos case 1431: 1062 1.1.1.4 christos case 1432: 1063 1.1.1.4 christos case 1433: 1064 1.1.1.4 christos case 1434: 1065 1.1.1.4 christos case 1435: 1066 1.1.1.4 christos case 1436: 1067 1.1.1.4 christos case 1437: 1068 1.1.1.4 christos case 1438: 1069 1.1.1.4 christos case 1439: itype = OR1K32BF_INSN_L_MULI; goto extract_sfmt_l_muli; 1070 1.1.1.4 christos case 1440: 1071 1.1.1.4 christos case 1441: 1072 1.1.1.4 christos case 1442: 1073 1.1.1.4 christos case 1443: 1074 1.1.1.4 christos case 1444: 1075 1.1.1.4 christos case 1445: 1076 1.1.1.4 christos case 1446: 1077 1.1.1.4 christos case 1447: 1078 1.1.1.4 christos case 1448: 1079 1.1.1.4 christos case 1449: 1080 1.1.1.4 christos case 1450: 1081 1.1.1.4 christos case 1451: 1082 1.1.1.4 christos case 1452: 1083 1.1.1.4 christos case 1453: 1084 1.1.1.4 christos case 1454: 1085 1.1.1.4 christos case 1455: 1086 1.1.1.4 christos case 1456: 1087 1.1.1.4 christos case 1457: 1088 1.1.1.4 christos case 1458: 1089 1.1.1.4 christos case 1459: 1090 1.1.1.4 christos case 1460: 1091 1.1.1.4 christos case 1461: 1092 1.1.1.4 christos case 1462: 1093 1.1.1.4 christos case 1463: 1094 1.1.1.4 christos case 1464: 1095 1.1.1.4 christos case 1465: 1096 1.1.1.4 christos case 1466: 1097 1.1.1.4 christos case 1467: 1098 1.1.1.4 christos case 1468: 1099 1.1.1.4 christos case 1469: 1100 1.1.1.4 christos case 1470: 1101 1.1.1.4 christos case 1471: itype = OR1K32BF_INSN_L_MFSPR; goto extract_sfmt_l_mfspr; 1102 1.1.1.4 christos case 1472: 1103 1.1.1.4 christos case 1473: 1104 1.1.1.4 christos case 1474: 1105 1.1.1.4 christos case 1475: 1106 1.1.1.4 christos case 1476: 1107 1.1.1.4 christos case 1477: 1108 1.1.1.4 christos case 1478: 1109 1.1.1.4 christos case 1479: 1110 1.1.1.4 christos case 1480: 1111 1.1.1.4 christos case 1481: 1112 1.1.1.4 christos case 1482: 1113 1.1.1.4 christos case 1483: 1114 1.1.1.4 christos case 1484: 1115 1.1.1.4 christos case 1485: 1116 1.1.1.4 christos case 1486: 1117 1.1.1.4 christos case 1487: 1118 1.1.1.4 christos case 1488: 1119 1.1.1.4 christos case 1489: 1120 1.1.1.4 christos case 1490: 1121 1.1.1.4 christos case 1491: 1122 1.1.1.4 christos case 1492: 1123 1.1.1.4 christos case 1493: 1124 1.1.1.4 christos case 1494: 1125 1.1.1.4 christos case 1495: 1126 1.1.1.4 christos case 1496: 1127 1.1.1.4 christos case 1497: 1128 1.1.1.4 christos case 1498: 1129 1.1.1.4 christos case 1499: 1130 1.1.1.4 christos case 1500: 1131 1.1.1.4 christos case 1501: 1132 1.1.1.4 christos case 1502: 1133 1.1.1.4 christos case 1503: 1134 1.1 christos { 1135 1.1.1.4 christos unsigned int val1 = (((insn >> 6) & (3 << 0))); 1136 1.1.1.4 christos switch (val1) 1137 1.1 christos { 1138 1.1.1.4 christos case 0: 1139 1.1.1.2 christos if ((entire_insn & 0xfc00ffc0) == 0xb8000000) 1140 1.1.1.2 christos { itype = OR1K32BF_INSN_L_SLLI; goto extract_sfmt_l_slli; } 1141 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1142 1.1.1.4 christos case 1: 1143 1.1 christos if ((entire_insn & 0xfc00ffc0) == 0xb8000040) 1144 1.1 christos { itype = OR1K32BF_INSN_L_SRLI; goto extract_sfmt_l_slli; } 1145 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1146 1.1.1.4 christos case 2: 1147 1.1.1.2 christos if ((entire_insn & 0xfc00ffc0) == 0xb8000080) 1148 1.1.1.2 christos { itype = OR1K32BF_INSN_L_SRAI; goto extract_sfmt_l_slli; } 1149 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1150 1.1.1.4 christos case 3: 1151 1.1 christos if ((entire_insn & 0xfc00ffc0) == 0xb80000c0) 1152 1.1 christos { itype = OR1K32BF_INSN_L_RORI; goto extract_sfmt_l_slli; } 1153 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1154 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1155 1.1 christos } 1156 1.1 christos } 1157 1.1.1.4 christos case 1504: 1158 1.1.1.4 christos case 1505: 1159 1.1.1.4 christos case 1506: 1160 1.1.1.4 christos case 1507: 1161 1.1.1.4 christos case 1508: 1162 1.1.1.4 christos case 1509: 1163 1.1.1.4 christos case 1510: 1164 1.1.1.4 christos case 1511: 1165 1.1.1.4 christos case 1512: 1166 1.1.1.4 christos case 1513: 1167 1.1.1.4 christos case 1514: 1168 1.1.1.4 christos case 1515: 1169 1.1.1.4 christos case 1516: 1170 1.1.1.4 christos case 1517: 1171 1.1.1.4 christos case 1518: 1172 1.1.1.4 christos case 1519: 1173 1.1.1.4 christos case 1520: 1174 1.1.1.4 christos case 1521: 1175 1.1.1.4 christos case 1522: 1176 1.1.1.4 christos case 1523: 1177 1.1.1.4 christos case 1524: 1178 1.1.1.4 christos case 1525: 1179 1.1.1.4 christos case 1526: 1180 1.1.1.4 christos case 1527: 1181 1.1.1.4 christos case 1528: 1182 1.1.1.4 christos case 1529: 1183 1.1.1.4 christos case 1530: 1184 1.1.1.4 christos case 1531: 1185 1.1.1.4 christos case 1532: 1186 1.1.1.4 christos case 1533: 1187 1.1.1.4 christos case 1534: 1188 1.1.1.4 christos case 1535: 1189 1.1 christos { 1190 1.1.1.4 christos unsigned int val1 = (((insn >> 21) & (15 << 0))); 1191 1.1.1.4 christos switch (val1) 1192 1.1 christos { 1193 1.1.1.4 christos case 0: 1194 1.1 christos if ((entire_insn & 0xffe00000) == 0xbc000000) 1195 1.1 christos { itype = OR1K32BF_INSN_L_SFEQI; goto extract_sfmt_l_sfgtsi; } 1196 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1197 1.1.1.4 christos case 1: 1198 1.1 christos if ((entire_insn & 0xffe00000) == 0xbc200000) 1199 1.1 christos { itype = OR1K32BF_INSN_L_SFNEI; goto extract_sfmt_l_sfgtsi; } 1200 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1201 1.1.1.4 christos case 2: 1202 1.1 christos if ((entire_insn & 0xffe00000) == 0xbc400000) 1203 1.1 christos { itype = OR1K32BF_INSN_L_SFGTUI; goto extract_sfmt_l_sfgtsi; } 1204 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1205 1.1.1.4 christos case 3: 1206 1.1 christos if ((entire_insn & 0xffe00000) == 0xbc600000) 1207 1.1 christos { itype = OR1K32BF_INSN_L_SFGEUI; goto extract_sfmt_l_sfgtsi; } 1208 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1209 1.1.1.4 christos case 4: 1210 1.1 christos if ((entire_insn & 0xffe00000) == 0xbc800000) 1211 1.1 christos { itype = OR1K32BF_INSN_L_SFLTUI; goto extract_sfmt_l_sfgtsi; } 1212 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1213 1.1.1.4 christos case 5: 1214 1.1 christos if ((entire_insn & 0xffe00000) == 0xbca00000) 1215 1.1 christos { itype = OR1K32BF_INSN_L_SFLEUI; goto extract_sfmt_l_sfgtsi; } 1216 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1217 1.1.1.4 christos case 10: 1218 1.1 christos if ((entire_insn & 0xffe00000) == 0xbd400000) 1219 1.1 christos { itype = OR1K32BF_INSN_L_SFGTSI; goto extract_sfmt_l_sfgtsi; } 1220 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1221 1.1.1.4 christos case 11: 1222 1.1 christos if ((entire_insn & 0xffe00000) == 0xbd600000) 1223 1.1 christos { itype = OR1K32BF_INSN_L_SFGESI; goto extract_sfmt_l_sfgtsi; } 1224 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1225 1.1.1.4 christos case 12: 1226 1.1 christos if ((entire_insn & 0xffe00000) == 0xbd800000) 1227 1.1 christos { itype = OR1K32BF_INSN_L_SFLTSI; goto extract_sfmt_l_sfgtsi; } 1228 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1229 1.1.1.4 christos case 13: 1230 1.1 christos if ((entire_insn & 0xffe00000) == 0xbda00000) 1231 1.1 christos { itype = OR1K32BF_INSN_L_SFLESI; goto extract_sfmt_l_sfgtsi; } 1232 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1233 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1234 1.1 christos } 1235 1.1 christos } 1236 1.1.1.4 christos case 1536: 1237 1.1.1.4 christos case 1537: 1238 1.1.1.4 christos case 1538: 1239 1.1.1.4 christos case 1539: 1240 1.1.1.4 christos case 1540: 1241 1.1.1.4 christos case 1541: 1242 1.1.1.4 christos case 1542: 1243 1.1.1.4 christos case 1543: 1244 1.1.1.4 christos case 1544: 1245 1.1.1.4 christos case 1545: 1246 1.1.1.4 christos case 1546: 1247 1.1.1.4 christos case 1547: 1248 1.1.1.4 christos case 1548: 1249 1.1.1.4 christos case 1549: 1250 1.1.1.4 christos case 1550: 1251 1.1.1.4 christos case 1551: 1252 1.1.1.4 christos case 1552: 1253 1.1.1.4 christos case 1553: 1254 1.1.1.4 christos case 1554: 1255 1.1.1.4 christos case 1555: 1256 1.1.1.4 christos case 1556: 1257 1.1.1.4 christos case 1557: 1258 1.1.1.4 christos case 1558: 1259 1.1.1.4 christos case 1559: 1260 1.1.1.4 christos case 1560: 1261 1.1.1.4 christos case 1561: 1262 1.1.1.4 christos case 1562: 1263 1.1.1.4 christos case 1563: 1264 1.1.1.4 christos case 1564: 1265 1.1.1.4 christos case 1565: 1266 1.1.1.4 christos case 1566: 1267 1.1.1.4 christos case 1567: itype = OR1K32BF_INSN_L_MTSPR; goto extract_sfmt_l_mtspr; 1268 1.1.1.4 christos case 1569: 1269 1.1 christos if ((entire_insn & 0xffe007ff) == 0xc4000001) 1270 1.1 christos { itype = OR1K32BF_INSN_L_MAC; goto extract_sfmt_l_mac; } 1271 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1272 1.1.1.4 christos case 1570: 1273 1.1 christos if ((entire_insn & 0xffe007ff) == 0xc4000002) 1274 1.1 christos { itype = OR1K32BF_INSN_L_MSB; goto extract_sfmt_l_mac; } 1275 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1276 1.1.1.4 christos case 1571: 1277 1.1 christos if ((entire_insn & 0xffe007ff) == 0xc4000003) 1278 1.1 christos { itype = OR1K32BF_INSN_L_MACU; goto extract_sfmt_l_macu; } 1279 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1280 1.1.1.4 christos case 1572: 1281 1.1 christos if ((entire_insn & 0xffe007ff) == 0xc4000004) 1282 1.1 christos { itype = OR1K32BF_INSN_L_MSBU; goto extract_sfmt_l_macu; } 1283 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1284 1.1.1.4 christos case 1600: 1285 1.1.1.2 christos { 1286 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (7 << 0))); 1287 1.1.1.4 christos switch (val1) 1288 1.1.1.2 christos { 1289 1.1.1.4 christos case 0: 1290 1.1.1.2 christos if ((entire_insn & 0xfc0007ff) == 0xc8000000) 1291 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_ADD_S; goto extract_sfmt_lf_add_s; } 1292 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1293 1.1.1.4 christos case 7: 1294 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc80000e0) 1295 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_CUST1_D32; goto extract_sfmt_l_msync; } 1296 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1297 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1298 1.1.1.2 christos } 1299 1.1.1.2 christos } 1300 1.1.1.4 christos case 1601: 1301 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xc8000001) 1302 1.1 christos { itype = OR1K32BF_INSN_LF_SUB_S; goto extract_sfmt_lf_add_s; } 1303 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1304 1.1.1.4 christos case 1602: 1305 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xc8000002) 1306 1.1 christos { itype = OR1K32BF_INSN_LF_MUL_S; goto extract_sfmt_lf_add_s; } 1307 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1308 1.1.1.4 christos case 1603: 1309 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xc8000003) 1310 1.1 christos { itype = OR1K32BF_INSN_LF_DIV_S; goto extract_sfmt_lf_add_s; } 1311 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1312 1.1.1.4 christos case 1604: 1313 1.1 christos if ((entire_insn & 0xfc00ffff) == 0xc8000004) 1314 1.1 christos { itype = OR1K32BF_INSN_LF_ITOF_S; goto extract_sfmt_lf_itof_s; } 1315 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1316 1.1.1.4 christos case 1605: 1317 1.1 christos if ((entire_insn & 0xfc00ffff) == 0xc8000005) 1318 1.1 christos { itype = OR1K32BF_INSN_LF_FTOI_S; goto extract_sfmt_lf_ftoi_s; } 1319 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1320 1.1.1.4 christos case 1606: 1321 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xc8000006) 1322 1.1 christos { itype = OR1K32BF_INSN_LF_REM_S; goto extract_sfmt_lf_add_s; } 1323 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1324 1.1.1.4 christos case 1607: 1325 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xc8000007) 1326 1.1 christos { itype = OR1K32BF_INSN_LF_MADD_S; goto extract_sfmt_lf_madd_s; } 1327 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1328 1.1.1.4 christos case 1608: 1329 1.1.1.2 christos { 1330 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1331 1.1.1.4 christos switch (val1) 1332 1.1.1.2 christos { 1333 1.1.1.4 christos case 0: 1334 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc8000008) 1335 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFEQ_S; goto extract_sfmt_lf_sfeq_s; } 1336 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1337 1.1.1.4 christos case 1: 1338 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc8000028) 1339 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFUEQ_S; goto extract_sfmt_lf_sfeq_s; } 1340 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1341 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1342 1.1.1.2 christos } 1343 1.1.1.2 christos } 1344 1.1.1.4 christos case 1609: 1345 1.1.1.2 christos { 1346 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1347 1.1.1.4 christos switch (val1) 1348 1.1.1.2 christos { 1349 1.1.1.4 christos case 0: 1350 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc8000009) 1351 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFNE_S; goto extract_sfmt_lf_sfeq_s; } 1352 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1353 1.1.1.4 christos case 1: 1354 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc8000029) 1355 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFUNE_S; goto extract_sfmt_lf_sfeq_s; } 1356 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1357 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1358 1.1.1.2 christos } 1359 1.1.1.2 christos } 1360 1.1.1.4 christos case 1610: 1361 1.1.1.2 christos { 1362 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1363 1.1.1.4 christos switch (val1) 1364 1.1.1.2 christos { 1365 1.1.1.4 christos case 0: 1366 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc800000a) 1367 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFGT_S; goto extract_sfmt_lf_sfeq_s; } 1368 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1369 1.1.1.4 christos case 1: 1370 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc800002a) 1371 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFUGT_S; goto extract_sfmt_lf_sfeq_s; } 1372 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1373 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1374 1.1.1.2 christos } 1375 1.1.1.2 christos } 1376 1.1.1.4 christos case 1611: 1377 1.1.1.2 christos { 1378 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1379 1.1.1.4 christos switch (val1) 1380 1.1.1.2 christos { 1381 1.1.1.4 christos case 0: 1382 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc800000b) 1383 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFGE_S; goto extract_sfmt_lf_sfeq_s; } 1384 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1385 1.1.1.4 christos case 1: 1386 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc800002b) 1387 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFUGE_S; goto extract_sfmt_lf_sfeq_s; } 1388 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1389 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1390 1.1.1.2 christos } 1391 1.1.1.2 christos } 1392 1.1.1.4 christos case 1612: 1393 1.1.1.2 christos { 1394 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1395 1.1.1.4 christos switch (val1) 1396 1.1.1.2 christos { 1397 1.1.1.4 christos case 0: 1398 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc800000c) 1399 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFLT_S; goto extract_sfmt_lf_sfeq_s; } 1400 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1401 1.1.1.4 christos case 1: 1402 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc800002c) 1403 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFULT_S; goto extract_sfmt_lf_sfeq_s; } 1404 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1405 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1406 1.1.1.2 christos } 1407 1.1.1.2 christos } 1408 1.1.1.4 christos case 1613: 1409 1.1.1.2 christos { 1410 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1411 1.1.1.4 christos switch (val1) 1412 1.1.1.2 christos { 1413 1.1.1.4 christos case 0: 1414 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc800000d) 1415 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFLE_S; goto extract_sfmt_lf_sfeq_s; } 1416 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1417 1.1.1.4 christos case 1: 1418 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc800002d) 1419 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFULE_S; goto extract_sfmt_lf_sfeq_s; } 1420 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1421 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1422 1.1.1.2 christos } 1423 1.1.1.2 christos } 1424 1.1.1.4 christos case 1614: 1425 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc800002e) 1426 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFUN_S; goto extract_sfmt_lf_sfeq_s; } 1427 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1428 1.1.1.4 christos case 1616: 1429 1.1.1.2 christos { 1430 1.1.1.4 christos unsigned int val1 = (((insn >> 6) & (3 << 0))); 1431 1.1.1.4 christos switch (val1) 1432 1.1.1.2 christos { 1433 1.1.1.4 christos case 0: 1434 1.1.1.2 christos if ((entire_insn & 0xfc0000ff) == 0xc8000010) 1435 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_ADD_D32; goto extract_sfmt_lf_add_d32; } 1436 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1437 1.1.1.4 christos case 3: 1438 1.1.1.2 christos if ((entire_insn & 0xffe007ff) == 0xc80000d0) 1439 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_CUST1_S; goto extract_sfmt_l_msync; } 1440 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1441 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1442 1.1.1.2 christos } 1443 1.1.1.2 christos } 1444 1.1.1.4 christos case 1617: 1445 1.1.1.2 christos if ((entire_insn & 0xfc0000ff) == 0xc8000011) 1446 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SUB_D32; goto extract_sfmt_lf_add_d32; } 1447 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1448 1.1.1.4 christos case 1618: 1449 1.1.1.2 christos if ((entire_insn & 0xfc0000ff) == 0xc8000012) 1450 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_MUL_D32; goto extract_sfmt_lf_add_d32; } 1451 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1452 1.1.1.4 christos case 1619: 1453 1.1.1.2 christos if ((entire_insn & 0xfc0000ff) == 0xc8000013) 1454 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_DIV_D32; goto extract_sfmt_lf_add_d32; } 1455 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1456 1.1.1.4 christos case 1620: 1457 1.1.1.2 christos if ((entire_insn & 0xfc00f9ff) == 0xc8000014) 1458 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_ITOF_D32; goto extract_sfmt_lf_itof_d32; } 1459 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1460 1.1.1.4 christos case 1621: 1461 1.1.1.2 christos if ((entire_insn & 0xfc00f9ff) == 0xc8000015) 1462 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_FTOI_D32; goto extract_sfmt_lf_ftoi_d32; } 1463 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1464 1.1.1.4 christos case 1622: 1465 1.1.1.2 christos if ((entire_insn & 0xfc0000ff) == 0xc8000016) 1466 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_REM_D32; goto extract_sfmt_lf_add_d32; } 1467 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1468 1.1.1.4 christos case 1623: 1469 1.1.1.2 christos if ((entire_insn & 0xfc0000ff) == 0xc8000017) 1470 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_MADD_D32; goto extract_sfmt_lf_madd_d32; } 1471 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1472 1.1.1.4 christos case 1624: 1473 1.1.1.2 christos { 1474 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1475 1.1.1.4 christos switch (val1) 1476 1.1.1.2 christos { 1477 1.1.1.4 christos case 0: 1478 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc8000018) 1479 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFEQ_D32; goto extract_sfmt_lf_sfeq_d32; } 1480 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1481 1.1.1.4 christos case 1: 1482 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc8000038) 1483 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFUEQ_D32; goto extract_sfmt_lf_sfeq_d32; } 1484 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1485 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1486 1.1.1.2 christos } 1487 1.1.1.2 christos } 1488 1.1.1.4 christos case 1625: 1489 1.1.1.2 christos { 1490 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1491 1.1.1.4 christos switch (val1) 1492 1.1.1.2 christos { 1493 1.1.1.4 christos case 0: 1494 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc8000019) 1495 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFNE_D32; goto extract_sfmt_lf_sfeq_d32; } 1496 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1497 1.1.1.4 christos case 1: 1498 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc8000039) 1499 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFUNE_D32; goto extract_sfmt_lf_sfeq_d32; } 1500 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1501 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1502 1.1.1.2 christos } 1503 1.1.1.2 christos } 1504 1.1.1.4 christos case 1626: 1505 1.1.1.2 christos { 1506 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1507 1.1.1.4 christos switch (val1) 1508 1.1.1.2 christos { 1509 1.1.1.4 christos case 0: 1510 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc800001a) 1511 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFGT_D32; goto extract_sfmt_lf_sfeq_d32; } 1512 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1513 1.1.1.4 christos case 1: 1514 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc800003a) 1515 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFUGT_D32; goto extract_sfmt_lf_sfeq_d32; } 1516 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1517 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1518 1.1.1.2 christos } 1519 1.1.1.2 christos } 1520 1.1.1.4 christos case 1627: 1521 1.1.1.2 christos { 1522 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1523 1.1.1.4 christos switch (val1) 1524 1.1.1.2 christos { 1525 1.1.1.4 christos case 0: 1526 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc800001b) 1527 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFGE_D32; goto extract_sfmt_lf_sfeq_d32; } 1528 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1529 1.1.1.4 christos case 1: 1530 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc800003b) 1531 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFUGE_D32; goto extract_sfmt_lf_sfeq_d32; } 1532 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1533 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1534 1.1.1.2 christos } 1535 1.1.1.2 christos } 1536 1.1.1.4 christos case 1628: 1537 1.1.1.2 christos { 1538 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1539 1.1.1.4 christos switch (val1) 1540 1.1.1.2 christos { 1541 1.1.1.4 christos case 0: 1542 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc800001c) 1543 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFLT_D32; goto extract_sfmt_lf_sfeq_d32; } 1544 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1545 1.1.1.4 christos case 1: 1546 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc800003c) 1547 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFULT_D32; goto extract_sfmt_lf_sfeq_d32; } 1548 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1549 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1550 1.1.1.2 christos } 1551 1.1.1.2 christos } 1552 1.1.1.4 christos case 1629: 1553 1.1.1.2 christos { 1554 1.1.1.4 christos unsigned int val1 = (((insn >> 5) & (1 << 0))); 1555 1.1.1.4 christos switch (val1) 1556 1.1.1.2 christos { 1557 1.1.1.4 christos case 0: 1558 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc800001d) 1559 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFLE_D32; goto extract_sfmt_lf_sfeq_d32; } 1560 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1561 1.1.1.4 christos case 1: 1562 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc800003d) 1563 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFULE_D32; goto extract_sfmt_lf_sfeq_d32; } 1564 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1565 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1566 1.1.1.2 christos } 1567 1.1.1.2 christos } 1568 1.1.1.4 christos case 1630: 1569 1.1.1.2 christos if ((entire_insn & 0xffe004ff) == 0xc800003e) 1570 1.1.1.2 christos { itype = OR1K32BF_INSN_LF_SFUN_D32; goto extract_sfmt_lf_sfeq_d32; } 1571 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1572 1.1.1.4 christos case 1632: 1573 1.1.1.4 christos case 1633: 1574 1.1.1.4 christos case 1634: 1575 1.1.1.4 christos case 1635: 1576 1.1.1.4 christos case 1636: 1577 1.1.1.4 christos case 1637: 1578 1.1.1.4 christos case 1638: 1579 1.1.1.4 christos case 1639: 1580 1.1.1.4 christos case 1640: 1581 1.1.1.4 christos case 1641: 1582 1.1.1.4 christos case 1642: 1583 1.1.1.4 christos case 1643: 1584 1.1.1.4 christos case 1644: 1585 1.1.1.4 christos case 1645: 1586 1.1.1.4 christos case 1646: 1587 1.1.1.4 christos case 1647: 1588 1.1.1.4 christos case 1648: 1589 1.1.1.4 christos case 1649: 1590 1.1.1.4 christos case 1650: 1591 1.1.1.4 christos case 1651: 1592 1.1.1.4 christos case 1652: 1593 1.1.1.4 christos case 1653: 1594 1.1.1.4 christos case 1654: 1595 1.1.1.4 christos case 1655: 1596 1.1.1.4 christos case 1656: 1597 1.1.1.4 christos case 1657: 1598 1.1.1.4 christos case 1658: 1599 1.1.1.4 christos case 1659: 1600 1.1.1.4 christos case 1660: 1601 1.1.1.4 christos case 1661: 1602 1.1.1.4 christos case 1662: 1603 1.1.1.4 christos case 1663: itype = OR1K32BF_INSN_L_SWA; goto extract_sfmt_l_swa; 1604 1.1.1.4 christos case 1696: 1605 1.1.1.4 christos case 1697: 1606 1.1.1.4 christos case 1698: 1607 1.1.1.4 christos case 1699: 1608 1.1.1.4 christos case 1700: 1609 1.1.1.4 christos case 1701: 1610 1.1.1.4 christos case 1702: 1611 1.1.1.4 christos case 1703: 1612 1.1.1.4 christos case 1704: 1613 1.1.1.4 christos case 1705: 1614 1.1.1.4 christos case 1706: 1615 1.1.1.4 christos case 1707: 1616 1.1.1.4 christos case 1708: 1617 1.1.1.4 christos case 1709: 1618 1.1.1.4 christos case 1710: 1619 1.1.1.4 christos case 1711: 1620 1.1.1.4 christos case 1712: 1621 1.1.1.4 christos case 1713: 1622 1.1.1.4 christos case 1714: 1623 1.1.1.4 christos case 1715: 1624 1.1.1.4 christos case 1716: 1625 1.1.1.4 christos case 1717: 1626 1.1.1.4 christos case 1718: 1627 1.1.1.4 christos case 1719: 1628 1.1.1.4 christos case 1720: 1629 1.1.1.4 christos case 1721: 1630 1.1.1.4 christos case 1722: 1631 1.1.1.4 christos case 1723: 1632 1.1.1.4 christos case 1724: 1633 1.1.1.4 christos case 1725: 1634 1.1.1.4 christos case 1726: 1635 1.1.1.4 christos case 1727: itype = OR1K32BF_INSN_L_SW; goto extract_sfmt_l_sw; 1636 1.1.1.4 christos case 1728: 1637 1.1.1.4 christos case 1729: 1638 1.1.1.4 christos case 1730: 1639 1.1.1.4 christos case 1731: 1640 1.1.1.4 christos case 1732: 1641 1.1.1.4 christos case 1733: 1642 1.1.1.4 christos case 1734: 1643 1.1.1.4 christos case 1735: 1644 1.1.1.4 christos case 1736: 1645 1.1.1.4 christos case 1737: 1646 1.1.1.4 christos case 1738: 1647 1.1.1.4 christos case 1739: 1648 1.1.1.4 christos case 1740: 1649 1.1.1.4 christos case 1741: 1650 1.1.1.4 christos case 1742: 1651 1.1.1.4 christos case 1743: 1652 1.1.1.4 christos case 1744: 1653 1.1.1.4 christos case 1745: 1654 1.1.1.4 christos case 1746: 1655 1.1.1.4 christos case 1747: 1656 1.1.1.4 christos case 1748: 1657 1.1.1.4 christos case 1749: 1658 1.1.1.4 christos case 1750: 1659 1.1.1.4 christos case 1751: 1660 1.1.1.4 christos case 1752: 1661 1.1.1.4 christos case 1753: 1662 1.1.1.4 christos case 1754: 1663 1.1.1.4 christos case 1755: 1664 1.1.1.4 christos case 1756: 1665 1.1.1.4 christos case 1757: 1666 1.1.1.4 christos case 1758: 1667 1.1.1.4 christos case 1759: itype = OR1K32BF_INSN_L_SB; goto extract_sfmt_l_sb; 1668 1.1.1.4 christos case 1760: 1669 1.1.1.4 christos case 1761: 1670 1.1.1.4 christos case 1762: 1671 1.1.1.4 christos case 1763: 1672 1.1.1.4 christos case 1764: 1673 1.1.1.4 christos case 1765: 1674 1.1.1.4 christos case 1766: 1675 1.1.1.4 christos case 1767: 1676 1.1.1.4 christos case 1768: 1677 1.1.1.4 christos case 1769: 1678 1.1.1.4 christos case 1770: 1679 1.1.1.4 christos case 1771: 1680 1.1.1.4 christos case 1772: 1681 1.1.1.4 christos case 1773: 1682 1.1.1.4 christos case 1774: 1683 1.1.1.4 christos case 1775: 1684 1.1.1.4 christos case 1776: 1685 1.1.1.4 christos case 1777: 1686 1.1.1.4 christos case 1778: 1687 1.1.1.4 christos case 1779: 1688 1.1.1.4 christos case 1780: 1689 1.1.1.4 christos case 1781: 1690 1.1.1.4 christos case 1782: 1691 1.1.1.4 christos case 1783: 1692 1.1.1.4 christos case 1784: 1693 1.1.1.4 christos case 1785: 1694 1.1.1.4 christos case 1786: 1695 1.1.1.4 christos case 1787: 1696 1.1.1.4 christos case 1788: 1697 1.1.1.4 christos case 1789: 1698 1.1.1.4 christos case 1790: 1699 1.1.1.4 christos case 1791: itype = OR1K32BF_INSN_L_SH; goto extract_sfmt_l_sh; 1700 1.1.1.4 christos case 1792: 1701 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe0000000) 1702 1.1 christos { itype = OR1K32BF_INSN_L_ADD; goto extract_sfmt_l_add; } 1703 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1704 1.1.1.4 christos case 1793: 1705 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe0000001) 1706 1.1 christos { itype = OR1K32BF_INSN_L_ADDC; goto extract_sfmt_l_addc; } 1707 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1708 1.1.1.4 christos case 1794: 1709 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe0000002) 1710 1.1 christos { itype = OR1K32BF_INSN_L_SUB; goto extract_sfmt_l_add; } 1711 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1712 1.1.1.4 christos case 1795: 1713 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe0000003) 1714 1.1 christos { itype = OR1K32BF_INSN_L_AND; goto extract_sfmt_l_and; } 1715 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1716 1.1.1.4 christos case 1796: 1717 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe0000004) 1718 1.1 christos { itype = OR1K32BF_INSN_L_OR; goto extract_sfmt_l_and; } 1719 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1720 1.1.1.4 christos case 1797: 1721 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe0000005) 1722 1.1 christos { itype = OR1K32BF_INSN_L_XOR; goto extract_sfmt_l_and; } 1723 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1724 1.1.1.4 christos case 1798: 1725 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe0000306) 1726 1.1 christos { itype = OR1K32BF_INSN_L_MUL; goto extract_sfmt_l_mul; } 1727 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1728 1.1.1.4 christos case 1799: 1729 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe0000307) 1730 1.1 christos { itype = OR1K32BF_INSN_L_MULD; goto extract_sfmt_l_muld; } 1731 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1732 1.1.1.4 christos case 1800: 1733 1.1 christos { 1734 1.1.1.4 christos unsigned int val1 = (((insn >> 6) & (3 << 0))); 1735 1.1.1.4 christos switch (val1) 1736 1.1 christos { 1737 1.1.1.4 christos case 0: 1738 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe0000008) 1739 1.1 christos { itype = OR1K32BF_INSN_L_SLL; goto extract_sfmt_l_sll; } 1740 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1741 1.1.1.4 christos case 1: 1742 1.1.1.2 christos if ((entire_insn & 0xfc0007ff) == 0xe0000048) 1743 1.1.1.2 christos { itype = OR1K32BF_INSN_L_SRL; goto extract_sfmt_l_sll; } 1744 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1745 1.1.1.4 christos case 2: 1746 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe0000088) 1747 1.1 christos { itype = OR1K32BF_INSN_L_SRA; goto extract_sfmt_l_sll; } 1748 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1749 1.1.1.4 christos case 3: 1750 1.1.1.2 christos if ((entire_insn & 0xfc0007ff) == 0xe00000c8) 1751 1.1.1.2 christos { itype = OR1K32BF_INSN_L_ROR; goto extract_sfmt_l_sll; } 1752 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1753 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1754 1.1 christos } 1755 1.1 christos } 1756 1.1.1.4 christos case 1801: 1757 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe0000309) 1758 1.1 christos { itype = OR1K32BF_INSN_L_DIV; goto extract_sfmt_l_div; } 1759 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1760 1.1.1.4 christos case 1802: 1761 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe000030a) 1762 1.1 christos { itype = OR1K32BF_INSN_L_DIVU; goto extract_sfmt_l_divu; } 1763 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1764 1.1.1.4 christos case 1803: 1765 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe000030b) 1766 1.1 christos { itype = OR1K32BF_INSN_L_MULU; goto extract_sfmt_l_mulu; } 1767 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1768 1.1.1.4 christos case 1804: 1769 1.1 christos { 1770 1.1.1.4 christos unsigned int val1 = (((insn >> 6) & (3 << 0))); 1771 1.1.1.4 christos switch (val1) 1772 1.1 christos { 1773 1.1.1.4 christos case 0: 1774 1.1 christos if ((entire_insn & 0xfc00ffff) == 0xe000000c) 1775 1.1 christos { itype = OR1K32BF_INSN_L_EXTHS; goto extract_sfmt_l_exths; } 1776 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1777 1.1.1.4 christos case 1: 1778 1.1.1.2 christos if ((entire_insn & 0xfc00ffff) == 0xe000004c) 1779 1.1.1.2 christos { itype = OR1K32BF_INSN_L_EXTBS; goto extract_sfmt_l_exths; } 1780 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1781 1.1.1.4 christos case 2: 1782 1.1 christos if ((entire_insn & 0xfc00ffff) == 0xe000008c) 1783 1.1 christos { itype = OR1K32BF_INSN_L_EXTHZ; goto extract_sfmt_l_exths; } 1784 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1785 1.1.1.4 christos case 3: 1786 1.1.1.2 christos if ((entire_insn & 0xfc00ffff) == 0xe00000cc) 1787 1.1.1.2 christos { itype = OR1K32BF_INSN_L_EXTBZ; goto extract_sfmt_l_exths; } 1788 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1789 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1790 1.1 christos } 1791 1.1 christos } 1792 1.1.1.4 christos case 1805: 1793 1.1 christos { 1794 1.1.1.4 christos unsigned int val1 = (((insn >> 7) & (3 << 1)) | ((insn >> 6) & (1 << 0))); 1795 1.1.1.4 christos switch (val1) 1796 1.1 christos { 1797 1.1.1.4 christos case 0: 1798 1.1 christos if ((entire_insn & 0xfc00ffff) == 0xe000000d) 1799 1.1 christos { itype = OR1K32BF_INSN_L_EXTWS; goto extract_sfmt_l_exths; } 1800 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1801 1.1.1.4 christos case 1: 1802 1.1.1.2 christos if ((entire_insn & 0xfc00ffff) == 0xe000004d) 1803 1.1.1.2 christos { itype = OR1K32BF_INSN_L_EXTWZ; goto extract_sfmt_l_exths; } 1804 1.1.1.2 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1805 1.1.1.4 christos case 6: 1806 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe000030d) 1807 1.1 christos { itype = OR1K32BF_INSN_L_MULDU; goto extract_sfmt_l_muld; } 1808 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1809 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1810 1.1 christos } 1811 1.1 christos } 1812 1.1.1.4 christos case 1806: 1813 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe000000e) 1814 1.1 christos { itype = OR1K32BF_INSN_L_CMOV; goto extract_sfmt_l_cmov; } 1815 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1816 1.1.1.4 christos case 1807: 1817 1.1 christos { 1818 1.1.1.4 christos unsigned int val1 = (((insn >> 8) & (1 << 0))); 1819 1.1.1.4 christos switch (val1) 1820 1.1 christos { 1821 1.1.1.4 christos case 0: 1822 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe000000f) 1823 1.1 christos { itype = OR1K32BF_INSN_L_FF1; goto extract_sfmt_l_ff1; } 1824 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1825 1.1.1.4 christos case 1: 1826 1.1 christos if ((entire_insn & 0xfc0007ff) == 0xe000010f) 1827 1.1 christos { itype = OR1K32BF_INSN_L_FL1; goto extract_sfmt_l_ff1; } 1828 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1829 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1830 1.1 christos } 1831 1.1 christos } 1832 1.1.1.4 christos case 1824: 1833 1.1 christos { 1834 1.1.1.4 christos unsigned int val1 = (((insn >> 21) & (15 << 0))); 1835 1.1.1.4 christos switch (val1) 1836 1.1 christos { 1837 1.1.1.4 christos case 0: 1838 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe4000000) 1839 1.1 christos { itype = OR1K32BF_INSN_L_SFEQ; goto extract_sfmt_l_sfgts; } 1840 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1841 1.1.1.4 christos case 1: 1842 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe4200000) 1843 1.1 christos { itype = OR1K32BF_INSN_L_SFNE; goto extract_sfmt_l_sfgts; } 1844 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1845 1.1.1.4 christos case 2: 1846 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe4400000) 1847 1.1 christos { itype = OR1K32BF_INSN_L_SFGTU; goto extract_sfmt_l_sfgts; } 1848 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1849 1.1.1.4 christos case 3: 1850 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe4600000) 1851 1.1 christos { itype = OR1K32BF_INSN_L_SFGEU; goto extract_sfmt_l_sfgts; } 1852 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1853 1.1.1.4 christos case 4: 1854 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe4800000) 1855 1.1 christos { itype = OR1K32BF_INSN_L_SFLTU; goto extract_sfmt_l_sfgts; } 1856 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1857 1.1.1.4 christos case 5: 1858 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe4a00000) 1859 1.1 christos { itype = OR1K32BF_INSN_L_SFLEU; goto extract_sfmt_l_sfgts; } 1860 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1861 1.1.1.4 christos case 10: 1862 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe5400000) 1863 1.1 christos { itype = OR1K32BF_INSN_L_SFGTS; goto extract_sfmt_l_sfgts; } 1864 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1865 1.1.1.4 christos case 11: 1866 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe5600000) 1867 1.1 christos { itype = OR1K32BF_INSN_L_SFGES; goto extract_sfmt_l_sfgts; } 1868 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1869 1.1.1.4 christos case 12: 1870 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe5800000) 1871 1.1 christos { itype = OR1K32BF_INSN_L_SFLTS; goto extract_sfmt_l_sfgts; } 1872 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1873 1.1.1.4 christos case 13: 1874 1.1 christos if ((entire_insn & 0xffe007ff) == 0xe5a00000) 1875 1.1 christos { itype = OR1K32BF_INSN_L_SFLES; goto extract_sfmt_l_sfgts; } 1876 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1877 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1878 1.1 christos } 1879 1.1 christos } 1880 1.1.1.4 christos case 1920: 1881 1.1 christos if ((entire_insn & 0xffffffff) == 0xf0000000) 1882 1.1 christos { itype = OR1K32BF_INSN_L_CUST5; goto extract_sfmt_l_msync; } 1883 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1884 1.1.1.4 christos case 1952: 1885 1.1 christos if ((entire_insn & 0xffffffff) == 0xf4000000) 1886 1.1 christos { itype = OR1K32BF_INSN_L_CUST6; goto extract_sfmt_l_msync; } 1887 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1888 1.1.1.4 christos case 1984: 1889 1.1 christos if ((entire_insn & 0xffffffff) == 0xf8000000) 1890 1.1 christos { itype = OR1K32BF_INSN_L_CUST7; goto extract_sfmt_l_msync; } 1891 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1892 1.1.1.4 christos case 2016: 1893 1.1 christos if ((entire_insn & 0xffffffff) == 0xfc000000) 1894 1.1 christos { itype = OR1K32BF_INSN_L_CUST8; goto extract_sfmt_l_msync; } 1895 1.1 christos itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1896 1.1.1.4 christos default: itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty; 1897 1.1 christos } 1898 1.1 christos } 1899 1.1 christos } 1900 1.1 christos 1901 1.1 christos /* The instruction has been decoded, now extract the fields. */ 1902 1.1 christos 1903 1.1 christos extract_sfmt_empty: 1904 1.1 christos { 1905 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 1906 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f 1907 1.1 christos 1908 1.1 christos 1909 1.1 christos /* Record the fields for the semantic handler. */ 1910 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0)); 1911 1.1 christos 1912 1.1 christos #undef FLD 1913 1.1 christos return idesc; 1914 1.1 christos } 1915 1.1 christos 1916 1.1 christos extract_sfmt_l_j: 1917 1.1 christos { 1918 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 1919 1.1 christos CGEN_INSN_WORD insn = entire_insn; 1920 1.1 christos #define FLD(f) abuf->fields.sfmt_l_j.f 1921 1.1 christos USI f_disp26; 1922 1.1 christos 1923 1.1.1.4 christos f_disp26 = ((((EXTRACT_LSB0_SINT (insn, 32, 25, 26)) * (4))) + (pc)); 1924 1.1 christos 1925 1.1 christos /* Record the fields for the semantic handler. */ 1926 1.1 christos FLD (i_disp26) = f_disp26; 1927 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_j", "disp26 0x%x", 'x', f_disp26, (char *) 0)); 1928 1.1 christos 1929 1.1 christos #undef FLD 1930 1.1 christos return idesc; 1931 1.1 christos } 1932 1.1 christos 1933 1.1 christos extract_sfmt_l_adrp: 1934 1.1 christos { 1935 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 1936 1.1 christos CGEN_INSN_WORD insn = entire_insn; 1937 1.1 christos #define FLD(f) abuf->fields.sfmt_l_adrp.f 1938 1.1 christos UINT f_r1; 1939 1.1 christos USI f_disp21; 1940 1.1 christos 1941 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 1942 1.1.1.4 christos f_disp21 = ((((EXTRACT_LSB0_SINT (insn, 32, 20, 21)) + (((SI) (pc) >> (13))))) * (8192)); 1943 1.1 christos 1944 1.1 christos /* Record the fields for the semantic handler. */ 1945 1.1 christos FLD (f_r1) = f_r1; 1946 1.1 christos FLD (i_disp21) = f_disp21; 1947 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_adrp", "f_r1 0x%x", 'x', f_r1, "disp21 0x%x", 'x', f_disp21, (char *) 0)); 1948 1.1 christos 1949 1.1 christos #undef FLD 1950 1.1 christos return idesc; 1951 1.1 christos } 1952 1.1 christos 1953 1.1 christos extract_sfmt_l_jal: 1954 1.1 christos { 1955 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 1956 1.1 christos CGEN_INSN_WORD insn = entire_insn; 1957 1.1 christos #define FLD(f) abuf->fields.sfmt_l_j.f 1958 1.1 christos USI f_disp26; 1959 1.1 christos 1960 1.1.1.4 christos f_disp26 = ((((EXTRACT_LSB0_SINT (insn, 32, 25, 26)) * (4))) + (pc)); 1961 1.1 christos 1962 1.1 christos /* Record the fields for the semantic handler. */ 1963 1.1 christos FLD (i_disp26) = f_disp26; 1964 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_jal", "disp26 0x%x", 'x', f_disp26, (char *) 0)); 1965 1.1 christos 1966 1.1 christos #undef FLD 1967 1.1 christos return idesc; 1968 1.1 christos } 1969 1.1 christos 1970 1.1 christos extract_sfmt_l_jr: 1971 1.1 christos { 1972 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 1973 1.1 christos CGEN_INSN_WORD insn = entire_insn; 1974 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 1975 1.1 christos UINT f_r3; 1976 1.1 christos 1977 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 1978 1.1 christos 1979 1.1 christos /* Record the fields for the semantic handler. */ 1980 1.1 christos FLD (f_r3) = f_r3; 1981 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_jr", "f_r3 0x%x", 'x', f_r3, (char *) 0)); 1982 1.1 christos 1983 1.1 christos #undef FLD 1984 1.1 christos return idesc; 1985 1.1 christos } 1986 1.1 christos 1987 1.1 christos extract_sfmt_l_jalr: 1988 1.1 christos { 1989 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 1990 1.1 christos CGEN_INSN_WORD insn = entire_insn; 1991 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 1992 1.1 christos UINT f_r3; 1993 1.1 christos 1994 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 1995 1.1 christos 1996 1.1 christos /* Record the fields for the semantic handler. */ 1997 1.1 christos FLD (f_r3) = f_r3; 1998 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_jalr", "f_r3 0x%x", 'x', f_r3, (char *) 0)); 1999 1.1 christos 2000 1.1 christos #undef FLD 2001 1.1 christos return idesc; 2002 1.1 christos } 2003 1.1 christos 2004 1.1 christos extract_sfmt_l_bnf: 2005 1.1 christos { 2006 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2007 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2008 1.1 christos #define FLD(f) abuf->fields.sfmt_l_j.f 2009 1.1 christos USI f_disp26; 2010 1.1 christos 2011 1.1.1.4 christos f_disp26 = ((((EXTRACT_LSB0_SINT (insn, 32, 25, 26)) * (4))) + (pc)); 2012 1.1 christos 2013 1.1 christos /* Record the fields for the semantic handler. */ 2014 1.1 christos FLD (i_disp26) = f_disp26; 2015 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_bnf", "disp26 0x%x", 'x', f_disp26, (char *) 0)); 2016 1.1 christos 2017 1.1 christos #undef FLD 2018 1.1 christos return idesc; 2019 1.1 christos } 2020 1.1 christos 2021 1.1 christos extract_sfmt_l_trap: 2022 1.1 christos { 2023 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2024 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f 2025 1.1 christos 2026 1.1 christos 2027 1.1 christos /* Record the fields for the semantic handler. */ 2028 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_trap", (char *) 0)); 2029 1.1 christos 2030 1.1 christos #undef FLD 2031 1.1 christos return idesc; 2032 1.1 christos } 2033 1.1 christos 2034 1.1 christos extract_sfmt_l_msync: 2035 1.1 christos { 2036 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2037 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f 2038 1.1 christos 2039 1.1 christos 2040 1.1 christos /* Record the fields for the semantic handler. */ 2041 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_msync", (char *) 0)); 2042 1.1 christos 2043 1.1 christos #undef FLD 2044 1.1 christos return idesc; 2045 1.1 christos } 2046 1.1 christos 2047 1.1 christos extract_sfmt_l_nop_imm: 2048 1.1 christos { 2049 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2050 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2051 1.1 christos #define FLD(f) abuf->fields.sfmt_l_mfspr.f 2052 1.1 christos UINT f_uimm16; 2053 1.1 christos 2054 1.1 christos f_uimm16 = EXTRACT_LSB0_UINT (insn, 32, 15, 16); 2055 1.1 christos 2056 1.1 christos /* Record the fields for the semantic handler. */ 2057 1.1 christos FLD (f_uimm16) = f_uimm16; 2058 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_nop_imm", "f_uimm16 0x%x", 'x', f_uimm16, (char *) 0)); 2059 1.1 christos 2060 1.1 christos #undef FLD 2061 1.1 christos return idesc; 2062 1.1 christos } 2063 1.1 christos 2064 1.1 christos extract_sfmt_l_movhi: 2065 1.1 christos { 2066 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2067 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2068 1.1 christos #define FLD(f) abuf->fields.sfmt_l_mfspr.f 2069 1.1 christos UINT f_r1; 2070 1.1 christos UINT f_uimm16; 2071 1.1 christos 2072 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2073 1.1 christos f_uimm16 = EXTRACT_LSB0_UINT (insn, 32, 15, 16); 2074 1.1 christos 2075 1.1 christos /* Record the fields for the semantic handler. */ 2076 1.1 christos FLD (f_uimm16) = f_uimm16; 2077 1.1 christos FLD (f_r1) = f_r1; 2078 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_movhi", "f_uimm16 0x%x", 'x', f_uimm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2079 1.1 christos 2080 1.1 christos #undef FLD 2081 1.1 christos return idesc; 2082 1.1 christos } 2083 1.1 christos 2084 1.1 christos extract_sfmt_l_macrc: 2085 1.1 christos { 2086 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2087 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2088 1.1 christos #define FLD(f) abuf->fields.sfmt_l_adrp.f 2089 1.1 christos UINT f_r1; 2090 1.1 christos 2091 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2092 1.1 christos 2093 1.1 christos /* Record the fields for the semantic handler. */ 2094 1.1 christos FLD (f_r1) = f_r1; 2095 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_macrc", "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2096 1.1 christos 2097 1.1 christos #undef FLD 2098 1.1 christos return idesc; 2099 1.1 christos } 2100 1.1 christos 2101 1.1 christos extract_sfmt_l_mfspr: 2102 1.1 christos { 2103 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2104 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2105 1.1 christos #define FLD(f) abuf->fields.sfmt_l_mfspr.f 2106 1.1 christos UINT f_r1; 2107 1.1 christos UINT f_r2; 2108 1.1 christos UINT f_uimm16; 2109 1.1 christos 2110 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2111 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2112 1.1 christos f_uimm16 = EXTRACT_LSB0_UINT (insn, 32, 15, 16); 2113 1.1 christos 2114 1.1 christos /* Record the fields for the semantic handler. */ 2115 1.1 christos FLD (f_r2) = f_r2; 2116 1.1 christos FLD (f_uimm16) = f_uimm16; 2117 1.1 christos FLD (f_r1) = f_r1; 2118 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_mfspr", "f_r2 0x%x", 'x', f_r2, "f_uimm16 0x%x", 'x', f_uimm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2119 1.1 christos 2120 1.1 christos #undef FLD 2121 1.1 christos return idesc; 2122 1.1 christos } 2123 1.1 christos 2124 1.1 christos extract_sfmt_l_mtspr: 2125 1.1 christos { 2126 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2127 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2128 1.1 christos #define FLD(f) abuf->fields.sfmt_l_mtspr.f 2129 1.1 christos UINT f_imm16_25_5; 2130 1.1 christos UINT f_r2; 2131 1.1 christos UINT f_r3; 2132 1.1 christos UINT f_imm16_10_11; 2133 1.1 christos UINT f_uimm16_split; 2134 1.1 christos 2135 1.1 christos f_imm16_25_5 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2136 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2137 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2138 1.1 christos f_imm16_10_11 = EXTRACT_LSB0_UINT (insn, 32, 10, 11); 2139 1.1 christos f_uimm16_split = ((UHI) (UINT) (((((f_imm16_25_5) << (11))) | (f_imm16_10_11)))); 2140 1.1 christos 2141 1.1 christos /* Record the fields for the semantic handler. */ 2142 1.1 christos FLD (f_r2) = f_r2; 2143 1.1 christos FLD (f_r3) = f_r3; 2144 1.1 christos FLD (f_uimm16_split) = f_uimm16_split; 2145 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_mtspr", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_uimm16_split 0x%x", 'x', f_uimm16_split, (char *) 0)); 2146 1.1 christos 2147 1.1 christos #undef FLD 2148 1.1 christos return idesc; 2149 1.1 christos } 2150 1.1 christos 2151 1.1 christos extract_sfmt_l_lwz: 2152 1.1 christos { 2153 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2154 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2155 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2156 1.1 christos UINT f_r1; 2157 1.1 christos UINT f_r2; 2158 1.1 christos INT f_simm16; 2159 1.1 christos 2160 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2161 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2162 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2163 1.1 christos 2164 1.1 christos /* Record the fields for the semantic handler. */ 2165 1.1 christos FLD (f_r2) = f_r2; 2166 1.1 christos FLD (f_simm16) = f_simm16; 2167 1.1 christos FLD (f_r1) = f_r1; 2168 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lwz", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2169 1.1 christos 2170 1.1 christos #undef FLD 2171 1.1 christos return idesc; 2172 1.1 christos } 2173 1.1 christos 2174 1.1 christos extract_sfmt_l_lws: 2175 1.1 christos { 2176 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2177 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2178 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2179 1.1 christos UINT f_r1; 2180 1.1 christos UINT f_r2; 2181 1.1 christos INT f_simm16; 2182 1.1 christos 2183 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2184 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2185 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2186 1.1 christos 2187 1.1 christos /* Record the fields for the semantic handler. */ 2188 1.1 christos FLD (f_r2) = f_r2; 2189 1.1 christos FLD (f_simm16) = f_simm16; 2190 1.1 christos FLD (f_r1) = f_r1; 2191 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lws", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2192 1.1 christos 2193 1.1 christos #undef FLD 2194 1.1 christos return idesc; 2195 1.1 christos } 2196 1.1 christos 2197 1.1 christos extract_sfmt_l_lwa: 2198 1.1 christos { 2199 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2200 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2201 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2202 1.1 christos UINT f_r1; 2203 1.1 christos UINT f_r2; 2204 1.1 christos INT f_simm16; 2205 1.1 christos 2206 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2207 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2208 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2209 1.1 christos 2210 1.1 christos /* Record the fields for the semantic handler. */ 2211 1.1 christos FLD (f_r2) = f_r2; 2212 1.1 christos FLD (f_simm16) = f_simm16; 2213 1.1 christos FLD (f_r1) = f_r1; 2214 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lwa", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2215 1.1 christos 2216 1.1 christos #undef FLD 2217 1.1 christos return idesc; 2218 1.1 christos } 2219 1.1 christos 2220 1.1 christos extract_sfmt_l_lbz: 2221 1.1 christos { 2222 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2223 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2224 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2225 1.1 christos UINT f_r1; 2226 1.1 christos UINT f_r2; 2227 1.1 christos INT f_simm16; 2228 1.1 christos 2229 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2230 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2231 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2232 1.1 christos 2233 1.1 christos /* Record the fields for the semantic handler. */ 2234 1.1 christos FLD (f_r2) = f_r2; 2235 1.1 christos FLD (f_simm16) = f_simm16; 2236 1.1 christos FLD (f_r1) = f_r1; 2237 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lbz", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2238 1.1 christos 2239 1.1 christos #undef FLD 2240 1.1 christos return idesc; 2241 1.1 christos } 2242 1.1 christos 2243 1.1 christos extract_sfmt_l_lbs: 2244 1.1 christos { 2245 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2246 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2247 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2248 1.1 christos UINT f_r1; 2249 1.1 christos UINT f_r2; 2250 1.1 christos INT f_simm16; 2251 1.1 christos 2252 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2253 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2254 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2255 1.1 christos 2256 1.1 christos /* Record the fields for the semantic handler. */ 2257 1.1 christos FLD (f_r2) = f_r2; 2258 1.1 christos FLD (f_simm16) = f_simm16; 2259 1.1 christos FLD (f_r1) = f_r1; 2260 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lbs", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2261 1.1 christos 2262 1.1 christos #undef FLD 2263 1.1 christos return idesc; 2264 1.1 christos } 2265 1.1 christos 2266 1.1 christos extract_sfmt_l_lhz: 2267 1.1 christos { 2268 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2269 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2270 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2271 1.1 christos UINT f_r1; 2272 1.1 christos UINT f_r2; 2273 1.1 christos INT f_simm16; 2274 1.1 christos 2275 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2276 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2277 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2278 1.1 christos 2279 1.1 christos /* Record the fields for the semantic handler. */ 2280 1.1 christos FLD (f_r2) = f_r2; 2281 1.1 christos FLD (f_simm16) = f_simm16; 2282 1.1 christos FLD (f_r1) = f_r1; 2283 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lhz", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2284 1.1 christos 2285 1.1 christos #undef FLD 2286 1.1 christos return idesc; 2287 1.1 christos } 2288 1.1 christos 2289 1.1 christos extract_sfmt_l_lhs: 2290 1.1 christos { 2291 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2292 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2293 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2294 1.1 christos UINT f_r1; 2295 1.1 christos UINT f_r2; 2296 1.1 christos INT f_simm16; 2297 1.1 christos 2298 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2299 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2300 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2301 1.1 christos 2302 1.1 christos /* Record the fields for the semantic handler. */ 2303 1.1 christos FLD (f_r2) = f_r2; 2304 1.1 christos FLD (f_simm16) = f_simm16; 2305 1.1 christos FLD (f_r1) = f_r1; 2306 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lhs", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2307 1.1 christos 2308 1.1 christos #undef FLD 2309 1.1 christos return idesc; 2310 1.1 christos } 2311 1.1 christos 2312 1.1 christos extract_sfmt_l_sw: 2313 1.1 christos { 2314 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2315 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2316 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sw.f 2317 1.1 christos UINT f_imm16_25_5; 2318 1.1 christos UINT f_r2; 2319 1.1 christos UINT f_r3; 2320 1.1 christos UINT f_imm16_10_11; 2321 1.1 christos INT f_simm16_split; 2322 1.1 christos 2323 1.1 christos f_imm16_25_5 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2324 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2325 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2326 1.1 christos f_imm16_10_11 = EXTRACT_LSB0_UINT (insn, 32, 10, 11); 2327 1.1 christos f_simm16_split = ((HI) (UINT) (((((f_imm16_25_5) << (11))) | (f_imm16_10_11)))); 2328 1.1 christos 2329 1.1 christos /* Record the fields for the semantic handler. */ 2330 1.1 christos FLD (f_r2) = f_r2; 2331 1.1 christos FLD (f_r3) = f_r3; 2332 1.1 christos FLD (f_simm16_split) = f_simm16_split; 2333 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sw", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_simm16_split 0x%x", 'x', f_simm16_split, (char *) 0)); 2334 1.1 christos 2335 1.1 christos #undef FLD 2336 1.1 christos return idesc; 2337 1.1 christos } 2338 1.1 christos 2339 1.1 christos extract_sfmt_l_sb: 2340 1.1 christos { 2341 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2342 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2343 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sw.f 2344 1.1 christos UINT f_imm16_25_5; 2345 1.1 christos UINT f_r2; 2346 1.1 christos UINT f_r3; 2347 1.1 christos UINT f_imm16_10_11; 2348 1.1 christos INT f_simm16_split; 2349 1.1 christos 2350 1.1 christos f_imm16_25_5 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2351 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2352 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2353 1.1 christos f_imm16_10_11 = EXTRACT_LSB0_UINT (insn, 32, 10, 11); 2354 1.1 christos f_simm16_split = ((HI) (UINT) (((((f_imm16_25_5) << (11))) | (f_imm16_10_11)))); 2355 1.1 christos 2356 1.1 christos /* Record the fields for the semantic handler. */ 2357 1.1 christos FLD (f_r2) = f_r2; 2358 1.1 christos FLD (f_r3) = f_r3; 2359 1.1 christos FLD (f_simm16_split) = f_simm16_split; 2360 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sb", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_simm16_split 0x%x", 'x', f_simm16_split, (char *) 0)); 2361 1.1 christos 2362 1.1 christos #undef FLD 2363 1.1 christos return idesc; 2364 1.1 christos } 2365 1.1 christos 2366 1.1 christos extract_sfmt_l_sh: 2367 1.1 christos { 2368 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2369 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2370 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sw.f 2371 1.1 christos UINT f_imm16_25_5; 2372 1.1 christos UINT f_r2; 2373 1.1 christos UINT f_r3; 2374 1.1 christos UINT f_imm16_10_11; 2375 1.1 christos INT f_simm16_split; 2376 1.1 christos 2377 1.1 christos f_imm16_25_5 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2378 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2379 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2380 1.1 christos f_imm16_10_11 = EXTRACT_LSB0_UINT (insn, 32, 10, 11); 2381 1.1 christos f_simm16_split = ((HI) (UINT) (((((f_imm16_25_5) << (11))) | (f_imm16_10_11)))); 2382 1.1 christos 2383 1.1 christos /* Record the fields for the semantic handler. */ 2384 1.1 christos FLD (f_r2) = f_r2; 2385 1.1 christos FLD (f_r3) = f_r3; 2386 1.1 christos FLD (f_simm16_split) = f_simm16_split; 2387 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sh", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_simm16_split 0x%x", 'x', f_simm16_split, (char *) 0)); 2388 1.1 christos 2389 1.1 christos #undef FLD 2390 1.1 christos return idesc; 2391 1.1 christos } 2392 1.1 christos 2393 1.1 christos extract_sfmt_l_swa: 2394 1.1 christos { 2395 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2396 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2397 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sw.f 2398 1.1 christos UINT f_imm16_25_5; 2399 1.1 christos UINT f_r2; 2400 1.1 christos UINT f_r3; 2401 1.1 christos UINT f_imm16_10_11; 2402 1.1 christos INT f_simm16_split; 2403 1.1 christos 2404 1.1 christos f_imm16_25_5 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2405 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2406 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2407 1.1 christos f_imm16_10_11 = EXTRACT_LSB0_UINT (insn, 32, 10, 11); 2408 1.1 christos f_simm16_split = ((HI) (UINT) (((((f_imm16_25_5) << (11))) | (f_imm16_10_11)))); 2409 1.1 christos 2410 1.1 christos /* Record the fields for the semantic handler. */ 2411 1.1 christos FLD (f_r2) = f_r2; 2412 1.1 christos FLD (f_r3) = f_r3; 2413 1.1 christos FLD (f_simm16_split) = f_simm16_split; 2414 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_swa", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_simm16_split 0x%x", 'x', f_simm16_split, (char *) 0)); 2415 1.1 christos 2416 1.1 christos #undef FLD 2417 1.1 christos return idesc; 2418 1.1 christos } 2419 1.1 christos 2420 1.1 christos extract_sfmt_l_sll: 2421 1.1 christos { 2422 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2423 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2424 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2425 1.1 christos UINT f_r1; 2426 1.1 christos UINT f_r2; 2427 1.1 christos UINT f_r3; 2428 1.1 christos 2429 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2430 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2431 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2432 1.1 christos 2433 1.1 christos /* Record the fields for the semantic handler. */ 2434 1.1 christos FLD (f_r2) = f_r2; 2435 1.1 christos FLD (f_r3) = f_r3; 2436 1.1 christos FLD (f_r1) = f_r1; 2437 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sll", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2438 1.1 christos 2439 1.1 christos #undef FLD 2440 1.1 christos return idesc; 2441 1.1 christos } 2442 1.1 christos 2443 1.1 christos extract_sfmt_l_slli: 2444 1.1 christos { 2445 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2446 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2447 1.1 christos #define FLD(f) abuf->fields.sfmt_l_slli.f 2448 1.1 christos UINT f_r1; 2449 1.1 christos UINT f_r2; 2450 1.1 christos UINT f_uimm6; 2451 1.1 christos 2452 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2453 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2454 1.1 christos f_uimm6 = EXTRACT_LSB0_UINT (insn, 32, 5, 6); 2455 1.1 christos 2456 1.1 christos /* Record the fields for the semantic handler. */ 2457 1.1 christos FLD (f_r2) = f_r2; 2458 1.1 christos FLD (f_uimm6) = f_uimm6; 2459 1.1 christos FLD (f_r1) = f_r1; 2460 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_slli", "f_r2 0x%x", 'x', f_r2, "f_uimm6 0x%x", 'x', f_uimm6, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2461 1.1 christos 2462 1.1 christos #undef FLD 2463 1.1 christos return idesc; 2464 1.1 christos } 2465 1.1 christos 2466 1.1 christos extract_sfmt_l_and: 2467 1.1 christos { 2468 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2469 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2470 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2471 1.1 christos UINT f_r1; 2472 1.1 christos UINT f_r2; 2473 1.1 christos UINT f_r3; 2474 1.1 christos 2475 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2476 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2477 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2478 1.1 christos 2479 1.1 christos /* Record the fields for the semantic handler. */ 2480 1.1 christos FLD (f_r2) = f_r2; 2481 1.1 christos FLD (f_r3) = f_r3; 2482 1.1 christos FLD (f_r1) = f_r1; 2483 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_and", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2484 1.1 christos 2485 1.1 christos #undef FLD 2486 1.1 christos return idesc; 2487 1.1 christos } 2488 1.1 christos 2489 1.1 christos extract_sfmt_l_add: 2490 1.1 christos { 2491 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2492 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2493 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2494 1.1 christos UINT f_r1; 2495 1.1 christos UINT f_r2; 2496 1.1 christos UINT f_r3; 2497 1.1 christos 2498 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2499 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2500 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2501 1.1 christos 2502 1.1 christos /* Record the fields for the semantic handler. */ 2503 1.1 christos FLD (f_r2) = f_r2; 2504 1.1 christos FLD (f_r3) = f_r3; 2505 1.1 christos FLD (f_r1) = f_r1; 2506 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_add", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2507 1.1 christos 2508 1.1 christos #undef FLD 2509 1.1 christos return idesc; 2510 1.1 christos } 2511 1.1 christos 2512 1.1 christos extract_sfmt_l_addc: 2513 1.1 christos { 2514 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2515 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2516 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2517 1.1 christos UINT f_r1; 2518 1.1 christos UINT f_r2; 2519 1.1 christos UINT f_r3; 2520 1.1 christos 2521 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2522 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2523 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2524 1.1 christos 2525 1.1 christos /* Record the fields for the semantic handler. */ 2526 1.1 christos FLD (f_r2) = f_r2; 2527 1.1 christos FLD (f_r3) = f_r3; 2528 1.1 christos FLD (f_r1) = f_r1; 2529 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_addc", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2530 1.1 christos 2531 1.1 christos #undef FLD 2532 1.1 christos return idesc; 2533 1.1 christos } 2534 1.1 christos 2535 1.1 christos extract_sfmt_l_mul: 2536 1.1 christos { 2537 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2538 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2539 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2540 1.1 christos UINT f_r1; 2541 1.1 christos UINT f_r2; 2542 1.1 christos UINT f_r3; 2543 1.1 christos 2544 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2545 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2546 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2547 1.1 christos 2548 1.1 christos /* Record the fields for the semantic handler. */ 2549 1.1 christos FLD (f_r2) = f_r2; 2550 1.1 christos FLD (f_r3) = f_r3; 2551 1.1 christos FLD (f_r1) = f_r1; 2552 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_mul", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2553 1.1 christos 2554 1.1 christos #undef FLD 2555 1.1 christos return idesc; 2556 1.1 christos } 2557 1.1 christos 2558 1.1 christos extract_sfmt_l_muld: 2559 1.1 christos { 2560 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2561 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2562 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2563 1.1 christos UINT f_r2; 2564 1.1 christos UINT f_r3; 2565 1.1 christos 2566 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2567 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2568 1.1 christos 2569 1.1 christos /* Record the fields for the semantic handler. */ 2570 1.1 christos FLD (f_r2) = f_r2; 2571 1.1 christos FLD (f_r3) = f_r3; 2572 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_muld", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, (char *) 0)); 2573 1.1 christos 2574 1.1 christos #undef FLD 2575 1.1 christos return idesc; 2576 1.1 christos } 2577 1.1 christos 2578 1.1 christos extract_sfmt_l_mulu: 2579 1.1 christos { 2580 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2581 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2582 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2583 1.1 christos UINT f_r1; 2584 1.1 christos UINT f_r2; 2585 1.1 christos UINT f_r3; 2586 1.1 christos 2587 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2588 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2589 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2590 1.1 christos 2591 1.1 christos /* Record the fields for the semantic handler. */ 2592 1.1 christos FLD (f_r2) = f_r2; 2593 1.1 christos FLD (f_r3) = f_r3; 2594 1.1 christos FLD (f_r1) = f_r1; 2595 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_mulu", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2596 1.1 christos 2597 1.1 christos #undef FLD 2598 1.1 christos return idesc; 2599 1.1 christos } 2600 1.1 christos 2601 1.1 christos extract_sfmt_l_div: 2602 1.1 christos { 2603 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2604 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2605 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2606 1.1 christos UINT f_r1; 2607 1.1 christos UINT f_r2; 2608 1.1 christos UINT f_r3; 2609 1.1 christos 2610 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2611 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2612 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2613 1.1 christos 2614 1.1 christos /* Record the fields for the semantic handler. */ 2615 1.1 christos FLD (f_r2) = f_r2; 2616 1.1 christos FLD (f_r3) = f_r3; 2617 1.1 christos FLD (f_r1) = f_r1; 2618 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_div", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2619 1.1 christos 2620 1.1 christos #undef FLD 2621 1.1 christos return idesc; 2622 1.1 christos } 2623 1.1 christos 2624 1.1 christos extract_sfmt_l_divu: 2625 1.1 christos { 2626 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2627 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2628 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2629 1.1 christos UINT f_r1; 2630 1.1 christos UINT f_r2; 2631 1.1 christos UINT f_r3; 2632 1.1 christos 2633 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2634 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2635 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2636 1.1 christos 2637 1.1 christos /* Record the fields for the semantic handler. */ 2638 1.1 christos FLD (f_r2) = f_r2; 2639 1.1 christos FLD (f_r3) = f_r3; 2640 1.1 christos FLD (f_r1) = f_r1; 2641 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_divu", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2642 1.1 christos 2643 1.1 christos #undef FLD 2644 1.1 christos return idesc; 2645 1.1 christos } 2646 1.1 christos 2647 1.1 christos extract_sfmt_l_ff1: 2648 1.1 christos { 2649 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2650 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2651 1.1 christos #define FLD(f) abuf->fields.sfmt_l_slli.f 2652 1.1 christos UINT f_r1; 2653 1.1 christos UINT f_r2; 2654 1.1 christos 2655 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2656 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2657 1.1 christos 2658 1.1 christos /* Record the fields for the semantic handler. */ 2659 1.1 christos FLD (f_r2) = f_r2; 2660 1.1 christos FLD (f_r1) = f_r1; 2661 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_ff1", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2662 1.1 christos 2663 1.1 christos #undef FLD 2664 1.1 christos return idesc; 2665 1.1 christos } 2666 1.1 christos 2667 1.1 christos extract_sfmt_l_xori: 2668 1.1 christos { 2669 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2670 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2671 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2672 1.1 christos UINT f_r1; 2673 1.1 christos UINT f_r2; 2674 1.1 christos INT f_simm16; 2675 1.1 christos 2676 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2677 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2678 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2679 1.1 christos 2680 1.1 christos /* Record the fields for the semantic handler. */ 2681 1.1 christos FLD (f_r2) = f_r2; 2682 1.1 christos FLD (f_simm16) = f_simm16; 2683 1.1 christos FLD (f_r1) = f_r1; 2684 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_xori", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2685 1.1 christos 2686 1.1 christos #undef FLD 2687 1.1 christos return idesc; 2688 1.1 christos } 2689 1.1 christos 2690 1.1 christos extract_sfmt_l_addi: 2691 1.1 christos { 2692 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2693 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2694 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2695 1.1 christos UINT f_r1; 2696 1.1 christos UINT f_r2; 2697 1.1 christos INT f_simm16; 2698 1.1 christos 2699 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2700 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2701 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2702 1.1 christos 2703 1.1 christos /* Record the fields for the semantic handler. */ 2704 1.1 christos FLD (f_r2) = f_r2; 2705 1.1 christos FLD (f_simm16) = f_simm16; 2706 1.1 christos FLD (f_r1) = f_r1; 2707 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_addi", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2708 1.1 christos 2709 1.1 christos #undef FLD 2710 1.1 christos return idesc; 2711 1.1 christos } 2712 1.1 christos 2713 1.1 christos extract_sfmt_l_addic: 2714 1.1 christos { 2715 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2716 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2717 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2718 1.1 christos UINT f_r1; 2719 1.1 christos UINT f_r2; 2720 1.1 christos INT f_simm16; 2721 1.1 christos 2722 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2723 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2724 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2725 1.1 christos 2726 1.1 christos /* Record the fields for the semantic handler. */ 2727 1.1 christos FLD (f_r2) = f_r2; 2728 1.1 christos FLD (f_simm16) = f_simm16; 2729 1.1 christos FLD (f_r1) = f_r1; 2730 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_addic", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2731 1.1 christos 2732 1.1 christos #undef FLD 2733 1.1 christos return idesc; 2734 1.1 christos } 2735 1.1 christos 2736 1.1 christos extract_sfmt_l_muli: 2737 1.1 christos { 2738 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2739 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2740 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2741 1.1 christos UINT f_r1; 2742 1.1 christos UINT f_r2; 2743 1.1 christos INT f_simm16; 2744 1.1 christos 2745 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2746 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2747 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2748 1.1 christos 2749 1.1 christos /* Record the fields for the semantic handler. */ 2750 1.1 christos FLD (f_r2) = f_r2; 2751 1.1 christos FLD (f_simm16) = f_simm16; 2752 1.1 christos FLD (f_r1) = f_r1; 2753 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_muli", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2754 1.1 christos 2755 1.1 christos #undef FLD 2756 1.1 christos return idesc; 2757 1.1 christos } 2758 1.1 christos 2759 1.1 christos extract_sfmt_l_exths: 2760 1.1 christos { 2761 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2762 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2763 1.1 christos #define FLD(f) abuf->fields.sfmt_l_slli.f 2764 1.1 christos UINT f_r1; 2765 1.1 christos UINT f_r2; 2766 1.1 christos 2767 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2768 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2769 1.1 christos 2770 1.1 christos /* Record the fields for the semantic handler. */ 2771 1.1 christos FLD (f_r2) = f_r2; 2772 1.1 christos FLD (f_r1) = f_r1; 2773 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_exths", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2774 1.1 christos 2775 1.1 christos #undef FLD 2776 1.1 christos return idesc; 2777 1.1 christos } 2778 1.1 christos 2779 1.1 christos extract_sfmt_l_cmov: 2780 1.1 christos { 2781 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2782 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2783 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2784 1.1 christos UINT f_r1; 2785 1.1 christos UINT f_r2; 2786 1.1 christos UINT f_r3; 2787 1.1 christos 2788 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2789 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2790 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2791 1.1 christos 2792 1.1 christos /* Record the fields for the semantic handler. */ 2793 1.1 christos FLD (f_r2) = f_r2; 2794 1.1 christos FLD (f_r3) = f_r3; 2795 1.1 christos FLD (f_r1) = f_r1; 2796 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_cmov", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2797 1.1 christos 2798 1.1 christos #undef FLD 2799 1.1 christos return idesc; 2800 1.1 christos } 2801 1.1 christos 2802 1.1 christos extract_sfmt_l_sfgts: 2803 1.1 christos { 2804 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2805 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2806 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2807 1.1 christos UINT f_r2; 2808 1.1 christos UINT f_r3; 2809 1.1 christos 2810 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2811 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2812 1.1 christos 2813 1.1 christos /* Record the fields for the semantic handler. */ 2814 1.1 christos FLD (f_r2) = f_r2; 2815 1.1 christos FLD (f_r3) = f_r3; 2816 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sfgts", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, (char *) 0)); 2817 1.1 christos 2818 1.1 christos #undef FLD 2819 1.1 christos return idesc; 2820 1.1 christos } 2821 1.1 christos 2822 1.1 christos extract_sfmt_l_sfgtsi: 2823 1.1 christos { 2824 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2825 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2826 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2827 1.1 christos UINT f_r2; 2828 1.1 christos INT f_simm16; 2829 1.1 christos 2830 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2831 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2832 1.1 christos 2833 1.1 christos /* Record the fields for the semantic handler. */ 2834 1.1 christos FLD (f_r2) = f_r2; 2835 1.1 christos FLD (f_simm16) = f_simm16; 2836 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sfgtsi", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, (char *) 0)); 2837 1.1 christos 2838 1.1 christos #undef FLD 2839 1.1 christos return idesc; 2840 1.1 christos } 2841 1.1 christos 2842 1.1 christos extract_sfmt_l_mac: 2843 1.1 christos { 2844 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2845 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2846 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2847 1.1 christos UINT f_r2; 2848 1.1 christos UINT f_r3; 2849 1.1 christos 2850 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2851 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2852 1.1 christos 2853 1.1 christos /* Record the fields for the semantic handler. */ 2854 1.1 christos FLD (f_r2) = f_r2; 2855 1.1 christos FLD (f_r3) = f_r3; 2856 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_mac", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, (char *) 0)); 2857 1.1 christos 2858 1.1 christos #undef FLD 2859 1.1 christos return idesc; 2860 1.1 christos } 2861 1.1 christos 2862 1.1 christos extract_sfmt_l_maci: 2863 1.1 christos { 2864 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2865 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2866 1.1 christos #define FLD(f) abuf->fields.sfmt_l_lwz.f 2867 1.1 christos UINT f_r2; 2868 1.1 christos INT f_simm16; 2869 1.1 christos 2870 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2871 1.1 christos f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16); 2872 1.1 christos 2873 1.1 christos /* Record the fields for the semantic handler. */ 2874 1.1 christos FLD (f_r2) = f_r2; 2875 1.1 christos FLD (f_simm16) = f_simm16; 2876 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_maci", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, (char *) 0)); 2877 1.1 christos 2878 1.1 christos #undef FLD 2879 1.1 christos return idesc; 2880 1.1 christos } 2881 1.1 christos 2882 1.1 christos extract_sfmt_l_macu: 2883 1.1 christos { 2884 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2885 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2886 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2887 1.1 christos UINT f_r2; 2888 1.1 christos UINT f_r3; 2889 1.1 christos 2890 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2891 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2892 1.1 christos 2893 1.1 christos /* Record the fields for the semantic handler. */ 2894 1.1 christos FLD (f_r2) = f_r2; 2895 1.1 christos FLD (f_r3) = f_r3; 2896 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_macu", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, (char *) 0)); 2897 1.1 christos 2898 1.1 christos #undef FLD 2899 1.1 christos return idesc; 2900 1.1 christos } 2901 1.1 christos 2902 1.1 christos extract_sfmt_lf_add_s: 2903 1.1 christos { 2904 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2905 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2906 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 2907 1.1 christos UINT f_r1; 2908 1.1 christos UINT f_r2; 2909 1.1 christos UINT f_r3; 2910 1.1 christos 2911 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2912 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2913 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2914 1.1 christos 2915 1.1 christos /* Record the fields for the semantic handler. */ 2916 1.1 christos FLD (f_r2) = f_r2; 2917 1.1 christos FLD (f_r3) = f_r3; 2918 1.1 christos FLD (f_r1) = f_r1; 2919 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_add_s", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2920 1.1 christos 2921 1.1 christos #undef FLD 2922 1.1 christos return idesc; 2923 1.1 christos } 2924 1.1 christos 2925 1.1.1.2 christos extract_sfmt_lf_add_d32: 2926 1.1.1.2 christos { 2927 1.1.1.2 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2928 1.1.1.2 christos CGEN_INSN_WORD insn = entire_insn; 2929 1.1.1.2 christos #define FLD(f) abuf->fields.sfmt_lf_add_d32.f 2930 1.1.1.2 christos UINT f_r1; 2931 1.1.1.2 christos UINT f_r2; 2932 1.1.1.2 christos UINT f_r3; 2933 1.1.1.2 christos UINT f_rdoff_10_1; 2934 1.1.1.2 christos UINT f_raoff_9_1; 2935 1.1.1.2 christos UINT f_rboff_8_1; 2936 1.1.1.2 christos SI f_rdd32; 2937 1.1.1.2 christos SI f_rad32; 2938 1.1.1.2 christos SI f_rbd32; 2939 1.1.1.2 christos 2940 1.1.1.2 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2941 1.1.1.2 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2942 1.1.1.2 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 2943 1.1.1.2 christos f_rdoff_10_1 = EXTRACT_LSB0_UINT (insn, 32, 10, 1); 2944 1.1.1.2 christos f_raoff_9_1 = EXTRACT_LSB0_UINT (insn, 32, 9, 1); 2945 1.1.1.2 christos f_rboff_8_1 = EXTRACT_LSB0_UINT (insn, 32, 8, 1); 2946 1.1.1.2 christos f_rdd32 = ((f_r1) | (((f_rdoff_10_1) << (5)))); 2947 1.1.1.2 christos f_rad32 = ((f_r2) | (((f_raoff_9_1) << (5)))); 2948 1.1.1.2 christos f_rbd32 = ((f_r3) | (((f_rboff_8_1) << (5)))); 2949 1.1.1.2 christos 2950 1.1.1.2 christos /* Record the fields for the semantic handler. */ 2951 1.1.1.2 christos FLD (f_rad32) = f_rad32; 2952 1.1.1.2 christos FLD (f_rbd32) = f_rbd32; 2953 1.1.1.2 christos FLD (f_rdd32) = f_rdd32; 2954 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_add_d32", "f_rad32 0x%x", 'x', f_rad32, "f_rbd32 0x%x", 'x', f_rbd32, "f_rdd32 0x%x", 'x', f_rdd32, (char *) 0)); 2955 1.1.1.2 christos 2956 1.1.1.2 christos #undef FLD 2957 1.1.1.2 christos return idesc; 2958 1.1.1.2 christos } 2959 1.1.1.2 christos 2960 1.1 christos extract_sfmt_lf_itof_s: 2961 1.1 christos { 2962 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2963 1.1 christos CGEN_INSN_WORD insn = entire_insn; 2964 1.1 christos #define FLD(f) abuf->fields.sfmt_l_slli.f 2965 1.1 christos UINT f_r1; 2966 1.1 christos UINT f_r2; 2967 1.1 christos 2968 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2969 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2970 1.1 christos 2971 1.1 christos /* Record the fields for the semantic handler. */ 2972 1.1 christos FLD (f_r2) = f_r2; 2973 1.1 christos FLD (f_r1) = f_r1; 2974 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_itof_s", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 2975 1.1 christos 2976 1.1 christos #undef FLD 2977 1.1 christos return idesc; 2978 1.1 christos } 2979 1.1 christos 2980 1.1.1.2 christos extract_sfmt_lf_itof_d32: 2981 1.1.1.2 christos { 2982 1.1.1.2 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 2983 1.1.1.2 christos CGEN_INSN_WORD insn = entire_insn; 2984 1.1.1.2 christos #define FLD(f) abuf->fields.sfmt_lf_add_d32.f 2985 1.1.1.2 christos UINT f_r1; 2986 1.1.1.2 christos UINT f_r2; 2987 1.1.1.2 christos UINT f_rdoff_10_1; 2988 1.1.1.2 christos UINT f_raoff_9_1; 2989 1.1.1.2 christos SI f_rdd32; 2990 1.1.1.2 christos SI f_rad32; 2991 1.1.1.2 christos 2992 1.1.1.2 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 2993 1.1.1.2 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 2994 1.1.1.2 christos f_rdoff_10_1 = EXTRACT_LSB0_UINT (insn, 32, 10, 1); 2995 1.1.1.2 christos f_raoff_9_1 = EXTRACT_LSB0_UINT (insn, 32, 9, 1); 2996 1.1.1.2 christos f_rdd32 = ((f_r1) | (((f_rdoff_10_1) << (5)))); 2997 1.1.1.2 christos f_rad32 = ((f_r2) | (((f_raoff_9_1) << (5)))); 2998 1.1.1.2 christos 2999 1.1.1.2 christos /* Record the fields for the semantic handler. */ 3000 1.1.1.2 christos FLD (f_rad32) = f_rad32; 3001 1.1.1.2 christos FLD (f_rdd32) = f_rdd32; 3002 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_itof_d32", "f_rad32 0x%x", 'x', f_rad32, "f_rdd32 0x%x", 'x', f_rdd32, (char *) 0)); 3003 1.1.1.2 christos 3004 1.1.1.2 christos #undef FLD 3005 1.1.1.2 christos return idesc; 3006 1.1.1.2 christos } 3007 1.1.1.2 christos 3008 1.1 christos extract_sfmt_lf_ftoi_s: 3009 1.1 christos { 3010 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 3011 1.1 christos CGEN_INSN_WORD insn = entire_insn; 3012 1.1 christos #define FLD(f) abuf->fields.sfmt_l_slli.f 3013 1.1 christos UINT f_r1; 3014 1.1 christos UINT f_r2; 3015 1.1 christos 3016 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 3017 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 3018 1.1 christos 3019 1.1 christos /* Record the fields for the semantic handler. */ 3020 1.1 christos FLD (f_r2) = f_r2; 3021 1.1 christos FLD (f_r1) = f_r1; 3022 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_ftoi_s", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 3023 1.1 christos 3024 1.1 christos #undef FLD 3025 1.1 christos return idesc; 3026 1.1 christos } 3027 1.1 christos 3028 1.1.1.2 christos extract_sfmt_lf_ftoi_d32: 3029 1.1.1.2 christos { 3030 1.1.1.2 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 3031 1.1.1.2 christos CGEN_INSN_WORD insn = entire_insn; 3032 1.1.1.2 christos #define FLD(f) abuf->fields.sfmt_lf_add_d32.f 3033 1.1.1.2 christos UINT f_r1; 3034 1.1.1.2 christos UINT f_r2; 3035 1.1.1.2 christos UINT f_rdoff_10_1; 3036 1.1.1.2 christos UINT f_raoff_9_1; 3037 1.1.1.2 christos SI f_rdd32; 3038 1.1.1.2 christos SI f_rad32; 3039 1.1.1.2 christos 3040 1.1.1.2 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 3041 1.1.1.2 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 3042 1.1.1.2 christos f_rdoff_10_1 = EXTRACT_LSB0_UINT (insn, 32, 10, 1); 3043 1.1.1.2 christos f_raoff_9_1 = EXTRACT_LSB0_UINT (insn, 32, 9, 1); 3044 1.1.1.2 christos f_rdd32 = ((f_r1) | (((f_rdoff_10_1) << (5)))); 3045 1.1.1.2 christos f_rad32 = ((f_r2) | (((f_raoff_9_1) << (5)))); 3046 1.1.1.2 christos 3047 1.1.1.2 christos /* Record the fields for the semantic handler. */ 3048 1.1.1.2 christos FLD (f_rad32) = f_rad32; 3049 1.1.1.2 christos FLD (f_rdd32) = f_rdd32; 3050 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_ftoi_d32", "f_rad32 0x%x", 'x', f_rad32, "f_rdd32 0x%x", 'x', f_rdd32, (char *) 0)); 3051 1.1.1.2 christos 3052 1.1.1.2 christos #undef FLD 3053 1.1.1.2 christos return idesc; 3054 1.1.1.2 christos } 3055 1.1.1.2 christos 3056 1.1.1.2 christos extract_sfmt_lf_sfeq_s: 3057 1.1 christos { 3058 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 3059 1.1 christos CGEN_INSN_WORD insn = entire_insn; 3060 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 3061 1.1 christos UINT f_r2; 3062 1.1 christos UINT f_r3; 3063 1.1 christos 3064 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 3065 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 3066 1.1 christos 3067 1.1 christos /* Record the fields for the semantic handler. */ 3068 1.1 christos FLD (f_r2) = f_r2; 3069 1.1 christos FLD (f_r3) = f_r3; 3070 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_sfeq_s", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, (char *) 0)); 3071 1.1.1.2 christos 3072 1.1.1.2 christos #undef FLD 3073 1.1.1.2 christos return idesc; 3074 1.1.1.2 christos } 3075 1.1.1.2 christos 3076 1.1.1.2 christos extract_sfmt_lf_sfeq_d32: 3077 1.1.1.2 christos { 3078 1.1.1.2 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 3079 1.1.1.2 christos CGEN_INSN_WORD insn = entire_insn; 3080 1.1.1.2 christos #define FLD(f) abuf->fields.sfmt_lf_add_d32.f 3081 1.1.1.2 christos UINT f_r2; 3082 1.1.1.2 christos UINT f_r3; 3083 1.1.1.2 christos UINT f_raoff_9_1; 3084 1.1.1.2 christos UINT f_rboff_8_1; 3085 1.1.1.2 christos SI f_rad32; 3086 1.1.1.2 christos SI f_rbd32; 3087 1.1.1.2 christos 3088 1.1.1.2 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 3089 1.1.1.2 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 3090 1.1.1.2 christos f_raoff_9_1 = EXTRACT_LSB0_UINT (insn, 32, 9, 1); 3091 1.1.1.2 christos f_rboff_8_1 = EXTRACT_LSB0_UINT (insn, 32, 8, 1); 3092 1.1.1.2 christos f_rad32 = ((f_r2) | (((f_raoff_9_1) << (5)))); 3093 1.1.1.2 christos f_rbd32 = ((f_r3) | (((f_rboff_8_1) << (5)))); 3094 1.1.1.2 christos 3095 1.1.1.2 christos /* Record the fields for the semantic handler. */ 3096 1.1.1.2 christos FLD (f_rad32) = f_rad32; 3097 1.1.1.2 christos FLD (f_rbd32) = f_rbd32; 3098 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_sfeq_d32", "f_rad32 0x%x", 'x', f_rad32, "f_rbd32 0x%x", 'x', f_rbd32, (char *) 0)); 3099 1.1 christos 3100 1.1 christos #undef FLD 3101 1.1 christos return idesc; 3102 1.1 christos } 3103 1.1 christos 3104 1.1 christos extract_sfmt_lf_madd_s: 3105 1.1 christos { 3106 1.1 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 3107 1.1 christos CGEN_INSN_WORD insn = entire_insn; 3108 1.1 christos #define FLD(f) abuf->fields.sfmt_l_sll.f 3109 1.1 christos UINT f_r1; 3110 1.1 christos UINT f_r2; 3111 1.1 christos UINT f_r3; 3112 1.1 christos 3113 1.1 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 3114 1.1 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 3115 1.1 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 3116 1.1 christos 3117 1.1 christos /* Record the fields for the semantic handler. */ 3118 1.1 christos FLD (f_r2) = f_r2; 3119 1.1 christos FLD (f_r3) = f_r3; 3120 1.1 christos FLD (f_r1) = f_r1; 3121 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_madd_s", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0)); 3122 1.1 christos 3123 1.1 christos #undef FLD 3124 1.1 christos return idesc; 3125 1.1 christos } 3126 1.1 christos 3127 1.1.1.2 christos extract_sfmt_lf_madd_d32: 3128 1.1.1.2 christos { 3129 1.1.1.2 christos const IDESC *idesc = &or1k32bf_insn_data[itype]; 3130 1.1.1.2 christos CGEN_INSN_WORD insn = entire_insn; 3131 1.1.1.2 christos #define FLD(f) abuf->fields.sfmt_lf_add_d32.f 3132 1.1.1.2 christos UINT f_r1; 3133 1.1.1.2 christos UINT f_r2; 3134 1.1.1.2 christos UINT f_r3; 3135 1.1.1.2 christos UINT f_rdoff_10_1; 3136 1.1.1.2 christos UINT f_raoff_9_1; 3137 1.1.1.2 christos UINT f_rboff_8_1; 3138 1.1.1.2 christos SI f_rdd32; 3139 1.1.1.2 christos SI f_rad32; 3140 1.1.1.2 christos SI f_rbd32; 3141 1.1.1.2 christos 3142 1.1.1.2 christos f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); 3143 1.1.1.2 christos f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); 3144 1.1.1.2 christos f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5); 3145 1.1.1.2 christos f_rdoff_10_1 = EXTRACT_LSB0_UINT (insn, 32, 10, 1); 3146 1.1.1.2 christos f_raoff_9_1 = EXTRACT_LSB0_UINT (insn, 32, 9, 1); 3147 1.1.1.2 christos f_rboff_8_1 = EXTRACT_LSB0_UINT (insn, 32, 8, 1); 3148 1.1.1.2 christos f_rdd32 = ((f_r1) | (((f_rdoff_10_1) << (5)))); 3149 1.1.1.2 christos f_rad32 = ((f_r2) | (((f_raoff_9_1) << (5)))); 3150 1.1.1.2 christos f_rbd32 = ((f_r3) | (((f_rboff_8_1) << (5)))); 3151 1.1.1.2 christos 3152 1.1.1.2 christos /* Record the fields for the semantic handler. */ 3153 1.1.1.2 christos FLD (f_rad32) = f_rad32; 3154 1.1.1.2 christos FLD (f_rbd32) = f_rbd32; 3155 1.1.1.2 christos FLD (f_rdd32) = f_rdd32; 3156 1.1.1.3 christos CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_madd_d32", "f_rad32 0x%x", 'x', f_rad32, "f_rbd32 0x%x", 'x', f_rbd32, "f_rdd32 0x%x", 'x', f_rdd32, (char *) 0)); 3157 1.1.1.2 christos 3158 1.1.1.2 christos #undef FLD 3159 1.1.1.2 christos return idesc; 3160 1.1.1.2 christos } 3161 1.1.1.2 christos 3162 1.1 christos } 3163