[llvm] [AArch64] Predicate should be NE for CBNZW (PR #150287)

via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 23 11:37:28 PDT 2025


https://github.com/AZero13 updated https://github.com/llvm/llvm-project/pull/150287

>From ceaf03a369184edd8dbfe8ab50b4c4d50cdb4948 Mon Sep 17 00:00:00 2001
From: Rose <gfunni234 at gmail.com>
Date: Wed, 23 Jul 2025 14:36:49 -0400
Subject: [PATCH] [AArch64] Predicate should be NE for CBNZW

Unable to reproduce yet, but this definitely seems wrong. Better safe than sorry.

No effect on codegen as far as I know (because I have not been able to repro).
---
 llvm/lib/Target/AArch64/AArch64InstrInfo.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
index 996b0edd24200..8685d7a04ac9c 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
@@ -531,8 +531,9 @@ bool AArch64InstrInfo::analyzeBranchPredicate(MachineBasicBlock &MBB,
 
   MBP.LHS = LastInst->getOperand(0);
   MBP.RHS = MachineOperand::CreateImm(0);
-  MBP.Predicate = LastOpc == AArch64::CBNZX ? MachineBranchPredicate::PRED_NE
-                                            : MachineBranchPredicate::PRED_EQ;
+  MBP.Predicate = (LastOpc == AArch64::CBNZX || LastOpc == AArch64::CBNZW)
+                      ? MachineBranchPredicate::PRED_NE
+                      : MachineBranchPredicate::PRED_EQ;
   return false;
 }
 



More information about the llvm-commits mailing list