x64: fix miscompilation of select.i128 (#4017)
Issue #3963 identified a miscompilation with select in which the second in the pair of `CMOV`s (one pair per `i128` register) used the wrong flag. This change fixes the error in the x64 ISLE helper function emitting these `CMOV` instructions.
This commit is contained in:
@@ -2636,7 +2636,7 @@ pub fn constructor_cmove_or_from_values<C: Context>(
|
||||
let expr16_0 = C::writable_gpr_to_gpr(ctx, expr4_0);
|
||||
let expr17_0 = MInst::Cmove {
|
||||
size: expr6_0,
|
||||
cc: pattern2_0.clone(),
|
||||
cc: pattern3_0.clone(),
|
||||
consequent: expr15_0,
|
||||
alternative: expr16_0,
|
||||
dst: expr2_0,
|
||||
@@ -2659,7 +2659,7 @@ pub fn constructor_cmove_or_from_values<C: Context>(
|
||||
let expr27_0 = C::writable_gpr_to_gpr(ctx, expr5_0);
|
||||
let expr28_0 = MInst::Cmove {
|
||||
size: expr6_0,
|
||||
cc: pattern2_0.clone(),
|
||||
cc: pattern3_0.clone(),
|
||||
consequent: expr26_0,
|
||||
alternative: expr27_0,
|
||||
dst: expr3_0,
|
||||
|
||||
Reference in New Issue
Block a user