class CSEMIRBuilder
Declaration
class CSEMIRBuilder : public MachineIRBuilder { /* full declaration omitted */ };
Description
Defines a builder that does CSE of MachineInstructions using GISelCSEInfo. Eg usage. GISelCSEInfo *Info = &getAnalysis <GISelCSEAnalysisWrapperPass >().getCSEInfo(); CSEMIRBuilder CB(Builder.getState()); CB.setCSEInfo(Info); auto A = CB.buildConstant(s32, 42); auto B = CB.buildConstant(s32, 42); assert(A == B); unsigned CReg = MRI.createGenericVirtualRegister(s32); auto C = CB.buildConstant(CReg, 42); assert(C->getOpcode() == TargetOpcode::COPY); Explicitly passing in a register would materialize a copy if possible. CSEMIRBuilder also does trivial constant folding for binary ops.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CSEMIRBuilder.h:32
Inherits from: MachineIRBuilder
Method Overview
- public llvm::MachineInstrBuilder buildConstant(const llvm::DstOp & Res, const llvm::ConstantInt & Val)
- public llvm::MachineInstrBuilder buildFConstant(const llvm::DstOp & Res, const llvm::ConstantFP & Val)
- public llvm::MachineInstrBuilder buildInstr(unsigned int Opc, ArrayRef<llvm::DstOp> DstOps, ArrayRef<llvm::SrcOp> SrcOps, Optional<unsigned int> Flag = None)
Inherited from MachineIRBuilder:
- public buildAShr
- public buildAdd
- public buildAddrSpaceCast
- public buildAnd
- public buildAnyExt
- public buildAnyExtOrTrunc
- public buildAtomicCmpXchg
- public buildAtomicCmpXchgWithSuccess
- public buildAtomicRMW
- public buildAtomicRMWAdd
- public buildAtomicRMWAnd
- public buildAtomicRMWFAdd
- public buildAtomicRMWFSub
- public buildAtomicRMWMax
- public buildAtomicRMWMin
- public buildAtomicRMWNand
- public buildAtomicRMWOr
- public buildAtomicRMWSub
- public buildAtomicRMWUmax
- public buildAtomicRMWUmin
- public buildAtomicRMWXchg
- public buildAtomicRMWXor
- public buildBitcast
- public buildBlockAddress
- public buildBoolExt
- public buildBr
- public buildBrCond
- public buildBrIndirect
- public buildBrJT
- public buildBuildVector
- public buildBuildVectorTrunc
- public buildCTLZ
- public buildCTLZ_ZERO_UNDEF
- public buildCTPOP
- public buildCTTZ
- public buildCTTZ_ZERO_UNDEF
- public buildCast
- public buildConcatVectors
- public buildConstDbgValue
- public buildConstant
- public buildConstant
- public buildConstant
- public buildCopy
- public buildDbgLabel
- public buildDirectDbgValue
- public buildDynStackAlloc
- public buildExtOrTrunc
- public buildExtract
- public buildExtractVectorElement
- public buildFAbs
- public buildFAdd
- public buildFCanonicalize
- public buildFCmp
- public buildFConstant
- public buildFConstant
- public buildFConstant
- public buildFCopysign
- public buildFIDbgValue
- public buildFMA
- public buildFMAD
- public buildFMul
- public buildFNeg
- public buildFPExt
- public buildFPTOSI
- public buildFPTOUI
- public buildFPTrunc
- public buildFSub
- public buildFence
- public buildFrameIndex
- public buildGlobalValue
- public buildICmp
- public buildIndirectDbgValue
- public buildInsert
- public buildInsertVectorElement
- public buildInstr
- public buildInstr
- public buildInstrNoInsert
- public buildIntToPtr
- public buildIntrinsic
- public buildIntrinsic
- public buildIntrinsicTrunc
- public buildJumpTable
- public buildLShr
- public buildLoad
- public buildLoadInstr
- public buildMerge
- public buildMul
- public buildNot
- public buildOr
- public buildPtrAdd
- public buildPtrMask
- public buildPtrToInt
- public buildSExt
- public buildSExtOrTrunc
- public buildSITOFP
- public buildSMax
- public buildSMin
- public buildSMulH
- public buildSelect
- public buildSequence
- public buildShl
- public buildSplatVector
- public buildStore
- public buildSub
- public buildTrunc
- public buildUAdde
- public buildUAddo
- public buildUITOFP
- public buildUMax
- public buildUMin
- public buildUMulH
- public buildUndef
- public buildUnmerge
- public buildUnmerge
- public buildUnmerge
- public buildXor
- public buildZExt
- public buildZExtOrTrunc
- public getBoolExtOp
- public getCSEInfo
- public getCSEInfo
- public getDL
- public getDataLayout
- public getDebugLoc
- public getInsertPt
- public getMBB
- public getMBB
- public getMF
- public getMF
- public getMRI
- public getMRI
- public getState
- public getTII
- public insertInstr
- public materializePtrAdd
- protected recordInsertion
- public setCSEInfo
- public setChangeObserver
- public setDebugLoc
- public setInsertPt
- public setInstr
- public setMBB
- public setMF
- public stopObservingChanges
- protected validateBinaryOp
- protected validateSelectOp
- protected validateShiftOp
- protected validateTruncExt
Methods
¶llvm::MachineInstrBuilder buildConstant(
const llvm::DstOp& Res,
const llvm::ConstantInt& Val)
llvm::MachineInstrBuilder buildConstant(
const llvm::DstOp& Res,
const llvm::ConstantInt& Val)
Description
Build and insert \p Res = G_CONSTANT \p Val G_CONSTANT is an integer constant with the specified size and value. \p Val will be extended or truncated to the size of \p Reg.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CSEMIRBuilder.h:100
Parameters
- const llvm::DstOp& Res
- const llvm::ConstantInt& Val
Returns
The newly created instruction.
¶llvm::MachineInstrBuilder buildFConstant(
const llvm::DstOp& Res,
const llvm::ConstantFP& Val)
llvm::MachineInstrBuilder buildFConstant(
const llvm::DstOp& Res,
const llvm::ConstantFP& Val)
Description
Build and insert \p Res = G_FCONSTANT \p Val G_FCONSTANT is a floating-point constant with the specified size and value.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CSEMIRBuilder.h:105
Parameters
- const llvm::DstOp& Res
- const llvm::ConstantFP& Val
Returns
The newly created instruction.
¶llvm::MachineInstrBuilder buildInstr(
unsigned int Opc,
ArrayRef<llvm::DstOp> DstOps,
ArrayRef<llvm::SrcOp> SrcOps,
Optional<unsigned int> Flag = None)
llvm::MachineInstrBuilder buildInstr(
unsigned int Opc,
ArrayRef<llvm::DstOp> DstOps,
ArrayRef<llvm::SrcOp> SrcOps,
Optional<unsigned int> Flag = None)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CSEMIRBuilder.h:94