NVPTX: Cleanup check for denormal mode
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 6 Dec 2022 23:51:16 +0000 (18:51 -0500)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 7 Dec 2022 20:56:21 +0000 (15:56 -0500)
Go through the common query and be explicit about the supported flush
type.

llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp

index 7dac28f..f39934a 100644 (file)
@@ -369,12 +369,10 @@ static Instruction *simplifyNvvmIntrinsic(IntrinsicInst *II, InstCombiner &IC) {
   // intrinsic, we don't have to look up any module metadata, as
   // FtzRequirementTy will be FTZ_Any.)
   if (Action.FtzRequirement != FTZ_Any) {
-    const char *AttrName =
-        Action.IsHalfTy ? "denormal-fp-math" : "denormal-fp-math-f32";
-    StringRef Attr =
-        II->getFunction()->getFnAttribute(AttrName).getValueAsString();
-    DenormalMode Mode = parseDenormalFPAttribute(Attr);
-    bool FtzEnabled = Mode.Output != DenormalMode::IEEE;
+    // FIXME: Broken for f64
+    DenormalMode Mode = II->getFunction()->getDenormalMode(
+        Action.IsHalfTy ? APFloat::IEEEhalf() : APFloat::IEEEsingle());
+    bool FtzEnabled = Mode.Output == DenormalMode::PreserveSign;
 
     if (FtzEnabled != (Action.FtzRequirement == FTZ_MustBeOn))
       return nullptr;