1 /* Simulator instruction decoder for m32rxf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
7 This file is part of the GNU Simulators.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25 #define WANT_CPU m32rxf
26 #define WANT_CPU_M32RXF
29 #include "sim-assert.h"
31 /* Insn can't be executed in parallel.
32 Or is that "do NOt Pass to Air defense Radar"? :-) */
35 /* The instruction descriptor array.
36 This is computed at runtime. Space for it is not malloc'd to save a
37 teensy bit of cpu in the decoder. Moving it to malloc space is trivial
38 but won't be done until necessary (we don't currently support the runtime
39 addition of instructions nor an SMP machine with different cpus). */
40 static IDESC m32rxf_insn_data
[M32RXF_INSN_MAX
];
42 /* Commas between elements are contained in the macros.
43 Some of these are conditionally compiled out. */
45 static const struct insn_sem m32rxf_insn_sem
[] =
47 { VIRTUAL_INSN_X_INVALID
, M32RXF_INSN_X_INVALID
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
48 { VIRTUAL_INSN_X_AFTER
, M32RXF_INSN_X_AFTER
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
49 { VIRTUAL_INSN_X_BEFORE
, M32RXF_INSN_X_BEFORE
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
50 { VIRTUAL_INSN_X_CTI_CHAIN
, M32RXF_INSN_X_CTI_CHAIN
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
51 { VIRTUAL_INSN_X_CHAIN
, M32RXF_INSN_X_CHAIN
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
52 { VIRTUAL_INSN_X_BEGIN
, M32RXF_INSN_X_BEGIN
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
53 { M32R_INSN_ADD
, M32RXF_INSN_ADD
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_ADD
, M32RXF_INSN_WRITE_ADD
},
54 { M32R_INSN_ADD3
, M32RXF_INSN_ADD3
, M32RXF_SFMT_ADD3
, NOPAR
, NOPAR
},
55 { M32R_INSN_AND
, M32RXF_INSN_AND
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_AND
, M32RXF_INSN_WRITE_AND
},
56 { M32R_INSN_AND3
, M32RXF_INSN_AND3
, M32RXF_SFMT_AND3
, NOPAR
, NOPAR
},
57 { M32R_INSN_OR
, M32RXF_INSN_OR
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_OR
, M32RXF_INSN_WRITE_OR
},
58 { M32R_INSN_OR3
, M32RXF_INSN_OR3
, M32RXF_SFMT_OR3
, NOPAR
, NOPAR
},
59 { M32R_INSN_XOR
, M32RXF_INSN_XOR
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_XOR
, M32RXF_INSN_WRITE_XOR
},
60 { M32R_INSN_XOR3
, M32RXF_INSN_XOR3
, M32RXF_SFMT_AND3
, NOPAR
, NOPAR
},
61 { M32R_INSN_ADDI
, M32RXF_INSN_ADDI
, M32RXF_SFMT_ADDI
, M32RXF_INSN_PAR_ADDI
, M32RXF_INSN_WRITE_ADDI
},
62 { M32R_INSN_ADDV
, M32RXF_INSN_ADDV
, M32RXF_SFMT_ADDV
, M32RXF_INSN_PAR_ADDV
, M32RXF_INSN_WRITE_ADDV
},
63 { M32R_INSN_ADDV3
, M32RXF_INSN_ADDV3
, M32RXF_SFMT_ADDV3
, NOPAR
, NOPAR
},
64 { M32R_INSN_ADDX
, M32RXF_INSN_ADDX
, M32RXF_SFMT_ADDX
, M32RXF_INSN_PAR_ADDX
, M32RXF_INSN_WRITE_ADDX
},
65 { M32R_INSN_BC8
, M32RXF_INSN_BC8
, M32RXF_SFMT_BC8
, M32RXF_INSN_PAR_BC8
, M32RXF_INSN_WRITE_BC8
},
66 { M32R_INSN_BC24
, M32RXF_INSN_BC24
, M32RXF_SFMT_BC24
, NOPAR
, NOPAR
},
67 { M32R_INSN_BEQ
, M32RXF_INSN_BEQ
, M32RXF_SFMT_BEQ
, NOPAR
, NOPAR
},
68 { M32R_INSN_BEQZ
, M32RXF_INSN_BEQZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
69 { M32R_INSN_BGEZ
, M32RXF_INSN_BGEZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
70 { M32R_INSN_BGTZ
, M32RXF_INSN_BGTZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
71 { M32R_INSN_BLEZ
, M32RXF_INSN_BLEZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
72 { M32R_INSN_BLTZ
, M32RXF_INSN_BLTZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
73 { M32R_INSN_BNEZ
, M32RXF_INSN_BNEZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
74 { M32R_INSN_BL8
, M32RXF_INSN_BL8
, M32RXF_SFMT_BL8
, M32RXF_INSN_PAR_BL8
, M32RXF_INSN_WRITE_BL8
},
75 { M32R_INSN_BL24
, M32RXF_INSN_BL24
, M32RXF_SFMT_BL24
, NOPAR
, NOPAR
},
76 { M32R_INSN_BCL8
, M32RXF_INSN_BCL8
, M32RXF_SFMT_BCL8
, M32RXF_INSN_PAR_BCL8
, M32RXF_INSN_WRITE_BCL8
},
77 { M32R_INSN_BCL24
, M32RXF_INSN_BCL24
, M32RXF_SFMT_BCL24
, NOPAR
, NOPAR
},
78 { M32R_INSN_BNC8
, M32RXF_INSN_BNC8
, M32RXF_SFMT_BC8
, M32RXF_INSN_PAR_BNC8
, M32RXF_INSN_WRITE_BNC8
},
79 { M32R_INSN_BNC24
, M32RXF_INSN_BNC24
, M32RXF_SFMT_BC24
, NOPAR
, NOPAR
},
80 { M32R_INSN_BNE
, M32RXF_INSN_BNE
, M32RXF_SFMT_BEQ
, NOPAR
, NOPAR
},
81 { M32R_INSN_BRA8
, M32RXF_INSN_BRA8
, M32RXF_SFMT_BRA8
, M32RXF_INSN_PAR_BRA8
, M32RXF_INSN_WRITE_BRA8
},
82 { M32R_INSN_BRA24
, M32RXF_INSN_BRA24
, M32RXF_SFMT_BRA24
, NOPAR
, NOPAR
},
83 { M32R_INSN_BNCL8
, M32RXF_INSN_BNCL8
, M32RXF_SFMT_BCL8
, M32RXF_INSN_PAR_BNCL8
, M32RXF_INSN_WRITE_BNCL8
},
84 { M32R_INSN_BNCL24
, M32RXF_INSN_BNCL24
, M32RXF_SFMT_BCL24
, NOPAR
, NOPAR
},
85 { M32R_INSN_CMP
, M32RXF_INSN_CMP
, M32RXF_SFMT_CMP
, M32RXF_INSN_PAR_CMP
, M32RXF_INSN_WRITE_CMP
},
86 { M32R_INSN_CMPI
, M32RXF_INSN_CMPI
, M32RXF_SFMT_CMPI
, NOPAR
, NOPAR
},
87 { M32R_INSN_CMPU
, M32RXF_INSN_CMPU
, M32RXF_SFMT_CMP
, M32RXF_INSN_PAR_CMPU
, M32RXF_INSN_WRITE_CMPU
},
88 { M32R_INSN_CMPUI
, M32RXF_INSN_CMPUI
, M32RXF_SFMT_CMPI
, NOPAR
, NOPAR
},
89 { M32R_INSN_CMPEQ
, M32RXF_INSN_CMPEQ
, M32RXF_SFMT_CMP
, M32RXF_INSN_PAR_CMPEQ
, M32RXF_INSN_WRITE_CMPEQ
},
90 { M32R_INSN_CMPZ
, M32RXF_INSN_CMPZ
, M32RXF_SFMT_CMPZ
, M32RXF_INSN_PAR_CMPZ
, M32RXF_INSN_WRITE_CMPZ
},
91 { M32R_INSN_DIV
, M32RXF_INSN_DIV
, M32RXF_SFMT_DIV
, NOPAR
, NOPAR
},
92 { M32R_INSN_DIVU
, M32RXF_INSN_DIVU
, M32RXF_SFMT_DIV
, NOPAR
, NOPAR
},
93 { M32R_INSN_REM
, M32RXF_INSN_REM
, M32RXF_SFMT_DIV
, NOPAR
, NOPAR
},
94 { M32R_INSN_REMU
, M32RXF_INSN_REMU
, M32RXF_SFMT_DIV
, NOPAR
, NOPAR
},
95 { M32R_INSN_DIVH
, M32RXF_INSN_DIVH
, M32RXF_SFMT_DIV
, NOPAR
, NOPAR
},
96 { M32R_INSN_JC
, M32RXF_INSN_JC
, M32RXF_SFMT_JC
, M32RXF_INSN_PAR_JC
, M32RXF_INSN_WRITE_JC
},
97 { M32R_INSN_JNC
, M32RXF_INSN_JNC
, M32RXF_SFMT_JC
, M32RXF_INSN_PAR_JNC
, M32RXF_INSN_WRITE_JNC
},
98 { M32R_INSN_JL
, M32RXF_INSN_JL
, M32RXF_SFMT_JL
, M32RXF_INSN_PAR_JL
, M32RXF_INSN_WRITE_JL
},
99 { M32R_INSN_JMP
, M32RXF_INSN_JMP
, M32RXF_SFMT_JMP
, M32RXF_INSN_PAR_JMP
, M32RXF_INSN_WRITE_JMP
},
100 { M32R_INSN_LD
, M32RXF_INSN_LD
, M32RXF_SFMT_LD
, M32RXF_INSN_PAR_LD
, M32RXF_INSN_WRITE_LD
},
101 { M32R_INSN_LD_D
, M32RXF_INSN_LD_D
, M32RXF_SFMT_LD_D
, NOPAR
, NOPAR
},
102 { M32R_INSN_LDB
, M32RXF_INSN_LDB
, M32RXF_SFMT_LD
, M32RXF_INSN_PAR_LDB
, M32RXF_INSN_WRITE_LDB
},
103 { M32R_INSN_LDB_D
, M32RXF_INSN_LDB_D
, M32RXF_SFMT_LD_D
, NOPAR
, NOPAR
},
104 { M32R_INSN_LDH
, M32RXF_INSN_LDH
, M32RXF_SFMT_LD
, M32RXF_INSN_PAR_LDH
, M32RXF_INSN_WRITE_LDH
},
105 { M32R_INSN_LDH_D
, M32RXF_INSN_LDH_D
, M32RXF_SFMT_LD_D
, NOPAR
, NOPAR
},
106 { M32R_INSN_LDUB
, M32RXF_INSN_LDUB
, M32RXF_SFMT_LD
, M32RXF_INSN_PAR_LDUB
, M32RXF_INSN_WRITE_LDUB
},
107 { M32R_INSN_LDUB_D
, M32RXF_INSN_LDUB_D
, M32RXF_SFMT_LD_D
, NOPAR
, NOPAR
},
108 { M32R_INSN_LDUH
, M32RXF_INSN_LDUH
, M32RXF_SFMT_LD
, M32RXF_INSN_PAR_LDUH
, M32RXF_INSN_WRITE_LDUH
},
109 { M32R_INSN_LDUH_D
, M32RXF_INSN_LDUH_D
, M32RXF_SFMT_LD_D
, NOPAR
, NOPAR
},
110 { M32R_INSN_LD_PLUS
, M32RXF_INSN_LD_PLUS
, M32RXF_SFMT_LD_PLUS
, M32RXF_INSN_PAR_LD_PLUS
, M32RXF_INSN_WRITE_LD_PLUS
},
111 { M32R_INSN_LD24
, M32RXF_INSN_LD24
, M32RXF_SFMT_LD24
, NOPAR
, NOPAR
},
112 { M32R_INSN_LDI8
, M32RXF_INSN_LDI8
, M32RXF_SFMT_LDI8
, M32RXF_INSN_PAR_LDI8
, M32RXF_INSN_WRITE_LDI8
},
113 { M32R_INSN_LDI16
, M32RXF_INSN_LDI16
, M32RXF_SFMT_LDI16
, NOPAR
, NOPAR
},
114 { M32R_INSN_LOCK
, M32RXF_INSN_LOCK
, M32RXF_SFMT_LOCK
, M32RXF_INSN_PAR_LOCK
, M32RXF_INSN_WRITE_LOCK
},
115 { M32R_INSN_MACHI_A
, M32RXF_INSN_MACHI_A
, M32RXF_SFMT_MACHI_A
, M32RXF_INSN_PAR_MACHI_A
, M32RXF_INSN_WRITE_MACHI_A
},
116 { M32R_INSN_MACLO_A
, M32RXF_INSN_MACLO_A
, M32RXF_SFMT_MACHI_A
, M32RXF_INSN_PAR_MACLO_A
, M32RXF_INSN_WRITE_MACLO_A
},
117 { M32R_INSN_MACWHI_A
, M32RXF_INSN_MACWHI_A
, M32RXF_SFMT_MACHI_A
, M32RXF_INSN_PAR_MACWHI_A
, M32RXF_INSN_WRITE_MACWHI_A
},
118 { M32R_INSN_MACWLO_A
, M32RXF_INSN_MACWLO_A
, M32RXF_SFMT_MACHI_A
, M32RXF_INSN_PAR_MACWLO_A
, M32RXF_INSN_WRITE_MACWLO_A
},
119 { M32R_INSN_MUL
, M32RXF_INSN_MUL
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_MUL
, M32RXF_INSN_WRITE_MUL
},
120 { M32R_INSN_MULHI_A
, M32RXF_INSN_MULHI_A
, M32RXF_SFMT_MULHI_A
, M32RXF_INSN_PAR_MULHI_A
, M32RXF_INSN_WRITE_MULHI_A
},
121 { M32R_INSN_MULLO_A
, M32RXF_INSN_MULLO_A
, M32RXF_SFMT_MULHI_A
, M32RXF_INSN_PAR_MULLO_A
, M32RXF_INSN_WRITE_MULLO_A
},
122 { M32R_INSN_MULWHI_A
, M32RXF_INSN_MULWHI_A
, M32RXF_SFMT_MULHI_A
, M32RXF_INSN_PAR_MULWHI_A
, M32RXF_INSN_WRITE_MULWHI_A
},
123 { M32R_INSN_MULWLO_A
, M32RXF_INSN_MULWLO_A
, M32RXF_SFMT_MULHI_A
, M32RXF_INSN_PAR_MULWLO_A
, M32RXF_INSN_WRITE_MULWLO_A
},
124 { M32R_INSN_MV
, M32RXF_INSN_MV
, M32RXF_SFMT_MV
, M32RXF_INSN_PAR_MV
, M32RXF_INSN_WRITE_MV
},
125 { M32R_INSN_MVFACHI_A
, M32RXF_INSN_MVFACHI_A
, M32RXF_SFMT_MVFACHI_A
, M32RXF_INSN_PAR_MVFACHI_A
, M32RXF_INSN_WRITE_MVFACHI_A
},
126 { M32R_INSN_MVFACLO_A
, M32RXF_INSN_MVFACLO_A
, M32RXF_SFMT_MVFACHI_A
, M32RXF_INSN_PAR_MVFACLO_A
, M32RXF_INSN_WRITE_MVFACLO_A
},
127 { M32R_INSN_MVFACMI_A
, M32RXF_INSN_MVFACMI_A
, M32RXF_SFMT_MVFACHI_A
, M32RXF_INSN_PAR_MVFACMI_A
, M32RXF_INSN_WRITE_MVFACMI_A
},
128 { M32R_INSN_MVFC
, M32RXF_INSN_MVFC
, M32RXF_SFMT_MVFC
, M32RXF_INSN_PAR_MVFC
, M32RXF_INSN_WRITE_MVFC
},
129 { M32R_INSN_MVTACHI_A
, M32RXF_INSN_MVTACHI_A
, M32RXF_SFMT_MVTACHI_A
, M32RXF_INSN_PAR_MVTACHI_A
, M32RXF_INSN_WRITE_MVTACHI_A
},
130 { M32R_INSN_MVTACLO_A
, M32RXF_INSN_MVTACLO_A
, M32RXF_SFMT_MVTACHI_A
, M32RXF_INSN_PAR_MVTACLO_A
, M32RXF_INSN_WRITE_MVTACLO_A
},
131 { M32R_INSN_MVTC
, M32RXF_INSN_MVTC
, M32RXF_SFMT_MVTC
, M32RXF_INSN_PAR_MVTC
, M32RXF_INSN_WRITE_MVTC
},
132 { M32R_INSN_NEG
, M32RXF_INSN_NEG
, M32RXF_SFMT_MV
, M32RXF_INSN_PAR_NEG
, M32RXF_INSN_WRITE_NEG
},
133 { M32R_INSN_NOP
, M32RXF_INSN_NOP
, M32RXF_SFMT_NOP
, M32RXF_INSN_PAR_NOP
, M32RXF_INSN_WRITE_NOP
},
134 { M32R_INSN_NOT
, M32RXF_INSN_NOT
, M32RXF_SFMT_MV
, M32RXF_INSN_PAR_NOT
, M32RXF_INSN_WRITE_NOT
},
135 { M32R_INSN_RAC_DSI
, M32RXF_INSN_RAC_DSI
, M32RXF_SFMT_RAC_DSI
, M32RXF_INSN_PAR_RAC_DSI
, M32RXF_INSN_WRITE_RAC_DSI
},
136 { M32R_INSN_RACH_DSI
, M32RXF_INSN_RACH_DSI
, M32RXF_SFMT_RAC_DSI
, M32RXF_INSN_PAR_RACH_DSI
, M32RXF_INSN_WRITE_RACH_DSI
},
137 { M32R_INSN_RTE
, M32RXF_INSN_RTE
, M32RXF_SFMT_RTE
, M32RXF_INSN_PAR_RTE
, M32RXF_INSN_WRITE_RTE
},
138 { M32R_INSN_SETH
, M32RXF_INSN_SETH
, M32RXF_SFMT_SETH
, NOPAR
, NOPAR
},
139 { M32R_INSN_SLL
, M32RXF_INSN_SLL
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_SLL
, M32RXF_INSN_WRITE_SLL
},
140 { M32R_INSN_SLL3
, M32RXF_INSN_SLL3
, M32RXF_SFMT_SLL3
, NOPAR
, NOPAR
},
141 { M32R_INSN_SLLI
, M32RXF_INSN_SLLI
, M32RXF_SFMT_SLLI
, M32RXF_INSN_PAR_SLLI
, M32RXF_INSN_WRITE_SLLI
},
142 { M32R_INSN_SRA
, M32RXF_INSN_SRA
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_SRA
, M32RXF_INSN_WRITE_SRA
},
143 { M32R_INSN_SRA3
, M32RXF_INSN_SRA3
, M32RXF_SFMT_SLL3
, NOPAR
, NOPAR
},
144 { M32R_INSN_SRAI
, M32RXF_INSN_SRAI
, M32RXF_SFMT_SLLI
, M32RXF_INSN_PAR_SRAI
, M32RXF_INSN_WRITE_SRAI
},
145 { M32R_INSN_SRL
, M32RXF_INSN_SRL
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_SRL
, M32RXF_INSN_WRITE_SRL
},
146 { M32R_INSN_SRL3
, M32RXF_INSN_SRL3
, M32RXF_SFMT_SLL3
, NOPAR
, NOPAR
},
147 { M32R_INSN_SRLI
, M32RXF_INSN_SRLI
, M32RXF_SFMT_SLLI
, M32RXF_INSN_PAR_SRLI
, M32RXF_INSN_WRITE_SRLI
},
148 { M32R_INSN_ST
, M32RXF_INSN_ST
, M32RXF_SFMT_ST
, M32RXF_INSN_PAR_ST
, M32RXF_INSN_WRITE_ST
},
149 { M32R_INSN_ST_D
, M32RXF_INSN_ST_D
, M32RXF_SFMT_ST_D
, NOPAR
, NOPAR
},
150 { M32R_INSN_STB
, M32RXF_INSN_STB
, M32RXF_SFMT_STB
, M32RXF_INSN_PAR_STB
, M32RXF_INSN_WRITE_STB
},
151 { M32R_INSN_STB_D
, M32RXF_INSN_STB_D
, M32RXF_SFMT_STB_D
, NOPAR
, NOPAR
},
152 { M32R_INSN_STH
, M32RXF_INSN_STH
, M32RXF_SFMT_STH
, M32RXF_INSN_PAR_STH
, M32RXF_INSN_WRITE_STH
},
153 { M32R_INSN_STH_D
, M32RXF_INSN_STH_D
, M32RXF_SFMT_STH_D
, NOPAR
, NOPAR
},
154 { M32R_INSN_ST_PLUS
, M32RXF_INSN_ST_PLUS
, M32RXF_SFMT_ST_PLUS
, M32RXF_INSN_PAR_ST_PLUS
, M32RXF_INSN_WRITE_ST_PLUS
},
155 { M32R_INSN_ST_MINUS
, M32RXF_INSN_ST_MINUS
, M32RXF_SFMT_ST_PLUS
, M32RXF_INSN_PAR_ST_MINUS
, M32RXF_INSN_WRITE_ST_MINUS
},
156 { M32R_INSN_SUB
, M32RXF_INSN_SUB
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_SUB
, M32RXF_INSN_WRITE_SUB
},
157 { M32R_INSN_SUBV
, M32RXF_INSN_SUBV
, M32RXF_SFMT_ADDV
, M32RXF_INSN_PAR_SUBV
, M32RXF_INSN_WRITE_SUBV
},
158 { M32R_INSN_SUBX
, M32RXF_INSN_SUBX
, M32RXF_SFMT_ADDX
, M32RXF_INSN_PAR_SUBX
, M32RXF_INSN_WRITE_SUBX
},
159 { M32R_INSN_TRAP
, M32RXF_INSN_TRAP
, M32RXF_SFMT_TRAP
, M32RXF_INSN_PAR_TRAP
, M32RXF_INSN_WRITE_TRAP
},
160 { M32R_INSN_UNLOCK
, M32RXF_INSN_UNLOCK
, M32RXF_SFMT_UNLOCK
, M32RXF_INSN_PAR_UNLOCK
, M32RXF_INSN_WRITE_UNLOCK
},
161 { M32R_INSN_SATB
, M32RXF_INSN_SATB
, M32RXF_SFMT_SATB
, NOPAR
, NOPAR
},
162 { M32R_INSN_SATH
, M32RXF_INSN_SATH
, M32RXF_SFMT_SATB
, NOPAR
, NOPAR
},
163 { M32R_INSN_SAT
, M32RXF_INSN_SAT
, M32RXF_SFMT_SAT
, NOPAR
, NOPAR
},
164 { M32R_INSN_PCMPBZ
, M32RXF_INSN_PCMPBZ
, M32RXF_SFMT_CMPZ
, M32RXF_INSN_PAR_PCMPBZ
, M32RXF_INSN_WRITE_PCMPBZ
},
165 { M32R_INSN_SADD
, M32RXF_INSN_SADD
, M32RXF_SFMT_SADD
, M32RXF_INSN_PAR_SADD
, M32RXF_INSN_WRITE_SADD
},
166 { M32R_INSN_MACWU1
, M32RXF_INSN_MACWU1
, M32RXF_SFMT_MACWU1
, M32RXF_INSN_PAR_MACWU1
, M32RXF_INSN_WRITE_MACWU1
},
167 { M32R_INSN_MSBLO
, M32RXF_INSN_MSBLO
, M32RXF_SFMT_MSBLO
, M32RXF_INSN_PAR_MSBLO
, M32RXF_INSN_WRITE_MSBLO
},
168 { M32R_INSN_MULWU1
, M32RXF_INSN_MULWU1
, M32RXF_SFMT_MULWU1
, M32RXF_INSN_PAR_MULWU1
, M32RXF_INSN_WRITE_MULWU1
},
169 { M32R_INSN_MACLH1
, M32RXF_INSN_MACLH1
, M32RXF_SFMT_MACWU1
, M32RXF_INSN_PAR_MACLH1
, M32RXF_INSN_WRITE_MACLH1
},
170 { M32R_INSN_SC
, M32RXF_INSN_SC
, M32RXF_SFMT_SC
, M32RXF_INSN_PAR_SC
, M32RXF_INSN_WRITE_SC
},
171 { M32R_INSN_SNC
, M32RXF_INSN_SNC
, M32RXF_SFMT_SC
, M32RXF_INSN_PAR_SNC
, M32RXF_INSN_WRITE_SNC
},
174 static const struct insn_sem m32rxf_insn_sem_invalid
= {
175 VIRTUAL_INSN_X_INVALID
, M32RXF_INSN_X_INVALID
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
178 /* Initialize an IDESC from the compile-time computable parts. */
181 init_idesc (SIM_CPU
*cpu
, IDESC
*id
, const struct insn_sem
*t
)
183 const CGEN_INSN
*insn_table
= CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu
))->init_entries
;
187 if ((int) t
->type
<= 0)
188 id
->idata
= & cgen_virtual_insn_table
[- (int) t
->type
];
190 id
->idata
= & insn_table
[t
->type
];
191 id
->attrs
= CGEN_INSN_ATTRS (id
->idata
);
192 /* Oh my god, a magic number. */
193 id
->length
= CGEN_INSN_BITSIZE (id
->idata
) / 8;
195 #if WITH_PROFILE_MODEL_P
196 id
->timing
= & MODEL_TIMING (CPU_MODEL (cpu
)) [t
->index
];
198 SIM_DESC sd
= CPU_STATE (cpu
);
199 SIM_ASSERT (t
->index
== id
->timing
->num
);
203 /* Semantic pointers are initialized elsewhere. */
206 /* Initialize the instruction descriptor table. */
209 m32rxf_init_idesc_table (SIM_CPU
*cpu
)
212 const struct insn_sem
*t
,*tend
;
213 int tabsize
= M32RXF_INSN_MAX
;
214 IDESC
*table
= m32rxf_insn_data
;
216 memset (table
, 0, tabsize
* sizeof (IDESC
));
218 /* First set all entries to the `invalid insn'. */
219 t
= & m32rxf_insn_sem_invalid
;
220 for (id
= table
, tabend
= table
+ tabsize
; id
< tabend
; ++id
)
221 init_idesc (cpu
, id
, t
);
223 /* Now fill in the values for the chosen cpu. */
224 for (t
= m32rxf_insn_sem
, tend
= t
+ sizeof (m32rxf_insn_sem
) / sizeof (*t
);
227 init_idesc (cpu
, & table
[t
->index
], t
);
228 if (t
->par_index
!= NOPAR
)
230 init_idesc (cpu
, &table
[t
->par_index
], t
);
231 table
[t
->index
].par_idesc
= &table
[t
->par_index
];
233 if (t
->par_index
!= NOPAR
)
235 init_idesc (cpu
, &table
[t
->write_index
], t
);
236 table
[t
->par_index
].par_idesc
= &table
[t
->write_index
];
240 /* Link the IDESC table into the cpu. */
241 CPU_IDESC (cpu
) = table
;
244 /* Given an instruction, return a pointer to its IDESC entry. */
247 m32rxf_decode (SIM_CPU
*current_cpu
, IADDR pc
,
248 CGEN_INSN_INT base_insn
, CGEN_INSN_INT entire_insn
,
251 /* Result of decoder. */
252 M32RXF_INSN_TYPE itype
;
255 CGEN_INSN_INT insn
= base_insn
;
258 unsigned int val
= (((insn
>> 8) & (15 << 4)) | ((insn
>> 4) & (15 << 0)));
261 case 0 : itype
= M32RXF_INSN_SUBV
; goto extract_sfmt_addv
;
262 case 1 : itype
= M32RXF_INSN_SUBX
; goto extract_sfmt_addx
;
263 case 2 : itype
= M32RXF_INSN_SUB
; goto extract_sfmt_add
;
264 case 3 : itype
= M32RXF_INSN_NEG
; goto extract_sfmt_mv
;
265 case 4 : itype
= M32RXF_INSN_CMP
; goto extract_sfmt_cmp
;
266 case 5 : itype
= M32RXF_INSN_CMPU
; goto extract_sfmt_cmp
;
267 case 6 : itype
= M32RXF_INSN_CMPEQ
; goto extract_sfmt_cmp
;
270 unsigned int val
= (((insn
>> 8) & (15 << 0)));
273 case 0 : itype
= M32RXF_INSN_CMPZ
; goto extract_sfmt_cmpz
;
274 case 3 : itype
= M32RXF_INSN_PCMPBZ
; goto extract_sfmt_cmpz
;
275 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
278 case 8 : itype
= M32RXF_INSN_ADDV
; goto extract_sfmt_addv
;
279 case 9 : itype
= M32RXF_INSN_ADDX
; goto extract_sfmt_addx
;
280 case 10 : itype
= M32RXF_INSN_ADD
; goto extract_sfmt_add
;
281 case 11 : itype
= M32RXF_INSN_NOT
; goto extract_sfmt_mv
;
282 case 12 : itype
= M32RXF_INSN_AND
; goto extract_sfmt_add
;
283 case 13 : itype
= M32RXF_INSN_XOR
; goto extract_sfmt_add
;
284 case 14 : itype
= M32RXF_INSN_OR
; goto extract_sfmt_add
;
285 case 16 : itype
= M32RXF_INSN_SRL
; goto extract_sfmt_add
;
286 case 18 : itype
= M32RXF_INSN_SRA
; goto extract_sfmt_add
;
287 case 20 : itype
= M32RXF_INSN_SLL
; goto extract_sfmt_add
;
288 case 22 : itype
= M32RXF_INSN_MUL
; goto extract_sfmt_add
;
289 case 24 : itype
= M32RXF_INSN_MV
; goto extract_sfmt_mv
;
290 case 25 : itype
= M32RXF_INSN_MVFC
; goto extract_sfmt_mvfc
;
291 case 26 : itype
= M32RXF_INSN_MVTC
; goto extract_sfmt_mvtc
;
294 unsigned int val
= (((insn
>> 8) & (15 << 0)));
297 case 12 : itype
= M32RXF_INSN_JC
; goto extract_sfmt_jc
;
298 case 13 : itype
= M32RXF_INSN_JNC
; goto extract_sfmt_jc
;
299 case 14 : itype
= M32RXF_INSN_JL
; goto extract_sfmt_jl
;
300 case 15 : itype
= M32RXF_INSN_JMP
; goto extract_sfmt_jmp
;
301 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
304 case 29 : itype
= M32RXF_INSN_RTE
; goto extract_sfmt_rte
;
305 case 31 : itype
= M32RXF_INSN_TRAP
; goto extract_sfmt_trap
;
306 case 32 : itype
= M32RXF_INSN_STB
; goto extract_sfmt_stb
;
307 case 34 : itype
= M32RXF_INSN_STH
; goto extract_sfmt_sth
;
308 case 36 : itype
= M32RXF_INSN_ST
; goto extract_sfmt_st
;
309 case 37 : itype
= M32RXF_INSN_UNLOCK
; goto extract_sfmt_unlock
;
310 case 38 : itype
= M32RXF_INSN_ST_PLUS
; goto extract_sfmt_st_plus
;
311 case 39 : itype
= M32RXF_INSN_ST_MINUS
; goto extract_sfmt_st_plus
;
312 case 40 : itype
= M32RXF_INSN_LDB
; goto extract_sfmt_ld
;
313 case 41 : itype
= M32RXF_INSN_LDUB
; goto extract_sfmt_ld
;
314 case 42 : itype
= M32RXF_INSN_LDH
; goto extract_sfmt_ld
;
315 case 43 : itype
= M32RXF_INSN_LDUH
; goto extract_sfmt_ld
;
316 case 44 : itype
= M32RXF_INSN_LD
; goto extract_sfmt_ld
;
317 case 45 : itype
= M32RXF_INSN_LOCK
; goto extract_sfmt_lock
;
318 case 46 : itype
= M32RXF_INSN_LD_PLUS
; goto extract_sfmt_ld_plus
;
319 case 48 : /* fall through */
320 case 56 : itype
= M32RXF_INSN_MULHI_A
; goto extract_sfmt_mulhi_a
;
321 case 49 : /* fall through */
322 case 57 : itype
= M32RXF_INSN_MULLO_A
; goto extract_sfmt_mulhi_a
;
323 case 50 : /* fall through */
324 case 58 : itype
= M32RXF_INSN_MULWHI_A
; goto extract_sfmt_mulhi_a
;
325 case 51 : /* fall through */
326 case 59 : itype
= M32RXF_INSN_MULWLO_A
; goto extract_sfmt_mulhi_a
;
327 case 52 : /* fall through */
328 case 60 : itype
= M32RXF_INSN_MACHI_A
; goto extract_sfmt_machi_a
;
329 case 53 : /* fall through */
330 case 61 : itype
= M32RXF_INSN_MACLO_A
; goto extract_sfmt_machi_a
;
331 case 54 : /* fall through */
332 case 62 : itype
= M32RXF_INSN_MACWHI_A
; goto extract_sfmt_machi_a
;
333 case 55 : /* fall through */
334 case 63 : itype
= M32RXF_INSN_MACWLO_A
; goto extract_sfmt_machi_a
;
335 case 64 : /* fall through */
336 case 65 : /* fall through */
337 case 66 : /* fall through */
338 case 67 : /* fall through */
339 case 68 : /* fall through */
340 case 69 : /* fall through */
341 case 70 : /* fall through */
342 case 71 : /* fall through */
343 case 72 : /* fall through */
344 case 73 : /* fall through */
345 case 74 : /* fall through */
346 case 75 : /* fall through */
347 case 76 : /* fall through */
348 case 77 : /* fall through */
349 case 78 : /* fall through */
350 case 79 : itype
= M32RXF_INSN_ADDI
; goto extract_sfmt_addi
;
351 case 80 : /* fall through */
352 case 81 : itype
= M32RXF_INSN_SRLI
; goto extract_sfmt_slli
;
353 case 82 : /* fall through */
354 case 83 : itype
= M32RXF_INSN_SRAI
; goto extract_sfmt_slli
;
355 case 84 : /* fall through */
356 case 85 : itype
= M32RXF_INSN_SLLI
; goto extract_sfmt_slli
;
359 unsigned int val
= (((insn
>> 0) & (3 << 0)));
362 case 0 : itype
= M32RXF_INSN_MVTACHI_A
; goto extract_sfmt_mvtachi_a
;
363 case 1 : itype
= M32RXF_INSN_MVTACLO_A
; goto extract_sfmt_mvtachi_a
;
364 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
367 case 88 : itype
= M32RXF_INSN_RACH_DSI
; goto extract_sfmt_rac_dsi
;
368 case 89 : itype
= M32RXF_INSN_RAC_DSI
; goto extract_sfmt_rac_dsi
;
369 case 90 : itype
= M32RXF_INSN_MULWU1
; goto extract_sfmt_mulwu1
;
370 case 91 : itype
= M32RXF_INSN_MACWU1
; goto extract_sfmt_macwu1
;
371 case 92 : itype
= M32RXF_INSN_MACLH1
; goto extract_sfmt_macwu1
;
372 case 93 : itype
= M32RXF_INSN_MSBLO
; goto extract_sfmt_msblo
;
373 case 94 : itype
= M32RXF_INSN_SADD
; goto extract_sfmt_sadd
;
376 unsigned int val
= (((insn
>> 0) & (3 << 0)));
379 case 0 : itype
= M32RXF_INSN_MVFACHI_A
; goto extract_sfmt_mvfachi_a
;
380 case 1 : itype
= M32RXF_INSN_MVFACLO_A
; goto extract_sfmt_mvfachi_a
;
381 case 2 : itype
= M32RXF_INSN_MVFACMI_A
; goto extract_sfmt_mvfachi_a
;
382 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
385 case 96 : /* fall through */
386 case 97 : /* fall through */
387 case 98 : /* fall through */
388 case 99 : /* fall through */
389 case 100 : /* fall through */
390 case 101 : /* fall through */
391 case 102 : /* fall through */
392 case 103 : /* fall through */
393 case 104 : /* fall through */
394 case 105 : /* fall through */
395 case 106 : /* fall through */
396 case 107 : /* fall through */
397 case 108 : /* fall through */
398 case 109 : /* fall through */
399 case 110 : /* fall through */
400 case 111 : itype
= M32RXF_INSN_LDI8
; goto extract_sfmt_ldi8
;
403 unsigned int val
= (((insn
>> 8) & (15 << 0)));
406 case 0 : itype
= M32RXF_INSN_NOP
; goto extract_sfmt_nop
;
407 case 4 : itype
= M32RXF_INSN_SC
; goto extract_sfmt_sc
;
408 case 5 : itype
= M32RXF_INSN_SNC
; goto extract_sfmt_sc
;
409 case 8 : itype
= M32RXF_INSN_BCL8
; goto extract_sfmt_bcl8
;
410 case 9 : itype
= M32RXF_INSN_BNCL8
; goto extract_sfmt_bcl8
;
411 case 12 : itype
= M32RXF_INSN_BC8
; goto extract_sfmt_bc8
;
412 case 13 : itype
= M32RXF_INSN_BNC8
; goto extract_sfmt_bc8
;
413 case 14 : itype
= M32RXF_INSN_BL8
; goto extract_sfmt_bl8
;
414 case 15 : itype
= M32RXF_INSN_BRA8
; goto extract_sfmt_bra8
;
415 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
418 case 113 : /* fall through */
419 case 114 : /* fall through */
420 case 115 : /* fall through */
421 case 116 : /* fall through */
422 case 117 : /* fall through */
423 case 118 : /* fall through */
424 case 119 : /* fall through */
425 case 120 : /* fall through */
426 case 121 : /* fall through */
427 case 122 : /* fall through */
428 case 123 : /* fall through */
429 case 124 : /* fall through */
430 case 125 : /* fall through */
431 case 126 : /* fall through */
434 unsigned int val
= (((insn
>> 8) & (15 << 0)));
437 case 8 : itype
= M32RXF_INSN_BCL8
; goto extract_sfmt_bcl8
;
438 case 9 : itype
= M32RXF_INSN_BNCL8
; goto extract_sfmt_bcl8
;
439 case 12 : itype
= M32RXF_INSN_BC8
; goto extract_sfmt_bc8
;
440 case 13 : itype
= M32RXF_INSN_BNC8
; goto extract_sfmt_bc8
;
441 case 14 : itype
= M32RXF_INSN_BL8
; goto extract_sfmt_bl8
;
442 case 15 : itype
= M32RXF_INSN_BRA8
; goto extract_sfmt_bra8
;
443 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
446 case 132 : itype
= M32RXF_INSN_CMPI
; goto extract_sfmt_cmpi
;
447 case 133 : itype
= M32RXF_INSN_CMPUI
; goto extract_sfmt_cmpi
;
451 /* Must fetch more bits. */
452 insn
= GETIMEMUHI (current_cpu
, pc
+ 2);
453 val
= (((insn
>> 12) & (15 << 0)));
458 unsigned int val
= (((insn
>> 8) & (15 << 0)));
461 case 0 : itype
= M32RXF_INSN_SAT
; goto extract_sfmt_sat
;
462 case 2 : itype
= M32RXF_INSN_SATH
; goto extract_sfmt_satb
;
463 case 3 : itype
= M32RXF_INSN_SATB
; goto extract_sfmt_satb
;
464 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
467 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
470 case 136 : itype
= M32RXF_INSN_ADDV3
; goto extract_sfmt_addv3
;
471 case 138 : itype
= M32RXF_INSN_ADD3
; goto extract_sfmt_add3
;
472 case 140 : itype
= M32RXF_INSN_AND3
; goto extract_sfmt_and3
;
473 case 141 : itype
= M32RXF_INSN_XOR3
; goto extract_sfmt_and3
;
474 case 142 : itype
= M32RXF_INSN_OR3
; goto extract_sfmt_or3
;
478 /* Must fetch more bits. */
479 insn
= GETIMEMUHI (current_cpu
, pc
+ 2);
480 val
= (((insn
>> 12) & (15 << 0)));
485 unsigned int val
= (((insn
>> 8) & (15 << 0)));
490 unsigned int val
= (((insn
>> 4) & (15 << 0)));
493 case 0 : itype
= M32RXF_INSN_DIV
; goto extract_sfmt_div
;
494 case 1 : itype
= M32RXF_INSN_DIVH
; goto extract_sfmt_div
;
495 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
498 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
501 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
504 case 145 : itype
= M32RXF_INSN_DIVU
; goto extract_sfmt_div
;
505 case 146 : itype
= M32RXF_INSN_REM
; goto extract_sfmt_div
;
506 case 147 : itype
= M32RXF_INSN_REMU
; goto extract_sfmt_div
;
507 case 152 : itype
= M32RXF_INSN_SRL3
; goto extract_sfmt_sll3
;
508 case 154 : itype
= M32RXF_INSN_SRA3
; goto extract_sfmt_sll3
;
509 case 156 : itype
= M32RXF_INSN_SLL3
; goto extract_sfmt_sll3
;
510 case 159 : itype
= M32RXF_INSN_LDI16
; goto extract_sfmt_ldi16
;
511 case 160 : itype
= M32RXF_INSN_STB_D
; goto extract_sfmt_stb_d
;
512 case 162 : itype
= M32RXF_INSN_STH_D
; goto extract_sfmt_sth_d
;
513 case 164 : itype
= M32RXF_INSN_ST_D
; goto extract_sfmt_st_d
;
514 case 168 : itype
= M32RXF_INSN_LDB_D
; goto extract_sfmt_ld_d
;
515 case 169 : itype
= M32RXF_INSN_LDUB_D
; goto extract_sfmt_ld_d
;
516 case 170 : itype
= M32RXF_INSN_LDH_D
; goto extract_sfmt_ld_d
;
517 case 171 : itype
= M32RXF_INSN_LDUH_D
; goto extract_sfmt_ld_d
;
518 case 172 : itype
= M32RXF_INSN_LD_D
; goto extract_sfmt_ld_d
;
519 case 176 : itype
= M32RXF_INSN_BEQ
; goto extract_sfmt_beq
;
520 case 177 : itype
= M32RXF_INSN_BNE
; goto extract_sfmt_beq
;
521 case 184 : itype
= M32RXF_INSN_BEQZ
; goto extract_sfmt_beqz
;
522 case 185 : itype
= M32RXF_INSN_BNEZ
; goto extract_sfmt_beqz
;
523 case 186 : itype
= M32RXF_INSN_BLTZ
; goto extract_sfmt_beqz
;
524 case 187 : itype
= M32RXF_INSN_BGEZ
; goto extract_sfmt_beqz
;
525 case 188 : itype
= M32RXF_INSN_BLEZ
; goto extract_sfmt_beqz
;
526 case 189 : itype
= M32RXF_INSN_BGTZ
; goto extract_sfmt_beqz
;
527 case 220 : itype
= M32RXF_INSN_SETH
; goto extract_sfmt_seth
;
528 case 224 : /* fall through */
529 case 225 : /* fall through */
530 case 226 : /* fall through */
531 case 227 : /* fall through */
532 case 228 : /* fall through */
533 case 229 : /* fall through */
534 case 230 : /* fall through */
535 case 231 : /* fall through */
536 case 232 : /* fall through */
537 case 233 : /* fall through */
538 case 234 : /* fall through */
539 case 235 : /* fall through */
540 case 236 : /* fall through */
541 case 237 : /* fall through */
542 case 238 : /* fall through */
543 case 239 : itype
= M32RXF_INSN_LD24
; goto extract_sfmt_ld24
;
544 case 240 : /* fall through */
545 case 241 : /* fall through */
546 case 242 : /* fall through */
547 case 243 : /* fall through */
548 case 244 : /* fall through */
549 case 245 : /* fall through */
550 case 246 : /* fall through */
551 case 247 : /* fall through */
552 case 248 : /* fall through */
553 case 249 : /* fall through */
554 case 250 : /* fall through */
555 case 251 : /* fall through */
556 case 252 : /* fall through */
557 case 253 : /* fall through */
558 case 254 : /* fall through */
561 unsigned int val
= (((insn
>> 8) & (15 << 0)));
564 case 8 : itype
= M32RXF_INSN_BCL24
; goto extract_sfmt_bcl24
;
565 case 9 : itype
= M32RXF_INSN_BNCL24
; goto extract_sfmt_bcl24
;
566 case 12 : itype
= M32RXF_INSN_BC24
; goto extract_sfmt_bc24
;
567 case 13 : itype
= M32RXF_INSN_BNC24
; goto extract_sfmt_bc24
;
568 case 14 : itype
= M32RXF_INSN_BL24
; goto extract_sfmt_bl24
;
569 case 15 : itype
= M32RXF_INSN_BRA24
; goto extract_sfmt_bra24
;
570 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
573 default : itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
578 /* The instruction has been decoded, now extract the fields. */
582 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
583 CGEN_INSN_INT insn
= entire_insn
;
584 #define FLD(f) abuf->fields.fmt_empty.f
587 /* Record the fields for the semantic handler. */
588 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_empty", (char *) 0));
596 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
597 CGEN_INSN_INT insn
= entire_insn
;
598 #define FLD(f) abuf->fields.sfmt_add.f
602 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
603 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
605 /* Record the fields for the semantic handler. */
606 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
607 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
608 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_add", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
610 #if WITH_PROFILE_MODEL_P
611 /* Record the fields for profiling. */
612 if (PROFILE_MODEL_P (current_cpu
))
625 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
626 CGEN_INSN_INT insn
= entire_insn
;
627 #define FLD(f) abuf->fields.sfmt_add3.f
632 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
633 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
634 f_simm16
= EXTRACT_MSB0_INT (insn
, 32, 16, 16);
636 /* Record the fields for the semantic handler. */
637 FLD (f_simm16
) = f_simm16
;
638 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
639 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
640 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_add3", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
642 #if WITH_PROFILE_MODEL_P
643 /* Record the fields for profiling. */
644 if (PROFILE_MODEL_P (current_cpu
))
656 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
657 CGEN_INSN_INT insn
= entire_insn
;
658 #define FLD(f) abuf->fields.sfmt_and3.f
663 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
664 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
665 f_uimm16
= EXTRACT_MSB0_UINT (insn
, 32, 16, 16);
667 /* Record the fields for the semantic handler. */
668 FLD (f_uimm16
) = f_uimm16
;
669 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
670 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
671 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_and3", "f_uimm16 0x%x", 'x', f_uimm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
673 #if WITH_PROFILE_MODEL_P
674 /* Record the fields for profiling. */
675 if (PROFILE_MODEL_P (current_cpu
))
687 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
688 CGEN_INSN_INT insn
= entire_insn
;
689 #define FLD(f) abuf->fields.sfmt_and3.f
694 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
695 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
696 f_uimm16
= EXTRACT_MSB0_UINT (insn
, 32, 16, 16);
698 /* Record the fields for the semantic handler. */
699 FLD (f_uimm16
) = f_uimm16
;
700 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
701 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
702 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_or3", "f_uimm16 0x%x", 'x', f_uimm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
704 #if WITH_PROFILE_MODEL_P
705 /* Record the fields for profiling. */
706 if (PROFILE_MODEL_P (current_cpu
))
718 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
719 CGEN_INSN_INT insn
= entire_insn
;
720 #define FLD(f) abuf->fields.sfmt_addi.f
724 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
725 f_simm8
= EXTRACT_MSB0_INT (insn
, 16, 8, 8);
727 /* Record the fields for the semantic handler. */
728 FLD (f_simm8
) = f_simm8
;
729 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
730 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_addi", "f_simm8 0x%x", 'x', f_simm8
, "dr 0x%x", 'x', f_r1
, (char *) 0));
732 #if WITH_PROFILE_MODEL_P
733 /* Record the fields for profiling. */
734 if (PROFILE_MODEL_P (current_cpu
))
746 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
747 CGEN_INSN_INT insn
= entire_insn
;
748 #define FLD(f) abuf->fields.sfmt_add.f
752 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
753 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
755 /* Record the fields for the semantic handler. */
756 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
757 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
758 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_addv", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
760 #if WITH_PROFILE_MODEL_P
761 /* Record the fields for profiling. */
762 if (PROFILE_MODEL_P (current_cpu
))
775 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
776 CGEN_INSN_INT insn
= entire_insn
;
777 #define FLD(f) abuf->fields.sfmt_add3.f
782 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
783 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
784 f_simm16
= EXTRACT_MSB0_INT (insn
, 32, 16, 16);
786 /* Record the fields for the semantic handler. */
787 FLD (f_simm16
) = f_simm16
;
788 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
789 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
790 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_addv3", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
792 #if WITH_PROFILE_MODEL_P
793 /* Record the fields for profiling. */
794 if (PROFILE_MODEL_P (current_cpu
))
806 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
807 CGEN_INSN_INT insn
= entire_insn
;
808 #define FLD(f) abuf->fields.sfmt_add.f
812 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
813 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
815 /* Record the fields for the semantic handler. */
816 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
817 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
818 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_addx", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
820 #if WITH_PROFILE_MODEL_P
821 /* Record the fields for profiling. */
822 if (PROFILE_MODEL_P (current_cpu
))
835 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
836 CGEN_INSN_INT insn
= entire_insn
;
837 #define FLD(f) abuf->fields.sfmt_bl8.f
840 f_disp8
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (2))) + (((pc
) & (-4))));
842 /* Record the fields for the semantic handler. */
843 FLD (i_disp8
) = f_disp8
;
844 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bc8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
846 #if WITH_PROFILE_MODEL_P
847 /* Record the fields for profiling. */
848 if (PROFILE_MODEL_P (current_cpu
))
858 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
859 CGEN_INSN_INT insn
= entire_insn
;
860 #define FLD(f) abuf->fields.sfmt_bl24.f
863 f_disp24
= ((((EXTRACT_MSB0_INT (insn
, 32, 8, 24)) << (2))) + (pc
));
865 /* Record the fields for the semantic handler. */
866 FLD (i_disp24
) = f_disp24
;
867 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bc24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
869 #if WITH_PROFILE_MODEL_P
870 /* Record the fields for profiling. */
871 if (PROFILE_MODEL_P (current_cpu
))
881 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
882 CGEN_INSN_INT insn
= entire_insn
;
883 #define FLD(f) abuf->fields.sfmt_beq.f
888 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
889 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
890 f_disp16
= ((((EXTRACT_MSB0_INT (insn
, 32, 16, 16)) << (2))) + (pc
));
892 /* Record the fields for the semantic handler. */
893 FLD (i_disp16
) = f_disp16
;
894 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
895 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
896 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_beq", "disp16 0x%x", 'x', f_disp16
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
898 #if WITH_PROFILE_MODEL_P
899 /* Record the fields for profiling. */
900 if (PROFILE_MODEL_P (current_cpu
))
902 FLD (in_src1
) = f_r1
;
903 FLD (in_src2
) = f_r2
;
912 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
913 CGEN_INSN_INT insn
= entire_insn
;
914 #define FLD(f) abuf->fields.sfmt_beq.f
918 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
919 f_disp16
= ((((EXTRACT_MSB0_INT (insn
, 32, 16, 16)) << (2))) + (pc
));
921 /* Record the fields for the semantic handler. */
922 FLD (i_disp16
) = f_disp16
;
923 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
924 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_beqz", "disp16 0x%x", 'x', f_disp16
, "src2 0x%x", 'x', f_r2
, (char *) 0));
926 #if WITH_PROFILE_MODEL_P
927 /* Record the fields for profiling. */
928 if (PROFILE_MODEL_P (current_cpu
))
930 FLD (in_src2
) = f_r2
;
939 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
940 CGEN_INSN_INT insn
= entire_insn
;
941 #define FLD(f) abuf->fields.sfmt_bl8.f
944 f_disp8
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (2))) + (((pc
) & (-4))));
946 /* Record the fields for the semantic handler. */
947 FLD (i_disp8
) = f_disp8
;
948 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bl8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
950 #if WITH_PROFILE_MODEL_P
951 /* Record the fields for profiling. */
952 if (PROFILE_MODEL_P (current_cpu
))
954 FLD (out_h_gr_14
) = 14;
963 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
964 CGEN_INSN_INT insn
= entire_insn
;
965 #define FLD(f) abuf->fields.sfmt_bl24.f
968 f_disp24
= ((((EXTRACT_MSB0_INT (insn
, 32, 8, 24)) << (2))) + (pc
));
970 /* Record the fields for the semantic handler. */
971 FLD (i_disp24
) = f_disp24
;
972 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bl24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
974 #if WITH_PROFILE_MODEL_P
975 /* Record the fields for profiling. */
976 if (PROFILE_MODEL_P (current_cpu
))
978 FLD (out_h_gr_14
) = 14;
987 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
988 CGEN_INSN_INT insn
= entire_insn
;
989 #define FLD(f) abuf->fields.sfmt_bl8.f
992 f_disp8
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (2))) + (((pc
) & (-4))));
994 /* Record the fields for the semantic handler. */
995 FLD (i_disp8
) = f_disp8
;
996 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bcl8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
998 #if WITH_PROFILE_MODEL_P
999 /* Record the fields for profiling. */
1000 if (PROFILE_MODEL_P (current_cpu
))
1002 FLD (out_h_gr_14
) = 14;
1011 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1012 CGEN_INSN_INT insn
= entire_insn
;
1013 #define FLD(f) abuf->fields.sfmt_bl24.f
1016 f_disp24
= ((((EXTRACT_MSB0_INT (insn
, 32, 8, 24)) << (2))) + (pc
));
1018 /* Record the fields for the semantic handler. */
1019 FLD (i_disp24
) = f_disp24
;
1020 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bcl24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1022 #if WITH_PROFILE_MODEL_P
1023 /* Record the fields for profiling. */
1024 if (PROFILE_MODEL_P (current_cpu
))
1026 FLD (out_h_gr_14
) = 14;
1035 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1036 CGEN_INSN_INT insn
= entire_insn
;
1037 #define FLD(f) abuf->fields.sfmt_bl8.f
1040 f_disp8
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (2))) + (((pc
) & (-4))));
1042 /* Record the fields for the semantic handler. */
1043 FLD (i_disp8
) = f_disp8
;
1044 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bra8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
1046 #if WITH_PROFILE_MODEL_P
1047 /* Record the fields for profiling. */
1048 if (PROFILE_MODEL_P (current_cpu
))
1058 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1059 CGEN_INSN_INT insn
= entire_insn
;
1060 #define FLD(f) abuf->fields.sfmt_bl24.f
1063 f_disp24
= ((((EXTRACT_MSB0_INT (insn
, 32, 8, 24)) << (2))) + (pc
));
1065 /* Record the fields for the semantic handler. */
1066 FLD (i_disp24
) = f_disp24
;
1067 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bra24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1069 #if WITH_PROFILE_MODEL_P
1070 /* Record the fields for profiling. */
1071 if (PROFILE_MODEL_P (current_cpu
))
1081 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1082 CGEN_INSN_INT insn
= entire_insn
;
1083 #define FLD(f) abuf->fields.sfmt_st_plus.f
1087 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1088 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1090 /* Record the fields for the semantic handler. */
1091 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1092 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1093 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_cmp", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1095 #if WITH_PROFILE_MODEL_P
1096 /* Record the fields for profiling. */
1097 if (PROFILE_MODEL_P (current_cpu
))
1099 FLD (in_src1
) = f_r1
;
1100 FLD (in_src2
) = f_r2
;
1109 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1110 CGEN_INSN_INT insn
= entire_insn
;
1111 #define FLD(f) abuf->fields.sfmt_st_d.f
1115 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1116 f_simm16
= EXTRACT_MSB0_INT (insn
, 32, 16, 16);
1118 /* Record the fields for the semantic handler. */
1119 FLD (f_simm16
) = f_simm16
;
1120 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1121 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_cmpi", "f_simm16 0x%x", 'x', f_simm16
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1123 #if WITH_PROFILE_MODEL_P
1124 /* Record the fields for profiling. */
1125 if (PROFILE_MODEL_P (current_cpu
))
1127 FLD (in_src2
) = f_r2
;
1136 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1137 CGEN_INSN_INT insn
= entire_insn
;
1138 #define FLD(f) abuf->fields.sfmt_st_plus.f
1141 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1143 /* Record the fields for the semantic handler. */
1144 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1145 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_cmpz", "src2 0x%x", 'x', f_r2
, (char *) 0));
1147 #if WITH_PROFILE_MODEL_P
1148 /* Record the fields for profiling. */
1149 if (PROFILE_MODEL_P (current_cpu
))
1151 FLD (in_src2
) = f_r2
;
1160 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1161 CGEN_INSN_INT insn
= entire_insn
;
1162 #define FLD(f) abuf->fields.sfmt_add.f
1166 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1167 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1169 /* Record the fields for the semantic handler. */
1170 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1171 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1172 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_div", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1174 #if WITH_PROFILE_MODEL_P
1175 /* Record the fields for profiling. */
1176 if (PROFILE_MODEL_P (current_cpu
))
1180 FLD (out_dr
) = f_r1
;
1189 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1190 CGEN_INSN_INT insn
= entire_insn
;
1191 #define FLD(f) abuf->fields.sfmt_mvtc.f
1194 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1196 /* Record the fields for the semantic handler. */
1197 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1198 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_jc", "sr 0x%x", 'x', f_r2
, (char *) 0));
1200 #if WITH_PROFILE_MODEL_P
1201 /* Record the fields for profiling. */
1202 if (PROFILE_MODEL_P (current_cpu
))
1213 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1214 CGEN_INSN_INT insn
= entire_insn
;
1215 #define FLD(f) abuf->fields.sfmt_jl.f
1218 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1220 /* Record the fields for the semantic handler. */
1221 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1222 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_jl", "sr 0x%x", 'x', f_r2
, (char *) 0));
1224 #if WITH_PROFILE_MODEL_P
1225 /* Record the fields for profiling. */
1226 if (PROFILE_MODEL_P (current_cpu
))
1229 FLD (out_h_gr_14
) = 14;
1238 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1239 CGEN_INSN_INT insn
= entire_insn
;
1240 #define FLD(f) abuf->fields.sfmt_mvtc.f
1243 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1245 /* Record the fields for the semantic handler. */
1246 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1247 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_jmp", "sr 0x%x", 'x', f_r2
, (char *) 0));
1249 #if WITH_PROFILE_MODEL_P
1250 /* Record the fields for profiling. */
1251 if (PROFILE_MODEL_P (current_cpu
))
1262 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1263 CGEN_INSN_INT insn
= entire_insn
;
1264 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1268 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1269 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1271 /* Record the fields for the semantic handler. */
1272 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1273 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1274 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ld", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1276 #if WITH_PROFILE_MODEL_P
1277 /* Record the fields for profiling. */
1278 if (PROFILE_MODEL_P (current_cpu
))
1281 FLD (out_dr
) = f_r1
;
1290 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1291 CGEN_INSN_INT insn
= entire_insn
;
1292 #define FLD(f) abuf->fields.sfmt_add3.f
1297 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1298 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1299 f_simm16
= EXTRACT_MSB0_INT (insn
, 32, 16, 16);
1301 /* Record the fields for the semantic handler. */
1302 FLD (f_simm16
) = f_simm16
;
1303 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1304 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1305 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ld_d", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1307 #if WITH_PROFILE_MODEL_P
1308 /* Record the fields for profiling. */
1309 if (PROFILE_MODEL_P (current_cpu
))
1312 FLD (out_dr
) = f_r1
;
1319 extract_sfmt_ld_plus
:
1321 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1322 CGEN_INSN_INT insn
= entire_insn
;
1323 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1327 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1328 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1330 /* Record the fields for the semantic handler. */
1331 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1332 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1333 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ld_plus", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1335 #if WITH_PROFILE_MODEL_P
1336 /* Record the fields for profiling. */
1337 if (PROFILE_MODEL_P (current_cpu
))
1340 FLD (out_dr
) = f_r1
;
1341 FLD (out_sr
) = f_r2
;
1350 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1351 CGEN_INSN_INT insn
= entire_insn
;
1352 #define FLD(f) abuf->fields.sfmt_ld24.f
1356 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1357 f_uimm24
= EXTRACT_MSB0_UINT (insn
, 32, 8, 24);
1359 /* Record the fields for the semantic handler. */
1360 FLD (i_uimm24
) = f_uimm24
;
1361 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1362 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ld24", "uimm24 0x%x", 'x', f_uimm24
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1364 #if WITH_PROFILE_MODEL_P
1365 /* Record the fields for profiling. */
1366 if (PROFILE_MODEL_P (current_cpu
))
1368 FLD (out_dr
) = f_r1
;
1377 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1378 CGEN_INSN_INT insn
= entire_insn
;
1379 #define FLD(f) abuf->fields.sfmt_addi.f
1383 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1384 f_simm8
= EXTRACT_MSB0_INT (insn
, 16, 8, 8);
1386 /* Record the fields for the semantic handler. */
1387 FLD (f_simm8
) = f_simm8
;
1388 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1389 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ldi8", "f_simm8 0x%x", 'x', f_simm8
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1391 #if WITH_PROFILE_MODEL_P
1392 /* Record the fields for profiling. */
1393 if (PROFILE_MODEL_P (current_cpu
))
1395 FLD (out_dr
) = f_r1
;
1404 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1405 CGEN_INSN_INT insn
= entire_insn
;
1406 #define FLD(f) abuf->fields.sfmt_add3.f
1410 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1411 f_simm16
= EXTRACT_MSB0_INT (insn
, 32, 16, 16);
1413 /* Record the fields for the semantic handler. */
1414 FLD (f_simm16
) = f_simm16
;
1415 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1416 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ldi16", "f_simm16 0x%x", 'x', f_simm16
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1418 #if WITH_PROFILE_MODEL_P
1419 /* Record the fields for profiling. */
1420 if (PROFILE_MODEL_P (current_cpu
))
1422 FLD (out_dr
) = f_r1
;
1431 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1432 CGEN_INSN_INT insn
= entire_insn
;
1433 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1437 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1438 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1440 /* Record the fields for the semantic handler. */
1441 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1442 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1443 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_lock", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1445 #if WITH_PROFILE_MODEL_P
1446 /* Record the fields for profiling. */
1447 if (PROFILE_MODEL_P (current_cpu
))
1450 FLD (out_dr
) = f_r1
;
1457 extract_sfmt_machi_a
:
1459 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1460 CGEN_INSN_INT insn
= entire_insn
;
1461 #define FLD(f) abuf->fields.sfmt_machi_a.f
1466 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1467 f_acc
= EXTRACT_MSB0_UINT (insn
, 16, 8, 1);
1468 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1470 /* Record the fields for the semantic handler. */
1471 FLD (f_acc
) = f_acc
;
1472 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1473 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1474 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_machi_a", "f_acc 0x%x", 'x', f_acc
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1476 #if WITH_PROFILE_MODEL_P
1477 /* Record the fields for profiling. */
1478 if (PROFILE_MODEL_P (current_cpu
))
1480 FLD (in_src1
) = f_r1
;
1481 FLD (in_src2
) = f_r2
;
1488 extract_sfmt_mulhi_a
:
1490 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1491 CGEN_INSN_INT insn
= entire_insn
;
1492 #define FLD(f) abuf->fields.sfmt_machi_a.f
1497 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1498 f_acc
= EXTRACT_MSB0_UINT (insn
, 16, 8, 1);
1499 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1501 /* Record the fields for the semantic handler. */
1502 FLD (f_acc
) = f_acc
;
1503 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1504 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1505 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mulhi_a", "f_acc 0x%x", 'x', f_acc
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1507 #if WITH_PROFILE_MODEL_P
1508 /* Record the fields for profiling. */
1509 if (PROFILE_MODEL_P (current_cpu
))
1511 FLD (in_src1
) = f_r1
;
1512 FLD (in_src2
) = f_r2
;
1521 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1522 CGEN_INSN_INT insn
= entire_insn
;
1523 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1527 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1528 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1530 /* Record the fields for the semantic handler. */
1531 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1532 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1533 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mv", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1535 #if WITH_PROFILE_MODEL_P
1536 /* Record the fields for profiling. */
1537 if (PROFILE_MODEL_P (current_cpu
))
1540 FLD (out_dr
) = f_r1
;
1547 extract_sfmt_mvfachi_a
:
1549 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1550 CGEN_INSN_INT insn
= entire_insn
;
1551 #define FLD(f) abuf->fields.sfmt_mvfachi_a.f
1555 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1556 f_accs
= EXTRACT_MSB0_UINT (insn
, 16, 12, 2);
1558 /* Record the fields for the semantic handler. */
1559 FLD (f_accs
) = f_accs
;
1560 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1561 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mvfachi_a", "f_accs 0x%x", 'x', f_accs
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1563 #if WITH_PROFILE_MODEL_P
1564 /* Record the fields for profiling. */
1565 if (PROFILE_MODEL_P (current_cpu
))
1567 FLD (out_dr
) = f_r1
;
1576 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1577 CGEN_INSN_INT insn
= entire_insn
;
1578 #define FLD(f) abuf->fields.sfmt_mvfc.f
1582 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1583 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1585 /* Record the fields for the semantic handler. */
1587 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1588 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mvfc", "f_r2 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1590 #if WITH_PROFILE_MODEL_P
1591 /* Record the fields for profiling. */
1592 if (PROFILE_MODEL_P (current_cpu
))
1594 FLD (out_dr
) = f_r1
;
1601 extract_sfmt_mvtachi_a
:
1603 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1604 CGEN_INSN_INT insn
= entire_insn
;
1605 #define FLD(f) abuf->fields.sfmt_mvtachi_a.f
1609 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1610 f_accs
= EXTRACT_MSB0_UINT (insn
, 16, 12, 2);
1612 /* Record the fields for the semantic handler. */
1613 FLD (f_accs
) = f_accs
;
1614 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1615 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mvtachi_a", "f_accs 0x%x", 'x', f_accs
, "src1 0x%x", 'x', f_r1
, (char *) 0));
1617 #if WITH_PROFILE_MODEL_P
1618 /* Record the fields for profiling. */
1619 if (PROFILE_MODEL_P (current_cpu
))
1621 FLD (in_src1
) = f_r1
;
1630 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1631 CGEN_INSN_INT insn
= entire_insn
;
1632 #define FLD(f) abuf->fields.sfmt_mvtc.f
1636 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1637 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1639 /* Record the fields for the semantic handler. */
1641 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1642 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mvtc", "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1644 #if WITH_PROFILE_MODEL_P
1645 /* Record the fields for profiling. */
1646 if (PROFILE_MODEL_P (current_cpu
))
1657 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1658 CGEN_INSN_INT insn
= entire_insn
;
1659 #define FLD(f) abuf->fields.fmt_empty.f
1662 /* Record the fields for the semantic handler. */
1663 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_nop", (char *) 0));
1669 extract_sfmt_rac_dsi
:
1671 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1672 CGEN_INSN_INT insn
= entire_insn
;
1673 #define FLD(f) abuf->fields.sfmt_rac_dsi.f
1678 f_accd
= EXTRACT_MSB0_UINT (insn
, 16, 4, 2);
1679 f_accs
= EXTRACT_MSB0_UINT (insn
, 16, 12, 2);
1680 f_imm1
= ((EXTRACT_MSB0_UINT (insn
, 16, 15, 1)) + (1));
1682 /* Record the fields for the semantic handler. */
1683 FLD (f_accs
) = f_accs
;
1684 FLD (f_imm1
) = f_imm1
;
1685 FLD (f_accd
) = f_accd
;
1686 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_rac_dsi", "f_accs 0x%x", 'x', f_accs
, "f_imm1 0x%x", 'x', f_imm1
, "f_accd 0x%x", 'x', f_accd
, (char *) 0));
1694 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1695 CGEN_INSN_INT insn
= entire_insn
;
1696 #define FLD(f) abuf->fields.fmt_empty.f
1699 /* Record the fields for the semantic handler. */
1700 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_rte", (char *) 0));
1702 #if WITH_PROFILE_MODEL_P
1703 /* Record the fields for profiling. */
1704 if (PROFILE_MODEL_P (current_cpu
))
1714 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1715 CGEN_INSN_INT insn
= entire_insn
;
1716 #define FLD(f) abuf->fields.sfmt_seth.f
1720 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1721 f_hi16
= EXTRACT_MSB0_UINT (insn
, 32, 16, 16);
1723 /* Record the fields for the semantic handler. */
1724 FLD (f_hi16
) = f_hi16
;
1725 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1726 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_seth", "f_hi16 0x%x", 'x', f_hi16
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1728 #if WITH_PROFILE_MODEL_P
1729 /* Record the fields for profiling. */
1730 if (PROFILE_MODEL_P (current_cpu
))
1732 FLD (out_dr
) = f_r1
;
1741 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1742 CGEN_INSN_INT insn
= entire_insn
;
1743 #define FLD(f) abuf->fields.sfmt_add3.f
1748 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1749 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1750 f_simm16
= EXTRACT_MSB0_INT (insn
, 32, 16, 16);
1752 /* Record the fields for the semantic handler. */
1753 FLD (f_simm16
) = f_simm16
;
1754 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1755 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1756 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sll3", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1758 #if WITH_PROFILE_MODEL_P
1759 /* Record the fields for profiling. */
1760 if (PROFILE_MODEL_P (current_cpu
))
1763 FLD (out_dr
) = f_r1
;
1772 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1773 CGEN_INSN_INT insn
= entire_insn
;
1774 #define FLD(f) abuf->fields.sfmt_slli.f
1778 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1779 f_uimm5
= EXTRACT_MSB0_UINT (insn
, 16, 11, 5);
1781 /* Record the fields for the semantic handler. */
1782 FLD (f_uimm5
) = f_uimm5
;
1783 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1784 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_slli", "f_uimm5 0x%x", 'x', f_uimm5
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1786 #if WITH_PROFILE_MODEL_P
1787 /* Record the fields for profiling. */
1788 if (PROFILE_MODEL_P (current_cpu
))
1791 FLD (out_dr
) = f_r1
;
1800 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1801 CGEN_INSN_INT insn
= entire_insn
;
1802 #define FLD(f) abuf->fields.sfmt_st_plus.f
1806 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1807 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1809 /* Record the fields for the semantic handler. */
1810 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1811 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1812 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_st", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1814 #if WITH_PROFILE_MODEL_P
1815 /* Record the fields for profiling. */
1816 if (PROFILE_MODEL_P (current_cpu
))
1818 FLD (in_src1
) = f_r1
;
1819 FLD (in_src2
) = f_r2
;
1828 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1829 CGEN_INSN_INT insn
= entire_insn
;
1830 #define FLD(f) abuf->fields.sfmt_st_d.f
1835 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1836 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1837 f_simm16
= EXTRACT_MSB0_INT (insn
, 32, 16, 16);
1839 /* Record the fields for the semantic handler. */
1840 FLD (f_simm16
) = f_simm16
;
1841 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1842 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1843 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_st_d", "f_simm16 0x%x", 'x', f_simm16
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1845 #if WITH_PROFILE_MODEL_P
1846 /* Record the fields for profiling. */
1847 if (PROFILE_MODEL_P (current_cpu
))
1849 FLD (in_src1
) = f_r1
;
1850 FLD (in_src2
) = f_r2
;
1859 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1860 CGEN_INSN_INT insn
= entire_insn
;
1861 #define FLD(f) abuf->fields.sfmt_st_plus.f
1865 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1866 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1868 /* Record the fields for the semantic handler. */
1869 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1870 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1871 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_stb", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1873 #if WITH_PROFILE_MODEL_P
1874 /* Record the fields for profiling. */
1875 if (PROFILE_MODEL_P (current_cpu
))
1877 FLD (in_src1
) = f_r1
;
1878 FLD (in_src2
) = f_r2
;
1887 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1888 CGEN_INSN_INT insn
= entire_insn
;
1889 #define FLD(f) abuf->fields.sfmt_st_d.f
1894 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1895 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1896 f_simm16
= EXTRACT_MSB0_INT (insn
, 32, 16, 16);
1898 /* Record the fields for the semantic handler. */
1899 FLD (f_simm16
) = f_simm16
;
1900 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1901 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1902 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_stb_d", "f_simm16 0x%x", 'x', f_simm16
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1904 #if WITH_PROFILE_MODEL_P
1905 /* Record the fields for profiling. */
1906 if (PROFILE_MODEL_P (current_cpu
))
1908 FLD (in_src1
) = f_r1
;
1909 FLD (in_src2
) = f_r2
;
1918 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1919 CGEN_INSN_INT insn
= entire_insn
;
1920 #define FLD(f) abuf->fields.sfmt_st_plus.f
1924 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1925 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1927 /* Record the fields for the semantic handler. */
1928 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1929 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1930 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sth", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1932 #if WITH_PROFILE_MODEL_P
1933 /* Record the fields for profiling. */
1934 if (PROFILE_MODEL_P (current_cpu
))
1936 FLD (in_src1
) = f_r1
;
1937 FLD (in_src2
) = f_r2
;
1946 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1947 CGEN_INSN_INT insn
= entire_insn
;
1948 #define FLD(f) abuf->fields.sfmt_st_d.f
1953 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1954 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1955 f_simm16
= EXTRACT_MSB0_INT (insn
, 32, 16, 16);
1957 /* Record the fields for the semantic handler. */
1958 FLD (f_simm16
) = f_simm16
;
1959 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1960 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1961 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sth_d", "f_simm16 0x%x", 'x', f_simm16
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1963 #if WITH_PROFILE_MODEL_P
1964 /* Record the fields for profiling. */
1965 if (PROFILE_MODEL_P (current_cpu
))
1967 FLD (in_src1
) = f_r1
;
1968 FLD (in_src2
) = f_r2
;
1975 extract_sfmt_st_plus
:
1977 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1978 CGEN_INSN_INT insn
= entire_insn
;
1979 #define FLD(f) abuf->fields.sfmt_st_plus.f
1983 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1984 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1986 /* Record the fields for the semantic handler. */
1987 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1988 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1989 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_st_plus", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1991 #if WITH_PROFILE_MODEL_P
1992 /* Record the fields for profiling. */
1993 if (PROFILE_MODEL_P (current_cpu
))
1995 FLD (in_src1
) = f_r1
;
1996 FLD (in_src2
) = f_r2
;
1997 FLD (out_src2
) = f_r2
;
2006 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2007 CGEN_INSN_INT insn
= entire_insn
;
2008 #define FLD(f) abuf->fields.sfmt_trap.f
2011 f_uimm4
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2013 /* Record the fields for the semantic handler. */
2014 FLD (f_uimm4
) = f_uimm4
;
2015 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_trap", "f_uimm4 0x%x", 'x', f_uimm4
, (char *) 0));
2017 #if WITH_PROFILE_MODEL_P
2018 /* Record the fields for profiling. */
2019 if (PROFILE_MODEL_P (current_cpu
))
2027 extract_sfmt_unlock
:
2029 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2030 CGEN_INSN_INT insn
= entire_insn
;
2031 #define FLD(f) abuf->fields.sfmt_st_plus.f
2035 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2036 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2038 /* Record the fields for the semantic handler. */
2039 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2040 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2041 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_unlock", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2043 #if WITH_PROFILE_MODEL_P
2044 /* Record the fields for profiling. */
2045 if (PROFILE_MODEL_P (current_cpu
))
2047 FLD (in_src1
) = f_r1
;
2048 FLD (in_src2
) = f_r2
;
2057 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2058 CGEN_INSN_INT insn
= entire_insn
;
2059 #define FLD(f) abuf->fields.sfmt_ld_plus.f
2063 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
2064 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
2066 /* Record the fields for the semantic handler. */
2067 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
2068 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
2069 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_satb", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2071 #if WITH_PROFILE_MODEL_P
2072 /* Record the fields for profiling. */
2073 if (PROFILE_MODEL_P (current_cpu
))
2076 FLD (out_dr
) = f_r1
;
2085 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2086 CGEN_INSN_INT insn
= entire_insn
;
2087 #define FLD(f) abuf->fields.sfmt_ld_plus.f
2091 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
2092 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
2094 /* Record the fields for the semantic handler. */
2095 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
2096 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
2097 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sat", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2099 #if WITH_PROFILE_MODEL_P
2100 /* Record the fields for profiling. */
2101 if (PROFILE_MODEL_P (current_cpu
))
2104 FLD (out_dr
) = f_r1
;
2113 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2114 CGEN_INSN_INT insn
= entire_insn
;
2115 #define FLD(f) abuf->fields.fmt_empty.f
2118 /* Record the fields for the semantic handler. */
2119 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sadd", (char *) 0));
2125 extract_sfmt_macwu1
:
2127 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2128 CGEN_INSN_INT insn
= entire_insn
;
2129 #define FLD(f) abuf->fields.sfmt_st_plus.f
2133 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2134 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2136 /* Record the fields for the semantic handler. */
2137 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2138 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2139 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_macwu1", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2141 #if WITH_PROFILE_MODEL_P
2142 /* Record the fields for profiling. */
2143 if (PROFILE_MODEL_P (current_cpu
))
2145 FLD (in_src1
) = f_r1
;
2146 FLD (in_src2
) = f_r2
;
2155 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2156 CGEN_INSN_INT insn
= entire_insn
;
2157 #define FLD(f) abuf->fields.sfmt_st_plus.f
2161 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2162 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2164 /* Record the fields for the semantic handler. */
2165 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2166 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2167 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_msblo", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2169 #if WITH_PROFILE_MODEL_P
2170 /* Record the fields for profiling. */
2171 if (PROFILE_MODEL_P (current_cpu
))
2173 FLD (in_src1
) = f_r1
;
2174 FLD (in_src2
) = f_r2
;
2181 extract_sfmt_mulwu1
:
2183 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2184 CGEN_INSN_INT insn
= entire_insn
;
2185 #define FLD(f) abuf->fields.sfmt_st_plus.f
2189 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2190 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2192 /* Record the fields for the semantic handler. */
2193 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2194 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2195 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mulwu1", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2197 #if WITH_PROFILE_MODEL_P
2198 /* Record the fields for profiling. */
2199 if (PROFILE_MODEL_P (current_cpu
))
2201 FLD (in_src1
) = f_r1
;
2202 FLD (in_src2
) = f_r2
;
2211 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2212 CGEN_INSN_INT insn
= entire_insn
;
2213 #define FLD(f) abuf->fields.fmt_empty.f
2216 /* Record the fields for the semantic handler. */
2217 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sc", (char *) 0));