Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
IntrinsicInst.cpp File Reference
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/IR/Statepoint.h"
#include <optional>
#include "llvm/IR/VPIntrinsics.def"

Go to the source code of this file.

Macros

#define BEGIN_REGISTER_VP_INTRINSIC(VPID, MASKPOS, VLENPOS)
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, MASKPOS, VLENPOS)
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, MASKPOS, VLENPOS)
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...)
#define VP_PROPERTY_FUNCTIONAL_OPC(OPC)
#define END_REGISTER_VP_INTRINSIC(VPID)
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...)
#define VP_PROPERTY_FUNCTIONAL_INTRINSIC(INTRIN)
#define END_REGISTER_VP_INTRINSIC(VPID)
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...)
#define VP_PROPERTY_NO_FUNCTIONAL   return true;
#define END_REGISTER_VP_INTRINSIC(VPID)
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...)
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...)
#define VP_PROPERTY_CONSTRAINEDFP(CID)
#define END_REGISTER_VP_INTRINSIC(VPID)
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...)
#define VP_PROPERTY_FUNCTIONAL_OPC(OPC)
#define END_REGISTER_VP_INTRINSIC(VPID)
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...)
#define VP_PROPERTY_FUNCTIONAL_INTRINSIC(INTRIN)
#define END_REGISTER_VP_INTRINSIC(VPID)
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...)
#define VP_PROPERTY_BINARYOP   return true;
#define END_REGISTER_VP_INTRINSIC(VPID)

Functions

static ValueAsMetadatagetAsMetadata (Value *V)
static FCmpInst::Predicate getFPPredicateFromMD (const Value *Op)
constexpr bool isVPIntrinsic (Intrinsic::ID ID)
static constexpr std::optional< unsignedgetFunctionalOpcodeForVP (Intrinsic::ID ID)
static constexpr std::optional< Intrinsic::IDgetFunctionalIntrinsicIDForVP (Intrinsic::ID ID)
static constexpr bool doesVPHaveNoFunctionalEquivalent (Intrinsic::ID ID)
static constexpr Intrinsic::ID getForIntrinsic (Intrinsic::ID Id)
static ICmpInst::Predicate getIntPredicateFromMD (const Value *Op)

Macro Definition Documentation

◆ BEGIN_REGISTER_VP_INTRINSIC [1/11]

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
MASKPOS,
VLENPOS )
Value:
case Intrinsic::VPID: \
return MASKPOS;

Definition at line 545 of file IntrinsicInst.cpp.

◆ BEGIN_REGISTER_VP_INTRINSIC [2/11]

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
MASKPOS,
VLENPOS )
Value:
case Intrinsic::VPID: \
return VLENPOS;

Definition at line 545 of file IntrinsicInst.cpp.

◆ BEGIN_REGISTER_VP_INTRINSIC [3/11]

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
MASKPOS,
VLENPOS )
Value:
case Intrinsic::VPID: \
return true;

Definition at line 545 of file IntrinsicInst.cpp.

◆ BEGIN_REGISTER_VP_INTRINSIC [4/11]

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
... )
Value:
case Intrinsic::VPID:

Definition at line 545 of file IntrinsicInst.cpp.

◆ BEGIN_REGISTER_VP_INTRINSIC [5/11]

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
... )
Value:
case Intrinsic::VPID:

Definition at line 545 of file IntrinsicInst.cpp.

◆ BEGIN_REGISTER_VP_INTRINSIC [6/11]

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
... )
Value:
case Intrinsic::VPID:

Definition at line 545 of file IntrinsicInst.cpp.

◆ BEGIN_REGISTER_VP_INTRINSIC [7/11]

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
... )
Value:
static_assert(doesVPHaveNoFunctionalEquivalent(Intrinsic::VPID) || \
getFunctionalOpcodeForVP(Intrinsic::VPID) || \
getFunctionalIntrinsicIDForVP(Intrinsic::VPID));
static constexpr bool doesVPHaveNoFunctionalEquivalent(Intrinsic::ID ID)

Definition at line 545 of file IntrinsicInst.cpp.

◆ BEGIN_REGISTER_VP_INTRINSIC [8/11]

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
... )
Value:
case Intrinsic::VPID:

Definition at line 545 of file IntrinsicInst.cpp.

◆ BEGIN_REGISTER_VP_INTRINSIC [9/11]

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
... )
Value:
break;

