================ @@ -678,6 +682,71 @@ fp::ExceptionBehavior CallBase::getExceptionBehavior() const { return fp::ebIgnore; } +DenormalMode::DenormalModeKind CallBase::getInputDenormMode() const { + if (auto InDenormBundle = getOperandBundle(LLVMContext::OB_fp_control)) { + auto DenormOperand = + getBundleOperandByPrefix(*InDenormBundle, "denorm.in="); + if (DenormOperand) { + if (auto Mode = parseDenormalKindFromOperandBundle(*DenormOperand)) + return *Mode; + } else { + return DenormalMode::IEEE; + } + } + + if (!getParent()) + return DenormalMode::IEEE; + const Function *F = getFunction(); + if (!F) + return DenormalMode::IEEE; + + Type *Ty = nullptr; + for (auto &A : args()) + if (auto *T = A.get()->getType(); T->isFPOrFPVectorTy()) { + Ty = T; + break; + } + assert(Ty && "Some input argument must be of floating-point type"); ---------------- spavloff wrote:
Introduced "denorm.f32.in=" and "denorm.f32.out=" bundle operands. https://github.com/llvm/llvm-project/pull/136501 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits