[llvm] 966b026 - [NVPTX] Simplify handling of ISD::BF16_TO_FP

David Majnemer via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 21 10:36:38 PST 2024


Author: David Majnemer
Date: 2024-02-21T18:32:32Z
New Revision: 966b026785a09ec079e8b0ba79358892fcb958ad

URL: https://github.com/llvm/llvm-project/commit/966b026785a09ec079e8b0ba79358892fcb958ad
DIFF: https://github.com/llvm/llvm-project/commit/966b026785a09ec079e8b0ba79358892fcb958ad.diff

LOG: [NVPTX] Simplify handling of ISD::BF16_TO_FP

We only use it to get from BF16 to F32. After that point, we insert
an FP_EXTEND to get the rest of the way.

Added: 
    

Modified: 
    llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
index 63920a1db25c8c..fc6c642acbc073 100644
--- a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
@@ -784,7 +784,6 @@ NVPTXTargetLowering::NVPTXTargetLowering(const NVPTXTargetMachine &TM,
       setOperationAction(ISD::FP_EXTEND, VT, Custom);
       setOperationAction(ISD::FP_ROUND, VT, Custom);
     }
-    setOperationAction(ISD::BF16_TO_FP, MVT::f64, Custom);
   }
 
   // sm_80 only has conversions between f32 and bf16. Custom lower all other
@@ -2526,15 +2525,13 @@ SDValue NVPTXTargetLowering::LowerFP_EXTEND(SDValue Op,
         (STI.getSmVersion() < 90 || STI.getPTXVersion() < 78)) {
       EVT F32 = NarrowVT.isVector() ? NarrowVT.changeVectorElementType(MVT::f32)
                                     : MVT::f32;
-      EVT F64 = NarrowVT.isVector() ? NarrowVT.changeVectorElementType(MVT::f64)
-                                    : MVT::f64;
       SDLoc Loc(Op);
       if (STI.getSmVersion() >= 80 && STI.getPTXVersion() >= 71) {
         Op = DAG.getNode(ISD::FP_EXTEND, Loc, F32, Narrow);
       } else {
         Op = DAG.getNode(ISD::BF16_TO_FP, Loc, F32, Narrow);
       }
-      return DAG.getNode(ISD::FP_EXTEND, Loc, F64, Op);
+      return DAG.getNode(ISD::FP_EXTEND, Loc, WideVT, Op);
     }
   }
 


        


More information about the llvm-commits mailing list