[llvm] 026fb04 - [JITLink] Replace isInRangeForImm* functions with isInt / isUInt equivalents.

Lang Hames via llvm-commits llvm-commits at lists.llvm.org
Sun Jul 16 10:07:55 PDT 2023


Author: Lang Hames
Date: 2023-07-16T10:07:48-07:00
New Revision: 026fb0487523fec61c23643f8f78bb3c1a401682

URL: https://github.com/llvm/llvm-project/commit/026fb0487523fec61c23643f8f78bb3c1a401682
DIFF: https://github.com/llvm/llvm-project/commit/026fb0487523fec61c23643f8f78bb3c1a401682.diff

LOG: [JITLink] Replace isInRangeForImm* functions with isInt / isUInt equivalents.

Avoids some code duplication.

Added: 
    

Modified: 
    llvm/include/llvm/ExecutionEngine/JITLink/i386.h
    llvm/include/llvm/ExecutionEngine/JITLink/x86_64.h
    llvm/lib/ExecutionEngine/JITLink/i386.cpp
    llvm/lib/ExecutionEngine/JITLink/x86_64.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/ExecutionEngine/JITLink/i386.h b/llvm/include/llvm/ExecutionEngine/JITLink/i386.h
index adfdabf44f0198..f8d24d8bf31ca0 100644
--- a/llvm/include/llvm/ExecutionEngine/JITLink/i386.h
+++ b/llvm/include/llvm/ExecutionEngine/JITLink/i386.h
@@ -193,23 +193,6 @@ enum EdgeKind_i386 : Edge::Kind {
 /// only
 const char *getEdgeKindName(Edge::Kind K);
 
-/// Returns true if the given uint32_t value is in range for a uint16_t.
-inline bool isInRangeForImmU16(uint32_t Value) {
-  return Value <= std::numeric_limits<uint16_t>::max();
-}
-
-/// Returns true if the given int32_t value is in range for an int16_t.
-inline bool isInRangeForImmS16(int32_t Value) {
-  return (Value >= std::numeric_limits<int16_t>::min() &&
-          Value <= std::numeric_limits<int16_t>::max());
-}
-
-/// Returns true if the given int64_t value is in range for an int32_t.
-inline bool isInRangeForImmS32(int64_t Value) {
-  return (Value >= std::numeric_limits<int32_t>::min() &&
-          Value <= std::numeric_limits<int32_t>::max());
-}
-
 /// Apply fixup expression for edge to block content.
 inline Error applyFixup(LinkGraph &G, Block &B, const Edge &E,
                         const Symbol *GOTSymbol) {
@@ -240,7 +223,7 @@ inline Error applyFixup(LinkGraph &G, Block &B, const Edge &E,
 
   case i386::Pointer16: {
     uint32_t Value = E.getTarget().getAddress().getValue() + E.getAddend();
-    if (LLVM_LIKELY(isInRangeForImmU16(Value)))
+    if (LLVM_LIKELY(isUInt<16>(Value)))
       *(ulittle16_t *)FixupPtr = Value;
     else
       return makeTargetOutOfRangeError(G, B, E);
@@ -250,7 +233,7 @@ inline Error applyFixup(LinkGraph &G, Block &B, const Edge &E,
   case i386::PCRel16: {
     int32_t Value =
         E.getTarget().getAddress() - (FixupAddress + 4) + E.getAddend();
-    if (LLVM_LIKELY(isInRangeForImmS16(Value)))
+    if (LLVM_LIKELY(isInt<16>(Value)))
       *(little16_t *)FixupPtr = Value;
     else
       return makeTargetOutOfRangeError(G, B, E);

diff  --git a/llvm/include/llvm/ExecutionEngine/JITLink/x86_64.h b/llvm/include/llvm/ExecutionEngine/JITLink/x86_64.h
index 519aa192c64170..80af39055f1919 100644
--- a/llvm/include/llvm/ExecutionEngine/JITLink/x86_64.h
+++ b/llvm/include/llvm/ExecutionEngine/JITLink/x86_64.h
@@ -16,8 +16,6 @@
 #include "llvm/ExecutionEngine/JITLink/JITLink.h"
 #include "llvm/ExecutionEngine/JITLink/TableManager.h"
 
-#include <limits>
-
 namespace llvm {
 namespace jitlink {
 namespace x86_64 {
@@ -392,17 +390,6 @@ enum EdgeKind_x86_64 : Edge::Kind {
 /// only.
 const char *getEdgeKindName(Edge::Kind K);
 
-/// Returns true if the given uint64_t value is in range for a uint32_t.
-inline bool isInRangeForImmU32(uint64_t Value) {
-  return Value <= std::numeric_limits<uint32_t>::max();
-}
-
-/// Returns true if the given int64_t value is in range for an int32_t.
-inline bool isInRangeForImmS32(int64_t Value) {
-  return (Value >= std::numeric_limits<int32_t>::min() &&
-          Value <= std::numeric_limits<int32_t>::max());
-}
-
 /// Apply fixup expression for edge to block content.
 inline Error applyFixup(LinkGraph &G, Block &B, const Edge &E,
                         const Symbol *GOTSymbol) {
@@ -422,7 +409,7 @@ inline Error applyFixup(LinkGraph &G, Block &B, const Edge &E,
 
   case Pointer32: {
     uint64_t Value = E.getTarget().getAddress().getValue() + E.getAddend();
-    if (LLVM_LIKELY(isInRangeForImmU32(Value)))
+    if (LLVM_LIKELY(isUInt<32>(Value)))
       *(ulittle32_t *)FixupPtr = Value;
     else
       return makeTargetOutOfRangeError(G, B, E);
@@ -430,7 +417,7 @@ inline Error applyFixup(LinkGraph &G, Block &B, const Edge &E,
   }
   case Pointer32Signed: {
     int64_t Value = E.getTarget().getAddress().getValue() + E.getAddend();
-    if (LLVM_LIKELY(isInRangeForImmS32(Value)))
+    if (LLVM_LIKELY(isInt<32>(Value)))
       *(little32_t *)FixupPtr = Value;
     else
       return makeTargetOutOfRangeError(G, B, E);
@@ -464,7 +451,7 @@ inline Error applyFixup(LinkGraph &G, Block &B, const Edge &E,
   case PCRel32TLVPLoadREXRelaxable: {
     int64_t Value =
         E.getTarget().getAddress() - (FixupAddress + 4) + E.getAddend();
-    if (LLVM_LIKELY(isInRangeForImmS32(Value)))
+    if (LLVM_LIKELY(isInt<32>(Value)))
       *(little32_t *)FixupPtr = Value;
     else
       return makeTargetOutOfRangeError(G, B, E);
@@ -479,7 +466,7 @@ inline Error applyFixup(LinkGraph &G, Block &B, const Edge &E,
 
   case Delta32: {
     int64_t Value = E.getTarget().getAddress() - FixupAddress + E.getAddend();
-    if (LLVM_LIKELY(isInRangeForImmS32(Value)))
+    if (LLVM_LIKELY(isInt<32>(Value)))
       *(little32_t *)FixupPtr = Value;
     else
       return makeTargetOutOfRangeError(G, B, E);
@@ -494,7 +481,7 @@ inline Error applyFixup(LinkGraph &G, Block &B, const Edge &E,
 
   case NegDelta32: {
     int64_t Value = FixupAddress - E.getTarget().getAddress() + E.getAddend();
-    if (LLVM_LIKELY(isInRangeForImmS32(Value)))
+    if (LLVM_LIKELY(isInt<32>(Value)))
       *(little32_t *)FixupPtr = Value;
     else
       return makeTargetOutOfRangeError(G, B, E);

diff  --git a/llvm/lib/ExecutionEngine/JITLink/i386.cpp b/llvm/lib/ExecutionEngine/JITLink/i386.cpp
index 5561a5fd10495a..e984bb10983d08 100644
--- a/llvm/lib/ExecutionEngine/JITLink/i386.cpp
+++ b/llvm/lib/ExecutionEngine/JITLink/i386.cpp
@@ -73,7 +73,7 @@ Error optimizeGOTAndStubAccesses(LinkGraph &G) {
         orc::ExecutorAddr TargetAddr = GOTTarget.getAddress();
 
         int64_t Displacement = TargetAddr - EdgeAddr + 4;
-        if (isInRangeForImmS32(Displacement)) {
+        if (isInt<32>(Displacement)) {
           E.setKind(i386::BranchPCRel32);
           E.setTarget(GOTTarget);
           LLVM_DEBUG({

diff  --git a/llvm/lib/ExecutionEngine/JITLink/x86_64.cpp b/llvm/lib/ExecutionEngine/JITLink/x86_64.cpp
index 9c7642da3bf095..273ac7b372a7ff 100644
--- a/llvm/lib/ExecutionEngine/JITLink/x86_64.cpp
+++ b/llvm/lib/ExecutionEngine/JITLink/x86_64.cpp
@@ -104,8 +104,8 @@ Error optimizeGOTAndStubAccesses(LinkGraph &G) {
         orc::ExecutorAddr TargetAddr = GOTTarget.getAddress();
         orc::ExecutorAddr EdgeAddr = B->getFixupAddress(E);
         int64_t Displacement = TargetAddr - EdgeAddr + 4;
-        bool TargetInRangeForImmU32 = isInRangeForImmU32(TargetAddr.getValue());
-        bool DisplacementInRangeForImmS32 = isInRangeForImmS32(Displacement);
+        bool TargetInRangeForImmU32 = isUInt<32>(TargetAddr.getValue());
+        bool DisplacementInRangeForImmS32 = isInt<32>(Displacement);
 
         // If both of the Target and displacement is out of range, then
         // there isn't optimization chance.
@@ -175,7 +175,7 @@ Error optimizeGOTAndStubAccesses(LinkGraph &G) {
         orc::ExecutorAddr TargetAddr = GOTTarget.getAddress();
 
         int64_t Displacement = TargetAddr - EdgeAddr + 4;
-        if (isInRangeForImmS32(Displacement)) {
+        if (isInt<32>(Displacement)) {
           E.setKind(x86_64::BranchPCRel32);
           E.setTarget(GOTTarget);
           LLVM_DEBUG({


        


More information about the llvm-commits mailing list