From 95df121886a398f2bf5205eb63d5a9bceca5a764 Mon Sep 17 00:00:00 2001 From: Andreas Arnez Date: Fri, 13 Mar 2020 17:20:20 +0100 Subject: [PATCH] s390x: Actually use "load on condition" for conditional moves Although the implementation of the cond_move insn is prepared to emit "load on condition" instructions, it doesn't, because of a reversed check. The check is supposed to prevent emitting LOCx instructions when the condition code mask is set to "always", but it's accidentally negated. Fix the reversal of the check, so LOCx instructions are actually emitted when applicable. --- VEX/priv/host_s390_defs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VEX/priv/host_s390_defs.c b/VEX/priv/host_s390_defs.c index 98c160d71..80e56f603 100644 --- a/VEX/priv/host_s390_defs.c +++ b/VEX/priv/host_s390_defs.c @@ -10105,7 +10105,7 @@ s390_insn_cond_move_emit(UChar *buf, const s390_insn *insn) if (s390_host_has_lsc) { /* LOCx is not the preferred way to implement an unconditional load. */ - if (cond != S390_CC_ALWAYS) goto use_branch_insn; + if (cond == S390_CC_ALWAYS) goto use_branch_insn; switch (src.tag) { case S390_OPND_REG: