[clang] [llvm] [IR] Allow fast math flags on calls with homogeneous FP struct types (PR #110506)
Benjamin Maxwell via cfe-commits
cfe-commits at lists.llvm.org
Tue Oct 1 08:32:13 PDT 2024
================
@@ -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
More information about the cfe-commits
mailing list