home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
zip
/
program
/
gso22st.zoo
/
insn.def
< prev
next >
Wrap
Text File
|
1993-02-15
|
6KB
|
169 lines
/* This file contains the definitions and documentation for the instructions
used in the Superoptimizer.
Copyright (C) 1992 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; see the file COPYING. If not, write to the Free
Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* The fields in the cpp macro call "DEF_INSN()" are:
1. The internal name of the instruction.
2. The class of the instruction. These are stored in the insn_class
array and are accessed via the GET_INSN_CLASS macro. They are defined
as follows:
"1" an rtx code for a unary arithmetic expression (e.g, ABSVAL, CLZ)
"c" an rtx code for a commutative binary operation (e.g, ADD, XOR)
"2" an rtx code for a non-commutative binary operation (e.g., SUB, CMP)
"x" everything else
3. The printed name of the instruction.
*/
/* Arithmetic insns. d = r1 + r2 [+ cy] */
DEF_INSN (ADD, 'b', "add")
DEF_INSN (ADD_CI, 'b', "add_ci")
DEF_INSN (ADD_CO, 'b', "add_co")
DEF_INSN (ADD_CIO, 'b', "add_cio")
/* Arithmetic insns. d = r1 - r2 [- cy] */
DEF_INSN (SUB, '2', "sub")
DEF_INSN (SUB_CI, '2', "sub_ci")
DEF_INSN (SUB_CO, '2', "sub_co")
DEF_INSN (SUB_CIO, '2', "sub_cio")
/* Arithmetic insns. d = r1 + ~r2 [+ cy] */
DEF_INSN (ADC_CI, '2', "adc_ci")
DEF_INSN (ADC_CO, '2', "adc_co")
DEF_INSN (ADC_CIO, '2', "adc_cio")
/* Logical insns that don't affect the carry flag. */
DEF_INSN (AND, 'b', "and")
DEF_INSN (IOR, 'b', "ior")
DEF_INSN (XOR, 'b', "xor")
DEF_INSN (ANDC, '2', "andc")
DEF_INSN (IORC, '2', "iorc")
DEF_INSN (EQV, '2', "eqv")
DEF_INSN (NAND, 'b', "nand")
DEF_INSN (NOR, 'b', "nor")
/* Logical insns that reset the carry flag. */
DEF_INSN (AND_RC, 'b', "and_rc")
DEF_INSN (IOR_RC, 'b', "ior_rc")
DEF_INSN (XOR_RC, 'b', "xor_rc")
DEF_INSN (ANDC_RC, '2', "andc_rc")
DEF_INSN (IORC_RC, '2', "iorc_rc")
DEF_INSN (EQV_RC, '2', "eqv_rc")
DEF_INSN (NAND_RC, 'b', "nand_rc")
DEF_INSN (NOR_RC, 'b', "nor_rc")
/* Logical insns that clobber the carry flag. */
DEF_INSN (AND_CC, 'b', "and_cc")
DEF_INSN (IOR_CC, 'b', "ior_cc")
DEF_INSN (XOR_CC, 'b', "xor_cc")
DEF_INSN (ANDC_CC, '2', "andc_cc")
DEF_INSN (IORC_CC, '2', "iorc_cc")
DEF_INSN (EQV_CC, '2', "eqv_cc")
DEF_INSN (NAND_CC, 'b', "nand_cc")
DEF_INSN (NOR_CC, 'b', "nor_cc")
/* Bit shift and count. */
DEF_INSN (LSHIFTR, '2', "log_shift_right")
DEF_INSN (ASHIFTR, '2', "arith_shift_right")
DEF_INSN (SHIFTL, '2', "shift_left")
DEF_INSN (LSHIFTR_CO, '2', "log_shift_right_co")
DEF_INSN (ASHIFTR_CO, '2', "arith_shift_right_co")
DEF_INSN (SHIFTL_CO, '2', "shift_left_co")
DEF_INSN (ROTATEL, '2', "rotate_left")
DEF_INSN (ROTATEL_CO, '2', "rotate_left_co")
/* Rotate thru carry. */
DEF_INSN (ROTATEXL_CIO, '2', "rotate_thru_carry_left_co")
/* Shift arithmetic right instruction and set carry iff the shifted
operand is negative and any bit shifted out is 1. */
DEF_INSN (ASHIFTR_CON, '2', "arith_shift_right_set_carry_if_neg_and_nzbit_lost")
/* Extract. */
DEF_INSN (EXTS1, '2', "exts1")
DEF_INSN (EXTS2, '2', "exts2")
DEF_INSN (EXTU1, '2', "extu1")
DEF_INSN (EXTU2, '2', "extu2")
/* Count leading/trailing zero instructions. */
DEF_INSN (CLZ, '1', "clz")
DEF_INSN (CTZ, '1', "ctz")
DEF_INSN (FF1, '1', "ff1")
DEF_INSN (FF0, '1', "ff0")
DEF_INSN (ABSVAL, '1', "abs")
DEF_INSN (NABSVAL, '1', "nabs")
DEF_INSN (CMP, '2', "cmp")
/* 29k CMP instructions. */
DEF_INSN (CPEQ, '2', "cpeq")
DEF_INSN (CPGE, '2', "cpge")
DEF_INSN (CPGEU, '2', "cpgeu")
DEF_INSN (CPGT, '2', "cpgt")
DEF_INSN (CPGTU, '2', "cpgtu")
DEF_INSN (CPLE, '2', "cple")
DEF_INSN (CPLEU, '2', "cpleu")
DEF_INSN (CPLT, '2', "cplt")
DEF_INSN (CPLTU, '2', "cpltu")
DEF_INSN (CPNEQ, '2', "cpneq")
/* Alpha CMP instructions. */
DEF_INSN (CMPEQ, '2', "cmpeq")
DEF_INSN (CMPLE, '2', "cmple")
DEF_INSN (CMPLEU, '2', "cmpleu")
DEF_INSN (CMPLT, '2', "cmplt")
DEF_INSN (CMPLTU, '2', "cmpltu")
/* 88100 cmp instruction. */
DEF_INSN (CMPPAR, '2', "cmppar")
/* Difference-or-zero (rs6000) */
DEF_INSN (DOZ, '2', "difference_or_zero")
DEF_INSN (COPY, '1', "copy")
DEF_INSN (EXCHANGE, '2', "exchange")
/* Complement carry */
DEF_INSN (COMCY, '2', "complement_cy")
/* Alpha conditional move */
DEF_INSN (CMOVEQ, '2', "cmoveq")
DEF_INSN (CMOVNE, '2', "cmovne")
DEF_INSN (CMOVLT, '2', "cmovlt")
DEF_INSN (CMOVGE, '2', "cmovge")
DEF_INSN (CMOVLE, '2', "cmovle")
DEF_INSN (CMOVGT, '2', "cmovgt")
DEF_INSN (INVDIV, '2', "invdiv")
DEF_INSN (INVMOD, '2', "invmod")
DEF_INSN (UMULWIDEN_HI, '2', "umulwiden_hi")
DEF_INSN (MUL, '2', "mul")
#if UDIV_WITH_SDIV
DEF_INSN (SDIV, '2', "sdiv")
#endif
/*
Local variables:
mode:c
version-control: t
End:
*/