================ @@ -326,6 +326,21 @@ class FPMathOperator : public Operator { /// precision. float getFPAccuracy() const; + /// Returns true if `Ty` is a supported floating-point type for phi, select, + /// or call FPMathOperators. + static bool isSupportedFloatingPointType(Type *Ty) { + if (auto *StructTy = dyn_cast<StructType>(Ty)) { + if (!StructTy->isLiteral() || !StructTy->containsHomogeneousTypes()) + return false; + Ty = StructTy->elements().front(); + } else if (auto *ArrayTy = dyn_cast<ArrayType>(Ty)) { + do { + Ty = ArrayTy->getElementType(); + } while ((ArrayTy = dyn_cast<ArrayType>(Ty))); + } + return Ty->isFPOrFPVectorTy(); ---------------- MacDue wrote:
Done :+1: https://github.com/llvm/llvm-project/pull/110506 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits