Merge pull request #3383 from akirilov-arm/vany_true
Cranelift AArch64: Fix the VanyTrue implementation for 64-bit elements
This commit is contained in:
@@ -2338,7 +2338,11 @@ impl MachInstEmit for Inst {
|
||||
VecALUOp::Orr => (0b000_01110_10_1, 0b000111),
|
||||
VecALUOp::Eor => (0b001_01110_00_1, 0b000111),
|
||||
VecALUOp::Bsl => (0b001_01110_01_1, 0b000111),
|
||||
VecALUOp::Umaxp => (0b001_01110_00_1 | enc_size << 1, 0b101001),
|
||||
VecALUOp::Umaxp => {
|
||||
debug_assert_ne!(size, VectorSize::Size64x2);
|
||||
|
||||
(0b001_01110_00_1 | enc_size << 1, 0b101001)
|
||||
}
|
||||
VecALUOp::Add => (0b000_01110_00_1 | enc_size << 1, 0b100001),
|
||||
VecALUOp::Sub => (0b001_01110_00_1 | enc_size << 1, 0b100001),
|
||||
VecALUOp::Mul => {
|
||||
|
||||
@@ -2397,7 +2397,15 @@ pub(crate) fn lower_insn_to_regs<C: LowerCtx<I = Inst>>(
|
||||
// cmp xm, #0
|
||||
// cset xm, ne
|
||||
|
||||
let size = VectorSize::from_ty(ctx.input_ty(insn, 0));
|
||||
let s = VectorSize::from_ty(src_ty);
|
||||
let size = if s == VectorSize::Size64x2 {
|
||||
// `vall_true` with 64-bit elements is handled elsewhere.
|
||||
debug_assert_ne!(op, Opcode::VallTrue);
|
||||
|
||||
VectorSize::Size32x4
|
||||
} else {
|
||||
s
|
||||
};
|
||||
|
||||
if op == Opcode::VanyTrue {
|
||||
ctx.emit(Inst::VecRRR {
|
||||
|
||||
Reference in New Issue
Block a user