[llvm] [AArch64][GISel] Recover ADDHN from OR comparison masks (PR #213925)

David Green via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 7 08:17:07 PDT 2026


================
@@ -385,6 +385,47 @@ void applyOrToBSP(MachineInstr &MI, MachineRegisterInfo &MRI,
   MI.eraseFromParent();
 }
 
+/// Match G_TRUNC (G_OR X, Y) => G_ADDHN X, Y when both inputs are sign
+/// extended from the result element type. The high half of the addition then
+/// equals the truncation of the OR.
+bool matchTruncOrToADDHN(MachineInstr &MI, MachineRegisterInfo &MRI,
+                         GISelValueTracking *VT) {
+  assert(MI.getOpcode() == TargetOpcode::G_TRUNC && VT);
+
+  Register Dst = MI.getOperand(0).getReg();
+  Register Or = MI.getOperand(1).getReg();
----------------
davemgreen wrote:

Should something check hasOneUse of Or? We do on SDAG I believe?

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


More information about the llvm-commits mailing list