1 /* Simulator instruction decoder for m32rxf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996-2024 Free Software Foundation, Inc.
7 This file is part of the GNU simulators.
9 This file is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3, or (at your option)
14 It is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 License for more details.
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
25 #define WANT_CPU m32rxf
26 #define WANT_CPU_M32RXF
29 #include "sim-assert.h"
33 /* Insn can't be executed in parallel.
34 Or is that "do NOt Pass to Air defense Radar"? :-) */
37 /* The instruction descriptor array.
38 This is computed at runtime. Space for it is not malloc'd to save a
39 teensy bit of cpu in the decoder. Moving it to malloc space is trivial
40 but won't be done until necessary (we don't currently support the runtime
41 addition of instructions nor an SMP machine with different cpus). */
42 static IDESC m32rxf_insn_data
[M32RXF_INSN__MAX
];
44 /* Commas between elements are contained in the macros.
45 Some of these are conditionally compiled out. */
47 static const struct insn_sem m32rxf_insn_sem
[] =
49 { VIRTUAL_INSN_X_INVALID
, M32RXF_INSN_X_INVALID
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
50 { VIRTUAL_INSN_X_AFTER
, M32RXF_INSN_X_AFTER
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
51 { VIRTUAL_INSN_X_BEFORE
, M32RXF_INSN_X_BEFORE
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
52 { VIRTUAL_INSN_X_CTI_CHAIN
, M32RXF_INSN_X_CTI_CHAIN
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
53 { VIRTUAL_INSN_X_CHAIN
, M32RXF_INSN_X_CHAIN
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
54 { VIRTUAL_INSN_X_BEGIN
, M32RXF_INSN_X_BEGIN
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
},
55 { M32R_INSN_ADD
, M32RXF_INSN_ADD
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_ADD
, M32RXF_INSN_WRITE_ADD
},
56 { M32R_INSN_ADD3
, M32RXF_INSN_ADD3
, M32RXF_SFMT_ADD3
, NOPAR
, NOPAR
},
57 { M32R_INSN_AND
, M32RXF_INSN_AND
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_AND
, M32RXF_INSN_WRITE_AND
},
58 { M32R_INSN_AND3
, M32RXF_INSN_AND3
, M32RXF_SFMT_AND3
, NOPAR
, NOPAR
},
59 { M32R_INSN_OR
, M32RXF_INSN_OR
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_OR
, M32RXF_INSN_WRITE_OR
},
60 { M32R_INSN_OR3
, M32RXF_INSN_OR3
, M32RXF_SFMT_OR3
, NOPAR
, NOPAR
},
61 { M32R_INSN_XOR
, M32RXF_INSN_XOR
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_XOR
, M32RXF_INSN_WRITE_XOR
},
62 { M32R_INSN_XOR3
, M32RXF_INSN_XOR3
, M32RXF_SFMT_AND3
, NOPAR
, NOPAR
},
63 { M32R_INSN_ADDI
, M32RXF_INSN_ADDI
, M32RXF_SFMT_ADDI
, M32RXF_INSN_PAR_ADDI
, M32RXF_INSN_WRITE_ADDI
},
64 { M32R_INSN_ADDV
, M32RXF_INSN_ADDV
, M32RXF_SFMT_ADDV
, M32RXF_INSN_PAR_ADDV
, M32RXF_INSN_WRITE_ADDV
},
65 { M32R_INSN_ADDV3
, M32RXF_INSN_ADDV3
, M32RXF_SFMT_ADDV3
, NOPAR
, NOPAR
},
66 { M32R_INSN_ADDX
, M32RXF_INSN_ADDX
, M32RXF_SFMT_ADDX
, M32RXF_INSN_PAR_ADDX
, M32RXF_INSN_WRITE_ADDX
},
67 { M32R_INSN_BC8
, M32RXF_INSN_BC8
, M32RXF_SFMT_BC8
, M32RXF_INSN_PAR_BC8
, M32RXF_INSN_WRITE_BC8
},
68 { M32R_INSN_BC24
, M32RXF_INSN_BC24
, M32RXF_SFMT_BC24
, NOPAR
, NOPAR
},
69 { M32R_INSN_BEQ
, M32RXF_INSN_BEQ
, M32RXF_SFMT_BEQ
, NOPAR
, NOPAR
},
70 { M32R_INSN_BEQZ
, M32RXF_INSN_BEQZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
71 { M32R_INSN_BGEZ
, M32RXF_INSN_BGEZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
72 { M32R_INSN_BGTZ
, M32RXF_INSN_BGTZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
73 { M32R_INSN_BLEZ
, M32RXF_INSN_BLEZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
74 { M32R_INSN_BLTZ
, M32RXF_INSN_BLTZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
75 { M32R_INSN_BNEZ
, M32RXF_INSN_BNEZ
, M32RXF_SFMT_BEQZ
, NOPAR
, NOPAR
},
76 { M32R_INSN_BL8
, M32RXF_INSN_BL8
, M32RXF_SFMT_BL8
, M32RXF_INSN_PAR_BL8
, M32RXF_INSN_WRITE_BL8
},
77 { M32R_INSN_BL24
, M32RXF_INSN_BL24
, M32RXF_SFMT_BL24
, NOPAR
, NOPAR
},
78 { M32R_INSN_BCL8
, M32RXF_INSN_BCL8
, M32RXF_SFMT_BCL8
, M32RXF_INSN_PAR_BCL8
, M32RXF_INSN_WRITE_BCL8
},
79 { M32R_INSN_BCL24
, M32RXF_INSN_BCL24
, M32RXF_SFMT_BCL24
, NOPAR
, NOPAR
},
80 { M32R_INSN_BNC8
, M32RXF_INSN_BNC8
, M32RXF_SFMT_BC8
, M32RXF_INSN_PAR_BNC8
, M32RXF_INSN_WRITE_BNC8
},
81 { M32R_INSN_BNC24
, M32RXF_INSN_BNC24
, M32RXF_SFMT_BC24
, NOPAR
, NOPAR
},
82 { M32R_INSN_BNE
, M32RXF_INSN_BNE
, M32RXF_SFMT_BEQ
, NOPAR
, NOPAR
},
83 { M32R_INSN_BRA8
, M32RXF_INSN_BRA8
, M32RXF_SFMT_BRA8
, M32RXF_INSN_PAR_BRA8
, M32RXF_INSN_WRITE_BRA8
},
84 { M32R_INSN_BRA24
, M32RXF_INSN_BRA24
, M32RXF_SFMT_BRA24
, NOPAR
, NOPAR
},
85 { M32R_INSN_BNCL8
, M32RXF_INSN_BNCL8
, M32RXF_SFMT_BCL8
, M32RXF_INSN_PAR_BNCL8
, M32RXF_INSN_WRITE_BNCL8
},
86 { M32R_INSN_BNCL24
, M32RXF_INSN_BNCL24
, M32RXF_SFMT_BCL24
, NOPAR
, NOPAR
},
87 { M32R_INSN_CMP
, M32RXF_INSN_CMP
, M32RXF_SFMT_CMP
, M32RXF_INSN_PAR_CMP
, M32RXF_INSN_WRITE_CMP
},
88 { M32R_INSN_CMPI
, M32RXF_INSN_CMPI
, M32RXF_SFMT_CMPI
, NOPAR
, NOPAR
},
89 { M32R_INSN_CMPU
, M32RXF_INSN_CMPU
, M32RXF_SFMT_CMP
, M32RXF_INSN_PAR_CMPU
, M32RXF_INSN_WRITE_CMPU
},
90 { M32R_INSN_CMPUI
, M32RXF_INSN_CMPUI
, M32RXF_SFMT_CMPI
, NOPAR
, NOPAR
},
91 { M32R_INSN_CMPEQ
, M32RXF_INSN_CMPEQ
, M32RXF_SFMT_CMP
, M32RXF_INSN_PAR_CMPEQ
, M32RXF_INSN_WRITE_CMPEQ
},
92 { M32R_INSN_CMPZ
, M32RXF_INSN_CMPZ
, M32RXF_SFMT_CMPZ
, M32RXF_INSN_PAR_CMPZ
, M32RXF_INSN_WRITE_CMPZ
},
93 { M32R_INSN_DIV
, M32RXF_INSN_DIV
, M32RXF_SFMT_DIV
, NOPAR
, NOPAR
},
94 { M32R_INSN_DIVU
, M32RXF_INSN_DIVU
, M32RXF_SFMT_DIV
, NOPAR
, NOPAR
},
95 { M32R_INSN_REM
, M32RXF_INSN_REM
, M32RXF_SFMT_DIV
, NOPAR
, NOPAR
},
96 { M32R_INSN_REMU
, M32RXF_INSN_REMU
, M32RXF_SFMT_DIV
, NOPAR
, NOPAR
},
97 { M32R_INSN_DIVH
, M32RXF_INSN_DIVH
, M32RXF_SFMT_DIV
, NOPAR
, NOPAR
},
98 { M32R_INSN_JC
, M32RXF_INSN_JC
, M32RXF_SFMT_JC
, M32RXF_INSN_PAR_JC
, M32RXF_INSN_WRITE_JC
},
99 { M32R_INSN_JNC
, M32RXF_INSN_JNC
, M32RXF_SFMT_JC
, M32RXF_INSN_PAR_JNC
, M32RXF_INSN_WRITE_JNC
},
100 { M32R_INSN_JL
, M32RXF_INSN_JL
, M32RXF_SFMT_JL
, M32RXF_INSN_PAR_JL
, M32RXF_INSN_WRITE_JL
},
101 { M32R_INSN_JMP
, M32RXF_INSN_JMP
, M32RXF_SFMT_JMP
, M32RXF_INSN_PAR_JMP
, M32RXF_INSN_WRITE_JMP
},
102 { M32R_INSN_LD
, M32RXF_INSN_LD
, M32RXF_SFMT_LD
, M32RXF_INSN_PAR_LD
, M32RXF_INSN_WRITE_LD
},
103 { M32R_INSN_LD_D
, M32RXF_INSN_LD_D
, M32RXF_SFMT_LD_D
, NOPAR
, NOPAR
},
104 { M32R_INSN_LDB
, M32RXF_INSN_LDB
, M32RXF_SFMT_LDB
, M32RXF_INSN_PAR_LDB
, M32RXF_INSN_WRITE_LDB
},
105 { M32R_INSN_LDB_D
, M32RXF_INSN_LDB_D
, M32RXF_SFMT_LDB_D
, NOPAR
, NOPAR
},
106 { M32R_INSN_LDH
, M32RXF_INSN_LDH
, M32RXF_SFMT_LDH
, M32RXF_INSN_PAR_LDH
, M32RXF_INSN_WRITE_LDH
},
107 { M32R_INSN_LDH_D
, M32RXF_INSN_LDH_D
, M32RXF_SFMT_LDH_D
, NOPAR
, NOPAR
},
108 { M32R_INSN_LDUB
, M32RXF_INSN_LDUB
, M32RXF_SFMT_LDB
, M32RXF_INSN_PAR_LDUB
, M32RXF_INSN_WRITE_LDUB
},
109 { M32R_INSN_LDUB_D
, M32RXF_INSN_LDUB_D
, M32RXF_SFMT_LDB_D
, NOPAR
, NOPAR
},
110 { M32R_INSN_LDUH
, M32RXF_INSN_LDUH
, M32RXF_SFMT_LDH
, M32RXF_INSN_PAR_LDUH
, M32RXF_INSN_WRITE_LDUH
},
111 { M32R_INSN_LDUH_D
, M32RXF_INSN_LDUH_D
, M32RXF_SFMT_LDH_D
, NOPAR
, NOPAR
},
112 { M32R_INSN_LD_PLUS
, M32RXF_INSN_LD_PLUS
, M32RXF_SFMT_LD_PLUS
, M32RXF_INSN_PAR_LD_PLUS
, M32RXF_INSN_WRITE_LD_PLUS
},
113 { M32R_INSN_LD24
, M32RXF_INSN_LD24
, M32RXF_SFMT_LD24
, NOPAR
, NOPAR
},
114 { M32R_INSN_LDI8
, M32RXF_INSN_LDI8
, M32RXF_SFMT_LDI8
, M32RXF_INSN_PAR_LDI8
, M32RXF_INSN_WRITE_LDI8
},
115 { M32R_INSN_LDI16
, M32RXF_INSN_LDI16
, M32RXF_SFMT_LDI16
, NOPAR
, NOPAR
},
116 { M32R_INSN_LOCK
, M32RXF_INSN_LOCK
, M32RXF_SFMT_LOCK
, M32RXF_INSN_PAR_LOCK
, M32RXF_INSN_WRITE_LOCK
},
117 { M32R_INSN_MACHI_A
, M32RXF_INSN_MACHI_A
, M32RXF_SFMT_MACHI_A
, M32RXF_INSN_PAR_MACHI_A
, M32RXF_INSN_WRITE_MACHI_A
},
118 { M32R_INSN_MACLO_A
, M32RXF_INSN_MACLO_A
, M32RXF_SFMT_MACHI_A
, M32RXF_INSN_PAR_MACLO_A
, M32RXF_INSN_WRITE_MACLO_A
},
119 { M32R_INSN_MACWHI_A
, M32RXF_INSN_MACWHI_A
, M32RXF_SFMT_MACHI_A
, M32RXF_INSN_PAR_MACWHI_A
, M32RXF_INSN_WRITE_MACWHI_A
},
120 { M32R_INSN_MACWLO_A
, M32RXF_INSN_MACWLO_A
, M32RXF_SFMT_MACHI_A
, M32RXF_INSN_PAR_MACWLO_A
, M32RXF_INSN_WRITE_MACWLO_A
},
121 { M32R_INSN_MUL
, M32RXF_INSN_MUL
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_MUL
, M32RXF_INSN_WRITE_MUL
},
122 { M32R_INSN_MULHI_A
, M32RXF_INSN_MULHI_A
, M32RXF_SFMT_MULHI_A
, M32RXF_INSN_PAR_MULHI_A
, M32RXF_INSN_WRITE_MULHI_A
},
123 { M32R_INSN_MULLO_A
, M32RXF_INSN_MULLO_A
, M32RXF_SFMT_MULHI_A
, M32RXF_INSN_PAR_MULLO_A
, M32RXF_INSN_WRITE_MULLO_A
},
124 { M32R_INSN_MULWHI_A
, M32RXF_INSN_MULWHI_A
, M32RXF_SFMT_MULHI_A
, M32RXF_INSN_PAR_MULWHI_A
, M32RXF_INSN_WRITE_MULWHI_A
},
125 { M32R_INSN_MULWLO_A
, M32RXF_INSN_MULWLO_A
, M32RXF_SFMT_MULHI_A
, M32RXF_INSN_PAR_MULWLO_A
, M32RXF_INSN_WRITE_MULWLO_A
},
126 { M32R_INSN_MV
, M32RXF_INSN_MV
, M32RXF_SFMT_MV
, M32RXF_INSN_PAR_MV
, M32RXF_INSN_WRITE_MV
},
127 { M32R_INSN_MVFACHI_A
, M32RXF_INSN_MVFACHI_A
, M32RXF_SFMT_MVFACHI_A
, M32RXF_INSN_PAR_MVFACHI_A
, M32RXF_INSN_WRITE_MVFACHI_A
},
128 { M32R_INSN_MVFACLO_A
, M32RXF_INSN_MVFACLO_A
, M32RXF_SFMT_MVFACHI_A
, M32RXF_INSN_PAR_MVFACLO_A
, M32RXF_INSN_WRITE_MVFACLO_A
},
129 { M32R_INSN_MVFACMI_A
, M32RXF_INSN_MVFACMI_A
, M32RXF_SFMT_MVFACHI_A
, M32RXF_INSN_PAR_MVFACMI_A
, M32RXF_INSN_WRITE_MVFACMI_A
},
130 { M32R_INSN_MVFC
, M32RXF_INSN_MVFC
, M32RXF_SFMT_MVFC
, M32RXF_INSN_PAR_MVFC
, M32RXF_INSN_WRITE_MVFC
},
131 { M32R_INSN_MVTACHI_A
, M32RXF_INSN_MVTACHI_A
, M32RXF_SFMT_MVTACHI_A
, M32RXF_INSN_PAR_MVTACHI_A
, M32RXF_INSN_WRITE_MVTACHI_A
},
132 { M32R_INSN_MVTACLO_A
, M32RXF_INSN_MVTACLO_A
, M32RXF_SFMT_MVTACHI_A
, M32RXF_INSN_PAR_MVTACLO_A
, M32RXF_INSN_WRITE_MVTACLO_A
},
133 { M32R_INSN_MVTC
, M32RXF_INSN_MVTC
, M32RXF_SFMT_MVTC
, M32RXF_INSN_PAR_MVTC
, M32RXF_INSN_WRITE_MVTC
},
134 { M32R_INSN_NEG
, M32RXF_INSN_NEG
, M32RXF_SFMT_MV
, M32RXF_INSN_PAR_NEG
, M32RXF_INSN_WRITE_NEG
},
135 { M32R_INSN_NOP
, M32RXF_INSN_NOP
, M32RXF_SFMT_NOP
, M32RXF_INSN_PAR_NOP
, M32RXF_INSN_WRITE_NOP
},
136 { M32R_INSN_NOT
, M32RXF_INSN_NOT
, M32RXF_SFMT_MV
, M32RXF_INSN_PAR_NOT
, M32RXF_INSN_WRITE_NOT
},
137 { M32R_INSN_RAC_DSI
, M32RXF_INSN_RAC_DSI
, M32RXF_SFMT_RAC_DSI
, M32RXF_INSN_PAR_RAC_DSI
, M32RXF_INSN_WRITE_RAC_DSI
},
138 { M32R_INSN_RACH_DSI
, M32RXF_INSN_RACH_DSI
, M32RXF_SFMT_RAC_DSI
, M32RXF_INSN_PAR_RACH_DSI
, M32RXF_INSN_WRITE_RACH_DSI
},
139 { M32R_INSN_RTE
, M32RXF_INSN_RTE
, M32RXF_SFMT_RTE
, M32RXF_INSN_PAR_RTE
, M32RXF_INSN_WRITE_RTE
},
140 { M32R_INSN_SETH
, M32RXF_INSN_SETH
, M32RXF_SFMT_SETH
, NOPAR
, NOPAR
},
141 { M32R_INSN_SLL
, M32RXF_INSN_SLL
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_SLL
, M32RXF_INSN_WRITE_SLL
},
142 { M32R_INSN_SLL3
, M32RXF_INSN_SLL3
, M32RXF_SFMT_SLL3
, NOPAR
, NOPAR
},
143 { M32R_INSN_SLLI
, M32RXF_INSN_SLLI
, M32RXF_SFMT_SLLI
, M32RXF_INSN_PAR_SLLI
, M32RXF_INSN_WRITE_SLLI
},
144 { M32R_INSN_SRA
, M32RXF_INSN_SRA
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_SRA
, M32RXF_INSN_WRITE_SRA
},
145 { M32R_INSN_SRA3
, M32RXF_INSN_SRA3
, M32RXF_SFMT_SLL3
, NOPAR
, NOPAR
},
146 { M32R_INSN_SRAI
, M32RXF_INSN_SRAI
, M32RXF_SFMT_SLLI
, M32RXF_INSN_PAR_SRAI
, M32RXF_INSN_WRITE_SRAI
},
147 { M32R_INSN_SRL
, M32RXF_INSN_SRL
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_SRL
, M32RXF_INSN_WRITE_SRL
},
148 { M32R_INSN_SRL3
, M32RXF_INSN_SRL3
, M32RXF_SFMT_SLL3
, NOPAR
, NOPAR
},
149 { M32R_INSN_SRLI
, M32RXF_INSN_SRLI
, M32RXF_SFMT_SLLI
, M32RXF_INSN_PAR_SRLI
, M32RXF_INSN_WRITE_SRLI
},
150 { M32R_INSN_ST
, M32RXF_INSN_ST
, M32RXF_SFMT_ST
, M32RXF_INSN_PAR_ST
, M32RXF_INSN_WRITE_ST
},
151 { M32R_INSN_ST_D
, M32RXF_INSN_ST_D
, M32RXF_SFMT_ST_D
, NOPAR
, NOPAR
},
152 { M32R_INSN_STB
, M32RXF_INSN_STB
, M32RXF_SFMT_STB
, M32RXF_INSN_PAR_STB
, M32RXF_INSN_WRITE_STB
},
153 { M32R_INSN_STB_D
, M32RXF_INSN_STB_D
, M32RXF_SFMT_STB_D
, NOPAR
, NOPAR
},
154 { M32R_INSN_STH
, M32RXF_INSN_STH
, M32RXF_SFMT_STH
, M32RXF_INSN_PAR_STH
, M32RXF_INSN_WRITE_STH
},
155 { M32R_INSN_STH_D
, M32RXF_INSN_STH_D
, M32RXF_SFMT_STH_D
, NOPAR
, NOPAR
},
156 { M32R_INSN_ST_PLUS
, M32RXF_INSN_ST_PLUS
, M32RXF_SFMT_ST_PLUS
, M32RXF_INSN_PAR_ST_PLUS
, M32RXF_INSN_WRITE_ST_PLUS
},
157 { M32R_INSN_STH_PLUS
, M32RXF_INSN_STH_PLUS
, M32RXF_SFMT_STH_PLUS
, M32RXF_INSN_PAR_STH_PLUS
, M32RXF_INSN_WRITE_STH_PLUS
},
158 { M32R_INSN_STB_PLUS
, M32RXF_INSN_STB_PLUS
, M32RXF_SFMT_STB_PLUS
, M32RXF_INSN_PAR_STB_PLUS
, M32RXF_INSN_WRITE_STB_PLUS
},
159 { M32R_INSN_ST_MINUS
, M32RXF_INSN_ST_MINUS
, M32RXF_SFMT_ST_PLUS
, M32RXF_INSN_PAR_ST_MINUS
, M32RXF_INSN_WRITE_ST_MINUS
},
160 { M32R_INSN_SUB
, M32RXF_INSN_SUB
, M32RXF_SFMT_ADD
, M32RXF_INSN_PAR_SUB
, M32RXF_INSN_WRITE_SUB
},
161 { M32R_INSN_SUBV
, M32RXF_INSN_SUBV
, M32RXF_SFMT_ADDV
, M32RXF_INSN_PAR_SUBV
, M32RXF_INSN_WRITE_SUBV
},
162 { M32R_INSN_SUBX
, M32RXF_INSN_SUBX
, M32RXF_SFMT_ADDX
, M32RXF_INSN_PAR_SUBX
, M32RXF_INSN_WRITE_SUBX
},
163 { M32R_INSN_TRAP
, M32RXF_INSN_TRAP
, M32RXF_SFMT_TRAP
, M32RXF_INSN_PAR_TRAP
, M32RXF_INSN_WRITE_TRAP
},
164 { M32R_INSN_UNLOCK
, M32RXF_INSN_UNLOCK
, M32RXF_SFMT_UNLOCK
, M32RXF_INSN_PAR_UNLOCK
, M32RXF_INSN_WRITE_UNLOCK
},
165 { M32R_INSN_SATB
, M32RXF_INSN_SATB
, M32RXF_SFMT_SATB
, NOPAR
, NOPAR
},
166 { M32R_INSN_SATH
, M32RXF_INSN_SATH
, M32RXF_SFMT_SATB
, NOPAR
, NOPAR
},
167 { M32R_INSN_SAT
, M32RXF_INSN_SAT
, M32RXF_SFMT_SAT
, NOPAR
, NOPAR
},
168 { M32R_INSN_PCMPBZ
, M32RXF_INSN_PCMPBZ
, M32RXF_SFMT_CMPZ
, M32RXF_INSN_PAR_PCMPBZ
, M32RXF_INSN_WRITE_PCMPBZ
},
169 { M32R_INSN_SADD
, M32RXF_INSN_SADD
, M32RXF_SFMT_SADD
, M32RXF_INSN_PAR_SADD
, M32RXF_INSN_WRITE_SADD
},
170 { M32R_INSN_MACWU1
, M32RXF_INSN_MACWU1
, M32RXF_SFMT_MACWU1
, M32RXF_INSN_PAR_MACWU1
, M32RXF_INSN_WRITE_MACWU1
},
171 { M32R_INSN_MSBLO
, M32RXF_INSN_MSBLO
, M32RXF_SFMT_MSBLO
, M32RXF_INSN_PAR_MSBLO
, M32RXF_INSN_WRITE_MSBLO
},
172 { M32R_INSN_MULWU1
, M32RXF_INSN_MULWU1
, M32RXF_SFMT_MULWU1
, M32RXF_INSN_PAR_MULWU1
, M32RXF_INSN_WRITE_MULWU1
},
173 { M32R_INSN_MACLH1
, M32RXF_INSN_MACLH1
, M32RXF_SFMT_MACWU1
, M32RXF_INSN_PAR_MACLH1
, M32RXF_INSN_WRITE_MACLH1
},
174 { M32R_INSN_SC
, M32RXF_INSN_SC
, M32RXF_SFMT_SC
, M32RXF_INSN_PAR_SC
, M32RXF_INSN_WRITE_SC
},
175 { M32R_INSN_SNC
, M32RXF_INSN_SNC
, M32RXF_SFMT_SC
, M32RXF_INSN_PAR_SNC
, M32RXF_INSN_WRITE_SNC
},
176 { M32R_INSN_CLRPSW
, M32RXF_INSN_CLRPSW
, M32RXF_SFMT_CLRPSW
, M32RXF_INSN_PAR_CLRPSW
, M32RXF_INSN_WRITE_CLRPSW
},
177 { M32R_INSN_SETPSW
, M32RXF_INSN_SETPSW
, M32RXF_SFMT_SETPSW
, M32RXF_INSN_PAR_SETPSW
, M32RXF_INSN_WRITE_SETPSW
},
178 { M32R_INSN_BSET
, M32RXF_INSN_BSET
, M32RXF_SFMT_BSET
, NOPAR
, NOPAR
},
179 { M32R_INSN_BCLR
, M32RXF_INSN_BCLR
, M32RXF_SFMT_BSET
, NOPAR
, NOPAR
},
180 { M32R_INSN_BTST
, M32RXF_INSN_BTST
, M32RXF_SFMT_BTST
, M32RXF_INSN_PAR_BTST
, M32RXF_INSN_WRITE_BTST
},
183 static const struct insn_sem m32rxf_insn_sem_invalid
=
185 VIRTUAL_INSN_X_INVALID
, M32RXF_INSN_X_INVALID
, M32RXF_SFMT_EMPTY
, NOPAR
, NOPAR
188 /* Initialize an IDESC from the compile-time computable parts. */
191 init_idesc (SIM_CPU
*cpu
, IDESC
*id
, const struct insn_sem
*t
)
193 const CGEN_INSN
*insn_table
= CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu
))->init_entries
;
197 if ((int) t
->type
<= 0)
198 id
->idata
= & cgen_virtual_insn_table
[- (int) t
->type
];
200 id
->idata
= & insn_table
[t
->type
];
201 id
->attrs
= CGEN_INSN_ATTRS (id
->idata
);
202 /* Oh my god, a magic number. */
203 id
->length
= CGEN_INSN_BITSIZE (id
->idata
) / 8;
205 #if WITH_PROFILE_MODEL_P
206 id
->timing
= & MODEL_TIMING (CPU_MODEL (cpu
)) [t
->index
];
208 SIM_DESC sd
= CPU_STATE (cpu
);
209 SIM_ASSERT (t
->index
== id
->timing
->num
);
213 /* Semantic pointers are initialized elsewhere. */
216 /* Initialize the instruction descriptor table. */
219 m32rxf_init_idesc_table (SIM_CPU
*cpu
)
222 const struct insn_sem
*t
,*tend
;
223 int tabsize
= M32RXF_INSN__MAX
;
224 IDESC
*table
= m32rxf_insn_data
;
226 memset (table
, 0, tabsize
* sizeof (IDESC
));
228 /* First set all entries to the `invalid insn'. */
229 t
= & m32rxf_insn_sem_invalid
;
230 for (id
= table
, tabend
= table
+ tabsize
; id
< tabend
; ++id
)
231 init_idesc (cpu
, id
, t
);
233 /* Now fill in the values for the chosen cpu. */
234 for (t
= m32rxf_insn_sem
, tend
= t
+ ARRAY_SIZE (m32rxf_insn_sem
);
237 init_idesc (cpu
, & table
[t
->index
], t
);
238 if (t
->par_index
!= NOPAR
)
240 init_idesc (cpu
, &table
[t
->par_index
], t
);
241 table
[t
->index
].par_idesc
= &table
[t
->par_index
];
243 if (t
->par_index
!= NOPAR
)
245 init_idesc (cpu
, &table
[t
->write_index
], t
);
246 table
[t
->par_index
].par_idesc
= &table
[t
->write_index
];
250 /* Link the IDESC table into the cpu. */
251 CPU_IDESC (cpu
) = table
;
254 /* Given an instruction, return a pointer to its IDESC entry. */
257 m32rxf_decode (SIM_CPU
*current_cpu
, IADDR pc
,
258 CGEN_INSN_WORD base_insn
, CGEN_INSN_WORD entire_insn
,
261 /* Result of decoder. */
262 M32RXF_INSN_TYPE itype
;
265 CGEN_INSN_WORD insn
= base_insn
;
268 unsigned int val0
= (((insn
>> 8) & (15 << 4)) | ((insn
>> 4) & (15 << 0)));
271 case 0: itype
= M32RXF_INSN_SUBV
; goto extract_sfmt_addv
;
272 case 1: itype
= M32RXF_INSN_SUBX
; goto extract_sfmt_addx
;
273 case 2: itype
= M32RXF_INSN_SUB
; goto extract_sfmt_add
;
274 case 3: itype
= M32RXF_INSN_NEG
; goto extract_sfmt_mv
;
275 case 4: itype
= M32RXF_INSN_CMP
; goto extract_sfmt_cmp
;
276 case 5: itype
= M32RXF_INSN_CMPU
; goto extract_sfmt_cmp
;
277 case 6: itype
= M32RXF_INSN_CMPEQ
; goto extract_sfmt_cmp
;
280 unsigned int val1
= (((insn
>> 8) & (3 << 0)));
284 if ((entire_insn
& 0xfff0) == 0x70)
285 { itype
= M32RXF_INSN_CMPZ
; goto extract_sfmt_cmpz
; }
286 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
288 if ((entire_insn
& 0xfff0) == 0x370)
289 { itype
= M32RXF_INSN_PCMPBZ
; goto extract_sfmt_cmpz
; }
290 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
291 default: itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
294 case 8: itype
= M32RXF_INSN_ADDV
; goto extract_sfmt_addv
;
295 case 9: itype
= M32RXF_INSN_ADDX
; goto extract_sfmt_addx
;
296 case 10: itype
= M32RXF_INSN_ADD
; goto extract_sfmt_add
;
297 case 11: itype
= M32RXF_INSN_NOT
; goto extract_sfmt_mv
;
298 case 12: itype
= M32RXF_INSN_AND
; goto extract_sfmt_add
;
299 case 13: itype
= M32RXF_INSN_XOR
; goto extract_sfmt_add
;
300 case 14: itype
= M32RXF_INSN_OR
; goto extract_sfmt_add
;
302 if ((entire_insn
& 0xf8f0) == 0xf0)
303 { itype
= M32RXF_INSN_BTST
; goto extract_sfmt_btst
; }
304 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
305 case 16: itype
= M32RXF_INSN_SRL
; goto extract_sfmt_add
;
306 case 18: itype
= M32RXF_INSN_SRA
; goto extract_sfmt_add
;
307 case 20: itype
= M32RXF_INSN_SLL
; goto extract_sfmt_add
;
308 case 22: itype
= M32RXF_INSN_MUL
; goto extract_sfmt_add
;
309 case 24: itype
= M32RXF_INSN_MV
; goto extract_sfmt_mv
;
310 case 25: itype
= M32RXF_INSN_MVFC
; goto extract_sfmt_mvfc
;
311 case 26: itype
= M32RXF_INSN_MVTC
; goto extract_sfmt_mvtc
;
314 unsigned int val1
= (((insn
>> 8) & (3 << 0)));
318 if ((entire_insn
& 0xfff0) == 0x1cc0)
319 { itype
= M32RXF_INSN_JC
; goto extract_sfmt_jc
; }
320 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
322 if ((entire_insn
& 0xfff0) == 0x1dc0)
323 { itype
= M32RXF_INSN_JNC
; goto extract_sfmt_jc
; }
324 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
326 if ((entire_insn
& 0xfff0) == 0x1ec0)
327 { itype
= M32RXF_INSN_JL
; goto extract_sfmt_jl
; }
328 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
330 if ((entire_insn
& 0xfff0) == 0x1fc0)
331 { itype
= M32RXF_INSN_JMP
; goto extract_sfmt_jmp
; }
332 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
333 default: itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
337 if ((entire_insn
& 0xffff) == 0x10d6)
338 { itype
= M32RXF_INSN_RTE
; goto extract_sfmt_rte
; }
339 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
341 if ((entire_insn
& 0xfff0) == 0x10f0)
342 { itype
= M32RXF_INSN_TRAP
; goto extract_sfmt_trap
; }
343 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
344 case 32: itype
= M32RXF_INSN_STB
; goto extract_sfmt_stb
;
345 case 33: itype
= M32RXF_INSN_STB_PLUS
; goto extract_sfmt_stb_plus
;
346 case 34: itype
= M32RXF_INSN_STH
; goto extract_sfmt_sth
;
347 case 35: itype
= M32RXF_INSN_STH_PLUS
; goto extract_sfmt_sth_plus
;
348 case 36: itype
= M32RXF_INSN_ST
; goto extract_sfmt_st
;
349 case 37: itype
= M32RXF_INSN_UNLOCK
; goto extract_sfmt_unlock
;
350 case 38: itype
= M32RXF_INSN_ST_PLUS
; goto extract_sfmt_st_plus
;
351 case 39: itype
= M32RXF_INSN_ST_MINUS
; goto extract_sfmt_st_plus
;
352 case 40: itype
= M32RXF_INSN_LDB
; goto extract_sfmt_ldb
;
353 case 41: itype
= M32RXF_INSN_LDUB
; goto extract_sfmt_ldb
;
354 case 42: itype
= M32RXF_INSN_LDH
; goto extract_sfmt_ldh
;
355 case 43: itype
= M32RXF_INSN_LDUH
; goto extract_sfmt_ldh
;
356 case 44: itype
= M32RXF_INSN_LD
; goto extract_sfmt_ld
;
357 case 45: itype
= M32RXF_INSN_LOCK
; goto extract_sfmt_lock
;
358 case 46: itype
= M32RXF_INSN_LD_PLUS
; goto extract_sfmt_ld_plus
;
360 case 56: itype
= M32RXF_INSN_MULHI_A
; goto extract_sfmt_mulhi_a
;
362 case 57: itype
= M32RXF_INSN_MULLO_A
; goto extract_sfmt_mulhi_a
;
364 case 58: itype
= M32RXF_INSN_MULWHI_A
; goto extract_sfmt_mulhi_a
;
366 case 59: itype
= M32RXF_INSN_MULWLO_A
; goto extract_sfmt_mulhi_a
;
368 case 60: itype
= M32RXF_INSN_MACHI_A
; goto extract_sfmt_machi_a
;
370 case 61: itype
= M32RXF_INSN_MACLO_A
; goto extract_sfmt_machi_a
;
372 case 62: itype
= M32RXF_INSN_MACWHI_A
; goto extract_sfmt_machi_a
;
374 case 63: itype
= M32RXF_INSN_MACWLO_A
; goto extract_sfmt_machi_a
;
390 case 79: itype
= M32RXF_INSN_ADDI
; goto extract_sfmt_addi
;
392 case 81: itype
= M32RXF_INSN_SRLI
; goto extract_sfmt_slli
;
394 case 83: itype
= M32RXF_INSN_SRAI
; goto extract_sfmt_slli
;
396 case 85: itype
= M32RXF_INSN_SLLI
; goto extract_sfmt_slli
;
399 unsigned int val1
= (((insn
>> 0) & (1 << 0)));
403 if ((entire_insn
& 0xf0f3) == 0x5070)
404 { itype
= M32RXF_INSN_MVTACHI_A
; goto extract_sfmt_mvtachi_a
; }
405 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
407 if ((entire_insn
& 0xf0f3) == 0x5071)
408 { itype
= M32RXF_INSN_MVTACLO_A
; goto extract_sfmt_mvtachi_a
; }
409 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
410 default: itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
414 if ((entire_insn
& 0xf3f2) == 0x5080)
415 { itype
= M32RXF_INSN_RACH_DSI
; goto extract_sfmt_rac_dsi
; }
416 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
418 if ((entire_insn
& 0xf3f2) == 0x5090)
419 { itype
= M32RXF_INSN_RAC_DSI
; goto extract_sfmt_rac_dsi
; }
420 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
421 case 90: itype
= M32RXF_INSN_MULWU1
; goto extract_sfmt_mulwu1
;
422 case 91: itype
= M32RXF_INSN_MACWU1
; goto extract_sfmt_macwu1
;
423 case 92: itype
= M32RXF_INSN_MACLH1
; goto extract_sfmt_macwu1
;
424 case 93: itype
= M32RXF_INSN_MSBLO
; goto extract_sfmt_msblo
;
426 if ((entire_insn
& 0xffff) == 0x50e4)
427 { itype
= M32RXF_INSN_SADD
; goto extract_sfmt_sadd
; }
428 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
431 unsigned int val1
= (((insn
>> 0) & (3 << 0)));
434 case 0: itype
= M32RXF_INSN_MVFACHI_A
; goto extract_sfmt_mvfachi_a
;
435 case 1: itype
= M32RXF_INSN_MVFACLO_A
; goto extract_sfmt_mvfachi_a
;
436 case 2: itype
= M32RXF_INSN_MVFACMI_A
; goto extract_sfmt_mvfachi_a
;
437 default: itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
455 case 111: itype
= M32RXF_INSN_LDI8
; goto extract_sfmt_ldi8
;
458 unsigned int val1
= (((insn
>> 7) & (15 << 1)) | ((insn
>> 0) & (1 << 0)));
462 if ((entire_insn
& 0xffff) == 0x7000)
463 { itype
= M32RXF_INSN_NOP
; goto extract_sfmt_nop
; }
464 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
466 case 3: itype
= M32RXF_INSN_SETPSW
; goto extract_sfmt_setpsw
;
468 case 5: itype
= M32RXF_INSN_CLRPSW
; goto extract_sfmt_clrpsw
;
470 if ((entire_insn
& 0xffff) == 0x7401)
471 { itype
= M32RXF_INSN_SC
; goto extract_sfmt_sc
; }
472 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
474 if ((entire_insn
& 0xffff) == 0x7501)
475 { itype
= M32RXF_INSN_SNC
; goto extract_sfmt_sc
; }
476 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
478 case 17: itype
= M32RXF_INSN_BCL8
; goto extract_sfmt_bcl8
;
480 case 19: itype
= M32RXF_INSN_BNCL8
; goto extract_sfmt_bcl8
;
482 case 25: itype
= M32RXF_INSN_BC8
; goto extract_sfmt_bc8
;
484 case 27: itype
= M32RXF_INSN_BNC8
; goto extract_sfmt_bc8
;
486 case 29: itype
= M32RXF_INSN_BL8
; goto extract_sfmt_bl8
;
488 case 31: itype
= M32RXF_INSN_BRA8
; goto extract_sfmt_bra8
;
489 default: itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
508 unsigned int val1
= (((insn
>> 8) & (15 << 0)));
511 case 1: itype
= M32RXF_INSN_SETPSW
; goto extract_sfmt_setpsw
;
512 case 2: itype
= M32RXF_INSN_CLRPSW
; goto extract_sfmt_clrpsw
;
513 case 8: itype
= M32RXF_INSN_BCL8
; goto extract_sfmt_bcl8
;
514 case 9: itype
= M32RXF_INSN_BNCL8
; goto extract_sfmt_bcl8
;
515 case 12: itype
= M32RXF_INSN_BC8
; goto extract_sfmt_bc8
;
516 case 13: itype
= M32RXF_INSN_BNC8
; goto extract_sfmt_bc8
;
517 case 14: itype
= M32RXF_INSN_BL8
; goto extract_sfmt_bl8
;
518 case 15: itype
= M32RXF_INSN_BRA8
; goto extract_sfmt_bra8
;
519 default: itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
523 if ((entire_insn
& 0xfff00000) == 0x80400000)
524 { itype
= M32RXF_INSN_CMPI
; goto extract_sfmt_cmpi
; }
525 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
527 if ((entire_insn
& 0xfff00000) == 0x80500000)
528 { itype
= M32RXF_INSN_CMPUI
; goto extract_sfmt_cmpi
; }
529 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
532 unsigned int val1
= (((entire_insn
>> 8) & (3 << 0)));
536 if ((entire_insn
& 0xf0f0ffff) == 0x80600000)
537 { itype
= M32RXF_INSN_SAT
; goto extract_sfmt_sat
; }
538 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
540 if ((entire_insn
& 0xf0f0ffff) == 0x80600200)
541 { itype
= M32RXF_INSN_SATH
; goto extract_sfmt_satb
; }
542 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
544 if ((entire_insn
& 0xf0f0ffff) == 0x80600300)
545 { itype
= M32RXF_INSN_SATB
; goto extract_sfmt_satb
; }
546 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
547 default: itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
550 case 136: itype
= M32RXF_INSN_ADDV3
; goto extract_sfmt_addv3
;
551 case 138: itype
= M32RXF_INSN_ADD3
; goto extract_sfmt_add3
;
552 case 140: itype
= M32RXF_INSN_AND3
; goto extract_sfmt_and3
;
553 case 141: itype
= M32RXF_INSN_XOR3
; goto extract_sfmt_and3
;
554 case 142: itype
= M32RXF_INSN_OR3
; goto extract_sfmt_or3
;
557 unsigned int val1
= (((entire_insn
>> 4) & (1 << 0)));
561 if ((entire_insn
& 0xf0f0ffff) == 0x90000000)
562 { itype
= M32RXF_INSN_DIV
; goto extract_sfmt_div
; }
563 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
565 if ((entire_insn
& 0xf0f0ffff) == 0x90000010)
566 { itype
= M32RXF_INSN_DIVH
; goto extract_sfmt_div
; }
567 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
568 default: itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
572 if ((entire_insn
& 0xf0f0ffff) == 0x90100000)
573 { itype
= M32RXF_INSN_DIVU
; goto extract_sfmt_div
; }
574 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
576 if ((entire_insn
& 0xf0f0ffff) == 0x90200000)
577 { itype
= M32RXF_INSN_REM
; goto extract_sfmt_div
; }
578 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
580 if ((entire_insn
& 0xf0f0ffff) == 0x90300000)
581 { itype
= M32RXF_INSN_REMU
; goto extract_sfmt_div
; }
582 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
583 case 152: itype
= M32RXF_INSN_SRL3
; goto extract_sfmt_sll3
;
584 case 154: itype
= M32RXF_INSN_SRA3
; goto extract_sfmt_sll3
;
585 case 156: itype
= M32RXF_INSN_SLL3
; goto extract_sfmt_sll3
;
587 if ((entire_insn
& 0xf0ff0000) == 0x90f00000)
588 { itype
= M32RXF_INSN_LDI16
; goto extract_sfmt_ldi16
; }
589 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
590 case 160: itype
= M32RXF_INSN_STB_D
; goto extract_sfmt_stb_d
;
591 case 162: itype
= M32RXF_INSN_STH_D
; goto extract_sfmt_sth_d
;
592 case 164: itype
= M32RXF_INSN_ST_D
; goto extract_sfmt_st_d
;
594 if ((entire_insn
& 0xf8f00000) == 0xa0600000)
595 { itype
= M32RXF_INSN_BSET
; goto extract_sfmt_bset
; }
596 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
598 if ((entire_insn
& 0xf8f00000) == 0xa0700000)
599 { itype
= M32RXF_INSN_BCLR
; goto extract_sfmt_bset
; }
600 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
601 case 168: itype
= M32RXF_INSN_LDB_D
; goto extract_sfmt_ldb_d
;
602 case 169: itype
= M32RXF_INSN_LDUB_D
; goto extract_sfmt_ldb_d
;
603 case 170: itype
= M32RXF_INSN_LDH_D
; goto extract_sfmt_ldh_d
;
604 case 171: itype
= M32RXF_INSN_LDUH_D
; goto extract_sfmt_ldh_d
;
605 case 172: itype
= M32RXF_INSN_LD_D
; goto extract_sfmt_ld_d
;
606 case 176: itype
= M32RXF_INSN_BEQ
; goto extract_sfmt_beq
;
607 case 177: itype
= M32RXF_INSN_BNE
; goto extract_sfmt_beq
;
609 if ((entire_insn
& 0xfff00000) == 0xb0800000)
610 { itype
= M32RXF_INSN_BEQZ
; goto extract_sfmt_beqz
; }
611 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
613 if ((entire_insn
& 0xfff00000) == 0xb0900000)
614 { itype
= M32RXF_INSN_BNEZ
; goto extract_sfmt_beqz
; }
615 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
617 if ((entire_insn
& 0xfff00000) == 0xb0a00000)
618 { itype
= M32RXF_INSN_BLTZ
; goto extract_sfmt_beqz
; }
619 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
621 if ((entire_insn
& 0xfff00000) == 0xb0b00000)
622 { itype
= M32RXF_INSN_BGEZ
; goto extract_sfmt_beqz
; }
623 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
625 if ((entire_insn
& 0xfff00000) == 0xb0c00000)
626 { itype
= M32RXF_INSN_BLEZ
; goto extract_sfmt_beqz
; }
627 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
629 if ((entire_insn
& 0xfff00000) == 0xb0d00000)
630 { itype
= M32RXF_INSN_BGTZ
; goto extract_sfmt_beqz
; }
631 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
633 if ((entire_insn
& 0xf0ff0000) == 0xd0c00000)
634 { itype
= M32RXF_INSN_SETH
; goto extract_sfmt_seth
; }
635 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
651 case 239: itype
= M32RXF_INSN_LD24
; goto extract_sfmt_ld24
;
669 unsigned int val1
= (((insn
>> 8) & (7 << 0)));
673 if ((entire_insn
& 0xff000000) == 0xf8000000)
674 { itype
= M32RXF_INSN_BCL24
; goto extract_sfmt_bcl24
; }
675 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
677 if ((entire_insn
& 0xff000000) == 0xf9000000)
678 { itype
= M32RXF_INSN_BNCL24
; goto extract_sfmt_bcl24
; }
679 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
681 if ((entire_insn
& 0xff000000) == 0xfc000000)
682 { itype
= M32RXF_INSN_BC24
; goto extract_sfmt_bc24
; }
683 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
685 if ((entire_insn
& 0xff000000) == 0xfd000000)
686 { itype
= M32RXF_INSN_BNC24
; goto extract_sfmt_bc24
; }
687 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
689 if ((entire_insn
& 0xff000000) == 0xfe000000)
690 { itype
= M32RXF_INSN_BL24
; goto extract_sfmt_bl24
; }
691 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
693 if ((entire_insn
& 0xff000000) == 0xff000000)
694 { itype
= M32RXF_INSN_BRA24
; goto extract_sfmt_bra24
; }
695 itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
696 default: itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
699 default: itype
= M32RXF_INSN_X_INVALID
; goto extract_sfmt_empty
;
704 /* The instruction has been decoded, now extract the fields. */
708 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
709 #define FLD(f) abuf->fields.sfmt_empty.f
712 /* Record the fields for the semantic handler. */
713 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_empty", (char *) 0));
721 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
722 CGEN_INSN_WORD insn
= entire_insn
;
723 #define FLD(f) abuf->fields.sfmt_add.f
727 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
728 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
730 /* Record the fields for the semantic handler. */
733 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
734 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
735 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_add", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
737 #if WITH_PROFILE_MODEL_P
738 /* Record the fields for profiling. */
739 if (PROFILE_MODEL_P (current_cpu
))
752 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
753 CGEN_INSN_WORD insn
= entire_insn
;
754 #define FLD(f) abuf->fields.sfmt_add3.f
759 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
760 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
761 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
763 /* Record the fields for the semantic handler. */
764 FLD (f_simm16
) = f_simm16
;
767 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
768 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
769 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_add3", "f_simm16 0x%x", 'x', f_simm16
, "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
771 #if WITH_PROFILE_MODEL_P
772 /* Record the fields for profiling. */
773 if (PROFILE_MODEL_P (current_cpu
))
785 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
786 CGEN_INSN_WORD insn
= entire_insn
;
787 #define FLD(f) abuf->fields.sfmt_and3.f
792 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
793 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
794 f_uimm16
= EXTRACT_MSB0_UINT (insn
, 32, 16, 16);
796 /* Record the fields for the semantic handler. */
798 FLD (f_uimm16
) = f_uimm16
;
800 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
801 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
802 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_and3", "f_r2 0x%x", 'x', f_r2
, "f_uimm16 0x%x", 'x', f_uimm16
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
804 #if WITH_PROFILE_MODEL_P
805 /* Record the fields for profiling. */
806 if (PROFILE_MODEL_P (current_cpu
))
818 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
819 CGEN_INSN_WORD insn
= entire_insn
;
820 #define FLD(f) abuf->fields.sfmt_and3.f
825 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
826 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
827 f_uimm16
= EXTRACT_MSB0_UINT (insn
, 32, 16, 16);
829 /* Record the fields for the semantic handler. */
831 FLD (f_uimm16
) = f_uimm16
;
833 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
834 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
835 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_or3", "f_r2 0x%x", 'x', f_r2
, "f_uimm16 0x%x", 'x', f_uimm16
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
837 #if WITH_PROFILE_MODEL_P
838 /* Record the fields for profiling. */
839 if (PROFILE_MODEL_P (current_cpu
))
851 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
852 CGEN_INSN_WORD insn
= entire_insn
;
853 #define FLD(f) abuf->fields.sfmt_addi.f
857 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
858 f_simm8
= EXTRACT_MSB0_SINT (insn
, 16, 8, 8);
860 /* Record the fields for the semantic handler. */
862 FLD (f_simm8
) = f_simm8
;
863 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
864 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_addi", "f_r1 0x%x", 'x', f_r1
, "f_simm8 0x%x", 'x', f_simm8
, "dr 0x%x", 'x', f_r1
, (char *) 0));
866 #if WITH_PROFILE_MODEL_P
867 /* Record the fields for profiling. */
868 if (PROFILE_MODEL_P (current_cpu
))
880 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
881 CGEN_INSN_WORD insn
= entire_insn
;
882 #define FLD(f) abuf->fields.sfmt_add.f
886 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
887 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
889 /* Record the fields for the semantic handler. */
892 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
893 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
894 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_addv", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
896 #if WITH_PROFILE_MODEL_P
897 /* Record the fields for profiling. */
898 if (PROFILE_MODEL_P (current_cpu
))
911 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
912 CGEN_INSN_WORD insn
= entire_insn
;
913 #define FLD(f) abuf->fields.sfmt_add3.f
918 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
919 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
920 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
922 /* Record the fields for the semantic handler. */
923 FLD (f_simm16
) = f_simm16
;
926 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
927 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
928 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_addv3", "f_simm16 0x%x", 'x', f_simm16
, "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
930 #if WITH_PROFILE_MODEL_P
931 /* Record the fields for profiling. */
932 if (PROFILE_MODEL_P (current_cpu
))
944 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
945 CGEN_INSN_WORD insn
= entire_insn
;
946 #define FLD(f) abuf->fields.sfmt_add.f
950 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
951 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
953 /* Record the fields for the semantic handler. */
956 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
957 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
958 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_addx", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
960 #if WITH_PROFILE_MODEL_P
961 /* Record the fields for profiling. */
962 if (PROFILE_MODEL_P (current_cpu
))
975 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
976 CGEN_INSN_WORD insn
= entire_insn
;
977 #define FLD(f) abuf->fields.sfmt_bl8.f
980 f_disp8
= ((((EXTRACT_MSB0_SINT (insn
, 16, 8, 8)) * (4))) + (((pc
) & (-4))));
982 /* Record the fields for the semantic handler. */
983 FLD (i_disp8
) = f_disp8
;
984 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bc8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
986 #if WITH_PROFILE_MODEL_P
987 /* Record the fields for profiling. */
988 if (PROFILE_MODEL_P (current_cpu
))
998 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
999 CGEN_INSN_WORD insn
= entire_insn
;
1000 #define FLD(f) abuf->fields.sfmt_bl24.f
1003 f_disp24
= ((((EXTRACT_MSB0_SINT (insn
, 32, 8, 24)) * (4))) + (pc
));
1005 /* Record the fields for the semantic handler. */
1006 FLD (i_disp24
) = f_disp24
;
1007 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bc24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1009 #if WITH_PROFILE_MODEL_P
1010 /* Record the fields for profiling. */
1011 if (PROFILE_MODEL_P (current_cpu
))
1021 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1022 CGEN_INSN_WORD insn
= entire_insn
;
1023 #define FLD(f) abuf->fields.sfmt_beq.f
1028 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1029 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1030 f_disp16
= ((((EXTRACT_MSB0_SINT (insn
, 32, 16, 16)) * (4))) + (pc
));
1032 /* Record the fields for the semantic handler. */
1035 FLD (i_disp16
) = f_disp16
;
1036 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1037 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1038 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_beq", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "disp16 0x%x", 'x', f_disp16
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1040 #if WITH_PROFILE_MODEL_P
1041 /* Record the fields for profiling. */
1042 if (PROFILE_MODEL_P (current_cpu
))
1044 FLD (in_src1
) = f_r1
;
1045 FLD (in_src2
) = f_r2
;
1054 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1055 CGEN_INSN_WORD insn
= entire_insn
;
1056 #define FLD(f) abuf->fields.sfmt_beq.f
1060 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1061 f_disp16
= ((((EXTRACT_MSB0_SINT (insn
, 32, 16, 16)) * (4))) + (pc
));
1063 /* Record the fields for the semantic handler. */
1065 FLD (i_disp16
) = f_disp16
;
1066 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1067 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_beqz", "f_r2 0x%x", 'x', f_r2
, "disp16 0x%x", 'x', f_disp16
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1069 #if WITH_PROFILE_MODEL_P
1070 /* Record the fields for profiling. */
1071 if (PROFILE_MODEL_P (current_cpu
))
1073 FLD (in_src2
) = f_r2
;
1082 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1083 CGEN_INSN_WORD insn
= entire_insn
;
1084 #define FLD(f) abuf->fields.sfmt_bl8.f
1087 f_disp8
= ((((EXTRACT_MSB0_SINT (insn
, 16, 8, 8)) * (4))) + (((pc
) & (-4))));
1089 /* Record the fields for the semantic handler. */
1090 FLD (i_disp8
) = f_disp8
;
1091 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bl8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
1093 #if WITH_PROFILE_MODEL_P
1094 /* Record the fields for profiling. */
1095 if (PROFILE_MODEL_P (current_cpu
))
1097 FLD (out_h_gr_SI_14
) = 14;
1106 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1107 CGEN_INSN_WORD insn
= entire_insn
;
1108 #define FLD(f) abuf->fields.sfmt_bl24.f
1111 f_disp24
= ((((EXTRACT_MSB0_SINT (insn
, 32, 8, 24)) * (4))) + (pc
));
1113 /* Record the fields for the semantic handler. */
1114 FLD (i_disp24
) = f_disp24
;
1115 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bl24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1117 #if WITH_PROFILE_MODEL_P
1118 /* Record the fields for profiling. */
1119 if (PROFILE_MODEL_P (current_cpu
))
1121 FLD (out_h_gr_SI_14
) = 14;
1130 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1131 CGEN_INSN_WORD insn
= entire_insn
;
1132 #define FLD(f) abuf->fields.sfmt_bl8.f
1135 f_disp8
= ((((EXTRACT_MSB0_SINT (insn
, 16, 8, 8)) * (4))) + (((pc
) & (-4))));
1137 /* Record the fields for the semantic handler. */
1138 FLD (i_disp8
) = f_disp8
;
1139 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bcl8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
1141 #if WITH_PROFILE_MODEL_P
1142 /* Record the fields for profiling. */
1143 if (PROFILE_MODEL_P (current_cpu
))
1145 FLD (out_h_gr_SI_14
) = 14;
1154 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1155 CGEN_INSN_WORD insn
= entire_insn
;
1156 #define FLD(f) abuf->fields.sfmt_bl24.f
1159 f_disp24
= ((((EXTRACT_MSB0_SINT (insn
, 32, 8, 24)) * (4))) + (pc
));
1161 /* Record the fields for the semantic handler. */
1162 FLD (i_disp24
) = f_disp24
;
1163 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bcl24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1165 #if WITH_PROFILE_MODEL_P
1166 /* Record the fields for profiling. */
1167 if (PROFILE_MODEL_P (current_cpu
))
1169 FLD (out_h_gr_SI_14
) = 14;
1178 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1179 CGEN_INSN_WORD insn
= entire_insn
;
1180 #define FLD(f) abuf->fields.sfmt_bl8.f
1183 f_disp8
= ((((EXTRACT_MSB0_SINT (insn
, 16, 8, 8)) * (4))) + (((pc
) & (-4))));
1185 /* Record the fields for the semantic handler. */
1186 FLD (i_disp8
) = f_disp8
;
1187 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bra8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
1189 #if WITH_PROFILE_MODEL_P
1190 /* Record the fields for profiling. */
1191 if (PROFILE_MODEL_P (current_cpu
))
1201 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1202 CGEN_INSN_WORD insn
= entire_insn
;
1203 #define FLD(f) abuf->fields.sfmt_bl24.f
1206 f_disp24
= ((((EXTRACT_MSB0_SINT (insn
, 32, 8, 24)) * (4))) + (pc
));
1208 /* Record the fields for the semantic handler. */
1209 FLD (i_disp24
) = f_disp24
;
1210 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bra24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1212 #if WITH_PROFILE_MODEL_P
1213 /* Record the fields for profiling. */
1214 if (PROFILE_MODEL_P (current_cpu
))
1224 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1225 CGEN_INSN_WORD insn
= entire_insn
;
1226 #define FLD(f) abuf->fields.sfmt_st_plus.f
1230 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1231 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1233 /* Record the fields for the semantic handler. */
1236 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1237 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1238 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_cmp", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1240 #if WITH_PROFILE_MODEL_P
1241 /* Record the fields for profiling. */
1242 if (PROFILE_MODEL_P (current_cpu
))
1244 FLD (in_src1
) = f_r1
;
1245 FLD (in_src2
) = f_r2
;
1254 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1255 CGEN_INSN_WORD insn
= entire_insn
;
1256 #define FLD(f) abuf->fields.sfmt_st_d.f
1260 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1261 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
1263 /* Record the fields for the semantic handler. */
1264 FLD (f_simm16
) = f_simm16
;
1266 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1267 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_cmpi", "f_simm16 0x%x", 'x', f_simm16
, "f_r2 0x%x", 'x', f_r2
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1269 #if WITH_PROFILE_MODEL_P
1270 /* Record the fields for profiling. */
1271 if (PROFILE_MODEL_P (current_cpu
))
1273 FLD (in_src2
) = f_r2
;
1282 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1283 CGEN_INSN_WORD insn
= entire_insn
;
1284 #define FLD(f) abuf->fields.sfmt_st_plus.f
1287 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1289 /* Record the fields for the semantic handler. */
1291 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1292 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_cmpz", "f_r2 0x%x", 'x', f_r2
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1294 #if WITH_PROFILE_MODEL_P
1295 /* Record the fields for profiling. */
1296 if (PROFILE_MODEL_P (current_cpu
))
1298 FLD (in_src2
) = f_r2
;
1307 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1308 CGEN_INSN_WORD insn
= entire_insn
;
1309 #define FLD(f) abuf->fields.sfmt_add.f
1313 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1314 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1316 /* Record the fields for the semantic handler. */
1319 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1320 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1321 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_div", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1323 #if WITH_PROFILE_MODEL_P
1324 /* Record the fields for profiling. */
1325 if (PROFILE_MODEL_P (current_cpu
))
1329 FLD (out_dr
) = f_r1
;
1338 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1339 CGEN_INSN_WORD insn
= entire_insn
;
1340 #define FLD(f) abuf->fields.sfmt_jl.f
1343 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1345 /* Record the fields for the semantic handler. */
1347 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1348 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_jc", "f_r2 0x%x", 'x', f_r2
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1350 #if WITH_PROFILE_MODEL_P
1351 /* Record the fields for profiling. */
1352 if (PROFILE_MODEL_P (current_cpu
))
1363 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1364 CGEN_INSN_WORD insn
= entire_insn
;
1365 #define FLD(f) abuf->fields.sfmt_jl.f
1368 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1370 /* Record the fields for the semantic handler. */
1372 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1373 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_jl", "f_r2 0x%x", 'x', f_r2
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1375 #if WITH_PROFILE_MODEL_P
1376 /* Record the fields for profiling. */
1377 if (PROFILE_MODEL_P (current_cpu
))
1380 FLD (out_h_gr_SI_14
) = 14;
1389 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1390 CGEN_INSN_WORD insn
= entire_insn
;
1391 #define FLD(f) abuf->fields.sfmt_jl.f
1394 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1396 /* Record the fields for the semantic handler. */
1398 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1399 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_jmp", "f_r2 0x%x", 'x', f_r2
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1401 #if WITH_PROFILE_MODEL_P
1402 /* Record the fields for profiling. */
1403 if (PROFILE_MODEL_P (current_cpu
))
1414 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1415 CGEN_INSN_WORD insn
= entire_insn
;
1416 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1420 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1421 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1423 /* Record the fields for the semantic handler. */
1426 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1427 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1428 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ld", "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1430 #if WITH_PROFILE_MODEL_P
1431 /* Record the fields for profiling. */
1432 if (PROFILE_MODEL_P (current_cpu
))
1435 FLD (out_dr
) = f_r1
;
1444 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1445 CGEN_INSN_WORD insn
= entire_insn
;
1446 #define FLD(f) abuf->fields.sfmt_add3.f
1451 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1452 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1453 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
1455 /* Record the fields for the semantic handler. */
1456 FLD (f_simm16
) = f_simm16
;
1459 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1460 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1461 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ld_d", "f_simm16 0x%x", 'x', f_simm16
, "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1463 #if WITH_PROFILE_MODEL_P
1464 /* Record the fields for profiling. */
1465 if (PROFILE_MODEL_P (current_cpu
))
1468 FLD (out_dr
) = f_r1
;
1477 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1478 CGEN_INSN_WORD insn
= entire_insn
;
1479 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1483 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1484 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1486 /* Record the fields for the semantic handler. */
1489 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1490 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1491 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ldb", "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1493 #if WITH_PROFILE_MODEL_P
1494 /* Record the fields for profiling. */
1495 if (PROFILE_MODEL_P (current_cpu
))
1498 FLD (out_dr
) = f_r1
;
1507 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1508 CGEN_INSN_WORD insn
= entire_insn
;
1509 #define FLD(f) abuf->fields.sfmt_add3.f
1514 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1515 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1516 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
1518 /* Record the fields for the semantic handler. */
1519 FLD (f_simm16
) = f_simm16
;
1522 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1523 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1524 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ldb_d", "f_simm16 0x%x", 'x', f_simm16
, "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1526 #if WITH_PROFILE_MODEL_P
1527 /* Record the fields for profiling. */
1528 if (PROFILE_MODEL_P (current_cpu
))
1531 FLD (out_dr
) = f_r1
;
1540 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1541 CGEN_INSN_WORD insn
= entire_insn
;
1542 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1546 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1547 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1549 /* Record the fields for the semantic handler. */
1552 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1553 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1554 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ldh", "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1556 #if WITH_PROFILE_MODEL_P
1557 /* Record the fields for profiling. */
1558 if (PROFILE_MODEL_P (current_cpu
))
1561 FLD (out_dr
) = f_r1
;
1570 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1571 CGEN_INSN_WORD insn
= entire_insn
;
1572 #define FLD(f) abuf->fields.sfmt_add3.f
1577 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1578 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
1579 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
1581 /* Record the fields for the semantic handler. */
1582 FLD (f_simm16
) = f_simm16
;
1585 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1586 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1587 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ldh_d", "f_simm16 0x%x", 'x', f_simm16
, "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1589 #if WITH_PROFILE_MODEL_P
1590 /* Record the fields for profiling. */
1591 if (PROFILE_MODEL_P (current_cpu
))
1594 FLD (out_dr
) = f_r1
;
1601 extract_sfmt_ld_plus
:
1603 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1604 CGEN_INSN_WORD insn
= entire_insn
;
1605 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1609 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1610 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1612 /* Record the fields for the semantic handler. */
1615 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1616 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1617 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ld_plus", "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1619 #if WITH_PROFILE_MODEL_P
1620 /* Record the fields for profiling. */
1621 if (PROFILE_MODEL_P (current_cpu
))
1624 FLD (out_dr
) = f_r1
;
1625 FLD (out_sr
) = f_r2
;
1634 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1635 CGEN_INSN_WORD insn
= entire_insn
;
1636 #define FLD(f) abuf->fields.sfmt_ld24.f
1640 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1641 f_uimm24
= EXTRACT_MSB0_UINT (insn
, 32, 8, 24);
1643 /* Record the fields for the semantic handler. */
1645 FLD (i_uimm24
) = f_uimm24
;
1646 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1647 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ld24", "f_r1 0x%x", 'x', f_r1
, "uimm24 0x%x", 'x', f_uimm24
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1649 #if WITH_PROFILE_MODEL_P
1650 /* Record the fields for profiling. */
1651 if (PROFILE_MODEL_P (current_cpu
))
1653 FLD (out_dr
) = f_r1
;
1662 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1663 CGEN_INSN_WORD insn
= entire_insn
;
1664 #define FLD(f) abuf->fields.sfmt_addi.f
1668 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1669 f_simm8
= EXTRACT_MSB0_SINT (insn
, 16, 8, 8);
1671 /* Record the fields for the semantic handler. */
1672 FLD (f_simm8
) = f_simm8
;
1674 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1675 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ldi8", "f_simm8 0x%x", 'x', f_simm8
, "f_r1 0x%x", 'x', f_r1
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1677 #if WITH_PROFILE_MODEL_P
1678 /* Record the fields for profiling. */
1679 if (PROFILE_MODEL_P (current_cpu
))
1681 FLD (out_dr
) = f_r1
;
1690 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1691 CGEN_INSN_WORD insn
= entire_insn
;
1692 #define FLD(f) abuf->fields.sfmt_add3.f
1696 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
1697 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
1699 /* Record the fields for the semantic handler. */
1700 FLD (f_simm16
) = f_simm16
;
1702 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1703 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_ldi16", "f_simm16 0x%x", 'x', f_simm16
, "f_r1 0x%x", 'x', f_r1
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1705 #if WITH_PROFILE_MODEL_P
1706 /* Record the fields for profiling. */
1707 if (PROFILE_MODEL_P (current_cpu
))
1709 FLD (out_dr
) = f_r1
;
1718 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1719 CGEN_INSN_WORD insn
= entire_insn
;
1720 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1724 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1725 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1727 /* Record the fields for the semantic handler. */
1730 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1731 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1732 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_lock", "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1734 #if WITH_PROFILE_MODEL_P
1735 /* Record the fields for profiling. */
1736 if (PROFILE_MODEL_P (current_cpu
))
1739 FLD (out_dr
) = f_r1
;
1746 extract_sfmt_machi_a
:
1748 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1749 CGEN_INSN_WORD insn
= entire_insn
;
1750 #define FLD(f) abuf->fields.sfmt_machi_a.f
1755 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1756 f_acc
= EXTRACT_MSB0_UINT (insn
, 16, 8, 1);
1757 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1759 /* Record the fields for the semantic handler. */
1760 FLD (f_acc
) = f_acc
;
1763 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1764 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1765 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_machi_a", "f_acc 0x%x", 'x', f_acc
, "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1767 #if WITH_PROFILE_MODEL_P
1768 /* Record the fields for profiling. */
1769 if (PROFILE_MODEL_P (current_cpu
))
1771 FLD (in_src1
) = f_r1
;
1772 FLD (in_src2
) = f_r2
;
1779 extract_sfmt_mulhi_a
:
1781 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1782 CGEN_INSN_WORD insn
= entire_insn
;
1783 #define FLD(f) abuf->fields.sfmt_machi_a.f
1788 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1789 f_acc
= EXTRACT_MSB0_UINT (insn
, 16, 8, 1);
1790 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1792 /* Record the fields for the semantic handler. */
1795 FLD (f_acc
) = f_acc
;
1796 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1797 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1798 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mulhi_a", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "f_acc 0x%x", 'x', f_acc
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1800 #if WITH_PROFILE_MODEL_P
1801 /* Record the fields for profiling. */
1802 if (PROFILE_MODEL_P (current_cpu
))
1804 FLD (in_src1
) = f_r1
;
1805 FLD (in_src2
) = f_r2
;
1814 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1815 CGEN_INSN_WORD insn
= entire_insn
;
1816 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1820 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1821 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1823 /* Record the fields for the semantic handler. */
1826 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1827 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1828 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mv", "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1830 #if WITH_PROFILE_MODEL_P
1831 /* Record the fields for profiling. */
1832 if (PROFILE_MODEL_P (current_cpu
))
1835 FLD (out_dr
) = f_r1
;
1842 extract_sfmt_mvfachi_a
:
1844 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1845 CGEN_INSN_WORD insn
= entire_insn
;
1846 #define FLD(f) abuf->fields.sfmt_mvfachi_a.f
1850 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1851 f_accs
= EXTRACT_MSB0_UINT (insn
, 16, 12, 2);
1853 /* Record the fields for the semantic handler. */
1854 FLD (f_accs
) = f_accs
;
1856 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1857 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mvfachi_a", "f_accs 0x%x", 'x', f_accs
, "f_r1 0x%x", 'x', f_r1
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1859 #if WITH_PROFILE_MODEL_P
1860 /* Record the fields for profiling. */
1861 if (PROFILE_MODEL_P (current_cpu
))
1863 FLD (out_dr
) = f_r1
;
1872 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1873 CGEN_INSN_WORD insn
= entire_insn
;
1874 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1878 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1879 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1881 /* Record the fields for the semantic handler. */
1884 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1885 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mvfc", "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1887 #if WITH_PROFILE_MODEL_P
1888 /* Record the fields for profiling. */
1889 if (PROFILE_MODEL_P (current_cpu
))
1891 FLD (out_dr
) = f_r1
;
1898 extract_sfmt_mvtachi_a
:
1900 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1901 CGEN_INSN_WORD insn
= entire_insn
;
1902 #define FLD(f) abuf->fields.sfmt_mvtachi_a.f
1906 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1907 f_accs
= EXTRACT_MSB0_UINT (insn
, 16, 12, 2);
1909 /* Record the fields for the semantic handler. */
1910 FLD (f_accs
) = f_accs
;
1912 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1913 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mvtachi_a", "f_accs 0x%x", 'x', f_accs
, "f_r1 0x%x", 'x', f_r1
, "src1 0x%x", 'x', f_r1
, (char *) 0));
1915 #if WITH_PROFILE_MODEL_P
1916 /* Record the fields for profiling. */
1917 if (PROFILE_MODEL_P (current_cpu
))
1919 FLD (in_src1
) = f_r1
;
1928 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1929 CGEN_INSN_WORD insn
= entire_insn
;
1930 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1934 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
1935 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1937 /* Record the fields for the semantic handler. */
1940 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1941 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mvtc", "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1943 #if WITH_PROFILE_MODEL_P
1944 /* Record the fields for profiling. */
1945 if (PROFILE_MODEL_P (current_cpu
))
1956 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1957 #define FLD(f) abuf->fields.sfmt_empty.f
1960 /* Record the fields for the semantic handler. */
1961 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_nop", (char *) 0));
1967 extract_sfmt_rac_dsi
:
1969 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1970 CGEN_INSN_WORD insn
= entire_insn
;
1971 #define FLD(f) abuf->fields.sfmt_rac_dsi.f
1976 f_accd
= EXTRACT_MSB0_UINT (insn
, 16, 4, 2);
1977 f_accs
= EXTRACT_MSB0_UINT (insn
, 16, 12, 2);
1978 f_imm1
= ((EXTRACT_MSB0_UINT (insn
, 16, 15, 1)) + (1));
1980 /* Record the fields for the semantic handler. */
1981 FLD (f_accs
) = f_accs
;
1982 FLD (f_imm1
) = f_imm1
;
1983 FLD (f_accd
) = f_accd
;
1984 CGEN_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));
1992 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
1993 #define FLD(f) abuf->fields.sfmt_empty.f
1996 /* Record the fields for the semantic handler. */
1997 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_rte", (char *) 0));
1999 #if WITH_PROFILE_MODEL_P
2000 /* Record the fields for profiling. */
2001 if (PROFILE_MODEL_P (current_cpu
))
2011 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2012 CGEN_INSN_WORD insn
= entire_insn
;
2013 #define FLD(f) abuf->fields.sfmt_seth.f
2017 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
2018 f_hi16
= EXTRACT_MSB0_UINT (insn
, 32, 16, 16);
2020 /* Record the fields for the semantic handler. */
2021 FLD (f_hi16
) = f_hi16
;
2023 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
2024 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_seth", "f_hi16 0x%x", 'x', f_hi16
, "f_r1 0x%x", 'x', f_r1
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2026 #if WITH_PROFILE_MODEL_P
2027 /* Record the fields for profiling. */
2028 if (PROFILE_MODEL_P (current_cpu
))
2030 FLD (out_dr
) = f_r1
;
2039 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2040 CGEN_INSN_WORD insn
= entire_insn
;
2041 #define FLD(f) abuf->fields.sfmt_add3.f
2046 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
2047 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
2048 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
2050 /* Record the fields for the semantic handler. */
2051 FLD (f_simm16
) = f_simm16
;
2054 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
2055 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
2056 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sll3", "f_simm16 0x%x", 'x', f_simm16
, "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2058 #if WITH_PROFILE_MODEL_P
2059 /* Record the fields for profiling. */
2060 if (PROFILE_MODEL_P (current_cpu
))
2063 FLD (out_dr
) = f_r1
;
2072 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2073 CGEN_INSN_WORD insn
= entire_insn
;
2074 #define FLD(f) abuf->fields.sfmt_slli.f
2078 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2079 f_uimm5
= EXTRACT_MSB0_UINT (insn
, 16, 11, 5);
2081 /* Record the fields for the semantic handler. */
2083 FLD (f_uimm5
) = f_uimm5
;
2084 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
2085 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_slli", "f_r1 0x%x", 'x', f_r1
, "f_uimm5 0x%x", 'x', f_uimm5
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2087 #if WITH_PROFILE_MODEL_P
2088 /* Record the fields for profiling. */
2089 if (PROFILE_MODEL_P (current_cpu
))
2092 FLD (out_dr
) = f_r1
;
2101 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2102 CGEN_INSN_WORD insn
= entire_insn
;
2103 #define FLD(f) abuf->fields.sfmt_st_plus.f
2107 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2108 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2110 /* Record the fields for the semantic handler. */
2113 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2114 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2115 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_st", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2117 #if WITH_PROFILE_MODEL_P
2118 /* Record the fields for profiling. */
2119 if (PROFILE_MODEL_P (current_cpu
))
2121 FLD (in_src1
) = f_r1
;
2122 FLD (in_src2
) = f_r2
;
2131 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2132 CGEN_INSN_WORD insn
= entire_insn
;
2133 #define FLD(f) abuf->fields.sfmt_st_d.f
2138 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
2139 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
2140 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
2142 /* Record the fields for the semantic handler. */
2143 FLD (f_simm16
) = f_simm16
;
2146 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2147 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2148 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_st_d", "f_simm16 0x%x", 'x', f_simm16
, "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2150 #if WITH_PROFILE_MODEL_P
2151 /* Record the fields for profiling. */
2152 if (PROFILE_MODEL_P (current_cpu
))
2154 FLD (in_src1
) = f_r1
;
2155 FLD (in_src2
) = f_r2
;
2164 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2165 CGEN_INSN_WORD insn
= entire_insn
;
2166 #define FLD(f) abuf->fields.sfmt_st_plus.f
2170 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2171 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2173 /* Record the fields for the semantic handler. */
2176 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2177 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2178 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_stb", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2180 #if WITH_PROFILE_MODEL_P
2181 /* Record the fields for profiling. */
2182 if (PROFILE_MODEL_P (current_cpu
))
2184 FLD (in_src1
) = f_r1
;
2185 FLD (in_src2
) = f_r2
;
2194 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2195 CGEN_INSN_WORD insn
= entire_insn
;
2196 #define FLD(f) abuf->fields.sfmt_st_d.f
2201 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
2202 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
2203 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
2205 /* Record the fields for the semantic handler. */
2206 FLD (f_simm16
) = f_simm16
;
2209 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2210 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2211 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_stb_d", "f_simm16 0x%x", 'x', f_simm16
, "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2213 #if WITH_PROFILE_MODEL_P
2214 /* Record the fields for profiling. */
2215 if (PROFILE_MODEL_P (current_cpu
))
2217 FLD (in_src1
) = f_r1
;
2218 FLD (in_src2
) = f_r2
;
2227 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2228 CGEN_INSN_WORD insn
= entire_insn
;
2229 #define FLD(f) abuf->fields.sfmt_st_plus.f
2233 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2234 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2236 /* Record the fields for the semantic handler. */
2239 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2240 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2241 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sth", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2243 #if WITH_PROFILE_MODEL_P
2244 /* Record the fields for profiling. */
2245 if (PROFILE_MODEL_P (current_cpu
))
2247 FLD (in_src1
) = f_r1
;
2248 FLD (in_src2
) = f_r2
;
2257 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2258 CGEN_INSN_WORD insn
= entire_insn
;
2259 #define FLD(f) abuf->fields.sfmt_st_d.f
2264 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
2265 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
2266 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
2268 /* Record the fields for the semantic handler. */
2269 FLD (f_simm16
) = f_simm16
;
2272 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2273 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2274 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sth_d", "f_simm16 0x%x", 'x', f_simm16
, "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2276 #if WITH_PROFILE_MODEL_P
2277 /* Record the fields for profiling. */
2278 if (PROFILE_MODEL_P (current_cpu
))
2280 FLD (in_src1
) = f_r1
;
2281 FLD (in_src2
) = f_r2
;
2288 extract_sfmt_st_plus
:
2290 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2291 CGEN_INSN_WORD insn
= entire_insn
;
2292 #define FLD(f) abuf->fields.sfmt_st_plus.f
2296 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2297 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2299 /* Record the fields for the semantic handler. */
2302 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2303 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2304 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_st_plus", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2306 #if WITH_PROFILE_MODEL_P
2307 /* Record the fields for profiling. */
2308 if (PROFILE_MODEL_P (current_cpu
))
2310 FLD (in_src1
) = f_r1
;
2311 FLD (in_src2
) = f_r2
;
2312 FLD (out_src2
) = f_r2
;
2319 extract_sfmt_sth_plus
:
2321 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2322 CGEN_INSN_WORD insn
= entire_insn
;
2323 #define FLD(f) abuf->fields.sfmt_st_plus.f
2327 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2328 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2330 /* Record the fields for the semantic handler. */
2333 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2334 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2335 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sth_plus", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2337 #if WITH_PROFILE_MODEL_P
2338 /* Record the fields for profiling. */
2339 if (PROFILE_MODEL_P (current_cpu
))
2341 FLD (in_src1
) = f_r1
;
2342 FLD (in_src2
) = f_r2
;
2343 FLD (out_src2
) = f_r2
;
2350 extract_sfmt_stb_plus
:
2352 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2353 CGEN_INSN_WORD insn
= entire_insn
;
2354 #define FLD(f) abuf->fields.sfmt_st_plus.f
2358 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2359 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2361 /* Record the fields for the semantic handler. */
2364 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2365 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2366 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_stb_plus", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2368 #if WITH_PROFILE_MODEL_P
2369 /* Record the fields for profiling. */
2370 if (PROFILE_MODEL_P (current_cpu
))
2372 FLD (in_src1
) = f_r1
;
2373 FLD (in_src2
) = f_r2
;
2374 FLD (out_src2
) = f_r2
;
2383 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2384 CGEN_INSN_WORD insn
= entire_insn
;
2385 #define FLD(f) abuf->fields.sfmt_trap.f
2388 f_uimm4
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2390 /* Record the fields for the semantic handler. */
2391 FLD (f_uimm4
) = f_uimm4
;
2392 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_trap", "f_uimm4 0x%x", 'x', f_uimm4
, (char *) 0));
2394 #if WITH_PROFILE_MODEL_P
2395 /* Record the fields for profiling. */
2396 if (PROFILE_MODEL_P (current_cpu
))
2404 extract_sfmt_unlock
:
2406 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2407 CGEN_INSN_WORD insn
= entire_insn
;
2408 #define FLD(f) abuf->fields.sfmt_st_plus.f
2412 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2413 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2415 /* Record the fields for the semantic handler. */
2418 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2419 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2420 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_unlock", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2422 #if WITH_PROFILE_MODEL_P
2423 /* Record the fields for profiling. */
2424 if (PROFILE_MODEL_P (current_cpu
))
2426 FLD (in_src1
) = f_r1
;
2427 FLD (in_src2
) = f_r2
;
2436 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2437 CGEN_INSN_WORD insn
= entire_insn
;
2438 #define FLD(f) abuf->fields.sfmt_ld_plus.f
2442 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
2443 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
2445 /* Record the fields for the semantic handler. */
2448 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
2449 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
2450 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_satb", "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2452 #if WITH_PROFILE_MODEL_P
2453 /* Record the fields for profiling. */
2454 if (PROFILE_MODEL_P (current_cpu
))
2457 FLD (out_dr
) = f_r1
;
2466 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2467 CGEN_INSN_WORD insn
= entire_insn
;
2468 #define FLD(f) abuf->fields.sfmt_ld_plus.f
2472 f_r1
= EXTRACT_MSB0_UINT (insn
, 32, 4, 4);
2473 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
2475 /* Record the fields for the semantic handler. */
2478 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
2479 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
2480 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sat", "f_r2 0x%x", 'x', f_r2
, "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2482 #if WITH_PROFILE_MODEL_P
2483 /* Record the fields for profiling. */
2484 if (PROFILE_MODEL_P (current_cpu
))
2487 FLD (out_dr
) = f_r1
;
2496 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2497 #define FLD(f) abuf->fields.sfmt_empty.f
2500 /* Record the fields for the semantic handler. */
2501 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sadd", (char *) 0));
2507 extract_sfmt_macwu1
:
2509 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2510 CGEN_INSN_WORD insn
= entire_insn
;
2511 #define FLD(f) abuf->fields.sfmt_st_plus.f
2515 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2516 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2518 /* Record the fields for the semantic handler. */
2521 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2522 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2523 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_macwu1", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2525 #if WITH_PROFILE_MODEL_P
2526 /* Record the fields for profiling. */
2527 if (PROFILE_MODEL_P (current_cpu
))
2529 FLD (in_src1
) = f_r1
;
2530 FLD (in_src2
) = f_r2
;
2539 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2540 CGEN_INSN_WORD insn
= entire_insn
;
2541 #define FLD(f) abuf->fields.sfmt_st_plus.f
2545 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2546 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2548 /* Record the fields for the semantic handler. */
2551 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2552 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2553 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_msblo", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2555 #if WITH_PROFILE_MODEL_P
2556 /* Record the fields for profiling. */
2557 if (PROFILE_MODEL_P (current_cpu
))
2559 FLD (in_src1
) = f_r1
;
2560 FLD (in_src2
) = f_r2
;
2567 extract_sfmt_mulwu1
:
2569 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2570 CGEN_INSN_WORD insn
= entire_insn
;
2571 #define FLD(f) abuf->fields.sfmt_st_plus.f
2575 f_r1
= EXTRACT_MSB0_UINT (insn
, 16, 4, 4);
2576 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2578 /* Record the fields for the semantic handler. */
2581 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2582 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2583 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_mulwu1", "f_r1 0x%x", 'x', f_r1
, "f_r2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2585 #if WITH_PROFILE_MODEL_P
2586 /* Record the fields for profiling. */
2587 if (PROFILE_MODEL_P (current_cpu
))
2589 FLD (in_src1
) = f_r1
;
2590 FLD (in_src2
) = f_r2
;
2599 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2600 #define FLD(f) abuf->fields.sfmt_empty.f
2603 /* Record the fields for the semantic handler. */
2604 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_sc", (char *) 0));
2610 extract_sfmt_clrpsw
:
2612 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2613 CGEN_INSN_WORD insn
= entire_insn
;
2614 #define FLD(f) abuf->fields.sfmt_clrpsw.f
2617 f_uimm8
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
2619 /* Record the fields for the semantic handler. */
2620 FLD (f_uimm8
) = f_uimm8
;
2621 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_clrpsw", "f_uimm8 0x%x", 'x', f_uimm8
, (char *) 0));
2627 extract_sfmt_setpsw
:
2629 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2630 CGEN_INSN_WORD insn
= entire_insn
;
2631 #define FLD(f) abuf->fields.sfmt_clrpsw.f
2634 f_uimm8
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
2636 /* Record the fields for the semantic handler. */
2637 FLD (f_uimm8
) = f_uimm8
;
2638 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_setpsw", "f_uimm8 0x%x", 'x', f_uimm8
, (char *) 0));
2646 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2647 CGEN_INSN_WORD insn
= entire_insn
;
2648 #define FLD(f) abuf->fields.sfmt_bset.f
2653 f_uimm3
= EXTRACT_MSB0_UINT (insn
, 32, 5, 3);
2654 f_r2
= EXTRACT_MSB0_UINT (insn
, 32, 12, 4);
2655 f_simm16
= EXTRACT_MSB0_SINT (insn
, 32, 16, 16);
2657 /* Record the fields for the semantic handler. */
2658 FLD (f_simm16
) = f_simm16
;
2660 FLD (f_uimm3
) = f_uimm3
;
2661 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
2662 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_bset", "f_simm16 0x%x", 'x', f_simm16
, "f_r2 0x%x", 'x', f_r2
, "f_uimm3 0x%x", 'x', f_uimm3
, "sr 0x%x", 'x', f_r2
, (char *) 0));
2664 #if WITH_PROFILE_MODEL_P
2665 /* Record the fields for profiling. */
2666 if (PROFILE_MODEL_P (current_cpu
))
2677 const IDESC
*idesc
= &m32rxf_insn_data
[itype
];
2678 CGEN_INSN_WORD insn
= entire_insn
;
2679 #define FLD(f) abuf->fields.sfmt_bset.f
2683 f_uimm3
= EXTRACT_MSB0_UINT (insn
, 16, 5, 3);
2684 f_r2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2686 /* Record the fields for the semantic handler. */
2688 FLD (f_uimm3
) = f_uimm3
;
2689 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
2690 CGEN_TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "sfmt_btst", "f_r2 0x%x", 'x', f_r2
, "f_uimm3 0x%x", 'x', f_uimm3
, "sr 0x%x", 'x', f_r2
, (char *) 0));
2692 #if WITH_PROFILE_MODEL_P
2693 /* Record the fields for profiling. */
2694 if (PROFILE_MODEL_P (current_cpu
))