1998-02-12 03:13:21 +00:00
/* Generic opcode table support for targets using CGEN. -*- C -*-
CGEN : Cpu tools GENerator
1997-04-04 21:07:02 +00:00
1998-07-21 20:59:23 +00:00
THIS FILE IS USED TO GENERATE m32r - opc . c .
1998-02-04 01:54:47 +00:00
1998-02-12 03:13:21 +00:00
Copyright ( C ) 1998 Free Software Foundation , Inc .
1997-04-04 21:07:02 +00:00
1998-02-12 03:13:21 +00:00
This file is part of the GNU Binutils and GDB , the GNU debugger .
1997-04-04 21:07:02 +00:00
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 .
1998-02-12 03:13:21 +00:00
You should have received a copy of the GNU General Public License
1998-07-21 20:59:23 +00:00
along with this program ; if not , write to the Free Software Foundation , Inc . ,
59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA . */
1997-04-04 21:07:02 +00:00
1998-01-15 01:48:51 +00:00
# include "sysdep.h"
1997-04-04 21:07:02 +00:00
# include <stdio.h>
# include "ansidecl.h"
# include "libiberty.h"
# include "bfd.h"
1998-02-12 03:13:21 +00:00
# include "symcat.h"
1997-04-04 21:07:02 +00:00
# include "m32r-opc.h"
1998-07-21 20:59:23 +00:00
# include "opintl.h"
1997-04-04 21:07:02 +00:00
1998-08-03 19:56:43 +00:00
/* The hash functions are recorded here to help keep assembler code out of
the disassembler and vice versa . */
static int asm_hash_insn_p PARAMS ( ( const CGEN_INSN * ) ) ;
static unsigned int asm_hash_insn PARAMS ( ( const char * ) ) ;
static int dis_hash_insn_p PARAMS ( ( const CGEN_INSN * ) ) ;
static unsigned int dis_hash_insn PARAMS ( ( const char * , unsigned long ) ) ;
1998-02-12 03:13:21 +00:00
/* Look up instruction INSN_VALUE and extract its fields.
1998-04-27 20:10:40 +00:00
INSN , if non - null , is the insn table entry .
1998-02-12 03:13:21 +00:00
Otherwise INSN_VALUE is examined to compute it .
LENGTH is the bit length of INSN_VALUE if known , otherwise 0.
1998-04-27 20:10:40 +00:00
0 is only valid if ` insn = = NULL & & ! defined ( CGEN_INT_INSN ) ' .
If INSN ! = NULL , LENGTH must be valid .
1998-02-13 02:31:10 +00:00
ALIAS_P is non - zero if alias insns are to be included in the search .
1998-04-27 20:10:40 +00:00
1998-02-12 03:13:21 +00:00
The result a pointer to the insn table entry , or NULL if the instruction
wasn ' t recognized . */
const CGEN_INSN *
1998-08-03 19:56:43 +00:00
m32r_cgen_lookup_insn ( od , insn , insn_value , length , fields , alias_p )
CGEN_OPCODE_DESC od ;
1998-02-12 03:13:21 +00:00
const CGEN_INSN * insn ;
cgen_insn_t insn_value ;
int length ;
CGEN_FIELDS * fields ;
1998-04-27 20:10:40 +00:00
int alias_p ;
1998-02-12 03:13:21 +00:00
{
1998-02-13 02:31:10 +00:00
char buf [ 16 ] ;
1998-02-12 03:13:21 +00:00
if ( ! insn )
{
const CGEN_INSN_LIST * insn_list ;
# ifdef CGEN_INT_INSN
switch ( length )
{
case 8 :
buf [ 0 ] = insn_value ;
break ;
case 16 :
1998-08-03 19:56:43 +00:00
if ( CGEN_OPCODE_ENDIAN ( od ) = = CGEN_ENDIAN_BIG )
1998-02-12 03:13:21 +00:00
bfd_putb16 ( insn_value , buf ) ;
else
bfd_putl16 ( insn_value , buf ) ;
break ;
case 32 :
1998-08-03 19:56:43 +00:00
if ( CGEN_OPCODE_ENDIAN ( od ) = = CGEN_ENDIAN_BIG )
1998-02-12 03:13:21 +00:00
bfd_putb32 ( insn_value , buf ) ;
else
bfd_putl32 ( insn_value , buf ) ;
break ;
default :
abort ( ) ;
}
# else
abort ( ) ; /* FIXME: unfinished */
# endif
/* The instructions are stored in hash lists.
Pick the first one and keep trying until we find the right one . */
1998-08-03 19:56:43 +00:00
insn_list = CGEN_DIS_LOOKUP_INSN ( od , buf , insn_value ) ;
1998-02-12 03:13:21 +00:00
while ( insn_list ! = NULL )
{
insn = insn_list - > insn ;
1998-02-13 02:31:10 +00:00
if ( alias_p
| | ! CGEN_INSN_ATTR ( insn , CGEN_INSN_ALIAS ) )
1998-02-12 03:13:21 +00:00
{
1998-02-13 02:31:10 +00:00
/* Basic bit mask must be correct. */
/* ??? May wish to allow target to defer this check until the
extract handler . */
if ( ( insn_value & CGEN_INSN_MASK ( insn ) ) = = CGEN_INSN_VALUE ( insn ) )
{
1998-07-21 20:59:23 +00:00
/* ??? 0 is passed for `pc' */
1998-08-03 19:56:43 +00:00
int elength = ( * CGEN_EXTRACT_FN ( insn ) ) ( od , insn , NULL ,
1998-07-21 20:59:23 +00:00
insn_value , fields ,
( bfd_vma ) 0 ) ;
1998-04-27 20:10:40 +00:00
if ( elength > 0 )
{
/* sanity check */
if ( length ! = 0 & & length ! = elength )
abort ( ) ;
return insn ;
}
1998-02-13 02:31:10 +00:00
}
1998-02-12 03:13:21 +00:00
}
insn_list = CGEN_DIS_NEXT_INSN ( insn_list ) ;
}
}
else
{
1998-02-13 02:31:10 +00:00
/* Sanity check: can't pass an alias insn if ! alias_p. */
if ( ! alias_p
& & CGEN_INSN_ATTR ( insn , CGEN_INSN_ALIAS ) )
abort ( ) ;
1998-04-27 20:10:40 +00:00
/* Sanity check: length must be correct. */
if ( length ! = CGEN_INSN_BITSIZE ( insn ) )
abort ( ) ;
1998-02-13 02:31:10 +00:00
1998-07-21 20:59:23 +00:00
/* ??? 0 is passed for `pc' */
1998-08-03 19:56:43 +00:00
length = ( * CGEN_EXTRACT_FN ( insn ) ) ( od , insn , NULL , insn_value , fields ,
1998-07-21 20:59:23 +00:00
( bfd_vma ) 0 ) ;
1998-04-27 20:10:40 +00:00
/* Sanity check: must succeed.
Could relax this later if it ever proves useful . */
if ( length = = 0 )
abort ( ) ;
return insn ;
1998-02-12 03:13:21 +00:00
}
return NULL ;
}
1998-04-27 20:10:40 +00:00
/* Fill in the operand instances used by INSN whose operands are FIELDS.
1998-02-18 01:26:15 +00:00
INDICES is a pointer to a buffer of MAX_OPERAND_INSTANCES ints to be filled
1998-04-27 20:10:40 +00:00
in . */
1998-02-12 03:13:21 +00:00
1998-04-27 20:10:40 +00:00
void
1998-08-03 19:56:43 +00:00
m32r_cgen_get_insn_operands ( od , insn , fields , indices )
CGEN_OPCODE_DESC od ;
1998-04-27 20:10:40 +00:00
const CGEN_INSN * insn ;
const CGEN_FIELDS * fields ;
1998-02-12 03:13:21 +00:00
int * indices ;
{
const CGEN_OPERAND_INSTANCE * opinst ;
int i ;
for ( i = 0 , opinst = CGEN_INSN_OPERANDS ( insn ) ;
1998-02-13 22:35:43 +00:00
opinst ! = NULL
& & CGEN_OPERAND_INSTANCE_TYPE ( opinst ) ! = CGEN_OPERAND_INSTANCE_END ;
1998-02-12 03:13:21 +00:00
+ + i , + + opinst )
{
const CGEN_OPERAND * op = CGEN_OPERAND_INSTANCE_OPERAND ( opinst ) ;
if ( op = = NULL )
indices [ i ] = CGEN_OPERAND_INSTANCE_INDEX ( opinst ) ;
else
1998-07-21 21:08:03 +00:00
indices [ i ] = m32r_cgen_get_int_operand ( CGEN_OPERAND_INDEX ( op ) ,
fields ) ;
1998-02-12 03:13:21 +00:00
}
1998-04-27 20:10:40 +00:00
}
1998-02-12 03:13:21 +00:00
1998-04-27 20:10:40 +00:00
/* Cover function to m32r_cgen_get_insn_operands when either INSN or FIELDS
isn ' t known .
The INSN , INSN_VALUE , and LENGTH arguments are passed to
m32r_cgen_lookup_insn unchanged .
The result is the insn table entry or NULL if the instruction wasn ' t
recognized . */
const CGEN_INSN *
1998-08-03 19:56:43 +00:00
m32r_cgen_lookup_get_insn_operands ( od , insn , insn_value , length , indices )
CGEN_OPCODE_DESC od ;
1998-04-27 20:10:40 +00:00
const CGEN_INSN * insn ;
cgen_insn_t insn_value ;
int length ;
int * indices ;
{
CGEN_FIELDS fields ;
/* Pass non-zero for ALIAS_P only if INSN != NULL.
If INSN = = NULL , we want a real insn . */
1998-08-03 19:56:43 +00:00
insn = m32r_cgen_lookup_insn ( od , insn , insn_value , length , & fields ,
1998-04-27 20:10:40 +00:00
insn ! = NULL ) ;
if ( ! insn )
return NULL ;
1998-08-03 19:56:43 +00:00
m32r_cgen_get_insn_operands ( od , insn , & fields , indices ) ;
1998-02-12 03:13:21 +00:00
return insn ;
}
1998-01-15 01:48:51 +00:00
/* Attributes. */
1998-02-04 01:54:47 +00:00
static const CGEN_ATTR_ENTRY MACH_attr [ ] =
1998-01-20 04:16:37 +00:00
{
{ " m32r " , MACH_M32R } ,
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
{ " m32rx " , MACH_M32RX } ,
/* end-sanitize-m32rx */
{ " max " , MACH_MAX } ,
{ 0 , 0 }
} ;
/* start-sanitize-m32rx */
static const CGEN_ATTR_ENTRY PIPE_attr [ ] =
{
{ " NONE " , PIPE_NONE } ,
{ " O " , PIPE_O } ,
{ " S " , PIPE_S } ,
{ " OS " , PIPE_OS } ,
1998-01-15 01:48:51 +00:00
{ 0 , 0 }
} ;
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
const CGEN_ATTR_TABLE m32r_cgen_operand_attr_table [ ] =
1998-01-20 04:16:37 +00:00
{
{ " ABS-ADDR " , NULL } ,
1998-01-15 01:48:51 +00:00
{ " FAKE " , NULL } ,
1998-03-04 20:10:36 +00:00
{ " HASH-PREFIX " , NULL } ,
1998-01-15 01:48:51 +00:00
{ " NEGATIVE " , NULL } ,
{ " PCREL-ADDR " , NULL } ,
{ " RELAX " , NULL } ,
{ " RELOC " , NULL } ,
{ " SIGN-OPT " , NULL } ,
{ " UNSIGNED " , NULL } ,
{ 0 , 0 }
} ;
1998-02-04 01:54:47 +00:00
const CGEN_ATTR_TABLE m32r_cgen_insn_attr_table [ ] =
1998-01-20 04:16:37 +00:00
{
1998-02-04 01:54:47 +00:00
{ " MACH " , & MACH_attr [ 0 ] } ,
/* start-sanitize-m32rx */
{ " PIPE " , & PIPE_attr [ 0 ] } ,
/* end-sanitize-m32rx */
1998-01-20 04:16:37 +00:00
{ " ALIAS " , NULL } ,
1998-01-15 01:48:51 +00:00
{ " COND-CTI " , NULL } ,
{ " FILL-SLOT " , NULL } ,
1998-04-27 20:10:40 +00:00
{ " NO-DIS " , NULL } ,
1998-02-04 01:54:47 +00:00
{ " PARALLEL " , NULL } ,
1998-01-15 01:48:51 +00:00
{ " RELAX " , NULL } ,
{ " RELAXABLE " , NULL } ,
1998-07-21 20:59:23 +00:00
{ " SPECIAL " , NULL } ,
1998-01-15 01:48:51 +00:00
{ " UNCOND-CTI " , NULL } ,
{ 0 , 0 }
1997-04-04 21:07:02 +00:00
} ;
1998-01-16 00:26:51 +00:00
CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_gr_entries [ ] =
1998-01-20 04:16:37 +00:00
{
{ " fp " , 13 } ,
1997-04-04 21:07:02 +00:00
{ " lr " , 14 } ,
{ " sp " , 15 } ,
{ " r0 " , 0 } ,
{ " r1 " , 1 } ,
{ " r2 " , 2 } ,
{ " r3 " , 3 } ,
{ " r4 " , 4 } ,
{ " r5 " , 5 } ,
{ " r6 " , 6 } ,
{ " r7 " , 7 } ,
{ " r8 " , 8 } ,
{ " r9 " , 9 } ,
{ " r10 " , 10 } ,
{ " r11 " , 11 } ,
{ " r12 " , 12 } ,
{ " r13 " , 13 } ,
{ " r14 " , 14 } ,
{ " r15 " , 15 }
} ;
1998-01-16 00:26:51 +00:00
CGEN_KEYWORD m32r_cgen_opval_h_gr =
1998-01-20 04:16:37 +00:00
{
& m32r_cgen_opval_h_gr_entries [ 0 ] ,
1997-04-04 21:07:02 +00:00
19
} ;
1998-01-16 00:26:51 +00:00
CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_cr_entries [ ] =
1998-01-20 04:16:37 +00:00
{
{ " psw " , 0 } ,
1997-04-04 21:07:02 +00:00
{ " cbr " , 1 } ,
{ " spi " , 2 } ,
{ " spu " , 3 } ,
{ " bpc " , 6 } ,
{ " cr0 " , 0 } ,
{ " cr1 " , 1 } ,
{ " cr2 " , 2 } ,
{ " cr3 " , 3 } ,
{ " cr4 " , 4 } ,
{ " cr5 " , 5 } ,
1998-04-01 22:58:53 +00:00
{ " cr6 " , 6 } ,
{ " cr7 " , 7 } ,
{ " cr8 " , 8 } ,
{ " cr9 " , 9 } ,
{ " cr10 " , 10 } ,
{ " cr11 " , 11 } ,
{ " cr12 " , 12 } ,
{ " cr13 " , 13 } ,
{ " cr14 " , 14 } ,
{ " cr15 " , 15 }
1997-04-04 21:07:02 +00:00
} ;
1998-01-16 00:26:51 +00:00
CGEN_KEYWORD m32r_cgen_opval_h_cr =
1998-01-20 04:16:37 +00:00
{
& m32r_cgen_opval_h_cr_entries [ 0 ] ,
1998-04-01 22:58:53 +00:00
21
1997-04-04 21:07:02 +00:00
} ;
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_accums_entries [ ] =
{
{ " a0 " , 0 } ,
{ " a1 " , 1 }
} ;
1998-01-15 01:48:51 +00:00
1998-02-04 01:54:47 +00:00
CGEN_KEYWORD m32r_cgen_opval_h_accums =
1998-01-20 04:16:37 +00:00
{
1998-02-04 01:54:47 +00:00
& m32r_cgen_opval_h_accums_entries [ 0 ] ,
2
1997-04-04 21:07:02 +00:00
} ;
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1998-02-12 03:13:21 +00:00
/* The hardware table. */
# define HW_ENT(n) m32r_cgen_hw_entries[n]
static const CGEN_HW_ENTRY m32r_cgen_hw_entries [ ] =
1998-02-04 01:54:47 +00:00
{
1998-02-12 03:13:21 +00:00
{ HW_H_PC , & HW_ENT ( HW_H_PC + 1 ) , " h-pc " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_MEMORY , & HW_ENT ( HW_H_MEMORY + 1 ) , " h-memory " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_SINT , & HW_ENT ( HW_H_SINT + 1 ) , " h-sint " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_UINT , & HW_ENT ( HW_H_UINT + 1 ) , " h-uint " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_ADDR , & HW_ENT ( HW_H_ADDR + 1 ) , " h-addr " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_IADDR , & HW_ENT ( HW_H_IADDR + 1 ) , " h-iaddr " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_HI16 , & HW_ENT ( HW_H_HI16 + 1 ) , " h-hi16 " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_SLO16 , & HW_ENT ( HW_H_SLO16 + 1 ) , " h-slo16 " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_ULO16 , & HW_ENT ( HW_H_ULO16 + 1 ) , " h-ulo16 " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_GR , & HW_ENT ( HW_H_GR + 1 ) , " h-gr " , CGEN_ASM_KEYWORD , ( PTR ) & m32r_cgen_opval_h_gr } ,
{ HW_H_CR , & HW_ENT ( HW_H_CR + 1 ) , " h-cr " , CGEN_ASM_KEYWORD , ( PTR ) & m32r_cgen_opval_h_cr } ,
{ HW_H_ACCUM , & HW_ENT ( HW_H_ACCUM + 1 ) , " h-accum " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
1998-02-12 03:13:21 +00:00
{ HW_H_ACCUMS , & HW_ENT ( HW_H_ACCUMS + 1 ) , " h-accums " , CGEN_ASM_KEYWORD , ( PTR ) & m32r_cgen_opval_h_accums } ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1998-02-12 03:13:21 +00:00
{ HW_H_COND , & HW_ENT ( HW_H_COND + 1 ) , " h-cond " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_SM , & HW_ENT ( HW_H_SM + 1 ) , " h-sm " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_BSM , & HW_ENT ( HW_H_BSM + 1 ) , " h-bsm " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_IE , & HW_ENT ( HW_H_IE + 1 ) , " h-ie " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_BIE , & HW_ENT ( HW_H_BIE + 1 ) , " h-bie " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_BCOND , & HW_ENT ( HW_H_BCOND + 1 ) , " h-bcond " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
{ HW_H_BPC , & HW_ENT ( HW_H_BPC + 1 ) , " h-bpc " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
1998-02-20 00:57:03 +00:00
{ HW_H_LOCK , & HW_ENT ( HW_H_LOCK + 1 ) , " h-lock " , CGEN_ASM_KEYWORD , ( PTR ) 0 } ,
1998-02-04 01:54:47 +00:00
{ 0 }
} ;
1997-04-04 21:07:02 +00:00
1998-02-12 03:13:21 +00:00
/* The operand table. */
1998-02-20 00:57:03 +00:00
# define OPERAND(op) CONCAT2 (M32R_OPERAND_,op)
# define OP_ENT(op) m32r_cgen_operand_table[OPERAND (op)]
1998-02-23 21:20:37 +00:00
1998-02-04 01:54:47 +00:00
const CGEN_OPERAND m32r_cgen_operand_table [ MAX_OPERANDS ] =
1997-04-04 21:07:02 +00:00
{
1998-01-15 01:48:51 +00:00
/* pc: program counter */
1998-02-12 03:13:21 +00:00
{ " pc " , & HW_ENT ( HW_H_PC ) , 0 , 0 ,
1998-07-21 20:59:23 +00:00
{ 0 , 0 | ( 1 < < CGEN_OPERAND_FAKE ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* sr: source register */
1998-02-12 03:13:21 +00:00
{ " sr " , & HW_ENT ( HW_H_GR ) , 12 , 4 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* dr: destination register */
1998-02-12 03:13:21 +00:00
{ " dr " , & HW_ENT ( HW_H_GR ) , 4 , 4 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* src1: source register 1 */
1998-02-12 03:13:21 +00:00
{ " src1 " , & HW_ENT ( HW_H_GR ) , 4 , 4 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* src2: source register 2 */
1998-02-12 03:13:21 +00:00
{ " src2 " , & HW_ENT ( HW_H_GR ) , 12 , 4 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* scr: source control register */
1998-02-12 03:13:21 +00:00
{ " scr " , & HW_ENT ( HW_H_CR ) , 12 , 4 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* dcr: destination control register */
1998-02-12 03:13:21 +00:00
{ " dcr " , & HW_ENT ( HW_H_CR ) , 4 , 4 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* simm8: 8 bit signed immediate */
1998-02-12 03:13:21 +00:00
{ " simm8 " , & HW_ENT ( HW_H_SINT ) , 8 , 8 ,
1998-03-04 20:10:36 +00:00
{ 0 , 0 | ( 1 < < CGEN_OPERAND_HASH_PREFIX ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* simm16: 16 bit signed immediate */
1998-02-12 03:13:21 +00:00
{ " simm16 " , & HW_ENT ( HW_H_SINT ) , 16 , 16 ,
1998-03-04 20:10:36 +00:00
{ 0 , 0 | ( 1 < < CGEN_OPERAND_HASH_PREFIX ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* uimm4: 4 bit trap number */
1998-02-12 03:13:21 +00:00
{ " uimm4 " , & HW_ENT ( HW_H_UINT ) , 12 , 4 ,
1998-03-04 20:10:36 +00:00
{ 0 , 0 | ( 1 < < CGEN_OPERAND_HASH_PREFIX ) | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* uimm5: 5 bit shift count */
1998-02-12 03:13:21 +00:00
{ " uimm5 " , & HW_ENT ( HW_H_UINT ) , 11 , 5 ,
1998-03-04 20:10:36 +00:00
{ 0 , 0 | ( 1 < < CGEN_OPERAND_HASH_PREFIX ) | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* uimm16: 16 bit unsigned immediate */
1998-02-12 03:13:21 +00:00
{ " uimm16 " , & HW_ENT ( HW_H_UINT ) , 16 , 16 ,
1998-03-04 20:10:36 +00:00
{ 0 , 0 | ( 1 < < CGEN_OPERAND_HASH_PREFIX ) | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1998-02-12 03:13:21 +00:00
/* start-sanitize-m32rx */
/* imm1: 1 bit immediate */
{ " imm1 " , & HW_ENT ( HW_H_UINT ) , 15 , 1 ,
1998-03-04 20:10:36 +00:00
{ 0 , 0 | ( 1 < < CGEN_OPERAND_HASH_PREFIX ) | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1998-02-12 03:13:21 +00:00
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* accd: accumulator destination register */
{ " accd " , & HW_ENT ( HW_H_ACCUMS ) , 4 , 2 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
/* end-sanitize-m32rx */
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
1998-02-12 03:13:21 +00:00
/* accs: accumulator source register */
{ " accs " , & HW_ENT ( HW_H_ACCUMS ) , 12 , 2 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* acc: accumulator reg (d) */
1998-02-12 03:13:21 +00:00
{ " acc " , & HW_ENT ( HW_H_ACCUMS ) , 8 , 1 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1998-03-04 20:10:36 +00:00
/* hash: # prefix */
{ " hash " , & HW_ENT ( HW_H_SINT ) , 0 , 0 ,
{ 0 , 0 , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* hi16: high 16 bit immediate, sign optional */
1998-02-12 03:13:21 +00:00
{ " hi16 " , & HW_ENT ( HW_H_HI16 ) , 16 , 16 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_SIGN_OPT ) | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* slo16: 16 bit signed immediate, for low() */
1998-02-12 03:13:21 +00:00
{ " slo16 " , & HW_ENT ( HW_H_SLO16 ) , 16 , 16 ,
{ 0 , 0 , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* ulo16: 16 bit unsigned immediate, for low() */
1998-02-12 03:13:21 +00:00
{ " ulo16 " , & HW_ENT ( HW_H_ULO16 ) , 16 , 16 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* uimm24: 24 bit address */
1998-02-12 03:13:21 +00:00
{ " uimm24 " , & HW_ENT ( HW_H_ADDR ) , 8 , 24 ,
1998-03-04 20:10:36 +00:00
{ 0 , 0 | ( 1 < < CGEN_OPERAND_HASH_PREFIX ) | ( 1 < < CGEN_OPERAND_RELOC ) | ( 1 < < CGEN_OPERAND_ABS_ADDR ) | ( 1 < < CGEN_OPERAND_UNSIGNED ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* disp8: 8 bit displacement */
1998-02-12 03:13:21 +00:00
{ " disp8 " , & HW_ENT ( HW_H_IADDR ) , 8 , 8 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_RELAX ) | ( 1 < < CGEN_OPERAND_RELOC ) | ( 1 < < CGEN_OPERAND_PCREL_ADDR ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* disp16: 16 bit displacement */
1998-02-12 03:13:21 +00:00
{ " disp16 " , & HW_ENT ( HW_H_IADDR ) , 16 , 16 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_RELOC ) | ( 1 < < CGEN_OPERAND_PCREL_ADDR ) , { 0 } } } ,
1997-04-04 21:07:02 +00:00
/* disp24: 24 bit displacement */
1998-02-12 03:13:21 +00:00
{ " disp24 " , & HW_ENT ( HW_H_IADDR ) , 8 , 24 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_RELAX ) | ( 1 < < CGEN_OPERAND_RELOC ) | ( 1 < < CGEN_OPERAND_PCREL_ADDR ) , { 0 } } } ,
1998-01-15 01:48:51 +00:00
/* condbit: condition bit */
1998-02-12 03:13:21 +00:00
{ " condbit " , & HW_ENT ( HW_H_COND ) , 0 , 0 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_FAKE ) , { 0 } } } ,
1998-01-15 01:48:51 +00:00
/* accum: accumulator */
1998-02-12 03:13:21 +00:00
{ " accum " , & HW_ENT ( HW_H_ACCUM ) , 0 , 0 ,
{ 0 , 0 | ( 1 < < CGEN_OPERAND_FAKE ) , { 0 } } } ,
1998-01-15 01:48:51 +00:00
} ;
1998-02-12 03:13:21 +00:00
/* Operand references. */
1998-02-13 01:18:09 +00:00
# define INPUT CGEN_OPERAND_INSTANCE_INPUT
# define OUTPUT CGEN_OPERAND_INSTANCE_OUTPUT
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_add_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_add3_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_SLO16 ) , CGEN_MODE_HI , & OP_ENT ( SLO16 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_and3_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_UINT ) , CGEN_MODE_USI , & OP_ENT ( UIMM16 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_or3_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_ULO16 ) , CGEN_MODE_UHI , & OP_ENT ( ULO16 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_addi_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_SINT ) , CGEN_MODE_SI , & OP_ENT ( SIMM8 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_addv_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ OUTPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-13 02:31:10 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_addv3_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_SINT ) , CGEN_MODE_SI , & OP_ENT ( SIMM16 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ OUTPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_addx_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ OUTPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_bc8_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_IADDR ) , CGEN_MODE_USI , & OP_ENT ( DISP8 ) , 0 } ,
1998-02-20 00:57:03 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_bc24_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_IADDR ) , CGEN_MODE_USI , & OP_ENT ( DISP24 ) , 0 } ,
1998-02-20 00:57:03 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_beq_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_IADDR ) , CGEN_MODE_USI , & OP_ENT ( DISP16 ) , 0 } ,
1998-02-20 00:57:03 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_beqz_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_IADDR ) , CGEN_MODE_USI , & OP_ENT ( DISP16 ) , 0 } ,
1998-02-20 00:57:03 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_bl8_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_IADDR ) , CGEN_MODE_USI , & OP_ENT ( DISP8 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , 0 , 14 } ,
1998-07-21 20:59:23 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_bl24_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_IADDR ) , CGEN_MODE_USI , & OP_ENT ( DISP24 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , 0 , 14 } ,
1998-07-21 20:59:23 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_bcl8_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
{ INPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_IADDR ) , CGEN_MODE_USI , & OP_ENT ( DISP8 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , 0 , 14 } ,
1998-07-21 20:59:23 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_bcl24_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
{ INPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_IADDR ) , CGEN_MODE_USI , & OP_ENT ( DISP24 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , 0 , 14 } ,
1998-07-21 20:59:23 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_bra8_ops [ ] = {
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_IADDR ) , CGEN_MODE_USI , & OP_ENT ( DISP8 ) , 0 } ,
1998-02-20 00:57:03 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_bra24_ops [ ] = {
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_IADDR ) , CGEN_MODE_USI , & OP_ENT ( DISP24 ) , 0 } ,
1998-02-20 00:57:03 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_cmp_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_cmpi_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_SINT ) , CGEN_MODE_SI , & OP_ENT ( SIMM16 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_cmpz_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_div_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_jc_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-02-20 00:57:03 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_jl_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , 0 , 14 } ,
1998-07-21 20:59:23 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_jmp_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-02-20 00:57:03 +00:00
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_ld_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_SI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_USI , & OP_ENT ( SR ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_ld_d_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_SI , 0 , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_SLO16 ) , CGEN_MODE_HI , & OP_ENT ( SLO16 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_ldb_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_QI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_USI , & OP_ENT ( SR ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_ldb_d_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_QI , 0 , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_SLO16 ) , CGEN_MODE_HI , & OP_ENT ( SLO16 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_ldh_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_HI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_USI , & OP_ENT ( SR ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_ldh_d_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_HI , 0 , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_SLO16 ) , CGEN_MODE_HI , & OP_ENT ( SLO16 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_ld_plus_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_SI , 0 , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_ld24_ops [ ] = {
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_ADDR ) , CGEN_MODE_USI , & OP_ENT ( UIMM24 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_ldi8_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_SINT ) , CGEN_MODE_SI , & OP_ENT ( SIMM8 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_ldi16_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_SLO16 ) , CGEN_MODE_HI , & OP_ENT ( SLO16 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_lock_ops [ ] = {
1998-02-20 00:57:03 +00:00
{ INPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_SI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_USI , & OP_ENT ( SR ) , 0 } ,
1998-02-20 00:57:03 +00:00
{ OUTPUT , & HW_ENT ( HW_H_LOCK ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_machi_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_ACCUM ) , CGEN_MODE_DI , 0 , 0 } ,
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_ACCUM ) , CGEN_MODE_DI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_machi_a_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , & OP_ENT ( ACC ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , & OP_ENT ( ACC ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_mulhi_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_ACCUM ) , CGEN_MODE_DI , 0 , 0 } ,
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_mulhi_a_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , & OP_ENT ( ACC ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_mv_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_mvfachi_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_ACCUM ) , CGEN_MODE_DI , 0 , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_mvfachi_a_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , & OP_ENT ( ACCS ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_mvfc_ops [ ] = {
1998-02-18 01:26:15 +00:00
{ INPUT , & HW_ENT ( HW_H_CR ) , CGEN_MODE_USI , & OP_ENT ( SCR ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_mvtachi_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_ACCUM ) , CGEN_MODE_DI , 0 , 0 } ,
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_ACCUM ) , CGEN_MODE_DI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_mvtachi_a_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , & OP_ENT ( ACCS ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , & OP_ENT ( ACCS ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_mvtc_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-02-18 01:26:15 +00:00
{ OUTPUT , & HW_ENT ( HW_H_CR ) , CGEN_MODE_USI , & OP_ENT ( DCR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_rac_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_ACCUM ) , CGEN_MODE_DI , 0 , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_ACCUM ) , CGEN_MODE_DI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_rac_dsi_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , & OP_ENT ( ACCS ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_UINT ) , CGEN_MODE_USI , & OP_ENT ( IMM1 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , & OP_ENT ( ACCD ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_rte_ops [ ] = {
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_BSM ) , CGEN_MODE_UBI , 0 , 0 } ,
{ INPUT , & HW_ENT ( HW_H_BIE ) , CGEN_MODE_UBI , 0 , 0 } ,
{ INPUT , & HW_ENT ( HW_H_BCOND ) , CGEN_MODE_UBI , 0 , 0 } ,
{ INPUT , & HW_ENT ( HW_H_BPC ) , CGEN_MODE_SI , 0 , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_SM ) , CGEN_MODE_UBI , 0 , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_IE ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_seth_ops [ ] = {
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_HI16 ) , CGEN_MODE_SI , & OP_ENT ( HI16 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_sll3_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_SINT ) , CGEN_MODE_SI , & OP_ENT ( SIMM16 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_slli_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_UINT ) , CGEN_MODE_USI , & OP_ENT ( UIMM5 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_st_ops [ ] = {
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_USI , & OP_ENT ( SRC2 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_SI , 0 , 0 } ,
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_st_d_ops [ ] = {
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_SLO16 ) , CGEN_MODE_HI , & OP_ENT ( SLO16 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_SI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_stb_ops [ ] = {
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_USI , & OP_ENT ( SRC2 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_QI , & OP_ENT ( SRC1 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_QI , 0 , 0 } ,
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_stb_d_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_SLO16 ) , CGEN_MODE_HI , & OP_ENT ( SLO16 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_QI , & OP_ENT ( SRC1 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_QI , 0 , 0 } ,
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_sth_ops [ ] = {
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_USI , & OP_ENT ( SRC2 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_HI , & OP_ENT ( SRC1 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_HI , 0 , 0 } ,
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_sth_d_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_SLO16 ) , CGEN_MODE_HI , & OP_ENT ( SLO16 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_HI , & OP_ENT ( SRC1 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_HI , 0 , 0 } ,
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_st_plus_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ OUTPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_SI , 0 , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_trap_ops [ ] = {
1998-02-20 00:57:03 +00:00
{ INPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_USI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_CR ) , CGEN_MODE_USI , 0 , 0 } ,
{ INPUT , & HW_ENT ( HW_H_UINT ) , CGEN_MODE_SI , & OP_ENT ( UIMM4 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_CR ) , CGEN_MODE_USI , 0 , 6 } ,
{ OUTPUT , & HW_ENT ( HW_H_CR ) , CGEN_MODE_USI , 0 , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_PC ) , CGEN_MODE_SI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_unlock_ops [ ] = {
1998-02-20 00:57:03 +00:00
{ INPUT , & HW_ENT ( HW_H_LOCK ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_USI , & OP_ENT ( SRC2 ) , 0 } ,
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
1998-02-20 00:57:03 +00:00
{ OUTPUT , & HW_ENT ( HW_H_MEMORY ) , CGEN_MODE_SI , 0 , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_LOCK ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-13 02:31:10 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_satb_ops [ ] = {
1998-02-18 01:26:15 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_sat_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-18 01:26:15 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SR ) , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( DR ) , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_sadd_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , 0 , 1 } ,
1998-07-21 20:59:23 +00:00
{ INPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , 0 , 0 } ,
1998-02-13 01:18:09 +00:00
{ OUTPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_macwu1_ops [ ] = {
1998-02-13 01:18:09 +00:00
{ INPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , 0 , 1 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , 0 , 1 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_mulwu1_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC1 ) , 0 } ,
{ INPUT , & HW_ENT ( HW_H_GR ) , CGEN_MODE_SI , & OP_ENT ( SRC2 ) , 0 } ,
{ OUTPUT , & HW_ENT ( HW_H_ACCUMS ) , CGEN_MODE_DI , 0 , 1 } ,
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
1998-04-27 20:10:40 +00:00
static const CGEN_OPERAND_INSTANCE fmt_sc_ops [ ] = {
1998-02-13 02:31:10 +00:00
{ INPUT , & HW_ENT ( HW_H_COND ) , CGEN_MODE_UBI , 0 , 0 } ,
1998-02-12 03:13:21 +00:00
{ 0 }
} ;
1998-04-01 22:58:53 +00:00
/* end-sanitize-m32rx */
1998-02-13 01:18:09 +00:00
# undef INPUT
# undef OUTPUT
1998-02-23 21:20:37 +00:00
# define A(a) (1 << CONCAT2 (CGEN_INSN_,a))
1998-02-20 00:57:03 +00:00
# define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
# define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
1998-01-15 01:48:51 +00:00
1998-04-27 20:10:40 +00:00
/* The instruction table.
This is currently non - static because the simulator accesses it
directly . */
1998-02-12 03:13:21 +00:00
1998-02-04 01:54:47 +00:00
const CGEN_INSN m32r_cgen_insn_table_entries [ MAX_INSNS ] =
1998-01-20 04:16:37 +00:00
{
1998-04-27 20:10:40 +00:00
/* Special null first entry.
A ` num ' value of zero is thus illegal .
Also , the special ` illegal ' insn resides here . */
1998-01-15 01:48:51 +00:00
{ { 0 } , 0 } ,
1997-04-04 21:07:02 +00:00
/* add $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_ADD , " add " , " add " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0xa0 ,
1998-08-03 19:56:43 +00:00
" (set dr (add dr sr)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_add_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( PARALLEL ) , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1997-04-04 21:07:02 +00:00
} ,
1998-03-04 20:10:36 +00:00
/* add3 $dr,$sr,$hash$slo16 */
1997-04-04 21:07:02 +00:00
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_ADD3 , " add3 " , " add3 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , ' , ' , OP ( HASH ) , OP ( SLO16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0x80a00000 ,
1998-08-03 19:56:43 +00:00
" (set dr (add sr slo16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_add3_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1998-02-04 01:54:47 +00:00
} ,
1997-04-04 21:07:02 +00:00
/* and $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_AND , " and " , " and " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0xc0 ,
1998-08-03 19:56:43 +00:00
" (set dr (and dr sr)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_add_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( PARALLEL ) , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1998-02-04 01:54:47 +00:00
} ,
1997-04-04 21:07:02 +00:00
/* and3 $dr,$sr,$uimm16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_AND3 , " and3 " , " and3 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , ' , ' , OP ( UIMM16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0x80c00000 ,
1998-08-03 19:56:43 +00:00
" (set dr (and sr uimm16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_and3_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* or $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_OR , " or " , " or " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0xe0 ,
1998-08-03 19:56:43 +00:00
" (set dr (or dr sr)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_add_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( PARALLEL ) , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1998-02-04 01:54:47 +00:00
} ,
1998-03-04 20:10:36 +00:00
/* or3 $dr,$sr,$hash$ulo16 */
1998-02-04 01:54:47 +00:00
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_OR3 , " or3 " , " or3 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , ' , ' , OP ( HASH ) , OP ( ULO16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0x80e00000 ,
1998-08-03 19:56:43 +00:00
" (set dr (or sr ulo16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_or3_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* xor $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_XOR , " xor " , " xor " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0xd0 ,
1998-08-03 19:56:43 +00:00
" (set dr (xor dr sr)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_add_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( PARALLEL ) , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1998-02-04 01:54:47 +00:00
} ,
1997-04-04 21:07:02 +00:00
/* xor3 $dr,$sr,$uimm16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_XOR3 , " xor3 " , " xor3 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , ' , ' , OP ( UIMM16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0x80d00000 ,
1998-08-03 19:56:43 +00:00
" (set dr (xor sr uimm16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_and3_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* addi $dr,$simm8 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_ADDI , " addi " , " addi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SIMM8 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf000 } , 0x4000 ,
1998-08-03 19:56:43 +00:00
" (set dr (add dr simm8)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_addi_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1997-04-04 21:07:02 +00:00
} ,
/* addv $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_ADDV , " addv " , " addv " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x80 ,
1998-08-03 19:56:43 +00:00
" (parallel () (set dr (add dr sr)) (set condbit (add-oflag dr sr (const 0)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_addv_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1998-02-04 01:54:47 +00:00
} ,
1997-04-04 21:07:02 +00:00
/* addv3 $dr,$sr,$simm16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_ADDV3 , " addv3 " , " addv3 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , ' , ' , OP ( SIMM16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0x80800000 ,
1998-08-03 19:56:43 +00:00
" (parallel () (set dr (add sr simm16)) (set condbit (add-oflag sr simm16 (const 0)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_addv3_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* addx $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_ADDX , " addx " , " addx " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x90 ,
1998-08-03 19:56:43 +00:00
" (parallel () (set dr (addc dr sr condbit)) (set condbit (add-cflag dr sr condbit))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_addx_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1997-04-04 21:07:02 +00:00
} ,
/* bc.s $disp8 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BC8 , " bc8 " , " bc.s " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xff00 } , 0x7c00 ,
1998-08-03 19:56:43 +00:00
" (if condbit (set pc disp8)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bc8_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* bc.l $disp24 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BC24 , " bc24 " , " bc.l " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xff000000 } , 0xfc000000 ,
1998-08-03 19:56:43 +00:00
" (if condbit (set pc disp24)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bc24_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* beq $src1,$src2,$disp16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BEQ , " beq " , " beq " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , ' , ' , OP ( DISP16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xb0000000 ,
1998-08-03 19:56:43 +00:00
" (if (eq src1 src2) (set pc disp16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_beq_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* beqz $src2,$disp16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BEQZ , " beqz " , " beqz " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC2 ) , ' , ' , OP ( DISP16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xfff00000 } , 0xb0800000 ,
1998-08-03 19:56:43 +00:00
" (if (eq src2 (const: WI 0)) (set pc disp16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_beqz_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* bgez $src2,$disp16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BGEZ , " bgez " , " bgez " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC2 ) , ' , ' , OP ( DISP16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xfff00000 } , 0xb0b00000 ,
1998-08-03 19:56:43 +00:00
" (if (ge src2 (const: WI 0)) (set pc disp16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_beqz_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* bgtz $src2,$disp16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BGTZ , " bgtz " , " bgtz " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC2 ) , ' , ' , OP ( DISP16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xfff00000 } , 0xb0d00000 ,
1998-08-03 19:56:43 +00:00
" (if (gt src2 (const: WI 0)) (set pc disp16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_beqz_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* blez $src2,$disp16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BLEZ , " blez " , " blez " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC2 ) , ' , ' , OP ( DISP16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xfff00000 } , 0xb0c00000 ,
1998-08-03 19:56:43 +00:00
" (if (le src2 (const: WI 0)) (set pc disp16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_beqz_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* bltz $src2,$disp16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BLTZ , " bltz " , " bltz " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC2 ) , ' , ' , OP ( DISP16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xfff00000 } , 0xb0a00000 ,
1998-08-03 19:56:43 +00:00
" (if (lt src2 (const: WI 0)) (set pc disp16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_beqz_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* bnez $src2,$disp16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BNEZ , " bnez " , " bnez " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC2 ) , ' , ' , OP ( DISP16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xfff00000 } , 0xb0900000 ,
1998-08-03 19:56:43 +00:00
" (if (ne src2 (const: WI 0)) (set pc disp16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_beqz_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* bl.s $disp8 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BL8 , " bl8 " , " bl.s " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xff00 } , 0x7e00 ,
1998-08-03 19:56:43 +00:00
" (sequence () (set (reg h-gr 14) (add (and pc (const -4)) (const 4))) (set pc disp8)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bl8_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( FILL_SLOT ) | A ( UNCOND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* bl.l $disp24 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BL24 , " bl24 " , " bl.l " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xff000000 } , 0xfe000000 ,
1998-08-03 19:56:43 +00:00
" (sequence () (set (reg h-gr 14) (add pc (const 4))) (set pc disp24)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bl24_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( UNCOND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1998-02-04 01:54:47 +00:00
} ,
/* start-sanitize-m32rx */
/* bcl.s $disp8 */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BCL8 , " bcl8 " , " bcl.s " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xff00 } , 0x7800 ,
1998-08-03 19:56:43 +00:00
" (if condbit (sequence () (set (reg h-gr 14) (add (and pc (const -4)) (const 4))) (set pc disp8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bcl8_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32RX ) , PIPE_O } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* bcl.l $disp24 */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BCL24 , " bcl24 " , " bcl.l " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xff000000 } , 0xf8000000 ,
1998-08-03 19:56:43 +00:00
" (if condbit (sequence () (set (reg h-gr 14) (add pc (const 4))) (set pc disp24))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bcl24_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32RX ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* bnc.s $disp8 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BNC8 , " bnc8 " , " bnc.s " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xff00 } , 0x7d00 ,
1998-08-03 19:56:43 +00:00
" (if (not condbit) (set pc disp8)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bc8_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* bnc.l $disp24 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BNC24 , " bnc24 " , " bnc.l " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xff000000 } , 0xfd000000 ,
1998-08-03 19:56:43 +00:00
" (if (not condbit) (set pc disp24)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bc24_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* bne $src1,$src2,$disp16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BNE , " bne " , " bne " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , ' , ' , OP ( DISP16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xb0100000 ,
1998-08-03 19:56:43 +00:00
" (if (ne src1 src2) (set pc disp16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_beq_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* bra.s $disp8 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BRA8 , " bra8 " , " bra.s " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xff00 } , 0x7f00 ,
1998-08-03 19:56:43 +00:00
" (set pc disp8) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bra8_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( FILL_SLOT ) | A ( UNCOND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* bra.l $disp24 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BRA24 , " bra24 " , " bra.l " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xff000000 } , 0xff000000 ,
1998-08-03 19:56:43 +00:00
" (set pc disp24) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bra24_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( UNCOND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1998-02-04 01:54:47 +00:00
} ,
/* start-sanitize-m32rx */
/* bncl.s $disp8 */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BNCL8 , " bncl8 " , " bncl.s " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xff00 } , 0x7900 ,
1998-08-03 19:56:43 +00:00
" (if (not condbit) (sequence () (set (reg h-gr 14) (add (and pc (const -4)) (const 4))) (set pc disp8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bcl8_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32RX ) , PIPE_O } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* bncl.l $disp24 */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_BNCL24 , " bncl24 " , " bncl.l " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xff000000 } , 0xf9000000 ,
1998-08-03 19:56:43 +00:00
" (if (not condbit) (sequence () (set (reg h-gr 14) (add pc (const 4))) (set pc disp24))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_bcl24_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( COND_CTI ) , { ( 1 < < MACH_M32RX ) , PIPE_NONE } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* cmp $src1,$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_CMP , " cmp " , " cmp " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x40 ,
1998-08-03 19:56:43 +00:00
" (set condbit (lt src1 src2)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_cmp_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1998-02-04 01:54:47 +00:00
} ,
1997-04-04 21:07:02 +00:00
/* cmpi $src2,$simm16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_CMPI , " cmpi " , " cmpi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC2 ) , ' , ' , OP ( SIMM16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xfff00000 } , 0x80400000 ,
1998-08-03 19:56:43 +00:00
" (set condbit (lt src2 simm16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_cmpi_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* cmpu $src1,$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_CMPU , " cmpu " , " cmpu " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x50 ,
1998-08-03 19:56:43 +00:00
" (set condbit (ltu src1 src2)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_cmp_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1998-02-04 01:54:47 +00:00
} ,
1998-04-27 20:10:40 +00:00
/* cmpui $src2,$simm16 */
1998-01-15 01:48:51 +00:00
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_CMPUI , " cmpui " , " cmpui " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC2 ) , ' , ' , OP ( SIMM16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xfff00000 } , 0x80500000 ,
1998-08-03 19:56:43 +00:00
" (set condbit (ltu src2 simm16)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_cmpi_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1998-02-04 01:54:47 +00:00
} ,
/* start-sanitize-m32rx */
/* cmpeq $src1,$src2 */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_CMPEQ , " cmpeq " , " cmpeq " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x60 ,
1998-08-03 19:56:43 +00:00
" (set condbit (eq src1 src2)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_cmp_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_OS } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* cmpz $src2 */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_CMPZ , " cmpz " , " cmpz " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xfff0 } , 0x70 ,
1998-08-03 19:56:43 +00:00
" (set condbit (eq src2 (const 0))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_cmpz_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_OS } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* div $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_DIV , " div " , " div " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f0ffff } , 0x90000000 ,
1998-08-03 19:56:43 +00:00
" (if (ne sr (const 0)) (set dr (div dr sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_div_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* divu $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_DIVU , " divu " , " divu " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f0ffff } , 0x90100000 ,
1998-08-03 19:56:43 +00:00
" (if (ne sr (const 0)) (set dr (udiv dr sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_div_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* rem $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_REM , " rem " , " rem " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f0ffff } , 0x90200000 ,
1998-08-03 19:56:43 +00:00
" (if (ne sr (const 0)) (set dr (mod dr sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_div_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* remu $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_REMU , " remu " , " remu " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f0ffff } , 0x90300000 ,
1998-08-03 19:56:43 +00:00
" (if (ne sr (const 0)) (set dr (umod dr sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_div_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1998-02-12 03:13:21 +00:00
} ,
/* start-sanitize-m32rx */
/* divh $dr,$sr */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_DIVH , " divh " , " divh " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f0ffff } , 0x90000010 ,
1998-08-03 19:56:43 +00:00
" (if (ne sr (const 0)) (set dr (div (ext: WI (trunc: HI dr)) sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_div_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_NONE } }
1998-02-04 01:54:47 +00:00
} ,
1998-02-12 03:13:21 +00:00
/* end-sanitize-m32rx */
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
/* jc $sr */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_JC , " jc " , " jc " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xfff0 } , 0x1cc0 ,
1998-08-03 19:56:43 +00:00
" (if condbit (set pc (and sr (const -4)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_jc_ops [ 0 ] ,
1998-07-21 20:59:23 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( SPECIAL ) | A ( COND_CTI ) , { ( 1 < < MACH_M32RX ) , PIPE_O } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* jnc $sr */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_JNC , " jnc " , " jnc " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xfff0 } , 0x1dc0 ,
1998-08-03 19:56:43 +00:00
" (if (not condbit) (set pc (and sr (const -4)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_jc_ops [ 0 ] ,
1998-07-21 20:59:23 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( SPECIAL ) | A ( COND_CTI ) , { ( 1 < < MACH_M32RX ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* jl $sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_JL , " jl " , " jl " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xfff0 } , 0x1ec0 ,
1998-08-03 19:56:43 +00:00
" (parallel () (set (reg h-gr 14) (add (and pc (const -4)) (const 4))) (set pc (and sr (const -4)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_jl_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( FILL_SLOT ) | A ( UNCOND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* jmp $sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_JMP , " jmp " , " jmp " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xfff0 } , 0x1fc0 ,
1998-08-03 19:56:43 +00:00
" (set pc (and sr (const -4))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_jmp_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( UNCOND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* ld $dr,@$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LD , " ld " , " ld " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x20c0 ,
1998-08-03 19:56:43 +00:00
" (set dr (mem: WI sr)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ld_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* ld $dr,@($slo16,$sr) */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LD_D , " ld-d " , " ld " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SLO16 ) , ' , ' , OP ( SR ) , ' ) ' , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0c00000 ,
1998-08-03 19:56:43 +00:00
" (set dr (mem: WI (add sr slo16))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ld_d_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* ldb $dr,@$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LDB , " ldb " , " ldb " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2080 ,
1998-08-03 19:56:43 +00:00
" (set dr (ext: WI (mem: QI sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ldb_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* ldb $dr,@($slo16,$sr) */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LDB_D , " ldb-d " , " ldb " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SLO16 ) , ' , ' , OP ( SR ) , ' ) ' , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0800000 ,
1998-08-03 19:56:43 +00:00
" (set dr (ext: WI (mem: QI (add sr slo16)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ldb_d_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* ldh $dr,@$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LDH , " ldh " , " ldh " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x20a0 ,
1998-08-03 19:56:43 +00:00
" (set dr (ext: WI (mem: HI sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ldh_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* ldh $dr,@($slo16,$sr) */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LDH_D , " ldh-d " , " ldh " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SLO16 ) , ' , ' , OP ( SR ) , ' ) ' , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0a00000 ,
1998-08-03 19:56:43 +00:00
" (set dr (ext: WI (mem: HI (add sr slo16)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ldh_d_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* ldub $dr,@$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LDUB , " ldub " , " ldub " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2090 ,
1998-08-03 19:56:43 +00:00
" (set dr (zext: WI (mem: QI sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ldb_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* ldub $dr,@($slo16,$sr) */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LDUB_D , " ldub-d " , " ldub " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SLO16 ) , ' , ' , OP ( SR ) , ' ) ' , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0900000 ,
1998-08-03 19:56:43 +00:00
" (set dr (zext: WI (mem: QI (add sr slo16)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ldb_d_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* lduh $dr,@$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LDUH , " lduh " , " lduh " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x20b0 ,
1998-08-03 19:56:43 +00:00
" (set dr (zext: WI (mem: HI sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ldh_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* lduh $dr,@($slo16,$sr) */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LDUH_D , " lduh-d " , " lduh " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SLO16 ) , ' , ' , OP ( SR ) , ' ) ' , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0b00000 ,
1998-08-03 19:56:43 +00:00
" (set dr (zext: WI (mem: HI (add sr slo16)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ldh_d_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* ld $dr,@$sr+ */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LD_PLUS , " ld-plus " , " ld " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , OP ( SR ) , ' + ' , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x20e0 ,
1998-08-03 19:56:43 +00:00
" (parallel () (set dr (mem: WI sr)) (set sr (add sr (const 4)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ld_plus_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1998-02-04 01:54:47 +00:00
} ,
1997-04-04 21:07:02 +00:00
/* ld24 $dr,$uimm24 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LD24 , " ld24 " , " ld24 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( UIMM24 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0000000 } , 0xe0000000 ,
1998-08-03 19:56:43 +00:00
" (set dr uimm24) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ld24_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* ldi8 $dr,$simm8 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LDI8 , " ldi8 " , " ldi8 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SIMM8 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf000 } , 0x6000 ,
1998-08-03 19:56:43 +00:00
" (set dr simm8) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ldi8_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1997-04-04 21:07:02 +00:00
} ,
1998-03-04 20:10:36 +00:00
/* ldi16 $dr,$hash$slo16 */
1997-04-04 21:07:02 +00:00
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LDI16 , " ldi16 " , " ldi16 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( HASH ) , OP ( SLO16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0ff0000 } , 0x90f00000 ,
1998-08-03 19:56:43 +00:00
" (set dr slo16) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_ldi16_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* lock $dr,@$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_LOCK , " lock " , " lock " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x20d0 ,
1998-08-03 19:56:43 +00:00
" (sequence () (set (reg h-lock) (const: UBI 1)) (set dr (mem: WI sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_lock_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* machi $src1,$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MACHI , " machi " , " machi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x3040 ,
1998-08-03 19:56:43 +00:00
" (set accum (sra: DI (sll: DI (add: DI accum (mul: DI (ext: DI (and: WI src1 (const 4294901760))) (ext: DI (trunc: HI (sra: WI src2 (const 16)))))) (const 8)) (const 8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_machi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* start-sanitize-m32rx */
/* machi $src1,$src2,$acc */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MACHI_A , " machi-a " , " machi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , ' , ' , OP ( ACC ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf070 } , 0x3040 ,
1998-08-03 19:56:43 +00:00
" (set acc (sra: DI (sll: DI (add: DI acc (mul: DI (ext: DI (and: WI src1 (const 4294901760))) (ext: DI (trunc: HI (sra: WI src2 (const 16)))))) (const 8)) (const 8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_machi_a_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* maclo $src1,$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MACLO , " maclo " , " maclo " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x3050 ,
1998-08-03 19:56:43 +00:00
" (set accum (sra: DI (sll: DI (add: DI accum (mul: DI (ext: DI (sll: WI src1 (const 16))) (ext: DI (trunc: HI src2)))) (const 8)) (const 8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_machi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
/* maclo $src1,$src2,$acc */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MACLO_A , " maclo-a " , " maclo " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , ' , ' , OP ( ACC ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf070 } , 0x3050 ,
1998-08-03 19:56:43 +00:00
" (set acc (sra: DI (sll: DI (add: DI acc (mul: DI (ext: DI (sll: WI src1 (const 16))) (ext: DI (trunc: HI src2)))) (const 8)) (const 8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_machi_a_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* macwhi $src1,$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MACWHI , " macwhi " , " macwhi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x3060 ,
1998-08-03 19:56:43 +00:00
" (set accum (sra: DI (sll: DI (add: DI accum (mul: DI (ext: DI src1) (ext: DI (trunc: HI (sra: WI src2 (const 16)))))) (const 8)) (const 8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_machi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-08-03 19:56:43 +00:00
/* start-sanitize-m32rx */
/* macwhi $src1,$src2,$acc */
{
{ 1 , 1 , 1 , 1 } ,
M32R_INSN_MACWHI_A , " macwhi-a " , " macwhi " ,
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , ' , ' , OP ( ACC ) , 0 } } ,
{ 16 , 16 , 0xf070 } , 0x3060 ,
" (set acc (add acc (mul (ext: DI src1) (ext: DI (trunc: HI (sra src2 (const 16))))))) " ,
( PTR ) & fmt_machi_a_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( SPECIAL ) , { ( 1 < < MACH_M32RX ) , PIPE_S } }
} ,
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* macwlo $src1,$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MACWLO , " macwlo " , " macwlo " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x3070 ,
1998-08-03 19:56:43 +00:00
" (set accum (sra: DI (sll: DI (add: DI accum (mul: DI (ext: DI src1) (ext: DI (trunc: HI src2)))) (const 8)) (const 8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_machi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-08-03 19:56:43 +00:00
/* start-sanitize-m32rx */
/* macwlo $src1,$src2,$acc */
{
{ 1 , 1 , 1 , 1 } ,
M32R_INSN_MACWLO_A , " macwlo-a " , " macwlo " ,
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , ' , ' , OP ( ACC ) , 0 } } ,
{ 16 , 16 , 0xf070 } , 0x3070 ,
" (set acc (add acc (mul (ext: DI src1) (ext: DI (trunc: HI src2))))) " ,
( PTR ) & fmt_machi_a_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( SPECIAL ) , { ( 1 < < MACH_M32RX ) , PIPE_S } }
} ,
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* mul $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MUL , " mul " , " mul " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x1060 ,
1998-08-03 19:56:43 +00:00
" (set dr (mul dr sr)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_add_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
/* mulhi $src1,$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MULHI , " mulhi " , " mulhi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x3000 ,
1998-08-03 19:56:43 +00:00
" (set accum (sra: DI (sll: DI (mul: DI (ext: DI (and: WI src1 (const 4294901760))) (ext: DI (trunc: HI (sra: WI src2 (const 16))))) (const 16)) (const 16))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mulhi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* start-sanitize-m32rx */
/* mulhi $src1,$src2,$acc */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MULHI_A , " mulhi-a " , " mulhi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , ' , ' , OP ( ACC ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf070 } , 0x3000 ,
1998-08-03 19:56:43 +00:00
" (set acc (sra: DI (sll: DI (mul: DI (ext: DI (and: WI src1 (const 4294901760))) (ext: DI (trunc: HI (sra: WI src2 (const 16))))) (const 16)) (const 16))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mulhi_a_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* mullo $src1,$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MULLO , " mullo " , " mullo " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x3010 ,
1998-08-03 19:56:43 +00:00
" (set accum (sra: DI (sll: DI (mul: DI (ext: DI (sll: WI src1 (const 16))) (ext: DI (trunc: HI src2))) (const 16)) (const 16))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mulhi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
/* mullo $src1,$src2,$acc */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MULLO_A , " mullo-a " , " mullo " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , ' , ' , OP ( ACC ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf070 } , 0x3010 ,
1998-08-03 19:56:43 +00:00
" (set acc (sra: DI (sll: DI (mul: DI (ext: DI (sll: WI src1 (const 16))) (ext: DI (trunc: HI src2))) (const 16)) (const 16))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mulhi_a_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* mulwhi $src1,$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MULWHI , " mulwhi " , " mulwhi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x3020 ,
1998-08-03 19:56:43 +00:00
" (set accum (sra: DI (sll: DI (mul: DI (ext: DI src1) (ext: DI (trunc: HI (sra: WI src2 (const 16))))) (const 8)) (const 8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mulhi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-08-03 19:56:43 +00:00
/* start-sanitize-m32rx */
/* mulwhi $src1,$src2,$acc */
{
{ 1 , 1 , 1 , 1 } ,
M32R_INSN_MULWHI_A , " mulwhi-a " , " mulwhi " ,
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , ' , ' , OP ( ACC ) , 0 } } ,
{ 16 , 16 , 0xf070 } , 0x3020 ,
" (set acc (mul (ext: DI src1) (ext: DI (trunc: HI (sra src2 (const 16)))))) " ,
( PTR ) & fmt_mulhi_a_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( SPECIAL ) , { ( 1 < < MACH_M32RX ) , PIPE_S } }
} ,
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* mulwlo $src1,$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MULWLO , " mulwlo " , " mulwlo " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x3030 ,
1998-08-03 19:56:43 +00:00
" (set accum (sra: DI (sll: DI (mul: DI (ext: DI src1) (ext: DI (trunc: HI src2))) (const 8)) (const 8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mulhi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-08-03 19:56:43 +00:00
/* start-sanitize-m32rx */
/* mulwlo $src1,$src2,$acc */
{
{ 1 , 1 , 1 , 1 } ,
M32R_INSN_MULWLO_A , " mulwlo-a " , " mulwlo " ,
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , ' , ' , OP ( ACC ) , 0 } } ,
{ 16 , 16 , 0xf070 } , 0x3030 ,
" (set acc (mul (ext: DI src1) (ext: DI (trunc: HI src2)))) " ,
( PTR ) & fmt_mulhi_a_ops [ 0 ] ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( SPECIAL ) , { ( 1 < < MACH_M32RX ) , PIPE_S } }
} ,
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* mv $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MV , " mv " , " mv " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x1080 ,
1998-08-03 19:56:43 +00:00
" (set dr sr) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mv_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1997-04-04 21:07:02 +00:00
} ,
/* mvfachi $dr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVFACHI , " mvfachi " , " mvfachi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0ff } , 0x50f0 ,
1998-08-03 19:56:43 +00:00
" (set dr (trunc: WI (sra: DI accum (const 32)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvfachi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* start-sanitize-m32rx */
/* mvfachi $dr,$accs */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVFACHI_A , " mvfachi-a " , " mvfachi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( ACCS ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f3 } , 0x50f0 ,
1998-08-03 19:56:43 +00:00
" (set dr (trunc: WI (sra: DI accs (const 32)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvfachi_a_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* mvfaclo $dr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVFACLO , " mvfaclo " , " mvfaclo " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0ff } , 0x50f1 ,
1998-08-03 19:56:43 +00:00
" (set dr (trunc: WI accum)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvfachi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
/* mvfaclo $dr,$accs */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVFACLO_A , " mvfaclo-a " , " mvfaclo " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( ACCS ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f3 } , 0x50f1 ,
1998-08-03 19:56:43 +00:00
" (set dr (trunc: WI accs)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvfachi_a_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* mvfacmi $dr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVFACMI , " mvfacmi " , " mvfacmi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0ff } , 0x50f2 ,
1998-08-03 19:56:43 +00:00
" (set dr (trunc: WI (sra: DI accum (const 16)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvfachi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* start-sanitize-m32rx */
/* mvfacmi $dr,$accs */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVFACMI_A , " mvfacmi-a " , " mvfacmi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( ACCS ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f3 } , 0x50f2 ,
1998-08-03 19:56:43 +00:00
" (set dr (trunc: WI (sra: DI accs (const 16)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvfachi_a_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* mvfc $dr,$scr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVFC , " mvfc " , " mvfc " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SCR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x1090 ,
1998-08-03 19:56:43 +00:00
" (set dr scr) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvfc_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* mvtachi $src1 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVTACHI , " mvtachi " , " mvtachi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0ff } , 0x5070 ,
1998-08-03 19:56:43 +00:00
" (set accum (or: DI (and: DI accum (const: DI 4294967295)) (sll: DI (ext: DI src1) (const 32)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvtachi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
/* mvtachi $src1,$accs */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVTACHI_A , " mvtachi-a " , " mvtachi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( ACCS ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f3 } , 0x5070 ,
1998-08-03 19:56:43 +00:00
" (set accs (or: DI (and: DI accs (const: DI 4294967295)) (sll: DI (ext: DI src1) (const 32)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvtachi_a_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* mvtaclo $src1 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVTACLO , " mvtaclo " , " mvtaclo " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0ff } , 0x5071 ,
1998-08-03 19:56:43 +00:00
" (set accum (or: DI (and: DI accum (const: DI 18446744069414584320)) (zext: DI src1))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvtachi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* start-sanitize-m32rx */
/* mvtaclo $src1,$accs */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVTACLO_A , " mvtaclo-a " , " mvtaclo " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( ACCS ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f3 } , 0x5071 ,
1998-08-03 19:56:43 +00:00
" (set accs (or: DI (and: DI accs (const: DI 18446744069414584320)) (zext: DI src1))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvtachi_a_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* mvtc $sr,$dcr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MVTC , " mvtc " , " mvtc " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SR ) , ' , ' , OP ( DCR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x10a0 ,
1998-08-03 19:56:43 +00:00
" (set dcr sr) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mvtc_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* neg $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_NEG , " neg " , " neg " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x30 ,
1998-08-03 19:56:43 +00:00
" (set dr (neg sr)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mv_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1997-04-04 21:07:02 +00:00
} ,
/* nop */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_NOP , " nop " , " nop " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xffff } , 0x7000 ,
1998-08-03 19:56:43 +00:00
" (c-code: VM PROFILE_COUNT_FILLNOPS (current_cpu, abuf->addr);
) " ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1997-04-04 21:07:02 +00:00
} ,
/* not $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_NOT , " not " , " not " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0xb0 ,
1998-08-03 19:56:43 +00:00
" (set dr (inv sr)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mv_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1997-04-04 21:07:02 +00:00
} ,
/* rac */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_RAC , " rac " , " rac " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xffff } , 0x5090 ,
1998-08-03 19:56:43 +00:00
" (sequence ((DI tmp1)) (set tmp1 (sll: DI accum (const 1))) (set tmp1 (add: DI tmp1 (const: DI 32768))) (set accum (cond: DI ((gt tmp1 (const: DI 140737488289792)) (const: DI 140737488289792)) ((lt tmp1 (const: DI 18446603336221196288)) (const: DI 18446603336221196288)) (else (and tmp1 (const: DI 18446744073709486080)))))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_rac_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* start-sanitize-m32rx */
1998-03-04 20:10:36 +00:00
/* rac $accd,$accs,$imm1 */
1998-02-12 03:13:21 +00:00
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_RAC_DSI , " rac-dsi " , " rac " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( ACCD ) , ' , ' , OP ( ACCS ) , ' , ' , OP ( IMM1 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf3f2 } , 0x5090 ,
1998-08-03 19:56:43 +00:00
" (sequence ((DI tmp1)) (set tmp1 (sll accs imm1)) (set tmp1 (add tmp1 (const: DI 32768))) (set accd (cond: DI ((gt tmp1 (const: DI 140737488289792)) (const: DI 140737488289792)) ((lt tmp1 (const: DI 18446603336221196288)) (const: DI 18446603336221196288)) (else (and tmp1 (const: DI 18446744073709486080)))))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_rac_dsi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* rach */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_RACH , " rach " , " rach " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xffff } , 0x5080 ,
1998-08-03 19:56:43 +00:00
" (sequence ((DI tmp1)) (set tmp1 (and accum (const: DI 72057594037927935))) (if (andif: WI (ge tmp1 (const: DI 70366596694016)) (le tmp1 (const: DI 36028797018963967))) (set tmp1 (const: DI 70366596694016)) (if (andif: WI (ge tmp1 (const: DI 36028797018963968)) (le tmp1 (const: DI 71987225293750272))) (set tmp1 (const: DI 71987225293750272)) (set tmp1 (and (add accum (const: DI 1073741824)) (const: DI 18446744071562067968))))) (set tmp1 (sll tmp1 (const 1))) (set accum (sra: DI (sll: DI tmp1 (const 7)) (const 7)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_rac_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_S } }
1998-02-12 03:13:21 +00:00
} ,
/* start-sanitize-m32rx */
1998-03-04 20:10:36 +00:00
/* rach $accd,$accs,$imm1 */
1998-02-04 01:54:47 +00:00
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_RACH_DSI , " rach-dsi " , " rach " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( ACCD ) , ' , ' , OP ( ACCS ) , ' , ' , OP ( IMM1 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf3f2 } , 0x5080 ,
1998-08-03 19:56:43 +00:00
" (sequence ((DI tmp1)) (set tmp1 (sll accs imm1)) (set tmp1 (add tmp1 (const: DI 2147483648))) (set accd (cond: DI ((gt tmp1 (const: DI 140733193388032)) (const: DI 140733193388032)) ((lt tmp1 (const: DI 18446603336221196288)) (const: DI 18446603336221196288)) (else (and tmp1 (const: DI 18446744069414584320)))))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_rac_dsi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
/* rte */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_RTE , " rte " , " rte " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xffff } , 0x10d6 ,
1998-08-03 19:56:43 +00:00
" (sequence () (set (reg h-sm) (reg h-bsm)) (set (reg h-ie) (reg h-bie)) (set condbit (reg h-bcond)) (set pc (and (reg h-bpc) (const -4)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_rte_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( UNCOND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
1998-02-04 01:54:47 +00:00
} ,
1998-03-04 20:10:36 +00:00
/* seth $dr,$hash$hi16 */
1998-02-04 01:54:47 +00:00
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SETH , " seth " , " seth " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( HASH ) , OP ( HI16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0ff0000 } , 0xd0c00000 ,
1998-08-03 19:56:43 +00:00
" (set dr (sll: WI hi16 (const 16))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_seth_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* sll $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SLL , " sll " , " sll " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x1040 ,
1998-08-03 19:56:43 +00:00
" (set dr (sll dr (and sr (const 31)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_add_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1998-02-04 01:54:47 +00:00
} ,
1997-04-04 21:07:02 +00:00
/* sll3 $dr,$sr,$simm16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SLL3 , " sll3 " , " sll3 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , ' , ' , OP ( SIMM16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0x90c00000 ,
1998-08-03 19:56:43 +00:00
" (set dr (sll sr (and: WI simm16 (const 31)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_sll3_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* slli $dr,$uimm5 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SLLI , " slli " , " slli " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( UIMM5 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0e0 } , 0x5040 ,
1998-08-03 19:56:43 +00:00
" (set dr (sll dr uimm5)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_slli_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* sra $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SRA , " sra " , " sra " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x1020 ,
1998-08-03 19:56:43 +00:00
" (set dr (sra dr (and sr (const 31)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_add_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1998-02-04 01:54:47 +00:00
} ,
1997-04-04 21:07:02 +00:00
/* sra3 $dr,$sr,$simm16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SRA3 , " sra3 " , " sra3 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , ' , ' , OP ( SIMM16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0x90a00000 ,
1998-08-03 19:56:43 +00:00
" (set dr (sra sr (and: WI simm16 (const 31)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_sll3_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* srai $dr,$uimm5 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SRAI , " srai " , " srai " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( UIMM5 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0e0 } , 0x5020 ,
1998-08-03 19:56:43 +00:00
" (set dr (sra dr uimm5)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_slli_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* srl $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SRL , " srl " , " srl " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x1000 ,
1998-08-03 19:56:43 +00:00
" (set dr (srl dr (and sr (const 31)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_add_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1998-02-04 01:54:47 +00:00
} ,
1997-04-04 21:07:02 +00:00
/* srl3 $dr,$sr,$simm16 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SRL3 , " srl3 " , " srl3 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , ' , ' , OP ( SIMM16 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0x90800000 ,
1998-08-03 19:56:43 +00:00
" (set dr (srl sr (and: WI simm16 (const 31)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_sll3_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* srli $dr,$uimm5 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SRLI , " srli " , " srli " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( UIMM5 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0e0 } , 0x5000 ,
1998-08-03 19:56:43 +00:00
" (set dr (srl dr uimm5)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_slli_ops [ 0 ] ,
1998-03-04 20:10:36 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* st $src1,@$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_ST , " st " , " st " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2040 ,
1998-08-03 19:56:43 +00:00
" (set: WI (mem: WI src2) src1) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_st_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* st $src1,@($slo16,$src2) */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_ST_D , " st-d " , " st " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , ' ( ' , OP ( SLO16 ) , ' , ' , OP ( SRC2 ) , ' ) ' , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0400000 ,
1998-08-03 19:56:43 +00:00
" (set: WI (mem: WI (add src2 slo16)) src1) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_st_d_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* stb $src1,@$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_STB , " stb " , " stb " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2000 ,
1998-08-03 19:56:43 +00:00
" (set: QI (mem: QI src2) src1) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_stb_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
1998-04-27 20:10:40 +00:00
/* stb $src1,@($slo16,$src2) */
1997-04-04 21:07:02 +00:00
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_STB_D , " stb-d " , " stb " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , ' ( ' , OP ( SLO16 ) , ' , ' , OP ( SRC2 ) , ' ) ' , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0000000 ,
1998-08-03 19:56:43 +00:00
" (set: QI (mem: QI (add src2 slo16)) src1) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_stb_d_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* sth $src1,@$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_STH , " sth " , " sth " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2020 ,
1998-08-03 19:56:43 +00:00
" (set: HI (mem: HI src2) src1) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_sth_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* sth $src1,@($slo16,$src2) */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_STH_D , " sth-d " , " sth " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , ' ( ' , OP ( SLO16 ) , ' , ' , OP ( SRC2 ) , ' ) ' , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0200000 ,
1998-08-03 19:56:43 +00:00
" (set: HI (mem: HI (add src2 slo16)) src1) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_sth_d_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
1997-04-04 21:07:02 +00:00
} ,
/* st $src1,@+$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_ST_PLUS , " st-plus " , " st " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , ' + ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2060 ,
1998-08-03 19:56:43 +00:00
" (sequence ((WI new-src2)) (set new-src2 (add: WI src2 (const: WI 4))) (set (mem: WI new-src2) src1) (set src2 new-src2)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_st_plus_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* st $src1,@-$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_ST_MINUS , " st-minus " , " st " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , ' - ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2070 ,
1998-08-03 19:56:43 +00:00
" (sequence ((WI new-src2)) (set new-src2 (sub src2 (const 4))) (set (mem: WI new-src2) src1) (set src2 new-src2)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_st_plus_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* sub $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SUB , " sub " , " sub " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x20 ,
1998-08-03 19:56:43 +00:00
" (set dr (sub dr sr)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_add_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1997-04-04 21:07:02 +00:00
} ,
/* subv $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SUBV , " subv " , " subv " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x0 ,
1998-08-03 19:56:43 +00:00
" (parallel () (set dr (sub dr sr)) (set condbit (sub-oflag dr sr (const 0)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_addv_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1997-04-04 21:07:02 +00:00
} ,
/* subx $dr,$sr */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SUBX , " subx " , " subx " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x10 ,
1998-08-03 19:56:43 +00:00
" (parallel () (set dr (subc dr sr condbit)) (set condbit (sub-cflag dr sr condbit))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_addx_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_OS } }
1998-02-04 01:54:47 +00:00
} ,
1998-03-04 20:10:36 +00:00
/* trap $uimm4 */
1998-02-04 01:54:47 +00:00
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_TRAP , " trap " , " trap " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( UIMM4 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xfff0 } , 0x10f0 ,
1998-08-03 19:56:43 +00:00
" (sequence () (set (reg h-cr 6) (add pc (const 4))) (set (reg h-cr 0) (and (sll (reg h-cr 0) (const 8)) (const 65408))) (set: WI pc (c-call: WI m32r_trap uimm4))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_trap_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( FILL_SLOT ) | A ( UNCOND_CTI ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
/* unlock $src1,@$src2 */
{
1998-01-15 01:48:51 +00:00
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_UNLOCK , " unlock " , " unlock " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2050 ,
1998-08-03 19:56:43 +00:00
" (sequence () (if (reg h-lock) (set (mem: WI src2) src1)) (set (reg h-lock) (const: UBI 0))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_unlock_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32R ) , PIPE_O } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
1998-02-18 01:26:15 +00:00
/* satb $dr,$sr */
1998-02-04 01:54:47 +00:00
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SATB , " satb " , " satb " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-04-03 00:45:21 +00:00
{ 32 , 32 , 0xf0f0ffff } , 0x80600300 ,
1998-08-03 19:56:43 +00:00
" (set dr (cond: WI ((ge sr (const 127)) (const 127)) ((le sr (const -128)) (const -128)) (else sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_satb_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_NONE } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
1998-02-18 01:26:15 +00:00
/* sath $dr,$sr */
1998-02-04 01:54:47 +00:00
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SATH , " sath " , " sath " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-04-01 22:58:53 +00:00
{ 32 , 32 , 0xf0f0ffff } , 0x80600200 ,
1998-08-03 19:56:43 +00:00
" (set dr (cond: WI ((ge sr (const 32767)) (const 32767)) ((le sr (const -32768)) (const -32768)) (else sr))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_satb_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_NONE } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
1998-02-18 01:26:15 +00:00
/* sat $dr,$sr */
1998-02-04 01:54:47 +00:00
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SAT , " sat " , " sat " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SR ) , 0 } } ,
1998-04-03 00:45:21 +00:00
{ 32 , 32 , 0xf0f0ffff } , 0x80600000 ,
1998-08-03 19:56:43 +00:00
" (set dr (if: WI condbit (if: WI (lt sr (const 0)) (const 2147483647) (const 2147483648)) sr)) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_sat_ops [ 0 ] ,
1998-07-21 20:59:23 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( SPECIAL ) , { ( 1 < < MACH_M32RX ) , PIPE_NONE } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* pcmpbz $src2 */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_PCMPBZ , " pcmpbz " , " pcmpbz " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xfff0 } , 0x370 ,
1998-08-03 19:56:43 +00:00
" (set condbit (cond: BI ((eq (and src2 (const 255)) (const 0)) (const: BI 1)) ((eq (and src2 (const 65280)) (const 0)) (const: BI 1)) ((eq (and src2 (const 16711680)) (const 0)) (const: BI 1)) ((eq (and src2 (const 4278190080)) (const 0)) (const: BI 1)) (else (const: BI 0)))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_cmpz_ops [ 0 ] ,
1998-08-03 19:56:43 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_OS } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* sadd */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SADD , " sadd " , " sadd " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xffff } , 0x50e4 ,
1998-08-03 19:56:43 +00:00
" (set (reg h-accums 0) (add (sra (reg h-accums 1) (const 16)) (reg h-accums 0))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_sadd_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1997-04-04 21:07:02 +00:00
} ,
1998-02-04 01:54:47 +00:00
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* macwu1 $src1,$src2 */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MACWU1 , " macwu1 " , " macwu1 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x50b0 ,
1998-08-03 19:56:43 +00:00
" (set (reg h-accums 1) (sra: DI (sll: DI (add: DI (reg h-accums 1) (mul: DI (ext: DI src1) (ext: DI (and src2 (const 65535))))) (const 8)) (const 8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_macwu1_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* msblo $src1,$src2 */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MSBLO , " msblo " , " msblo " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x50d0 ,
1998-08-03 19:56:43 +00:00
" (set accum (sra: DI (sll: DI (sub accum (sra: DI (sll: DI (mul: DI (ext: DI (trunc: HI src1)) (ext: DI (trunc: HI src2))) (const 32)) (const 16))) (const 8)) (const 8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_machi_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* mulwu1 $src1,$src2 */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MULWU1 , " mulwu1 " , " mulwu1 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x50a0 ,
1998-08-03 19:56:43 +00:00
" (set (reg h-accums 1) (sra: DI (sll: DI (mul: DI (ext: DI src1) (ext: DI (and src2 (const 65535)))) (const 16)) (const 16))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_mulwu1_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
1998-02-12 03:13:21 +00:00
/* maclh1 $src1,$src2 */
1998-02-04 01:54:47 +00:00
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_MACLH1 , " maclh1 " , " maclh1 " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , OP ( SRC2 ) , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xf0f0 } , 0x50c0 ,
1998-08-03 19:56:43 +00:00
" (set (reg h-accums 1) (sra: DI (sll: DI (add: DI (reg h-accums 1) (sll: DI (ext: DI (mul: SI (ext: SI (trunc: HI src1)) (sra: SI src2 (const: SI 16)))) (const 16))) (const 8)) (const 8))) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_macwu1_ops [ 0 ] ,
1998-02-20 00:57:03 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 , { ( 1 < < MACH_M32RX ) , PIPE_S } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* sc */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SC , " sc " , " sc " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xffff } , 0x7401 ,
1998-08-03 19:56:43 +00:00
" (if condbit (c-code: VM BRANCH_NEW_PC (new_pc, NEW_PC_SKIP);
) ) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_sc_ops [ 0 ] ,
1998-07-21 20:59:23 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( SPECIAL ) , { ( 1 < < MACH_M32RX ) , PIPE_O } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
/* snc */
{
{ 1 , 1 , 1 , 1 } ,
1998-04-27 20:10:40 +00:00
M32R_INSN_SNC , " snc " , " snc " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , 0 } } ,
1998-02-23 21:20:37 +00:00
{ 16 , 16 , 0xffff } , 0x7501 ,
1998-08-03 19:56:43 +00:00
" (if (not condbit) (c-code: VM BRANCH_NEW_PC (new_pc, NEW_PC_SKIP);
) ) " ,
1998-04-27 20:10:40 +00:00
( PTR ) & fmt_sc_ops [ 0 ] ,
1998-07-21 20:59:23 +00:00
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( SPECIAL ) , { ( 1 < < MACH_M32RX ) , PIPE_O } }
1998-02-04 01:54:47 +00:00
} ,
/* end-sanitize-m32rx */
1997-04-04 21:07:02 +00:00
} ;
1998-01-15 01:48:51 +00:00
# undef A
1998-02-23 21:20:37 +00:00
# undef MNEM
# undef OP
1998-01-15 01:48:51 +00:00
1998-08-03 19:56:43 +00:00
static const CGEN_INSN_TABLE insn_table =
1998-01-16 00:26:51 +00:00
{
1997-04-04 21:07:02 +00:00
& m32r_cgen_insn_table_entries [ 0 ] ,
1998-01-15 01:48:51 +00:00
sizeof ( CGEN_INSN ) ,
1998-02-04 01:54:47 +00:00
MAX_INSNS ,
1998-04-27 20:10:40 +00:00
NULL
} ;
/* Each non-simple macro entry points to an array of expansion possibilities. */
# define A(a) (1 << CONCAT2 (CGEN_INSN_,a))
# define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
# define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
/* The macro instruction table. */
static const CGEN_INSN macro_insn_table_entries [ ] =
{
/* bc $disp8 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bc8r " , " bc " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xff00 } , 0x7c00 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAXABLE ) | A ( COND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* bc $disp24 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bc24r " , " bc " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xff000000 } , 0xfc000000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAX ) | A ( COND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* bl $disp8 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bl8r " , " bl " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xff00 } , 0x7e00 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAXABLE ) | A ( FILL_SLOT ) | A ( UNCOND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* bl $disp24 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bl24r " , " bl " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xff000000 } , 0xfe000000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAX ) | A ( UNCOND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* bcl $disp8 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bcl8r " , " bcl " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xff00 } , 0x7800 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAXABLE ) | A ( COND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32RX ) , PIPE_O } }
} ,
/* bcl $disp24 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bcl24r " , " bcl " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xff000000 } , 0xf8000000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAX ) | A ( COND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32RX ) , PIPE_NONE } }
} ,
/* bnc $disp8 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bnc8r " , " bnc " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xff00 } , 0x7d00 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAXABLE ) | A ( COND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* bnc $disp24 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bnc24r " , " bnc " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xff000000 } , 0xfd000000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAX ) | A ( COND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* bra $disp8 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bra8r " , " bra " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xff00 } , 0x7f00 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAXABLE ) | A ( FILL_SLOT ) | A ( UNCOND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* bra $disp24 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bra24r " , " bra " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xff000000 } , 0xff000000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAX ) | A ( UNCOND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* bncl $disp8 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bncl8r " , " bncl " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP8 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xff00 } , 0x7900 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAXABLE ) | A ( COND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32RX ) , PIPE_O } }
} ,
/* bncl $disp24 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " bncl24r " , " bncl " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DISP24 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xff000000 } , 0xf9000000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( RELAX ) | A ( COND_CTI ) | A ( ALIAS ) , { ( 1 < < MACH_M32RX ) , PIPE_NONE } }
} ,
/* ld $dr,@($sr) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " ld-2 " , " ld " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SR ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf0f0 } , 0x20c0 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* ld $dr,@($sr,$slo16) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " ld-d2 " , " ld " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SR ) , ' , ' , OP ( SLO16 ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0c00000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* ldb $dr,@($sr) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " ldb-2 " , " ldb " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SR ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2080 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* ldb $dr,@($sr,$slo16) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " ldb-d2 " , " ldb " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SR ) , ' , ' , OP ( SLO16 ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0800000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* ldh $dr,@($sr) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " ldh-2 " , " ldh " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SR ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf0f0 } , 0x20a0 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* ldh $dr,@($sr,$slo16) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " ldh-d2 " , " ldh " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SR ) , ' , ' , OP ( SLO16 ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0a00000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* ldub $dr,@($sr) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " ldub-2 " , " ldub " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SR ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2090 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* ldub $dr,@($sr,$slo16) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " ldub-d2 " , " ldub " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SR ) , ' , ' , OP ( SLO16 ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0900000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* lduh $dr,@($sr) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " lduh-2 " , " lduh " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SR ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf0f0 } , 0x20b0 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* lduh $dr,@($sr,$slo16) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " lduh-d2 " , " lduh " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , ' @ ' , ' ( ' , OP ( SR ) , ' , ' , OP ( SLO16 ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0b00000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* pop $dr */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " pop " , " pop " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf0ff } , 0x20ef ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* ldi $dr,$simm8 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " ldi8a " , " ldi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( SIMM8 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf000 } , 0x6000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_OS } }
} ,
/* ldi $dr,$hash$slo16 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " ldi16a " , " ldi " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( DR ) , ' , ' , OP ( HASH ) , OP ( SLO16 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xf0ff0000 } , 0x90f00000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* rac $accd */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " rac-d " , " rac " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( ACCD ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf3ff } , 0x5090 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( ALIAS ) , { ( 1 < < MACH_M32RX ) , PIPE_S } }
} ,
/* rac $accd,$accs */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " rac-ds " , " rac " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( ACCD ) , ' , ' , OP ( ACCS ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf3f3 } , 0x5090 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( ALIAS ) , { ( 1 < < MACH_M32RX ) , PIPE_S } }
} ,
/* rach $accd */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " rach-d " , " rach " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( ACCD ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf3ff } , 0x5080 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( ALIAS ) , { ( 1 < < MACH_M32RX ) , PIPE_S } }
} ,
/* rach $accd,$accs */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " rach-ds " , " rach " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( ACCD ) , ' , ' , OP ( ACCS ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf3f3 } , 0x5080 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( ALIAS ) , { ( 1 < < MACH_M32RX ) , PIPE_S } }
} ,
/* st $src1,@($src2) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " st-2 " , " st " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , ' ( ' , OP ( SRC2 ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2040 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* st $src1,@($src2,$slo16) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " st-d2 " , " st " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , ' ( ' , OP ( SRC2 ) , ' , ' , OP ( SLO16 ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0400000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* stb $src1,@($src2) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " stb-2 " , " stb " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , ' ( ' , OP ( SRC2 ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* stb $src1,@($src2,$slo16) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " stb-d2 " , " stb " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , ' ( ' , OP ( SRC2 ) , ' , ' , OP ( SLO16 ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0000000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* sth $src1,@($src2) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " sth-2 " , " sth " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , ' ( ' , OP ( SRC2 ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf0f0 } , 0x2020 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_O } }
} ,
/* sth $src1,@($src2,$slo16) */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " sth-d2 " , " sth " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , ' , ' , ' @ ' , ' ( ' , OP ( SRC2 ) , ' , ' , OP ( SLO16 ) , ' ) ' , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 32 , 32 , 0xf0f00000 } , 0xa0200000 ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( NO_DIS ) | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
/* push $src1 */
{
{ 1 , 1 , 1 , 1 } ,
- 1 , " push " , " push " ,
1998-07-24 18:45:13 +00:00
{ { MNEM , ' ' , OP ( SRC1 ) , 0 } } ,
1998-04-27 20:10:40 +00:00
{ 16 , 16 , 0xf0ff } , 0x207f ,
1998-08-03 19:56:43 +00:00
0 ,
1998-04-27 20:10:40 +00:00
( PTR ) 0 ,
{ CGEN_INSN_NBOOL_ATTRS , 0 | A ( ALIAS ) , { ( 1 < < MACH_M32R ) , PIPE_NONE } }
} ,
} ;
# undef A
# undef MNEM
# undef OP
1998-08-03 19:56:43 +00:00
static const CGEN_INSN_TABLE macro_insn_table =
1998-04-27 20:10:40 +00:00
{
& macro_insn_table_entries [ 0 ] ,
sizeof ( CGEN_INSN ) ,
( sizeof ( macro_insn_table_entries ) /
sizeof ( macro_insn_table_entries [ 0 ] ) ) ,
NULL
1997-04-04 21:07:02 +00:00
} ;
1998-08-03 19:56:43 +00:00
static void
init_tables ( )
{
}
1998-04-27 20:10:40 +00:00
/* Return non-zero if INSN is to be added to the hash table.
Targets are free to override CGEN_ { ASM , DIS } _HASH_P in the . opc file . */
static int
asm_hash_insn_p ( insn )
const CGEN_INSN * insn ;
{
return CGEN_ASM_HASH_P ( insn ) ;
}
static int
dis_hash_insn_p ( insn )
const CGEN_INSN * insn ;
{
/* If building the hash table and the NO-DIS attribute is present,
ignore . */
if ( CGEN_INSN_ATTR ( insn , CGEN_INSN_NO_DIS ) )
return 0 ;
return CGEN_DIS_HASH_P ( insn ) ;
}
/* The result is the hash value of the insn.
Targets are free to override CGEN_ { ASM , DIS } _HASH in the . opc file . */
1997-04-04 21:07:02 +00:00
1998-04-27 20:10:40 +00:00
static unsigned int
asm_hash_insn ( mnem )
const char * mnem ;
1997-04-04 21:07:02 +00:00
{
1998-04-27 20:10:40 +00:00
return CGEN_ASM_HASH ( mnem ) ;
1997-04-04 21:07:02 +00:00
}
1998-04-27 20:10:40 +00:00
static unsigned int
dis_hash_insn ( buf , value )
1998-01-20 04:16:37 +00:00
const char * buf ;
1997-04-04 21:07:02 +00:00
unsigned long value ;
{
return CGEN_DIS_HASH ( buf , value ) ;
}
1998-08-03 19:56:43 +00:00
/* Initialize an opcode table and return a descriptor.
It ' s much like opening a file , and must be the first function called . */
CGEN_OPCODE_DESC
m32r_cgen_opcode_open ( mach , endian )
int mach ;
enum cgen_endian endian ;
1998-01-20 04:16:37 +00:00
{
1998-08-03 19:56:43 +00:00
CGEN_OPCODE_TABLE * table = ( CGEN_OPCODE_TABLE * ) xmalloc ( sizeof ( CGEN_OPCODE_TABLE ) ) ;
static int init_p ;
if ( ! init_p )
{
init_tables ( ) ;
init_p = 1 ;
}
memset ( table , 0 , sizeof ( * table ) ) ;
CGEN_OPCODE_MACH ( table ) = mach ;
CGEN_OPCODE_ENDIAN ( table ) = endian ;
CGEN_OPCODE_HW_LIST ( table ) = & m32r_cgen_hw_entries [ 0 ] ;
CGEN_OPCODE_OPERAND_TABLE ( table ) = & m32r_cgen_operand_table [ 0 ] ;
* CGEN_OPCODE_INSN_TABLE ( table ) = insn_table ;
* CGEN_OPCODE_MACRO_INSN_TABLE ( table ) = macro_insn_table ;
CGEN_OPCODE_ASM_HASH_P ( table ) = asm_hash_insn_p ;
CGEN_OPCODE_ASM_HASH ( table ) = asm_hash_insn ;
CGEN_OPCODE_ASM_HASH_SIZE ( table ) = CGEN_ASM_HASH_SIZE ;
CGEN_OPCODE_DIS_HASH_P ( table ) = dis_hash_insn_p ;
CGEN_OPCODE_DIS_HASH ( table ) = dis_hash_insn ;
CGEN_OPCODE_DIS_HASH_SIZE ( table ) = CGEN_DIS_HASH_SIZE ;
return ( CGEN_OPCODE_DESC ) table ;
}
/* Close an opcode table. */
1997-04-04 21:07:02 +00:00
void
1998-08-03 19:56:43 +00:00
m32r_cgen_opcode_close ( desc )
CGEN_OPCODE_DESC desc ;
1997-04-04 21:07:02 +00:00
{
1998-08-03 19:56:43 +00:00
free ( desc ) ;
1997-04-04 21:07:02 +00:00
}
1998-07-21 20:59:23 +00:00
/* Getting values from cgen_fields is handled by a collection of functions.
They are distinguished by the type of the VALUE argument they return .
TODO : floating point , inlining support , remove cases where result type
not appropriate . */
1997-04-04 21:07:02 +00:00
1998-07-21 20:59:23 +00:00
int
m32r_cgen_get_int_operand ( opindex , fields )
1997-04-04 21:07:02 +00:00
int opindex ;
1998-07-21 20:59:23 +00:00
const CGEN_FIELDS * fields ;
1997-04-04 21:07:02 +00:00
{
1998-07-21 20:59:23 +00:00
int value ;
1997-04-04 21:07:02 +00:00
switch ( opindex )
{
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SR :
1998-07-21 20:59:23 +00:00
value = fields - > f_r2 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_DR :
1998-07-21 20:59:23 +00:00
value = fields - > f_r1 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SRC1 :
1998-07-21 20:59:23 +00:00
value = fields - > f_r1 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SRC2 :
1998-07-21 20:59:23 +00:00
value = fields - > f_r2 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SCR :
1998-07-21 20:59:23 +00:00
value = fields - > f_r2 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_DCR :
1998-07-21 20:59:23 +00:00
value = fields - > f_r1 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SIMM8 :
1998-07-21 20:59:23 +00:00
value = fields - > f_simm8 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SIMM16 :
1998-07-21 20:59:23 +00:00
value = fields - > f_simm16 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_UIMM4 :
1998-07-21 20:59:23 +00:00
value = fields - > f_uimm4 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_UIMM5 :
1998-07-21 20:59:23 +00:00
value = fields - > f_uimm5 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_UIMM16 :
1998-07-21 20:59:23 +00:00
value = fields - > f_uimm16 ;
1998-01-15 01:48:51 +00:00
break ;
1998-02-12 03:13:21 +00:00
/* start-sanitize-m32rx */
case M32R_OPERAND_IMM1 :
1998-07-21 20:59:23 +00:00
value = fields - > f_imm1 ;
1998-02-12 03:13:21 +00:00
break ;
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
case M32R_OPERAND_ACCD :
1998-07-21 20:59:23 +00:00
value = fields - > f_accd ;
1998-02-12 03:13:21 +00:00
break ;
/* end-sanitize-m32rx */
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
case M32R_OPERAND_ACCS :
1998-07-21 20:59:23 +00:00
value = fields - > f_accs ;
1998-02-04 01:54:47 +00:00
break ;
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
case M32R_OPERAND_ACC :
1998-07-21 20:59:23 +00:00
value = fields - > f_acc ;
1998-02-04 01:54:47 +00:00
break ;
/* end-sanitize-m32rx */
1998-03-04 20:10:36 +00:00
case M32R_OPERAND_HASH :
1998-07-21 20:59:23 +00:00
value = fields - > f_nil ;
1998-03-04 20:10:36 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_HI16 :
1998-07-21 20:59:23 +00:00
value = fields - > f_hi16 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SLO16 :
1998-07-21 20:59:23 +00:00
value = fields - > f_simm16 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_ULO16 :
1998-07-21 20:59:23 +00:00
value = fields - > f_uimm16 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_UIMM24 :
1998-07-21 20:59:23 +00:00
value = fields - > f_uimm24 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_DISP8 :
1998-07-21 20:59:23 +00:00
value = fields - > f_disp8 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_DISP16 :
1998-07-21 20:59:23 +00:00
value = fields - > f_disp16 ;
1997-04-04 21:07:02 +00:00
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_DISP24 :
1998-07-21 20:59:23 +00:00
value = fields - > f_disp24 ;
1997-04-04 21:07:02 +00:00
break ;
default :
1998-07-21 20:59:23 +00:00
/* xgettext:c-format */
fprintf ( stderr , _ ( " Unrecognized field %d while getting int operand. \n " ) ,
1997-04-04 21:07:02 +00:00
opindex ) ;
abort ( ) ;
}
1998-07-21 20:59:23 +00:00
return value ;
}
1997-04-04 21:07:02 +00:00
1998-07-21 20:59:23 +00:00
bfd_vma
m32r_cgen_get_vma_operand ( opindex , fields )
1998-01-20 04:16:37 +00:00
int opindex ;
1998-01-16 00:26:51 +00:00
const CGEN_FIELDS * fields ;
1997-04-04 21:07:02 +00:00
{
1998-07-21 20:59:23 +00:00
bfd_vma value ;
1997-04-04 21:07:02 +00:00
switch ( opindex )
{
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SR :
1997-04-04 21:07:02 +00:00
value = fields - > f_r2 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_DR :
1997-04-04 21:07:02 +00:00
value = fields - > f_r1 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SRC1 :
1997-04-04 21:07:02 +00:00
value = fields - > f_r1 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SRC2 :
1997-04-04 21:07:02 +00:00
value = fields - > f_r2 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SCR :
1997-04-04 21:07:02 +00:00
value = fields - > f_r2 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_DCR :
1997-04-04 21:07:02 +00:00
value = fields - > f_r1 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SIMM8 :
1997-04-04 21:07:02 +00:00
value = fields - > f_simm8 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SIMM16 :
1997-04-04 21:07:02 +00:00
value = fields - > f_simm16 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_UIMM4 :
1997-04-04 21:07:02 +00:00
value = fields - > f_uimm4 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_UIMM5 :
1997-04-04 21:07:02 +00:00
value = fields - > f_uimm5 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_UIMM16 :
1997-04-04 21:07:02 +00:00
value = fields - > f_uimm16 ;
break ;
1998-02-12 03:13:21 +00:00
/* start-sanitize-m32rx */
case M32R_OPERAND_IMM1 :
value = fields - > f_imm1 ;
break ;
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
case M32R_OPERAND_ACCD :
value = fields - > f_accd ;
break ;
/* end-sanitize-m32rx */
1998-02-04 01:54:47 +00:00
/* start-sanitize-m32rx */
case M32R_OPERAND_ACCS :
value = fields - > f_accs ;
break ;
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
case M32R_OPERAND_ACC :
value = fields - > f_acc ;
break ;
/* end-sanitize-m32rx */
1998-03-04 20:10:36 +00:00
case M32R_OPERAND_HASH :
value = fields - > f_nil ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_HI16 :
1997-04-04 21:07:02 +00:00
value = fields - > f_hi16 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_SLO16 :
1997-04-04 21:07:02 +00:00
value = fields - > f_simm16 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_ULO16 :
1997-04-04 21:07:02 +00:00
value = fields - > f_uimm16 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_UIMM24 :
1997-04-04 21:07:02 +00:00
value = fields - > f_uimm24 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_DISP8 :
1997-04-04 21:07:02 +00:00
value = fields - > f_disp8 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_DISP16 :
1997-04-04 21:07:02 +00:00
value = fields - > f_disp16 ;
break ;
1998-01-15 01:48:51 +00:00
case M32R_OPERAND_DISP24 :
1997-04-04 21:07:02 +00:00
value = fields - > f_disp24 ;
break ;
default :
1998-07-21 20:59:23 +00:00
/* xgettext:c-format */
fprintf ( stderr , _ ( " Unrecognized field %d while getting vma operand. \n " ) ,
1997-04-04 21:07:02 +00:00
opindex ) ;
abort ( ) ;
}
return value ;
}
1998-07-21 20:59:23 +00:00
/* Stuffing values in cgen_fields is handled by a collection of functions.
They are distinguished by the type of the VALUE argument they accept .
TODO : floating point , inlining support , remove cases where argument type
not appropriate . */
void
m32r_cgen_set_int_operand ( opindex , fields , value )
int opindex ;
CGEN_FIELDS * fields ;
int value ;
{
switch ( opindex )
{
case M32R_OPERAND_SR :
fields - > f_r2 = value ;
break ;
case M32R_OPERAND_DR :
fields - > f_r1 = value ;
break ;
case M32R_OPERAND_SRC1 :
fields - > f_r1 = value ;
break ;
case M32R_OPERAND_SRC2 :
fields - > f_r2 = value ;
break ;
case M32R_OPERAND_SCR :
fields - > f_r2 = value ;
break ;
case M32R_OPERAND_DCR :
fields - > f_r1 = value ;
break ;
case M32R_OPERAND_SIMM8 :
fields - > f_simm8 = value ;
break ;
case M32R_OPERAND_SIMM16 :
fields - > f_simm16 = value ;
break ;
case M32R_OPERAND_UIMM4 :
fields - > f_uimm4 = value ;
break ;
case M32R_OPERAND_UIMM5 :
fields - > f_uimm5 = value ;
break ;
case M32R_OPERAND_UIMM16 :
fields - > f_uimm16 = value ;
break ;
/* start-sanitize-m32rx */
case M32R_OPERAND_IMM1 :
fields - > f_imm1 = value ;
break ;
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
case M32R_OPERAND_ACCD :
fields - > f_accd = value ;
break ;
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
case M32R_OPERAND_ACCS :
fields - > f_accs = value ;
break ;
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
case M32R_OPERAND_ACC :
fields - > f_acc = value ;
break ;
/* end-sanitize-m32rx */
case M32R_OPERAND_HASH :
fields - > f_nil = value ;
break ;
case M32R_OPERAND_HI16 :
fields - > f_hi16 = value ;
break ;
case M32R_OPERAND_SLO16 :
fields - > f_simm16 = value ;
break ;
case M32R_OPERAND_ULO16 :
fields - > f_uimm16 = value ;
break ;
case M32R_OPERAND_UIMM24 :
fields - > f_uimm24 = value ;
break ;
case M32R_OPERAND_DISP8 :
fields - > f_disp8 = value ;
break ;
case M32R_OPERAND_DISP16 :
fields - > f_disp16 = value ;
break ;
case M32R_OPERAND_DISP24 :
fields - > f_disp24 = value ;
break ;
default :
/* xgettext:c-format */
fprintf ( stderr , _ ( " Unrecognized field %d while setting int operand. \n " ) ,
opindex ) ;
abort ( ) ;
}
}
void
m32r_cgen_set_vma_operand ( opindex , fields , value )
int opindex ;
CGEN_FIELDS * fields ;
bfd_vma value ;
{
switch ( opindex )
{
case M32R_OPERAND_SR :
fields - > f_r2 = value ;
break ;
case M32R_OPERAND_DR :
fields - > f_r1 = value ;
break ;
case M32R_OPERAND_SRC1 :
fields - > f_r1 = value ;
break ;
case M32R_OPERAND_SRC2 :
fields - > f_r2 = value ;
break ;
case M32R_OPERAND_SCR :
fields - > f_r2 = value ;
break ;
case M32R_OPERAND_DCR :
fields - > f_r1 = value ;
break ;
case M32R_OPERAND_SIMM8 :
fields - > f_simm8 = value ;
break ;
case M32R_OPERAND_SIMM16 :
fields - > f_simm16 = value ;
break ;
case M32R_OPERAND_UIMM4 :
fields - > f_uimm4 = value ;
break ;
case M32R_OPERAND_UIMM5 :
fields - > f_uimm5 = value ;
break ;
case M32R_OPERAND_UIMM16 :
fields - > f_uimm16 = value ;
break ;
/* start-sanitize-m32rx */
case M32R_OPERAND_IMM1 :
fields - > f_imm1 = value ;
break ;
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
case M32R_OPERAND_ACCD :
fields - > f_accd = value ;
break ;
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
case M32R_OPERAND_ACCS :
fields - > f_accs = value ;
break ;
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
case M32R_OPERAND_ACC :
fields - > f_acc = value ;
break ;
/* end-sanitize-m32rx */
case M32R_OPERAND_HASH :
fields - > f_nil = value ;
break ;
case M32R_OPERAND_HI16 :
fields - > f_hi16 = value ;
break ;
case M32R_OPERAND_SLO16 :
fields - > f_simm16 = value ;
break ;
case M32R_OPERAND_ULO16 :
fields - > f_uimm16 = value ;
break ;
case M32R_OPERAND_UIMM24 :
fields - > f_uimm24 = value ;
break ;
case M32R_OPERAND_DISP8 :
fields - > f_disp8 = value ;
break ;
case M32R_OPERAND_DISP16 :
fields - > f_disp16 = value ;
break ;
case M32R_OPERAND_DISP24 :
fields - > f_disp24 = value ;
break ;
default :
/* xgettext:c-format */
fprintf ( stderr , _ ( " Unrecognized field %d while setting vma operand. \n " ) ,
opindex ) ;
abort ( ) ;
}
}