[llvm] [AMDGPU] Detect kills in register sets when trying to form V_CMPX instructions. (PR #68293)

via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 5 04:48:52 PDT 2023


github-actions[bot] wrote:


<!--LLVM CODE FORMAT COMMENT: {clang-format}-->

:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff 777a6e6f10b2b90496d248b7fa904fce834484be 609673d2acad5d96793e73855dba6ac83cbe9c9c -- llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp b/llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp
index 239bcfe5e33f..6f6ffa99d59b 100644
--- a/llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp
+++ b/llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp
@@ -48,12 +48,12 @@ class SIOptimizeExecMasking : public MachineFunctionPass {
                               MCRegister Reg, bool UseLiveOuts = false,
                               bool IgnoreStart = false) const;
   bool isRegisterInUseAfter(MachineInstr &Stop, MCRegister Reg) const;
-  MachineInstr *findInstrBackwards(MachineInstr &Origin,
-                                   std::function<bool(MachineInstr *)> Pred,
-                                   ArrayRef<MCRegister> NonModifiableRegs,
-                                   MachineInstr *Terminator = nullptr,
-                                   SmallVectorImpl<MachineOperand *> *KillFlagCandidates = nullptr,
-                                   unsigned MaxInstructions = 20) const;
+  MachineInstr *findInstrBackwards(
+      MachineInstr &Origin, std::function<bool(MachineInstr *)> Pred,
+      ArrayRef<MCRegister> NonModifiableRegs,
+      MachineInstr *Terminator = nullptr,
+      SmallVectorImpl<MachineOperand *> *KillFlagCandidates = nullptr,
+      unsigned MaxInstructions = 20) const;
   bool optimizeExecSequence();
   void tryRecordVCmpxAndSaveexecSequence(MachineInstr &MI);
   bool optimizeVCMPSaveExecSequence(MachineInstr &SaveExecInstr,
@@ -333,7 +333,7 @@ static bool isLiveOut(const MachineBasicBlock &MBB, unsigned Reg) {
 // registers given in NonModifiableRegs is modified by the current instruction.
 MachineInstr *SIOptimizeExecMasking::findInstrBackwards(
     MachineInstr &Origin, std::function<bool(MachineInstr *)> Pred,
-    ArrayRef<MCRegister> NonModifiableRegs,  MachineInstr *Terminator,
+    ArrayRef<MCRegister> NonModifiableRegs, MachineInstr *Terminator,
     SmallVectorImpl<MachineOperand *> *KillFlagCandidates,
     unsigned MaxInstructions) const {
   MachineBasicBlock::reverse_iterator A = Origin.getReverseIterator(),
@@ -355,7 +355,8 @@ MachineInstr *SIOptimizeExecMasking::findInstrBackwards(
       // would not be detected by clearKillFlags, since they will cause the
       // register to be dead at a later place, causing the verifier to fail.
       // We use the candidates to clear the kill flags later.
-      if (Terminator && KillFlagCandidates && A != Terminator && A->killsRegister(Reg, TRI)) {
+      if (Terminator && KillFlagCandidates && A != Terminator &&
+          A->killsRegister(Reg, TRI)) {
         for (MachineOperand &MO : A->operands()) {
           if (MO.isReg() && MO.isKill()) {
             Register Candidate = MO.getReg();

``````````

</details>


https://github.com/llvm/llvm-project/pull/68293


More information about the llvm-commits mailing list