x64: allow vector types in select move
As reported in #3173, the `select` instruction fails an assertion when it is given `v128` types as operands. This change relaxes the assertion to allow the same type of XMM move that occurs for the f32 and f64 types. This fixes #3173 in the old `lower.rs` code temporarily until the relatively complex `select` lowering can be ported to ISLE.
This commit is contained in:
@@ -5297,7 +5297,11 @@ fn lower_insn_to_regs<C: LowerCtx<I = Inst>>(
|
||||
if is_int_or_ref_ty(ty) || ty == types::I128 {
|
||||
emit_cmoves(ctx, size, cc, lhs, dst);
|
||||
} else {
|
||||
debug_assert!(ty == types::F32 || ty == types::F64);
|
||||
debug_assert!(
|
||||
ty == types::F32
|
||||
|| ty == types::F64
|
||||
|| (ty.is_vector() && ty.bits() == 128)
|
||||
);
|
||||
ctx.emit(Inst::xmm_cmove(
|
||||
if ty == types::F64 {
|
||||
OperandSize::Size64
|
||||
|
||||
Reference in New Issue
Block a user