|
@@ -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);
|