[llvm] Hexagon QFP Optimizer (PR #163843)

via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 16 11:40:19 PDT 2025


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 origin/main HEAD --extensions h,cpp -- llvm/lib/Target/Hexagon/HexagonQFPoptimizer.cpp llvm/lib/Target/Hexagon/Hexagon.h llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp --diff_from_common_commit
``````````

:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:

</details>

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

``````````diff
diff --git a/llvm/lib/Target/Hexagon/HexagonQFPoptimizer.cpp b/llvm/lib/Target/Hexagon/HexagonQFPoptimizer.cpp
index 9c4c4cf36..60c02bd57 100644
--- a/llvm/lib/Target/Hexagon/HexagonQFPoptimizer.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonQFPoptimizer.cpp
@@ -84,8 +84,7 @@ using namespace llvm;
 
 cl::opt<bool>
     DisableQFOptimizer("disable-qfp-opt", cl::init(false),
-     cl::desc(
-   "Disable optimization of Qfloat operations."));
+                       cl::desc("Disable optimization of Qfloat operations."));
 
 std::vector<unsigned short> QFPInst = {
     Hexagon::V6_vadd_hf,          Hexagon::V6_vadd_qf16,
@@ -173,8 +172,8 @@ bool HexagonQFPoptimizer::optimizeQfp(MachineInstr *MI,
   MachineOperand &Res = MI->getOperand(0);
   MachineInstr *Inst1 = nullptr;
   MachineInstr *Inst2 = nullptr;
-  LLVM_DEBUG(dbgs() << "\n[Reaching Defs of operands]: ";
-    DefMI1->dump(); DefMI2->dump());
+  LLVM_DEBUG(dbgs() << "\n[Reaching Defs of operands]: "; DefMI1->dump();
+             DefMI2->dump());
 
   // Get the reaching defs of DefMI
   if (DefMI1->getNumOperands() > 1 && DefMI1->getOperand(1).isReg() &&
@@ -197,9 +196,9 @@ bool HexagonQFPoptimizer::optimizeQfp(MachineInstr *MI,
 
     // If the reaching defs of DefMI are W register type, we return
     if ((Inst1 && MRI->getRegClass(Inst1->getOperand(0).getReg()) ==
-            &Hexagon::HvxWRRegClass) || (Inst2 &&
-        MRI->getRegClass(Inst2->getOperand(0).getReg()) ==
-            &Hexagon::HvxWRRegClass))
+                      &Hexagon::HvxWRRegClass) ||
+        (Inst2 && MRI->getRegClass(Inst2->getOperand(0).getReg()) ==
+                      &Hexagon::HvxWRRegClass))
       return false;
 
     // Analyze the use operands of the conversion to get their KILL status
@@ -215,14 +214,13 @@ bool HexagonQFPoptimizer::optimizeQfp(MachineInstr *MI,
     if (MI->getOpcode() != Hexagon::V6_vmpy_qf32_sf)
       InstTy = QFPInstMap[QFPInstMap[MI->getOpcode()]];
 
-    MIB = BuildMI(*MBB, MI, MI->getDebugLoc(),
-        HII->get(InstTy), Res.getReg())
-        .addReg(Src1.getReg(), Op0F, Src1.getSubReg())
-        .addReg(Src2.getReg(), Op1F, Src2.getSubReg());
+    MIB = BuildMI(*MBB, MI, MI->getDebugLoc(), HII->get(InstTy), Res.getReg())
+              .addReg(Src1.getReg(), Op0F, Src1.getSubReg())
+              .addReg(Src2.getReg(), Op1F, Src2.getSubReg());
     LLVM_DEBUG(dbgs() << "\n[Inserting]: "; MIB.getInstr()->dump());
     return true;
 
-  // Check if left operand's reaching def is a conversion to sf/hf
+    // Check if left operand's reaching def is a conversion to sf/hf
   } else if (((Def1OP == Hexagon::V6_vconv_sf_qf32 &&
                Def2OP != Hexagon::V6_vconv_sf_qf32) ||
               (Def1OP == Hexagon::V6_vconv_hf_qf16 &&
@@ -231,7 +229,7 @@ bool HexagonQFPoptimizer::optimizeQfp(MachineInstr *MI,
              (MI->getOpcode() != Hexagon::V6_vmpy_qf32_sf)) {
 
     if (Inst1 && MRI->getRegClass(Inst1->getOperand(0).getReg()) ==
-        &Hexagon::HvxWRRegClass)
+                     &Hexagon::HvxWRRegClass)
       return false;
 
     MachineOperand &Src1 = DefMI1->getOperand(1);
@@ -241,12 +239,12 @@ bool HexagonQFPoptimizer::optimizeQfp(MachineInstr *MI,
     Src1.setIsKill(false);
     Op1F = getKillRegState(Src2.isKill());
     MIB = BuildMI(*MBB, MI, MI->getDebugLoc(), HII->get(InstTy), Res.getReg())
-        .addReg(Src1.getReg(), Op0F, Src1.getSubReg())
-        .addReg(Src2.getReg(), Op1F, Src2.getSubReg());
+              .addReg(Src1.getReg(), Op0F, Src1.getSubReg())
+              .addReg(Src2.getReg(), Op1F, Src2.getSubReg());
     LLVM_DEBUG(dbgs() << "\n[Inserting]: "; MIB.getInstr()->dump());
     return true;
 
-  // Check if right operand's reaching def is a conversion tp sf/hf
+    // Check if right operand's reaching def is a conversion tp sf/hf
   } else if (((Def1OP != Hexagon::V6_vconv_sf_qf32 &&
                Def2OP == Hexagon::V6_vconv_sf_qf32) ||
               (Def1OP != Hexagon::V6_vconv_hf_qf16 &&
@@ -262,7 +260,7 @@ bool HexagonQFPoptimizer::optimizeQfp(MachineInstr *MI,
       return false;
 
     if (Inst2 && MRI->getRegClass(Inst2->getOperand(0).getReg()) ==
-        &Hexagon::HvxWRRegClass)
+                     &Hexagon::HvxWRRegClass)
       return false;
 
     MachineOperand &Src1 = MI->getOperand(1);
@@ -272,9 +270,9 @@ bool HexagonQFPoptimizer::optimizeQfp(MachineInstr *MI,
     Src2.setIsKill(false);
     Op0F = getKillRegState(Src1.isKill());
     MIB = BuildMI(*MBB, MI, MI->getDebugLoc(), HII->get(InstTy), Res.getReg())
-        .addReg(Src2.getReg(), Op1F,
-                Src2.getSubReg()) // Notice the operands are flipped.
-        .addReg(Src1.getReg(), Op0F, Src1.getSubReg());
+              .addReg(Src2.getReg(), Op1F,
+                      Src2.getSubReg()) // Notice the operands are flipped.
+              .addReg(Src1.getReg(), Op0F, Src1.getSubReg());
     LLVM_DEBUG(dbgs() << "\n[Inserting]: "; MIB.getInstr()->dump());
     return true;
   }
@@ -297,8 +295,8 @@ bool HexagonQFPoptimizer::runOnMachineFunction(MachineFunction &MF) {
   MRI = &MF.getRegInfo();
 
   MachineFunction::iterator MBBI = MF.begin();
-  LLVM_DEBUG(dbgs() << "\n=== Running QFPOptimzer Pass for : " <<
-      MF.getName() << " Optimize intermediate conversions ===\n");
+  LLVM_DEBUG(dbgs() << "\n=== Running QFPOptimzer Pass for : " << MF.getName()
+                    << " Optimize intermediate conversions ===\n");
   while (MBBI != MF.end()) {
     MachineBasicBlock *MBB = &*MBBI;
     MachineBasicBlock::iterator MII = MBBI->instr_begin();
@@ -309,13 +307,13 @@ bool HexagonQFPoptimizer::runOnMachineFunction(MachineFunction &MF) {
       if (llvm::find(QFPInst, MI->getOpcode()) != QFPInst.end())
         if (MI->getOpcode() != Hexagon::V6_vconv_sf_qf32 &&
             MI->getOpcode() != Hexagon::V6_vconv_hf_qf16) {
-          LLVM_DEBUG(dbgs() << "\n###Analyzing for removal: ";MI->dump());
+          LLVM_DEBUG(dbgs() << "\n###Analyzing for removal: "; MI->dump());
           if (optimizeQfp(MI, MBB)) {
             MI->eraseFromParent();
             LLVM_DEBUG(dbgs() << "\t....Removing....");
             Changed = true;
           }
-       }
+        }
     }
     ++MBBI;
   }

``````````

</details>


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


More information about the llvm-commits mailing list