[llvm] [LoongArch] Optimize conditional branches (PR #147885)

via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 18 21:08:20 PDT 2025


================
@@ -208,16 +212,18 @@ def : PatFPSetcc<SETUO,  FCMP_CUN_S,  FPR32>;
 def : PatFPSetcc<SETLT,  FCMP_CLT_S,  FPR32>;
 
 multiclass PatFPBrcond<CondCode cc, LAInst CmpInst, RegisterClass RegTy> {
-  def : Pat<(brcond (xor (GRLenVT (setcc RegTy:$fj, RegTy:$fk, cc)), -1),
-                     bb:$imm21),
+  def : Pat<(loongarch_brcond (NotBoolXor (GRLenVT (setcc RegTy:$fj, RegTy:$fk, cc))),
+                              bb:$imm21),
             (BCEQZ (CmpInst RegTy:$fj, RegTy:$fk), bb:$imm21)>;
-  def : Pat<(brcond (GRLenVT (setcc RegTy:$fj, RegTy:$fk, cc)), bb:$imm21),
+  def : Pat<(loongarch_brcond (GRLenVT (setcc RegTy:$fj, RegTy:$fk, cc)), bb:$imm21),
             (BCNEZ (CmpInst RegTy:$fj, RegTy:$fk), bb:$imm21)>;
 }
 
 defm : PatFPBrcond<SETOEQ, FCMP_CEQ_S, FPR32>;
+defm : PatFPBrcond<SETEQ , FCMP_CEQ_S, FPR32>;
----------------
heiher wrote:

https://github.com/llvm/llvm-project/blob/e1ac57c1a560b1d9891f93081e2f9c862c4a8d77/llvm/lib/Target/LoongArch/LoongArchFloat32InstrInfo.td#L197
https://github.com/llvm/llvm-project/blob/e1ac57c1a560b1d9891f93081e2f9c862c4a8d77/llvm/lib/Target/LoongArch/LoongArchFloat32InstrInfo.td#L200

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


More information about the llvm-commits mailing list