diff options
Diffstat (limited to 'mlir/lib/Target/LLVMIR/ModuleImport.cpp')
| -rw-r--r-- | mlir/lib/Target/LLVMIR/ModuleImport.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/mlir/lib/Target/LLVMIR/ModuleImport.cpp b/mlir/lib/Target/LLVMIR/ModuleImport.cpp index d63ea12ecd49..6e70d52fa760 100644 --- a/mlir/lib/Target/LLVMIR/ModuleImport.cpp +++ b/mlir/lib/Target/LLVMIR/ModuleImport.cpp @@ -1290,6 +1290,27 @@ DILabelAttr ModuleImport::matchLabelAttr(llvm::Value *value) { return debugImporter->translate(node); } +FPExceptionBehaviorAttr +ModuleImport::matchFPExceptionBehaviorAttr(llvm::Value *value) { + auto *metadata = cast<llvm::MetadataAsValue>(value); + auto *mdstr = cast<llvm::MDString>(metadata->getMetadata()); + std::optional<llvm::fp::ExceptionBehavior> optLLVM = + llvm::convertStrToExceptionBehavior(mdstr->getString()); + assert(optLLVM && "Expecting FP exception behavior"); + return builder.getAttr<FPExceptionBehaviorAttr>( + convertFPExceptionBehaviorFromLLVM(*optLLVM)); +} + +RoundingModeAttr ModuleImport::matchRoundingModeAttr(llvm::Value *value) { + auto *metadata = cast<llvm::MetadataAsValue>(value); + auto *mdstr = cast<llvm::MDString>(metadata->getMetadata()); + std::optional<llvm::RoundingMode> optLLVM = + llvm::convertStrToRoundingMode(mdstr->getString()); + assert(optLLVM && "Expecting rounding mode"); + return builder.getAttr<RoundingModeAttr>( + convertRoundingModeFromLLVM(*optLLVM)); +} + FailureOr<SmallVector<AliasScopeAttr>> ModuleImport::matchAliasScopeAttrs(llvm::Value *value) { auto *nodeAsVal = cast<llvm::MetadataAsValue>(value); |
