Open jacobly0 opened 3 months ago
Zig repro:
test {
var v: @Vector(4, u80) = .{ 10, 20, 30, 40 };
var x: @Vector(4, u80) = .{ 1, 2, 3, 4 };
_ = .{ &v, &x };
try std.testing.expectEqual(v + x, .{ 11, 22, 33, 44 });
}
LLVM IR repro:
target triple = "aarch64-unknown-linux-musl"
; N x i80, where N is > 1
define void @foo(<2 x i80> %0) {
ret void
}
Ah, thank you. I will update the CI tarballs shortly to enable LLVM assertions.
It turns out this was fixed in LLVM just a month ago, so it should be gone when we update to LLVM 19.
Great! Thanks for finding that out.
Unfortunately, this test now hits a different assertion:
/home/alexrp/Source/llvm-project-19/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp:1408: virtual llvm::MachineInstrBuilder llvm::MachineIRBuilder::buildInstr(unsigned int, llvm::ArrayRef<llvm::DstOp>, llvm::ArrayRef<llvm::SrcOp>, std::optional<unsigned int>): Assertion `llvm::all_of(SrcOps, [&, this](const SrcOp &Op) { return (Op.getLLTTy(*getMRI()).isVector() && Op.getLLTTy(*getMRI()) == SrcOps[0].getLLTTy(*getMRI())); }) && "type mismatch in input list"' failed.