[llvm] [DAGTypeLegalizer] Add missing BR_CC handler for soft-promoted half operands (PR #196214)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri May 8 10:03:35 PDT 2026


================
@@ -3309,6 +3312,30 @@ SDValue DAGTypeLegalizer::SoftPromoteHalfOp_FP_TO_XINT_SAT(SDNode *N) {
                      N->getOperand(1));
 }
 
+SDValue DAGTypeLegalizer::SoftPromoteHalfOp_BR_CC(SDNode *N) {
+  // BR_CC: chain(0), condcode(1), LHS(2), RHS(3), dest(4)
+  // The comparison operands (LHS, RHS) are soft-promoted halfs.
+  SDValue Op0 = N->getOperand(2);
+  SDValue Op1 = N->getOperand(3);
+  SDLoc dl(N);
+
+  EVT SVT = Op0.getValueType();
+  EVT NVT = TLI.getTypeToTransformTo(*DAG.getContext(), SVT);
+
+  // Get the soft-promoted i16 values
+  Op0 = GetSoftPromotedHalf(Op0);
+  Op1 = GetSoftPromotedHalf(Op1);
+
+  // Promote both comparison operands to the larger FP type.
+  auto PromotionOpcode = GetPromotionOpcode(SVT, NVT);
----------------
arsenm wrote:

```suggestion
  unsigned PromotionOpcode = GetPromotionOpcode(SVT, NVT);
```

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


More information about the llvm-commits mailing list