10Sstevel@tonic-gate/* Semantic operand instances for m32r. 20Sstevel@tonic-gate 30Sstevel@tonic-gateTHIS FILE IS MACHINE GENERATED WITH CGEN. 40Sstevel@tonic-gate 50Sstevel@tonic-gateCopyright 1996-2010 Free Software Foundation, Inc. 60Sstevel@tonic-gate 70Sstevel@tonic-gateThis file is part of the GNU Binutils and/or GDB, the GNU debugger. 80Sstevel@tonic-gate 90Sstevel@tonic-gate This file is free software; you can redistribute it and/or modify 100Sstevel@tonic-gate it under the terms of the GNU General Public License as published by 110Sstevel@tonic-gate the Free Software Foundation; either version 3, or (at your option) 120Sstevel@tonic-gate any later version. 130Sstevel@tonic-gate 140Sstevel@tonic-gate It is distributed in the hope that it will be useful, but WITHOUT 150Sstevel@tonic-gate ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 160Sstevel@tonic-gate or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 170Sstevel@tonic-gate License for more details. 180Sstevel@tonic-gate 190Sstevel@tonic-gate You should have received a copy of the GNU General Public License along 200Sstevel@tonic-gate with this program; if not, write to the Free Software Foundation, Inc., 210Sstevel@tonic-gate 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 220Sstevel@tonic-gate 230Sstevel@tonic-gate*/ 240Sstevel@tonic-gate 250Sstevel@tonic-gate#include "sysdep.h" 260Sstevel@tonic-gate#include "ansidecl.h" 270Sstevel@tonic-gate#include "bfd.h" 280Sstevel@tonic-gate#include "symcat.h" 290Sstevel@tonic-gate#include "m32r-desc.h" 300Sstevel@tonic-gate#include "m32r-opc.h" 310Sstevel@tonic-gate 320Sstevel@tonic-gate/* Operand references. */ 330Sstevel@tonic-gate 340Sstevel@tonic-gate#define OP_ENT(op) M32R_OPERAND_##op 350Sstevel@tonic-gate#define INPUT CGEN_OPINST_INPUT 360Sstevel@tonic-gate#define OUTPUT CGEN_OPINST_OUTPUT 370Sstevel@tonic-gate#define END CGEN_OPINST_END 380Sstevel@tonic-gate#define COND_REF CGEN_OPINST_COND_REF 390Sstevel@tonic-gate 400Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_empty_ops[] ATTRIBUTE_UNUSED = { 410Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 420Sstevel@tonic-gate}; 430Sstevel@tonic-gate 440Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_add_ops[] ATTRIBUTE_UNUSED = { 450Sstevel@tonic-gate { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 460Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 470Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 480Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 490Sstevel@tonic-gate}; 500Sstevel@tonic-gate 510Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_add3_ops[] ATTRIBUTE_UNUSED = { 520Sstevel@tonic-gate { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 530Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 540Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 550Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 560Sstevel@tonic-gate}; 570Sstevel@tonic-gate 580Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_and3_ops[] ATTRIBUTE_UNUSED = { 590Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 600Sstevel@tonic-gate { INPUT, "uimm16", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 }, 610Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 620Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 630Sstevel@tonic-gate}; 640Sstevel@tonic-gate 650Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_or3_ops[] ATTRIBUTE_UNUSED = { 660Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 670Sstevel@tonic-gate { INPUT, "ulo16", HW_H_ULO16, CGEN_MODE_UINT, OP_ENT (ULO16), 0, 0 }, 680Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 690Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 700Sstevel@tonic-gate}; 710Sstevel@tonic-gate 720Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_addi_ops[] ATTRIBUTE_UNUSED = { 730Sstevel@tonic-gate { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 740Sstevel@tonic-gate { INPUT, "simm8", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM8), 0, 0 }, 750Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 760Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 770Sstevel@tonic-gate}; 780Sstevel@tonic-gate 790Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_addv_ops[] ATTRIBUTE_UNUSED = { 800Sstevel@tonic-gate { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 810Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 820Sstevel@tonic-gate { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 830Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 840Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 850Sstevel@tonic-gate}; 860Sstevel@tonic-gate 870Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_addv3_ops[] ATTRIBUTE_UNUSED = { 880Sstevel@tonic-gate { INPUT, "simm16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 }, 890Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 900Sstevel@tonic-gate { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 910Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 920Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 930Sstevel@tonic-gate}; 940Sstevel@tonic-gate 950Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_addx_ops[] ATTRIBUTE_UNUSED = { 960Sstevel@tonic-gate { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 970Sstevel@tonic-gate { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 980Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 990Sstevel@tonic-gate { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 1000Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 1010Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1020Sstevel@tonic-gate}; 1030Sstevel@tonic-gate 1040Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_bc8_ops[] ATTRIBUTE_UNUSED = { 1050Sstevel@tonic-gate { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 1060Sstevel@tonic-gate { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, COND_REF }, 1070Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 1080Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1090Sstevel@tonic-gate}; 1100Sstevel@tonic-gate 1110Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_bc24_ops[] ATTRIBUTE_UNUSED = { 1120Sstevel@tonic-gate { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 1130Sstevel@tonic-gate { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, COND_REF }, 1140Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 1150Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1160Sstevel@tonic-gate}; 1170Sstevel@tonic-gate 1180Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_beq_ops[] ATTRIBUTE_UNUSED = { 1190Sstevel@tonic-gate { INPUT, "disp16", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP16), 0, COND_REF }, 1200Sstevel@tonic-gate { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 1210Sstevel@tonic-gate { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 1220Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 1230Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1240Sstevel@tonic-gate}; 1250Sstevel@tonic-gate 1260Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_beqz_ops[] ATTRIBUTE_UNUSED = { 1270Sstevel@tonic-gate { INPUT, "disp16", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP16), 0, COND_REF }, 1280Sstevel@tonic-gate { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 1290Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 1300Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1310Sstevel@tonic-gate}; 1320Sstevel@tonic-gate 1330Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_bl8_ops[] ATTRIBUTE_UNUSED = { 1340Sstevel@tonic-gate { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, 0 }, 1350Sstevel@tonic-gate { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 1360Sstevel@tonic-gate { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 }, 1370Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 1380Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1390Sstevel@tonic-gate}; 1400Sstevel@tonic-gate 1410Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_bl24_ops[] ATTRIBUTE_UNUSED = { 1420Sstevel@tonic-gate { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, 0 }, 1430Sstevel@tonic-gate { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 1440Sstevel@tonic-gate { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 }, 1450Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 1460Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1470Sstevel@tonic-gate}; 1480Sstevel@tonic-gate 1490Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_bcl8_ops[] ATTRIBUTE_UNUSED = { 1500Sstevel@tonic-gate { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 1510Sstevel@tonic-gate { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, COND_REF }, 1520Sstevel@tonic-gate { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 1530Sstevel@tonic-gate { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, COND_REF }, 1540Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 1550Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1560Sstevel@tonic-gate}; 1570Sstevel@tonic-gate 1580Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_bcl24_ops[] ATTRIBUTE_UNUSED = { 1590Sstevel@tonic-gate { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 1600Sstevel@tonic-gate { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, COND_REF }, 1610Sstevel@tonic-gate { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 1620Sstevel@tonic-gate { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, COND_REF }, 1630Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 1640Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1650Sstevel@tonic-gate}; 1660Sstevel@tonic-gate 1670Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_bra8_ops[] ATTRIBUTE_UNUSED = { 1680Sstevel@tonic-gate { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, 0 }, 1690Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 1700Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1710Sstevel@tonic-gate}; 1720Sstevel@tonic-gate 1730Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_bra24_ops[] ATTRIBUTE_UNUSED = { 1740Sstevel@tonic-gate { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, 0 }, 1750Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 1760Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1770Sstevel@tonic-gate}; 1780Sstevel@tonic-gate 1790Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_cmp_ops[] ATTRIBUTE_UNUSED = { 1800Sstevel@tonic-gate { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 1810Sstevel@tonic-gate { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 1820Sstevel@tonic-gate { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 1830Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1840Sstevel@tonic-gate}; 1850Sstevel@tonic-gate 1860Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_cmpi_ops[] ATTRIBUTE_UNUSED = { 1870Sstevel@tonic-gate { INPUT, "simm16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 }, 1880Sstevel@tonic-gate { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 1890Sstevel@tonic-gate { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 1900Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1910Sstevel@tonic-gate}; 1920Sstevel@tonic-gate 1930Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_cmpz_ops[] ATTRIBUTE_UNUSED = { 1940Sstevel@tonic-gate { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 1950Sstevel@tonic-gate { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 1960Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 1970Sstevel@tonic-gate}; 1980Sstevel@tonic-gate 1990Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_div_ops[] ATTRIBUTE_UNUSED = { 2000Sstevel@tonic-gate { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, COND_REF }, 2010Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 2020Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, COND_REF }, 2030Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2040Sstevel@tonic-gate}; 2050Sstevel@tonic-gate 2060Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_jc_ops[] ATTRIBUTE_UNUSED = { 2070Sstevel@tonic-gate { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 2080Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, COND_REF }, 2090Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 2100Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2110Sstevel@tonic-gate}; 2120Sstevel@tonic-gate 2130Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_jl_ops[] ATTRIBUTE_UNUSED = { 2140Sstevel@tonic-gate { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 2150Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 2160Sstevel@tonic-gate { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 }, 2170Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 2180Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2190Sstevel@tonic-gate}; 2200Sstevel@tonic-gate 2210Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_jmp_ops[] ATTRIBUTE_UNUSED = { 2220Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 2230Sstevel@tonic-gate { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 2240Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2250Sstevel@tonic-gate}; 2260Sstevel@tonic-gate 2270Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_ld_ops[] ATTRIBUTE_UNUSED = { 2280Sstevel@tonic-gate { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 2290Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 2300Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 2310Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2320Sstevel@tonic-gate}; 2330Sstevel@tonic-gate 2340Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_ld_d_ops[] ATTRIBUTE_UNUSED = { 2350Sstevel@tonic-gate { INPUT, "h_memory_SI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 2360Sstevel@tonic-gate { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 2370Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 2380Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 2390Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2400Sstevel@tonic-gate}; 2410Sstevel@tonic-gate 2420Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_ldb_ops[] ATTRIBUTE_UNUSED = { 2430Sstevel@tonic-gate { INPUT, "h_memory_QI_sr", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 2440Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 2450Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 2460Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2470Sstevel@tonic-gate}; 2480Sstevel@tonic-gate 2490Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_ldb_d_ops[] ATTRIBUTE_UNUSED = { 2500Sstevel@tonic-gate { INPUT, "h_memory_QI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 2510Sstevel@tonic-gate { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 2520Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 2530Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 2540Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2550Sstevel@tonic-gate}; 2560Sstevel@tonic-gate 2570Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_ldh_ops[] ATTRIBUTE_UNUSED = { 2580Sstevel@tonic-gate { INPUT, "h_memory_HI_sr", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 2590Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 2600Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 2610Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2620Sstevel@tonic-gate}; 2630Sstevel@tonic-gate 2640Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_ldh_d_ops[] ATTRIBUTE_UNUSED = { 2650Sstevel@tonic-gate { INPUT, "h_memory_HI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 2660Sstevel@tonic-gate { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 2670Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 2680Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 2690Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2700Sstevel@tonic-gate}; 2710Sstevel@tonic-gate 2720Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_ld_plus_ops[] ATTRIBUTE_UNUSED = { 2730Sstevel@tonic-gate { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 2740Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 2750Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 2760Sstevel@tonic-gate { OUTPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 2770Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2780Sstevel@tonic-gate}; 2790Sstevel@tonic-gate 2800Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_ld24_ops[] ATTRIBUTE_UNUSED = { 2810Sstevel@tonic-gate { INPUT, "uimm24", HW_H_ADDR, CGEN_MODE_USI, OP_ENT (UIMM24), 0, 0 }, 2820Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 2830Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2840Sstevel@tonic-gate}; 2850Sstevel@tonic-gate 2860Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_ldi8_ops[] ATTRIBUTE_UNUSED = { 2870Sstevel@tonic-gate { INPUT, "simm8", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM8), 0, 0 }, 2880Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 2890Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2900Sstevel@tonic-gate}; 2910Sstevel@tonic-gate 2920Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_ldi16_ops[] ATTRIBUTE_UNUSED = { 2930Sstevel@tonic-gate { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 2940Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 2950Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 2960Sstevel@tonic-gate}; 2970Sstevel@tonic-gate 2980Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_lock_ops[] ATTRIBUTE_UNUSED = { 2990Sstevel@tonic-gate { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 3000Sstevel@tonic-gate { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 3010Sstevel@tonic-gate { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 3020Sstevel@tonic-gate { OUTPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 }, 3030Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 3040Sstevel@tonic-gate}; 3050Sstevel@tonic-gate 3060Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_machi_ops[] ATTRIBUTE_UNUSED = { 3070Sstevel@tonic-gate { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 3080Sstevel@tonic-gate { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 3090Sstevel@tonic-gate { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 3100Sstevel@tonic-gate { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 3110Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 3120Sstevel@tonic-gate}; 3130Sstevel@tonic-gate 3140Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_machi_a_ops[] ATTRIBUTE_UNUSED = { 3150Sstevel@tonic-gate { INPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 }, 3160Sstevel@tonic-gate { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 3170Sstevel@tonic-gate { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 3180Sstevel@tonic-gate { OUTPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 }, 3190Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 3200Sstevel@tonic-gate}; 3210Sstevel@tonic-gate 3220Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_mulhi_ops[] ATTRIBUTE_UNUSED = { 3230Sstevel@tonic-gate { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 3240Sstevel@tonic-gate { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 3250Sstevel@tonic-gate { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 3260Sstevel@tonic-gate { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 3270Sstevel@tonic-gate}; 3280Sstevel@tonic-gate 3290Sstevel@tonic-gatestatic const CGEN_OPINST sfmt_mulhi_a_ops[] ATTRIBUTE_UNUSED = { 330 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 331 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 332 { OUTPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 }, 333 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 334}; 335 336static const CGEN_OPINST sfmt_mv_ops[] ATTRIBUTE_UNUSED = { 337 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 338 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 339 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 340}; 341 342static const CGEN_OPINST sfmt_mvfachi_ops[] ATTRIBUTE_UNUSED = { 343 { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 344 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 345 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 346}; 347 348static const CGEN_OPINST sfmt_mvfachi_a_ops[] ATTRIBUTE_UNUSED = { 349 { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 }, 350 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 351 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 352}; 353 354static const CGEN_OPINST sfmt_mvfc_ops[] ATTRIBUTE_UNUSED = { 355 { INPUT, "scr", HW_H_CR, CGEN_MODE_USI, OP_ENT (SCR), 0, 0 }, 356 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 357 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 358}; 359 360static const CGEN_OPINST sfmt_mvtachi_ops[] ATTRIBUTE_UNUSED = { 361 { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 362 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 363 { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 364 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 365}; 366 367static const CGEN_OPINST sfmt_mvtachi_a_ops[] ATTRIBUTE_UNUSED = { 368 { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 }, 369 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 370 { OUTPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 }, 371 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 372}; 373 374static const CGEN_OPINST sfmt_mvtc_ops[] ATTRIBUTE_UNUSED = { 375 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 376 { OUTPUT, "dcr", HW_H_CR, CGEN_MODE_USI, OP_ENT (DCR), 0, 0 }, 377 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 378}; 379 380static const CGEN_OPINST sfmt_nop_ops[] ATTRIBUTE_UNUSED = { 381 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 382}; 383 384static const CGEN_OPINST sfmt_rac_ops[] ATTRIBUTE_UNUSED = { 385 { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 386 { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 387 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 388}; 389 390static const CGEN_OPINST sfmt_rac_dsi_ops[] ATTRIBUTE_UNUSED = { 391 { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 }, 392 { INPUT, "imm1", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (IMM1), 0, 0 }, 393 { OUTPUT, "accd", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCD), 0, 0 }, 394 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 395}; 396 397static const CGEN_OPINST sfmt_rte_ops[] ATTRIBUTE_UNUSED = { 398 { INPUT, "h_bbpsw_UQI", HW_H_BBPSW, CGEN_MODE_UQI, 0, 0, 0 }, 399 { INPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 }, 400 { INPUT, "h_cr_USI_14", HW_H_CR, CGEN_MODE_USI, 0, 14, 0 }, 401 { INPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 }, 402 { OUTPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 }, 403 { OUTPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 }, 404 { OUTPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 }, 405 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 406 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 407}; 408 409static const CGEN_OPINST sfmt_seth_ops[] ATTRIBUTE_UNUSED = { 410 { INPUT, "hi16", HW_H_HI16, CGEN_MODE_UINT, OP_ENT (HI16), 0, 0 }, 411 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 412 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 413}; 414 415static const CGEN_OPINST sfmt_sll3_ops[] ATTRIBUTE_UNUSED = { 416 { INPUT, "simm16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 }, 417 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 418 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 419 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 420}; 421 422static const CGEN_OPINST sfmt_slli_ops[] ATTRIBUTE_UNUSED = { 423 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 424 { INPUT, "uimm5", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM5), 0, 0 }, 425 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 426 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 427}; 428 429static const CGEN_OPINST sfmt_st_ops[] ATTRIBUTE_UNUSED = { 430 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 431 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 432 { OUTPUT, "h_memory_SI_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 433 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 434}; 435 436static const CGEN_OPINST sfmt_st_d_ops[] ATTRIBUTE_UNUSED = { 437 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 438 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 439 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 440 { OUTPUT, "h_memory_SI_add__SI_src2_slo16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 441 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 442}; 443 444static const CGEN_OPINST sfmt_stb_ops[] ATTRIBUTE_UNUSED = { 445 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 446 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 447 { OUTPUT, "h_memory_QI_src2", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 448 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 449}; 450 451static const CGEN_OPINST sfmt_stb_d_ops[] ATTRIBUTE_UNUSED = { 452 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 453 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 454 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 455 { OUTPUT, "h_memory_QI_add__SI_src2_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 456 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 457}; 458 459static const CGEN_OPINST sfmt_sth_ops[] ATTRIBUTE_UNUSED = { 460 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 461 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 462 { OUTPUT, "h_memory_HI_src2", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 463 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 464}; 465 466static const CGEN_OPINST sfmt_sth_d_ops[] ATTRIBUTE_UNUSED = { 467 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 468 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 469 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 470 { OUTPUT, "h_memory_HI_add__SI_src2_slo16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 471 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 472}; 473 474static const CGEN_OPINST sfmt_st_plus_ops[] ATTRIBUTE_UNUSED = { 475 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 476 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 477 { OUTPUT, "h_memory_SI_new_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 478 { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 479 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 480}; 481 482static const CGEN_OPINST sfmt_sth_plus_ops[] ATTRIBUTE_UNUSED = { 483 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 484 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 485 { OUTPUT, "h_memory_HI_new_src2", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 486 { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 487 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 488}; 489 490static const CGEN_OPINST sfmt_stb_plus_ops[] ATTRIBUTE_UNUSED = { 491 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 492 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 493 { OUTPUT, "h_memory_QI_new_src2", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 494 { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 495 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 496}; 497 498static const CGEN_OPINST sfmt_trap_ops[] ATTRIBUTE_UNUSED = { 499 { INPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 }, 500 { INPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 }, 501 { INPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 }, 502 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 503 { INPUT, "uimm4", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM4), 0, 0 }, 504 { OUTPUT, "h_bbpsw_UQI", HW_H_BBPSW, CGEN_MODE_UQI, 0, 0, 0 }, 505 { OUTPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 }, 506 { OUTPUT, "h_cr_USI_14", HW_H_CR, CGEN_MODE_USI, 0, 14, 0 }, 507 { OUTPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 }, 508 { OUTPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 }, 509 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 510 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 511}; 512 513static const CGEN_OPINST sfmt_unlock_ops[] ATTRIBUTE_UNUSED = { 514 { INPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 }, 515 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, COND_REF }, 516 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, COND_REF }, 517 { OUTPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 }, 518 { OUTPUT, "h_memory_SI_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, COND_REF }, 519 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 520}; 521 522static const CGEN_OPINST sfmt_satb_ops[] ATTRIBUTE_UNUSED = { 523 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 524 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 525 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 526}; 527 528static const CGEN_OPINST sfmt_sat_ops[] ATTRIBUTE_UNUSED = { 529 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 530 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, COND_REF }, 531 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 532 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 533}; 534 535static const CGEN_OPINST sfmt_sadd_ops[] ATTRIBUTE_UNUSED = { 536 { INPUT, "h_accums_DI_0", HW_H_ACCUMS, CGEN_MODE_DI, 0, 0, 0 }, 537 { INPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 }, 538 { OUTPUT, "h_accums_DI_0", HW_H_ACCUMS, CGEN_MODE_DI, 0, 0, 0 }, 539 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 540}; 541 542static const CGEN_OPINST sfmt_macwu1_ops[] ATTRIBUTE_UNUSED = { 543 { INPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 }, 544 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 545 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 546 { OUTPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 }, 547 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 548}; 549 550static const CGEN_OPINST sfmt_mulwu1_ops[] ATTRIBUTE_UNUSED = { 551 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 552 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 553 { OUTPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 }, 554 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 555}; 556 557static const CGEN_OPINST sfmt_sc_ops[] ATTRIBUTE_UNUSED = { 558 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 559 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 560}; 561 562static const CGEN_OPINST sfmt_clrpsw_ops[] ATTRIBUTE_UNUSED = { 563 { INPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 }, 564 { INPUT, "uimm8", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM8), 0, 0 }, 565 { OUTPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 }, 566 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 567}; 568 569static const CGEN_OPINST sfmt_setpsw_ops[] ATTRIBUTE_UNUSED = { 570 { INPUT, "uimm8", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM8), 0, 0 }, 571 { OUTPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 }, 572 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 573}; 574 575static const CGEN_OPINST sfmt_bset_ops[] ATTRIBUTE_UNUSED = { 576 { INPUT, "h_memory_QI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 577 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 578 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 579 { INPUT, "uimm3", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM3), 0, 0 }, 580 { OUTPUT, "h_memory_QI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 581 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 582}; 583 584static const CGEN_OPINST sfmt_btst_ops[] ATTRIBUTE_UNUSED = { 585 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 586 { INPUT, "uimm3", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM3), 0, 0 }, 587 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 588 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 589}; 590 591#undef OP_ENT 592#undef INPUT 593#undef OUTPUT 594#undef END 595#undef COND_REF 596 597/* Operand instance lookup table. */ 598 599static const CGEN_OPINST *m32r_cgen_opinst_table[MAX_INSNS] = { 600 0, 601 & sfmt_add_ops[0], 602 & sfmt_add3_ops[0], 603 & sfmt_add_ops[0], 604 & sfmt_and3_ops[0], 605 & sfmt_add_ops[0], 606 & sfmt_or3_ops[0], 607 & sfmt_add_ops[0], 608 & sfmt_and3_ops[0], 609 & sfmt_addi_ops[0], 610 & sfmt_addv_ops[0], 611 & sfmt_addv3_ops[0], 612 & sfmt_addx_ops[0], 613 & sfmt_bc8_ops[0], 614 & sfmt_bc24_ops[0], 615 & sfmt_beq_ops[0], 616 & sfmt_beqz_ops[0], 617 & sfmt_beqz_ops[0], 618 & sfmt_beqz_ops[0], 619 & sfmt_beqz_ops[0], 620 & sfmt_beqz_ops[0], 621 & sfmt_beqz_ops[0], 622 & sfmt_bl8_ops[0], 623 & sfmt_bl24_ops[0], 624 & sfmt_bcl8_ops[0], 625 & sfmt_bcl24_ops[0], 626 & sfmt_bc8_ops[0], 627 & sfmt_bc24_ops[0], 628 & sfmt_beq_ops[0], 629 & sfmt_bra8_ops[0], 630 & sfmt_bra24_ops[0], 631 & sfmt_bcl8_ops[0], 632 & sfmt_bcl24_ops[0], 633 & sfmt_cmp_ops[0], 634 & sfmt_cmpi_ops[0], 635 & sfmt_cmp_ops[0], 636 & sfmt_cmpi_ops[0], 637 & sfmt_cmp_ops[0], 638 & sfmt_cmpz_ops[0], 639 & sfmt_div_ops[0], 640 & sfmt_div_ops[0], 641 & sfmt_div_ops[0], 642 & sfmt_div_ops[0], 643 & sfmt_div_ops[0], 644 & sfmt_div_ops[0], 645 & sfmt_div_ops[0], 646 & sfmt_div_ops[0], 647 & sfmt_div_ops[0], 648 & sfmt_div_ops[0], 649 & sfmt_div_ops[0], 650 & sfmt_div_ops[0], 651 & sfmt_jc_ops[0], 652 & sfmt_jc_ops[0], 653 & sfmt_jl_ops[0], 654 & sfmt_jmp_ops[0], 655 & sfmt_ld_ops[0], 656 & sfmt_ld_d_ops[0], 657 & sfmt_ldb_ops[0], 658 & sfmt_ldb_d_ops[0], 659 & sfmt_ldh_ops[0], 660 & sfmt_ldh_d_ops[0], 661 & sfmt_ldb_ops[0], 662 & sfmt_ldb_d_ops[0], 663 & sfmt_ldh_ops[0], 664 & sfmt_ldh_d_ops[0], 665 & sfmt_ld_plus_ops[0], 666 & sfmt_ld24_ops[0], 667 & sfmt_ldi8_ops[0], 668 & sfmt_ldi16_ops[0], 669 & sfmt_lock_ops[0], 670 & sfmt_machi_ops[0], 671 & sfmt_machi_a_ops[0], 672 & sfmt_machi_ops[0], 673 & sfmt_machi_a_ops[0], 674 & sfmt_machi_ops[0], 675 & sfmt_machi_a_ops[0], 676 & sfmt_machi_ops[0], 677 & sfmt_machi_a_ops[0], 678 & sfmt_add_ops[0], 679 & sfmt_mulhi_ops[0], 680 & sfmt_mulhi_a_ops[0], 681 & sfmt_mulhi_ops[0], 682 & sfmt_mulhi_a_ops[0], 683 & sfmt_mulhi_ops[0], 684 & sfmt_mulhi_a_ops[0], 685 & sfmt_mulhi_ops[0], 686 & sfmt_mulhi_a_ops[0], 687 & sfmt_mv_ops[0], 688 & sfmt_mvfachi_ops[0], 689 & sfmt_mvfachi_a_ops[0], 690 & sfmt_mvfachi_ops[0], 691 & sfmt_mvfachi_a_ops[0], 692 & sfmt_mvfachi_ops[0], 693 & sfmt_mvfachi_a_ops[0], 694 & sfmt_mvfc_ops[0], 695 & sfmt_mvtachi_ops[0], 696 & sfmt_mvtachi_a_ops[0], 697 & sfmt_mvtachi_ops[0], 698 & sfmt_mvtachi_a_ops[0], 699 & sfmt_mvtc_ops[0], 700 & sfmt_mv_ops[0], 701 & sfmt_nop_ops[0], 702 & sfmt_mv_ops[0], 703 & sfmt_rac_ops[0], 704 & sfmt_rac_dsi_ops[0], 705 & sfmt_rac_ops[0], 706 & sfmt_rac_dsi_ops[0], 707 & sfmt_rte_ops[0], 708 & sfmt_seth_ops[0], 709 & sfmt_add_ops[0], 710 & sfmt_sll3_ops[0], 711 & sfmt_slli_ops[0], 712 & sfmt_add_ops[0], 713 & sfmt_sll3_ops[0], 714 & sfmt_slli_ops[0], 715 & sfmt_add_ops[0], 716 & sfmt_sll3_ops[0], 717 & sfmt_slli_ops[0], 718 & sfmt_st_ops[0], 719 & sfmt_st_d_ops[0], 720 & sfmt_stb_ops[0], 721 & sfmt_stb_d_ops[0], 722 & sfmt_sth_ops[0], 723 & sfmt_sth_d_ops[0], 724 & sfmt_st_plus_ops[0], 725 & sfmt_sth_plus_ops[0], 726 & sfmt_stb_plus_ops[0], 727 & sfmt_st_plus_ops[0], 728 & sfmt_add_ops[0], 729 & sfmt_addv_ops[0], 730 & sfmt_addx_ops[0], 731 & sfmt_trap_ops[0], 732 & sfmt_unlock_ops[0], 733 & sfmt_satb_ops[0], 734 & sfmt_satb_ops[0], 735 & sfmt_sat_ops[0], 736 & sfmt_cmpz_ops[0], 737 & sfmt_sadd_ops[0], 738 & sfmt_macwu1_ops[0], 739 & sfmt_machi_ops[0], 740 & sfmt_mulwu1_ops[0], 741 & sfmt_macwu1_ops[0], 742 & sfmt_sc_ops[0], 743 & sfmt_sc_ops[0], 744 & sfmt_clrpsw_ops[0], 745 & sfmt_setpsw_ops[0], 746 & sfmt_bset_ops[0], 747 & sfmt_bset_ops[0], 748 & sfmt_btst_ops[0], 749}; 750 751/* Function to call before using the operand instance table. */ 752 753void 754m32r_cgen_init_opinst_table (cd) 755 CGEN_CPU_DESC cd; 756{ 757 int i; 758 const CGEN_OPINST **oi = & m32r_cgen_opinst_table[0]; 759 CGEN_INSN *insns = (CGEN_INSN *) cd->insn_table.init_entries; 760 for (i = 0; i < MAX_INSNS; ++i) 761 insns[i].opinst = oi[i]; 762} 763