@ -84,14 +84,14 @@ typedef struct DisasInsn {
ExitStatus ( * trans ) ( DisasContext * ctx , uint32_t insn ,
const struct DisasInsn * f ) ;
union {
void ( * f_ ttt) ( TCGv , TCGv , TCGv ) ;
void ( * f_ weww) ( TCGv_i32 , TCGv_env , TCGv_i32 , TCGv_i32 ) ;
void ( * f_ dedd) ( TCGv_i64 , TCGv_env , TCGv_i64 , TCGv_i64 ) ;
void ( * f_ wew) ( TCGv_i32 , TCGv_env , TCGv_i32 ) ;
void ( * f_ ded) ( TCGv_i64 , TCGv_env , TCGv_i64 ) ;
void ( * f_ wed) ( TCGv_i32 , TCGv_env , TCGv_i64 ) ;
void ( * f_ dew) ( TCGv_i64 , TCGv_env , TCGv_i32 ) ;
} ;
void ( * ttt ) ( TCGv , TCGv , TCGv ) ;
void ( * weww ) ( TCGv_i32 , TCGv_env , TCGv_i32 , TCGv_i32 ) ;
void ( * dedd ) ( TCGv_i64 , TCGv_env , TCGv_i64 , TCGv_i64 ) ;
void ( * wew ) ( TCGv_i32 , TCGv_env , TCGv_i32 ) ;
void ( * ded ) ( TCGv_i64 , TCGv_env , TCGv_i64 ) ;
void ( * wed ) ( TCGv_i32 , TCGv_env , TCGv_i64 ) ;
void ( * dew ) ( TCGv_i64 , TCGv_env , TCGv_i32 ) ;
} f ;
} DisasInsn ;
/* global register indexes */
@ -1934,7 +1934,7 @@ static ExitStatus trans_log(DisasContext *ctx, uint32_t insn,
}
tcg_r1 = load_gpr ( ctx , r1 ) ;
tcg_r2 = load_gpr ( ctx , r2 ) ;
ret = do_log ( ctx , rt , tcg_r1 , tcg_r2 , cf , di - > f_ ttt ) ;
ret = do_log ( ctx , rt , tcg_r1 , tcg_r2 , cf , di - > f . ttt ) ;
return nullify_end ( ctx , ret ) ;
}
@ -2111,10 +2111,10 @@ static ExitStatus trans_ds(DisasContext *ctx, uint32_t insn,
static const DisasInsn table_arith_log [ ] = {
{ 0x08000240u , 0xfc00ffffu , trans_nop } , /* or x,y,0 */
{ 0x08000240u , 0xffe0ffe0u , trans_copy } , /* or x,0,t */
{ 0x08000000u , 0xfc000fe0u , trans_log , . f_ ttt = tcg_gen_andc_tl } ,
{ 0x08000200u , 0xfc000fe0u , trans_log , . f_ ttt = tcg_gen_and_tl } ,
{ 0x08000240u , 0xfc000fe0u , trans_log , . f_ ttt = tcg_gen_or_tl } ,
{ 0x08000280u , 0xfc000fe0u , trans_log , . f_ ttt = tcg_gen_xor_tl } ,
{ 0x08000000u , 0xfc000fe0u , trans_log , . f . ttt = tcg_gen_andc_tl } ,
{ 0x08000200u , 0xfc000fe0u , trans_log , . f . ttt = tcg_gen_and_tl } ,
{ 0x08000240u , 0xfc000fe0u , trans_log , . f . ttt = tcg_gen_or_tl } ,
{ 0x08000280u , 0xfc000fe0u , trans_log , . f . ttt = tcg_gen_xor_tl } ,
{ 0x08000880u , 0xfc000fe0u , trans_cmpclr } ,
{ 0x08000380u , 0xfc000fe0u , trans_uxor } ,
{ 0x08000980u , 0xfc000fa0u , trans_uaddcm } ,
@ -3061,7 +3061,7 @@ static ExitStatus trans_fop_wew_0c(DisasContext *ctx, uint32_t insn,
{
unsigned rt = extract32 ( insn , 0 , 5 ) ;
unsigned ra = extract32 ( insn , 21 , 5 ) ;
return do_fop_wew ( ctx , rt , ra , di - > f_ wew ) ;
return do_fop_wew ( ctx , rt , ra , di - > f . wew ) ;
}
static ExitStatus trans_fop_wew_0e ( DisasContext * ctx , uint32_t insn ,
@ -3069,7 +3069,7 @@ static ExitStatus trans_fop_wew_0e(DisasContext *ctx, uint32_t insn,
{
unsigned rt = assemble_rt64 ( insn ) ;
unsigned ra = assemble_ra64 ( insn ) ;
return do_fop_wew ( ctx , rt , ra , di - > f_ wew ) ;
return do_fop_wew ( ctx , rt , ra , di - > f . wew ) ;
}
static ExitStatus trans_fop_ded ( DisasContext * ctx , uint32_t insn ,
@ -3077,7 +3077,7 @@ static ExitStatus trans_fop_ded(DisasContext *ctx, uint32_t insn,
{
unsigned rt = extract32 ( insn , 0 , 5 ) ;
unsigned ra = extract32 ( insn , 21 , 5 ) ;
return do_fop_ded ( ctx , rt , ra , di - > f_ ded ) ;
return do_fop_ded ( ctx , rt , ra , di - > f . ded ) ;
}
static ExitStatus trans_fop_wed_0c ( DisasContext * ctx , uint32_t insn ,
@ -3085,7 +3085,7 @@ static ExitStatus trans_fop_wed_0c(DisasContext *ctx, uint32_t insn,
{
unsigned rt = extract32 ( insn , 0 , 5 ) ;
unsigned ra = extract32 ( insn , 21 , 5 ) ;
return do_fop_wed ( ctx , rt , ra , di - > f_ wed ) ;
return do_fop_wed ( ctx , rt , ra , di - > f . wed ) ;
}
static ExitStatus trans_fop_wed_0e ( DisasContext * ctx , uint32_t insn ,
@ -3093,7 +3093,7 @@ static ExitStatus trans_fop_wed_0e(DisasContext *ctx, uint32_t insn,
{
unsigned rt = assemble_rt64 ( insn ) ;
unsigned ra = extract32 ( insn , 21 , 5 ) ;
return do_fop_wed ( ctx , rt , ra , di - > f_ wed ) ;
return do_fop_wed ( ctx , rt , ra , di - > f . wed ) ;
}
static ExitStatus trans_fop_dew_0c ( DisasContext * ctx , uint32_t insn ,
@ -3101,7 +3101,7 @@ static ExitStatus trans_fop_dew_0c(DisasContext *ctx, uint32_t insn,
{
unsigned rt = extract32 ( insn , 0 , 5 ) ;
unsigned ra = extract32 ( insn , 21 , 5 ) ;
return do_fop_dew ( ctx , rt , ra , di - > f_ dew ) ;
return do_fop_dew ( ctx , rt , ra , di - > f . dew ) ;
}
static ExitStatus trans_fop_dew_0e ( DisasContext * ctx , uint32_t insn ,
@ -3109,7 +3109,7 @@ static ExitStatus trans_fop_dew_0e(DisasContext *ctx, uint32_t insn,
{
unsigned rt = extract32 ( insn , 0 , 5 ) ;
unsigned ra = assemble_ra64 ( insn ) ;
return do_fop_dew ( ctx , rt , ra , di - > f_ dew ) ;
return do_fop_dew ( ctx , rt , ra , di - > f . dew ) ;
}
static ExitStatus trans_fop_weww_0c ( DisasContext * ctx , uint32_t insn ,
@ -3118,7 +3118,7 @@ static ExitStatus trans_fop_weww_0c(DisasContext *ctx, uint32_t insn,
unsigned rt = extract32 ( insn , 0 , 5 ) ;
unsigned rb = extract32 ( insn , 16 , 5 ) ;
unsigned ra = extract32 ( insn , 21 , 5 ) ;
return do_fop_weww ( ctx , rt , ra , rb , di - > f_ weww ) ;
return do_fop_weww ( ctx , rt , ra , rb , di - > f . weww ) ;
}
static ExitStatus trans_fop_weww_0e ( DisasContext * ctx , uint32_t insn ,
@ -3127,7 +3127,7 @@ static ExitStatus trans_fop_weww_0e(DisasContext *ctx, uint32_t insn,
unsigned rt = assemble_rt64 ( insn ) ;
unsigned rb = assemble_rb64 ( insn ) ;
unsigned ra = assemble_ra64 ( insn ) ;
return do_fop_weww ( ctx , rt , ra , rb , di - > f_ weww ) ;
return do_fop_weww ( ctx , rt , ra , rb , di - > f . weww ) ;
}
static ExitStatus trans_fop_dedd ( DisasContext * ctx , uint32_t insn ,
@ -3136,7 +3136,7 @@ static ExitStatus trans_fop_dedd(DisasContext *ctx, uint32_t insn,
unsigned rt = extract32 ( insn , 0 , 5 ) ;
unsigned rb = extract32 ( insn , 16 , 5 ) ;
unsigned ra = extract32 ( insn , 21 , 5 ) ;
return do_fop_dedd ( ctx , rt , ra , rb , di - > f_ dedd ) ;
return do_fop_dedd ( ctx , rt , ra , rb , di - > f . dedd ) ;
}
static void gen_fcpy_s ( TCGv_i32 dst , TCGv_env unused , TCGv_i32 src )
@ -3340,13 +3340,13 @@ static ExitStatus trans_xmpyu(DisasContext *ctx, uint32_t insn,
return nullify_end ( ctx , NO_EXIT ) ;
}
# define FOP_DED trans_fop_ded, .f_ ded
# define FOP_DEDD trans_fop_dedd, .f_ dedd
# define FOP_DED trans_fop_ded, .f. ded
# define FOP_DEDD trans_fop_dedd, .f. dedd
# define FOP_WEW trans_fop_wew_0c, .f_ wew
# define FOP_DEW trans_fop_dew_0c, .f_ dew
# define FOP_WED trans_fop_wed_0c, .f_ wed
# define FOP_WEWW trans_fop_weww_0c, .f_ weww
# define FOP_WEW trans_fop_wew_0c, .f. wew
# define FOP_DEW trans_fop_dew_0c, .f. dew
# define FOP_WED trans_fop_wed_0c, .f. wed
# define FOP_WEWW trans_fop_weww_0c, .f. weww
static const DisasInsn table_float_0c [ ] = {
/* floating point class zero */
@ -3425,10 +3425,10 @@ static const DisasInsn table_float_0c[] = {
# undef FOP_DEW
# undef FOP_WED
# undef FOP_WEWW
# define FOP_WEW trans_fop_wew_0e, .f_ wew
# define FOP_DEW trans_fop_dew_0e, .f_ dew
# define FOP_WED trans_fop_wed_0e, .f_ wed
# define FOP_WEWW trans_fop_weww_0e, .f_ weww
# define FOP_WEW trans_fop_wew_0e, .f. wew
# define FOP_DEW trans_fop_dew_0e, .f. dew
# define FOP_WED trans_fop_wed_0e, .f. wed
# define FOP_WEWW trans_fop_weww_0e, .f. weww
static const DisasInsn table_float_0e [ ] = {
/* floating point class zero */