[PATCH] D136596: [X86] Update LiveVariables in more cases in convertToThreeAddress

Bing Yu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 31 05:49:13 PDT 2022


yubing added inline comments.


================
Comment at: llvm/lib/Target/X86/X86InstrInfo.cpp:1699
               .add(MI.getOperand(7));
+    NumRegOperands = 4;
     break;
----------------
foad wrote:
> yubing wrote:
> > seems it should be "NumRegOperands = 3"
> > the 3rd operand of VPBROADCASTDZrmk is i32mem:$src instead of a register.
> 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.
adding Op.isReg() check works for me!
my guilty MIR is:

```
%22:vr512 = VPBROADCASTDZrmk %21:vr512(tied-def 0), killed %20:vk16wm, %stack.1, 1, $noreg, 0, $noreg :: (load (s32) from %stack.1, align 64)
```


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136596/new/

https://reviews.llvm.org/D136596



More information about the llvm-commits mailing list