@ -906,7 +906,7 @@ void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2,
tcg_gen_mov_i32 ( ret , arg2 ) ;
return ;
}
if ( TCG_TARGET_HAS_deposit_i32 & & TCG_TARGET_deposit_i32_valid ( ofs , len ) ) {
if ( TCG_TARGET_deposit_valid ( TCG_TYPE_I32 , ofs , len ) ) {
tcg_gen_op5ii_i32 ( INDEX_op_deposit_i32 , ret , arg1 , arg2 , ofs , len ) ;
return ;
}
@ -951,8 +951,7 @@ void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg,
tcg_gen_shli_i32 ( ret , arg , ofs ) ;
} else if ( ofs = = 0 ) {
tcg_gen_andi_i32 ( ret , arg , ( 1u < < len ) - 1 ) ;
} else if ( TCG_TARGET_HAS_deposit_i32
& & TCG_TARGET_deposit_i32_valid ( ofs , len ) ) {
} else if ( TCG_TARGET_deposit_valid ( TCG_TYPE_I32 , ofs , len ) ) {
TCGv_i32 zero = tcg_constant_i32 ( 0 ) ;
tcg_gen_op5ii_i32 ( INDEX_op_deposit_i32 , ret , zero , arg , ofs , len ) ;
} else {
@ -2642,12 +2641,13 @@ void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2,
tcg_gen_mov_i64 ( ret , arg2 ) ;
return ;
}
if ( TCG_TARGET_HAS_deposit_i64 & & TCG_TARGET_deposit_i64_valid ( ofs , len ) ) {
tcg_gen_op5ii_i64 ( INDEX_op_deposit_i64 , ret , arg1 , arg2 , ofs , len ) ;
return ;
}
if ( TCG_TARGET_REG_BITS = = 32 ) {
if ( TCG_TARGET_REG_BITS = = 64 ) {
if ( TCG_TARGET_deposit_valid ( TCG_TYPE_I64 , ofs , len ) ) {
tcg_gen_op5ii_i64 ( INDEX_op_deposit_i64 , ret , arg1 , arg2 , ofs , len ) ;
return ;
}
} else {
if ( ofs > = 32 ) {
tcg_gen_deposit_i32 ( TCGV_HIGH ( ret ) , TCGV_HIGH ( arg1 ) ,
TCGV_LOW ( arg2 ) , ofs - 32 , len ) ;
@ -2702,8 +2702,8 @@ void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg,
tcg_gen_shli_i64 ( ret , arg , ofs ) ;
} else if ( ofs = = 0 ) {
tcg_gen_andi_i64 ( ret , arg , ( 1ull < < len ) - 1 ) ;
} else if ( TCG_TARGET_HAS_deposit_i64
& & TCG_TARGET_deposit_i64_valid ( ofs , len ) ) {
} else if ( TCG_TARGET_REG_BITS = = 64 & &
TCG_TARGET_deposit_valid ( TCG_TYPE_I64 , ofs , len ) ) {
TCGv_i64 zero = tcg_constant_i64 ( 0 ) ;
tcg_gen_op5ii_i64 ( INDEX_op_deposit_i64 , ret , zero , arg , ofs , len ) ;
} else {
@ -3226,7 +3226,7 @@ void tcg_gen_concat_i32_i64(TCGv_i64 dest, TCGv_i32 low, TCGv_i32 high)
tcg_gen_extu_i32_i64 ( dest , low ) ;
/* If deposit is available, use it. Otherwise use the extra
knowledge that we have of the zero - extensions above . */
if ( TCG_TARGET_HAS_deposit_i64 & & TCG_TARGET_deposit_i64_valid ( 32 , 32 ) ) {
if ( TCG_TARGET_deposit_valid ( TCG_TYPE_I64 , 32 , 32 ) ) {
tcg_gen_deposit_i64 ( dest , dest , tmp , 32 , 32 ) ;
} else {
tcg_gen_shli_i64 ( tmp , tmp , 32 ) ;