LLVM 20.0.0git
|
This file describes how to lower LLVM code to machine code. More...
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/CodeGen/DAGCombine.h"
#include "llvm/CodeGen/ISDOpcodes.h"
#include "llvm/CodeGen/LowLevelTypeUtils.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/RuntimeLibcallUtil.h"
#include "llvm/CodeGen/SelectionDAG.h"
#include "llvm/CodeGen/SelectionDAGNodes.h"
#include "llvm/CodeGen/TargetCallingConv.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/CodeGenTypes/MachineValueType.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/RuntimeLibcalls.h"
#include "llvm/IR/Type.h"
#include "llvm/Support/Alignment.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include <algorithm>
#include <cassert>
#include <climits>
#include <cstdint>
#include <iterator>
#include <map>
#include <string>
#include <utility>
#include <vector>
#include "llvm/IR/ConstrainedOps.def"
Go to the source code of this file.
Classes | |
struct | llvm::MemOp |
class | llvm::TargetLoweringBase |
This base class for TargetLowering contains the SelectionDAG-independent parts that can be used from the rest of CodeGen. More... | |
class | llvm::TargetLoweringBase::ArgListEntry |
struct | llvm::TargetLoweringBase::CondMergingParams |
class | llvm::TargetLoweringBase::ValueTypeActionImpl |
struct | llvm::TargetLoweringBase::IntrinsicInfo |
struct | llvm::TargetLoweringBase::AddrMode |
This represents an addressing mode of: BaseGV + BaseOffs + BaseReg + Scale*ScaleReg + ScalableOffset*vscale If BaseGV is null, there is no BaseGV. More... | |
class | llvm::TargetLowering |
This class defines information used to lower LLVM code to legal SelectionDAG operators that the target instruction selector can accept natively. More... | |
struct | llvm::TargetLowering::TargetLoweringOpt |
A convenience struct that encapsulates a DAG, and two SDValues for returning information from TargetLowering to its clients that want to combine. More... | |
struct | llvm::TargetLowering::DAGCombinerInfo |
struct | llvm::TargetLowering::PtrAuthInfo |
This structure contains the information necessary for lowering pointer-authenticating indirect calls. More... | |
struct | llvm::TargetLowering::CallLoweringInfo |
This structure contains all information that is necessary for lowering calls. More... | |
struct | llvm::TargetLowering::MakeLibCallOptions |
This structure is used to pass arguments to makeLibCall function. More... | |
struct | llvm::TargetLowering::AsmOperandInfo |
This contains information for each constraint that we are lowering. More... | |
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
namespace | llvm::Sched |
Macros | |
#define | DAG_INSTRUCTION(NAME, NARG, ROUND_MODE, INTRINSIC, DAGN) case ISD::STRICT_##DAGN: EqOpc = ISD::DAGN; break; |
#define | CMP_INSTRUCTION(NAME, NARG, ROUND_MODE, INTRINSIC, DAGN) case ISD::STRICT_##DAGN: EqOpc = ISD::SETCC; break; |
Enumerations | |
enum | llvm::Sched::Preference : uint8_t { llvm::Sched::None , llvm::Sched::Source , llvm::Sched::RegPressure , llvm::Sched::Hybrid , llvm::Sched::ILP , llvm::Sched::VLIW , llvm::Sched::Fast , llvm::Sched::Linearize , llvm::Sched::Last = Linearize } |
Functions | |
void | llvm::GetReturnInfo (CallingConv::ID CC, Type *ReturnType, AttributeList attr, SmallVectorImpl< ISD::OutputArg > &Outs, const TargetLowering &TLI, const DataLayout &DL) |
Given an LLVM IR type and return type attributes, compute the return value EVTs and flags, and optionally also the offsets, if the return value is being lowered to memory. | |
This file describes how to lower LLVM code to machine code.
This has two main components:
In addition it has a few other components, like information about FP immediates.
Definition in file TargetLowering.h.
#define CMP_INSTRUCTION | ( | NAME, | |
NARG, | |||
ROUND_MODE, | |||
INTRINSIC, | |||
DAGN | |||
) | case ISD::STRICT_##DAGN: EqOpc = ISD::SETCC; break; |
#define DAG_INSTRUCTION | ( | NAME, | |
NARG, | |||
ROUND_MODE, | |||
INTRINSIC, | |||
DAGN | |||
) | case ISD::STRICT_##DAGN: EqOpc = ISD::DAGN; break; |