LLVM 17.0.0git
Macros | Functions
AMDGPUInstCombineIntrinsic.cpp File Reference
#include "AMDGPUInstrInfo.h"
#include "AMDGPUTargetTransformInfo.h"
#include "GCNSubtarget.h"
#include "llvm/ADT/FloatingPointMode.h"
#include "llvm/IR/IntrinsicsAMDGPU.h"
#include "llvm/Transforms/InstCombine/InstCombiner.h"
#include <optional>
#include "InstCombineTables.inc"

Go to the source code of this file.


#define DEBUG_TYPE   "AMDGPUtti"
#define GET_AMDGPUImageDMaskIntrinsicTable_IMPL


static APFloat fmed3AMDGCN (const APFloat &Src0, const APFloat &Src1, const APFloat &Src2)
static bool canSafelyConvertTo16Bit (Value &V, bool IsFloat)
static ValueconvertTo16Bit (Value &V, InstCombiner::BuilderTy &Builder)
static std::optional< Instruction * > modifyIntrinsicCall (IntrinsicInst &OldIntr, Instruction &InstToReplace, unsigned NewIntr, InstCombiner &IC, std::function< void(SmallVectorImpl< Value * > &, SmallVectorImpl< Type * > &)> Func)
 Applies Func(OldIntr.Args, OldIntr.ArgTys), creates intrinsic call with modified arguments (based on OldIntr) and replaces InstToReplace with this newly created intrinsic call.
static std::optional< Instruction * > simplifyAMDGCNImageIntrinsic (const GCNSubtarget *ST, const AMDGPU::ImageDimIntrinsicInfo *ImageDimIntr, IntrinsicInst &II, InstCombiner &IC)
static bool matchFPExtFromF16 (Value *Arg, Value *&FPExtSrc)
 Match an fpext from half to float, or a constant we can convert.
static ValuesimplifyAMDGCNMemoryIntrinsicDemanded (InstCombiner &IC, IntrinsicInst &II, APInt DemandedElts, int DMaskIdx=-1)
 Implement SimplifyDemandedVectorElts for amdgcn buffer and image intrinsics.

Macro Definition Documentation


#define DEBUG_TYPE   "AMDGPUtti"

Definition at line 28 of file AMDGPUInstCombineIntrinsic.cpp.

◆ GET_AMDGPUImageDMaskIntrinsicTable_IMPL

#define GET_AMDGPUImageDMaskIntrinsicTable_IMPL

Definition at line 36 of file AMDGPUInstCombineIntrinsic.cpp.

Function Documentation

◆ canSafelyConvertTo16Bit()

static bool canSafelyConvertTo16Bit ( Value V,
bool  IsFloat 

◆ convertTo16Bit()

static Value * convertTo16Bit ( Value V,
InstCombiner::BuilderTy Builder 

◆ fmed3AMDGCN()

static APFloat fmed3AMDGCN ( const APFloat Src0,
const APFloat Src1,
const APFloat Src2 

◆ matchFPExtFromF16()

static bool matchFPExtFromF16 ( Value Arg,
Value *&  FPExtSrc 

◆ modifyIntrinsicCall()

static std::optional< Instruction * > modifyIntrinsicCall ( IntrinsicInst OldIntr,
Instruction InstToReplace,
unsigned  NewIntr,
InstCombiner IC,
std::function< void(SmallVectorImpl< Value * > &, SmallVectorImpl< Type * > &)>  Func 

◆ simplifyAMDGCNImageIntrinsic()

static std::optional< Instruction * > simplifyAMDGCNImageIntrinsic ( const GCNSubtarget ST,
const AMDGPU::ImageDimIntrinsicInfo ImageDimIntr,
IntrinsicInst II,
InstCombiner IC 

◆ simplifyAMDGCNMemoryIntrinsicDemanded()

static Value * simplifyAMDGCNMemoryIntrinsicDemanded ( InstCombiner IC,
IntrinsicInst II,
APInt  DemandedElts,
int  DMaskIdx = -1