Definition at line 545 of file IntrinsicInst.cpp.

◆ BEGIN_REGISTER_VP_INTRINSIC [10/11]

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
... )
Value:
break;

Definition at line 545 of file IntrinsicInst.cpp.

◆ BEGIN_REGISTER_VP_INTRINSIC [11/11]

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
... )
Value:
case Intrinsic::VPID:

Definition at line 545 of file IntrinsicInst.cpp.

◆ END_REGISTER_VP_INTRINSIC [1/7]

#define END_REGISTER_VP_INTRINSIC ( VPID)
Value:
break;

◆ END_REGISTER_VP_INTRINSIC [2/7]

#define END_REGISTER_VP_INTRINSIC ( VPID)
Value:
break;

◆ END_REGISTER_VP_INTRINSIC [3/7]

#define END_REGISTER_VP_INTRINSIC ( VPID)
Value:
break;

◆ END_REGISTER_VP_INTRINSIC [4/7]

#define END_REGISTER_VP_INTRINSIC ( VPID)
Value:
break;

◆ END_REGISTER_VP_INTRINSIC [5/7]

#define END_REGISTER_VP_INTRINSIC ( VPID)
Value:
return Intrinsic::VPID;

◆ END_REGISTER_VP_INTRINSIC [6/7]

#define END_REGISTER_VP_INTRINSIC ( VPID)
Value:
return Intrinsic::VPID;

◆ END_REGISTER_VP_INTRINSIC [7/7]

#define END_REGISTER_VP_INTRINSIC ( VPID)
Value:
break;

◆ VP_PROPERTY_BINARYOP

#define VP_PROPERTY_BINARYOP   return true;

◆ VP_PROPERTY_CONSTRAINEDFP

#define VP_PROPERTY_CONSTRAINEDFP ( CID)
Value:
return Intrinsic::CID;

◆ VP_PROPERTY_FUNCTIONAL_INTRINSIC [1/2]

#define VP_PROPERTY_FUNCTIONAL_INTRINSIC ( INTRIN)
Value:
return Intrinsic::INTRIN;

◆ VP_PROPERTY_FUNCTIONAL_INTRINSIC [2/2]

#define VP_PROPERTY_FUNCTIONAL_INTRINSIC ( INTRIN)
Value:
case Intrinsic::INTRIN:

◆ VP_PROPERTY_FUNCTIONAL_OPC [1/2]

#define VP_PROPERTY_FUNCTIONAL_OPC ( OPC)
Value:
return Instruction::OPC;

◆ VP_PROPERTY_FUNCTIONAL_OPC [2/2]

#define VP_PROPERTY_FUNCTIONAL_OPC ( OPC)
Value:
case Instruction::OPC:

◆ VP_PROPERTY_NO_FUNCTIONAL

#define VP_PROPERTY_NO_FUNCTIONAL   return true;

Function Documentation

◆ doesVPHaveNoFunctionalEquivalent()

constexpr bool doesVPHaveNoFunctionalEquivalent ( Intrinsic::ID ID)
staticconstexpr

Definition at line 531 of file IntrinsicInst.cpp.

◆ getAsMetadata()

ValueAsMetadata * getAsMetadata ( Value * V)
static

◆ getForIntrinsic()

constexpr Intrinsic::ID getForIntrinsic ( Intrinsic::ID Id)
staticconstexpr

Definition at line 578 of file IntrinsicInst.cpp.

References isVPIntrinsic(), and llvm::Intrinsic::not_intrinsic.

◆ getFPPredicateFromMD()

◆ getFunctionalIntrinsicIDForVP()

constexpr std::optional< Intrinsic::ID > getFunctionalIntrinsicIDForVP ( Intrinsic::ID ID)
staticconstexpr

Definition at line 514 of file IntrinsicInst.cpp.

◆ getFunctionalOpcodeForVP()

constexpr std::optional< unsigned > getFunctionalOpcodeForVP ( Intrinsic::ID ID)
staticconstexpr

Definition at line 495 of file IntrinsicInst.cpp.

◆ getIntPredicateFromMD()

◆ isVPIntrinsic()

bool isVPIntrinsic ( Intrinsic::ID ID)
constexpr

Definition at line 477 of file IntrinsicInst.cpp.

Referenced by getForIntrinsic().