CGEN_KEYWORD_ENTRY fr30_cgen_opval_h_gr_entries[] =
{
- { "ac", 13 },
- { "fp", 14 },
- { "sp", 15 },
{ "r0", 0 },
{ "r1", 1 },
{ "r2", 2 },
{ "r12", 12 },
{ "r13", 13 },
{ "r14", 14 },
- { "r15", 15 }
+ { "r15", 15 },
+ { "ac", 13 },
+ { "fp", 14 },
+ { "sp", 15 }
};
CGEN_KEYWORD fr30_cgen_opval_h_gr =
{ HW_H_VBIT, & HW_ENT (HW_H_VBIT + 1), "h-vbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
{ HW_H_CBIT, & HW_ENT (HW_H_CBIT + 1), "h-cbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
{ HW_H_IBIT, & HW_ENT (HW_H_IBIT + 1), "h-ibit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
- { HW_H_SBIT, & HW_ENT (HW_H_SBIT + 1), "h-sbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
+ { HW_H_SBIT, & HW_ENT (HW_H_SBIT + 1), "h-sbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0|(1<<CGEN_HW_FUN_ACCESS), { 0 } } },
{ HW_H_TBIT, & HW_ENT (HW_H_TBIT + 1), "h-tbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
{ HW_H_D0BIT, & HW_ENT (HW_H_D0BIT + 1), "h-d0bit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
{ HW_H_D1BIT, & HW_ENT (HW_H_D1BIT + 1), "h-d1bit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
{ 0 }
};
+static const CGEN_OPERAND_INSTANCE fmt_ldres_ops[] = {
+ { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
+ { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
+ { 0 }
+};
+
static const CGEN_OPERAND_INSTANCE fmt_andccr_ops[] = {
{ INPUT, "ccr", & HW_ENT (HW_H_CCR), CGEN_MODE_UQI, 0, 0, 0 },
{ INPUT, "u8", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (U8), 0, 0 },
{ { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
& fmt_andm, { 0x8400 },
(PTR) & fmt_andm_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* andh $Rj,@$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
& fmt_andh, { 0x8500 },
(PTR) & fmt_andh_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* andb $Rj,@$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
& fmt_andb, { 0x8600 },
(PTR) & fmt_andb_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* or $Rj,@$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
& fmt_andm, { 0x9400 },
(PTR) & fmt_andm_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* orh $Rj,@$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
& fmt_andh, { 0x9500 },
(PTR) & fmt_andh_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* orb $Rj,@$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
& fmt_andb, { 0x9600 },
(PTR) & fmt_andb_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* eor $Rj,@$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
& fmt_andm, { 0x9c00 },
(PTR) & fmt_andm_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* eorh $Rj,@$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
& fmt_andh, { 0x9d00 },
(PTR) & fmt_andh_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* eorb $Rj,@$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
& fmt_andb, { 0x9e00 },
(PTR) & fmt_andb_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* bandl $u4,@$Ri */
{
{ { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
& fmt_bandl, { 0x8000 },
(PTR) & fmt_bandl_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* borl $u4,@$Ri */
{
{ { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
& fmt_bandl, { 0x9000 },
(PTR) & fmt_bandl_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* beorl $u4,@$Ri */
{
{ { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
& fmt_bandl, { 0x9800 },
(PTR) & fmt_bandl_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* bandh $u4,@$Ri */
{
{ { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
& fmt_bandl, { 0x8100 },
(PTR) & fmt_bandl_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* borh $u4,@$Ri */
{
{ { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
& fmt_bandl, { 0x9100 },
(PTR) & fmt_bandl_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* beorh $u4,@$Ri */
{
{ { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
& fmt_bandl, { 0x9900 },
(PTR) & fmt_bandl_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* btstl $u4,@$Ri */
{
{ { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
& fmt_btstl, { 0x8800 },
(PTR) & fmt_btstl_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* btsth $u4,@$Ri */
{
{ { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
& fmt_btstl, { 0x8900 },
(PTR) & fmt_btstl_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* mul $Rj,$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
& fmt_mul, { 0xaf00 },
(PTR) & fmt_mul_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* mulu $Rj,$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
& fmt_mulu, { 0xab00 },
(PTR) & fmt_mulu_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* mulh $Rj,$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
& fmt_mulh, { 0xbf00 },
(PTR) & fmt_mulh_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* muluh $Rj,$Ri */
{
{ { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
& fmt_mulh, { 0xbb00 },
(PTR) & fmt_mulh_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* div0s $Ri */
{
{ { MNEM, ' ', OP (I32), ',', OP (RI), 0 } },
& fmt_ldi32, { 0x9f80 },
(PTR) & fmt_ldi32_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* ld @$Rj,$Ri */
{
{ { MNEM, ' ', '@', OP (R15), '+', ',', OP (PS), 0 } },
& fmt_ldr15ps, { 0x790 },
(PTR) & fmt_ldr15ps_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* st $Ri,@$Rj */
{
{ { MNEM, ' ', '@', OP (RI), 0 } },
& fmt_jmp, { 0x9700 },
(PTR) & fmt_jmp_ops[0],
- { 0, 0|A(UNCOND_CTI), { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
},
/* jmp:d @$Ri */
{
{ { MNEM, ' ', '@', OP (RI), 0 } },
& fmt_callr, { 0x9710 },
(PTR) & fmt_callr_ops[0],
- { 0, 0|A(UNCOND_CTI), { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
},
/* call:d @$Ri */
{
{ { MNEM, ' ', '@', OP (RI), 0 } },
& fmt_callr, { 0x9f10 },
(PTR) & fmt_callr_ops[0],
- { 0, 0|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT)|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
},
/* call $label12 */
{
{ { MNEM, ' ', OP (LABEL12), 0 } },
& fmt_call, { 0xd000 },
(PTR) & fmt_call_ops[0],
- { 0, 0|A(UNCOND_CTI), { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
},
/* call:d $label12 */
{
{ { MNEM, ' ', OP (LABEL12), 0 } },
& fmt_call, { 0xd800 },
(PTR) & fmt_call_ops[0],
- { 0, 0|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT)|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
},
/* ret */
{
{ { MNEM, 0 } },
& fmt_ret, { 0x9720 },
(PTR) & fmt_ret_ops[0],
- { 0, 0|A(UNCOND_CTI), { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
},
/* ret:d */
{
{ { MNEM, 0 } },
& fmt_ret, { 0x9f20 },
(PTR) & fmt_ret_ops[0],
- { 0, 0|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT)|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
},
/* int $u8 */
{
{ { MNEM, ' ', OP (U8), 0 } },
& fmt_int, { 0x1f00 },
(PTR) & fmt_int_ops[0],
- { 0, 0|A(UNCOND_CTI), { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
},
/* inte */
{
{ { MNEM, 0 } },
& fmt_inte, { 0x9f30 },
(PTR) & fmt_inte_ops[0],
- { 0, 0|A(UNCOND_CTI), { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
},
/* reti */
{
{ { MNEM, 0 } },
& fmt_reti, { 0x9730 },
(PTR) & fmt_reti_ops[0],
- { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT)|A(COND_CTI)|A(COND_CTI), { 0 } }
},
/* bra:d $label9 */
{
{ { MNEM, ' ', '@', OP (R13), '+', ',', '@', OP (DIR10), 0 } },
& fmt_dmovr13pi, { 0x1c00 },
(PTR) & fmt_dmovr13pi_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* dmovh @$R13+,@$dir9 */
{
{ { MNEM, ' ', '@', OP (R13), '+', ',', '@', OP (DIR9), 0 } },
& fmt_dmovr13pih, { 0x1d00 },
(PTR) & fmt_dmovr13pih_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* dmovb @$R13+,@$dir8 */
{
{ { MNEM, ' ', '@', OP (R13), '+', ',', '@', OP (DIR8), 0 } },
& fmt_dmovr13pib, { 0x1e00 },
(PTR) & fmt_dmovr13pib_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* dmov @$R15+,@$dir10 */
{
{ { MNEM, ' ', '@', OP (R15), '+', ',', '@', OP (DIR10), 0 } },
& fmt_dmovr15pi, { 0x1b00 },
(PTR) & fmt_dmovr15pi_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* dmov @$dir10,$R13 */
{
{ { MNEM, ' ', '@', OP (DIR10), ',', '@', OP (R13), '+', 0 } },
& fmt_dmov2r13pi, { 0xc00 },
(PTR) & fmt_dmov2r13pi_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* dmovh @$dir9,@$R13+ */
{
{ { MNEM, ' ', '@', OP (DIR9), ',', '@', OP (R13), '+', 0 } },
& fmt_dmov2r13pih, { 0xd00 },
(PTR) & fmt_dmov2r13pih_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* dmovb @$dir8,@$R13+ */
{
{ { MNEM, ' ', '@', OP (DIR8), ',', '@', OP (R13), '+', 0 } },
& fmt_dmov2r13pib, { 0xe00 },
(PTR) & fmt_dmov2r13pib_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* dmov @$dir10,@-$R15 */
{
{ { MNEM, ' ', '@', OP (DIR10), ',', '@', '-', OP (R15), 0 } },
& fmt_dmov2r15pd, { 0xb00 },
(PTR) & fmt_dmov2r15pd_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* ldres @$Ri+,$u4 */
{
FR30_INSN_LDRES, "ldres", "ldres",
{ { MNEM, ' ', '@', OP (RI), '+', ',', OP (U4), 0 } },
& fmt_ldres, { 0xbc00 },
- (PTR) 0,
+ (PTR) & fmt_ldres_ops[0],
{ 0, 0, { 0 } }
},
/* stres $u4,@$Ri+ */
FR30_INSN_STRES, "stres", "stres",
{ { MNEM, ' ', OP (U4), ',', '@', OP (RI), '+', 0 } },
& fmt_ldres, { 0xbd00 },
- (PTR) 0,
+ (PTR) & fmt_ldres_ops[0],
{ 0, 0, { 0 } }
},
/* copop $u4c,$ccc,$CRj,$CRi */
{ { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (CRJ), ',', OP (CRI), 0 } },
& fmt_copop, { 0x9fc0 },
(PTR) 0,
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* copld $u4c,$ccc,$Rjc,$CRi */
{
{ { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (RJC), ',', OP (CRI), 0 } },
& fmt_copld, { 0x9fd0 },
(PTR) 0,
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* copst $u4c,$ccc,$CRj,$Ric */
{
{ { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (CRJ), ',', OP (RIC), 0 } },
& fmt_copst, { 0x9fe0 },
(PTR) 0,
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* copsv $u4c,$ccc,$CRj,$Ric */
{
{ { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (CRJ), ',', OP (RIC), 0 } },
& fmt_copst, { 0x9ff0 },
(PTR) 0,
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* nop */
{
{ { MNEM, ' ', '(', OP (REGLIST_LOW_LD), ')', 0 } },
& fmt_ldm0, { 0x8c00 },
(PTR) & fmt_ldm0_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* ldm1 ($reglist_hi_ld) */
{
{ { MNEM, ' ', '(', OP (REGLIST_HI_LD), ')', 0 } },
& fmt_ldm1, { 0x8d00 },
(PTR) & fmt_ldm1_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* stm0 ($reglist_low_st) */
{
{ { MNEM, ' ', '(', OP (REGLIST_LOW_ST), ')', 0 } },
& fmt_stm0, { 0x8e00 },
(PTR) & fmt_stm0_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* stm1 ($reglist_hi_st) */
{
{ { MNEM, ' ', '(', OP (REGLIST_HI_ST), ')', 0 } },
& fmt_stm1, { 0x8f00 },
(PTR) & fmt_stm1_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* enter $u10 */
{
{ { MNEM, ' ', OP (U10), 0 } },
& fmt_enter, { 0xf00 },
(PTR) & fmt_enter_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
/* leave */
{
{ { MNEM, ' ', '@', OP (RJ), ',', OP (RI), 0 } },
& fmt_xchb, { 0x8a00 },
(PTR) & fmt_xchb_ops[0],
- { 0, 0, { 0 } }
+ { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
},
};