On 21/10/22 09:30, Richard Henderson wrote:
Signed-off-by: Richard Henderson <[email protected]> --- target/s390x/helper.h | 32 ++++++------- target/s390x/tcg/fpu_helper.c | 88 ++++++++++++++-------------------- target/s390x/tcg/translate.c | 76 ++++++++++++++++++++--------- target/s390x/tcg/insn-data.def | 30 ++++++------ 4 files changed, 121 insertions(+), 105 deletions(-)
diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index d1ffbb8710..8023bbab2f 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -305,6 +305,18 @@ static TCGv_i64 load_freg32_i64(int reg) return r; }+static TCGv_i128 load_freg_128(int reg)+{ + TCGv_i64 h = load_freg(reg); + TCGv_i64 l = load_freg(reg + 2); + TCGv_i128 r = tcg_temp_new_i128();
Maybe rename as load_freg_new_128() to make emphasis on the returned TCGv need to be freed? Otherwise: Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
+ tcg_gen_concat_i64_i128(r, l, h); + tcg_temp_free_i64(h); + tcg_temp_free_i64(l); + return r; +}
