[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