Following on from D129634, this patch fixes more X86 CodeGen test
failures with D129213 applied, which adds verification of LiveIntervals
after the TwoAddressInstruction pass runs. These failures only showed up
with LLVM_ENABLE_EXPENSIVE_CHECKS=ON which adds the equivalent of an
implicit -verify-machineinstrs on all tests.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Target/X86/X86InstrInfo.cpp | ||
---|---|---|
1699 | seems it should be "NumRegOperands = 3" |
llvm/lib/Target/X86/X86InstrInfo.cpp | ||
---|---|---|
1699 | It needs to be at least 4 for some other opcodes like: %4:vr512 = VBLENDMPSZrmk killed %3:vk16wm, killed %2:vr512, killed %1:gr64, 1, $noreg, 0, $noreg Is this causing a problem? If so, maybe the loop at line 1769 needs an Op.isReg() check. |
llvm/lib/Target/X86/X86InstrInfo.cpp | ||
---|---|---|
1699 | adding Op.isReg() check works for me! %22:vr512 = VPBROADCASTDZrmk %21:vr512(tied-def 0), killed %20:vk16wm, %stack.1, 1, $noreg, 0, $noreg :: (load (s32) from %stack.1, align 64) |
seems it should be "NumRegOperands = 3"
the 3rd operand of VPBROADCASTDZrmk is i32mem:$src instead of a register.