From: Florian Krohm Date: Wed, 5 Sep 2012 20:05:20 +0000 (+0000) Subject: s390: The load-rounded insns also need to issue an emulation X-Git-Tag: svn/VALGRIND_3_9_0^2~254 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ff61ff7d9355729500652f78508b7fe8195e98f;p=thirdparty%2Fvalgrind.git s390: The load-rounded insns also need to issue an emulation warning when the floating point extension is not present and m3 != 0. git-svn-id: svn://svn.valgrind.org/vex/trunk@2515 --- diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c index aaf2cab74a..0be8233291 100644 --- a/VEX/priv/guest_s390_toIR.c +++ b/VEX/priv/guest_s390_toIR.c @@ -8668,6 +8668,10 @@ static HChar * s390_irgen_LEDBR(UChar m3, UChar m4 __attribute__((unused)), UChar r1, UChar r2) { + if (! s390_host_has_fpext && m3 != S390_ROUND_PER_FPC) { + emulation_warning(EmWarn_S390X_fpext_rounding); + m3 = S390_ROUND_PER_FPC; + } IRTemp op = newTemp(Ity_F64); assign(op, get_fpr_dw0(r2)); @@ -10652,6 +10656,10 @@ static HChar * s390_irgen_LDXBR(UChar m3, UChar m4 __attribute__((unused)), UChar r1, UChar r2) { + if (! s390_host_has_fpext && m3 != S390_ROUND_PER_FPC) { + emulation_warning(EmWarn_S390X_fpext_rounding); + m3 = S390_ROUND_PER_FPC; + } IRTemp result = newTemp(Ity_F64); assign(result, binop(Iop_F128toF64, mkexpr(encode_bfp_rounding_mode(m3)), @@ -10665,6 +10673,10 @@ static HChar * s390_irgen_LEXBR(UChar m3, UChar m4 __attribute__((unused)), UChar r1, UChar r2) { + if (! s390_host_has_fpext && m3 != S390_ROUND_PER_FPC) { + emulation_warning(EmWarn_S390X_fpext_rounding); + m3 = S390_ROUND_PER_FPC; + } IRTemp result = newTemp(Ity_F32); assign(result, binop(Iop_F128toF32, mkexpr(encode_bfp_rounding_mode(m3)),