[llvm] [offload] Remove redundant checks in MappingInfoTy::lookupMapping (PR #127638)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 18 06:04:49 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-offload
Author: Krzysztof Parzyszek (kparzysz)
<details>
<summary>Changes</summary>
Also add some clarifying comments.
---
Full diff: https://github.com/llvm/llvm-project/pull/127638.diff
1 Files Affected:
- (modified) offload/libomptarget/OpenMP/Mapping.cpp (+14-17)
``````````diff
diff --git a/offload/libomptarget/OpenMP/Mapping.cpp b/offload/libomptarget/OpenMP/Mapping.cpp
index 4b78ed3360a26..4c21b7184a5c4 100644
--- a/offload/libomptarget/OpenMP/Mapping.cpp
+++ b/offload/libomptarget/OpenMP/Mapping.cpp
@@ -141,47 +141,44 @@ LookupResult MappingInfoTy::lookupMapping(HDTTMapAccessorTy &HDTTMap,
if (HDTTMap->empty())
return LR;
+ // HDTTMap is std::set, ordered by HstPtrBegin.
+ // Upper is the first element whose HstPtrBegin > HP.
auto Upper = HDTTMap->upper_bound(HP);
if (Size == 0) {
- // specification v5.1 Pointer Initialization for Device Data Environments
- // upper_bound satisfies
- // std::prev(upper)->HDTT.HstPtrBegin <= hp < upper->HDTT.HstPtrBegin
+ // HP satisfies
+ // std::prev(Upper)->HDTT.HstPtrBegin <= HP < Upper->HDTT.HstPtrBegin
if (Upper != HDTTMap->begin()) {
LR.TPR.setEntry(std::prev(Upper)->HDTT, OwnedTPR);
- // the left side of extended address range is satisfied.
- // hp >= LR.TPR.getEntry()->HstPtrBegin || hp >=
- // LR.TPR.getEntry()->HstPtrBase
- LR.Flags.IsContained = HP < LR.TPR.getEntry()->HstPtrEnd ||
- HP < LR.TPR.getEntry()->HstPtrBase;
+ // We know that HP >= LR.TPR.getEntry()->HstPtrBegin
+ LR.Flags.IsContained = HP < LR.TPR.getEntry()->HstPtrEnd;
}
if (!LR.Flags.IsContained && Upper != HDTTMap->end()) {
LR.TPR.setEntry(Upper->HDTT, OwnedTPR);
- // the right side of extended address range is satisfied.
- // hp < LR.TPR.getEntry()->HstPtrEnd || hp < LR.TPR.getEntry()->HstPtrBase
+ // This is a special case: HP is not really contained in a mapped
+ // region, but it's contained in the extended mapped region, which
+ // suffices to get the mapping of the base pointer.
+ // We know that HP < LR.TPR.getEntry()->HstPtrBegin
LR.Flags.IsContained = HP >= LR.TPR.getEntry()->HstPtrBase;
}
} else {
- // check the left bin
if (Upper != HDTTMap->begin()) {
LR.TPR.setEntry(std::prev(Upper)->HDTT, OwnedTPR);
- // Is it contained?
- LR.Flags.IsContained = HP >= LR.TPR.getEntry()->HstPtrBegin &&
- HP < LR.TPR.getEntry()->HstPtrEnd &&
+ // We know that HP >= LR.TPR.getEntry()->HstPtrBegin
+ LR.Flags.IsContained = HP < LR.TPR.getEntry()->HstPtrEnd &&
(HP + Size) <= LR.TPR.getEntry()->HstPtrEnd;
// Does it extend beyond the mapped region?
LR.Flags.ExtendsAfter = HP < LR.TPR.getEntry()->HstPtrEnd &&
(HP + Size) > LR.TPR.getEntry()->HstPtrEnd;
}
- // check the right bin
if (!(LR.Flags.IsContained || LR.Flags.ExtendsAfter) &&
Upper != HDTTMap->end()) {
LR.TPR.setEntry(Upper->HDTT, OwnedTPR);
// Does it extend into an already mapped region?
- LR.Flags.ExtendsBefore = HP < LR.TPR.getEntry()->HstPtrBegin &&
- (HP + Size) > LR.TPR.getEntry()->HstPtrBegin;
+ // We know that HP < LR.TPR.getEntry()->HstPtrBegin
+ LR.Flags.ExtendsBefore = (HP + Size) > LR.TPR.getEntry()->HstPtrBegin;
// Does it extend beyond the mapped region?
LR.Flags.ExtendsAfter = HP < LR.TPR.getEntry()->HstPtrEnd &&
(HP + Size) > LR.TPR.getEntry()->HstPtrEnd;
``````````
</details>
https://github.com/llvm/llvm-project/pull/127638
More information about the llvm-commits
mailing list