LLVM 17.0.0git
|
#include "X86.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/IntrinsicsX86.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Transforms/Utils/AssumeBundleBuilder.h"
#include "llvm/Transforms/Utils/Local.h"
#include <map>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "lower-amx-type" |
Functions | |
static bool | isAMXCast (Instruction *II) |
static bool | isAMXIntrinsic (Value *I) |
static AllocaInst * | createAllocaInstAtEntry (IRBuilder<> &Builder, BasicBlock *BB, Type *Ty) |
static Instruction * | getFirstNonAllocaInTheEntryBlock (Function &F) |
static std::pair< Value *, Value * > | getShape (IntrinsicInst *II, unsigned OpNo) |
static std::pair< Value *, Value * > | getShape (PHINode *Phi) |
static Value * | getAllocaPos (BasicBlock *BB) |
static Instruction * | createTileStore (Instruction *TileDef, Value *Ptr) |
static void | replaceWithTileLoad (Use &U, Value *Ptr, bool IsPHI=false) |
static bool | isIncomingOfPHI (Instruction *I) |
INITIALIZE_PASS_BEGIN (X86LowerAMXTypeLegacyPass, DEBUG_TYPE, PassName, false, false) INITIALIZE_PASS_END(X86LowerAMXTypeLegacyPass | |
Variables | |
static const char | PassName [] = "Lower AMX type for load/store" |
DEBUG_TYPE | |
false | |
#define DEBUG_TYPE "lower-amx-type" |
Definition at line 69 of file X86LowerAMXType.cpp.
|
static |
Definition at line 95 of file X86LowerAMXType.cpp.
References Builder, DL, F, llvm::BasicBlock::getModule(), llvm::BasicBlock::getParent(), llvm::Type::getX86_AMXTy(), and llvm::AllocaInst::setAlignment().
|
static |
Definition at line 466 of file X86LowerAMXType.cpp.
References assert(), Builder, llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Instruction::getParent(), llvm::Value::getType(), llvm::Type::isX86_AMXTy(), and Ptr.
|
static |
Definition at line 450 of file X86LowerAMXType.cpp.
References Builder, DL, F, llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::BasicBlock::getModule(), and llvm::BasicBlock::getParent().
|
static |
Definition at line 110 of file X86LowerAMXType.cpp.
References F, I, and llvm_unreachable.
Referenced by getShape().
|
static |
Definition at line 117 of file X86LowerAMXType.cpp.
References Builder, llvm::IRBuilderBase::CreateUDiv(), llvm::CallBase::getArgOperand(), getFirstNonAllocaInTheEntryBlock(), llvm::Instruction::getFunction(), llvm::IRBuilderBase::getInt16(), llvm::IntrinsicInst::getIntrinsicID(), llvm::User::getOperand(), and llvm_unreachable.
Referenced by getShape().
Definition at line 186 of file X86LowerAMXType.cpp.
References getShape(), isAMXCast(), isAMXIntrinsic(), and llvm::Value::use_begin().
INITIALIZE_PASS_BEGIN | ( | X86LowerAMXTypeLegacyPass | , |
DEBUG_TYPE | , | ||
PassName | , | ||
false | , | ||
false | |||
) |
|
static |
Definition at line 71 of file X86LowerAMXType.cpp.
References llvm::PatternMatch::m_Value(), and llvm::PatternMatch::match().
Referenced by getShape(), and isAMXIntrinsic().
Definition at line 77 of file X86LowerAMXType.cpp.
References I, and isAMXCast().
Referenced by getShape().
|
static |
Definition at line 509 of file X86LowerAMXType.cpp.
References I.
Definition at line 484 of file X86LowerAMXType.cpp.
References assert(), Builder, llvm::User::getOperand(), Ptr, and llvm::User::replaceUsesOfWith().
DEBUG_TYPE |
Definition at line 1272 of file X86LowerAMXType.cpp.
false |
Definition at line 1272 of file X86LowerAMXType.cpp.
|
static |
Definition at line 1266 of file X86LowerAMXType.cpp.