| /freebsd/contrib/llvm-project/llvm/lib/Transforms/Scalar/ | 
| H A D | LoopLoadElimination.cpp | 1 //===- LoopLoadElimination.cpp - Loop Load Elimination Pass ---------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 9 // This file implement a loop-aware load elimination pass.
 11 // It uses LoopAccessAnalysis to identify loop-carried dependences with a
 14 // of the corresponding load.  This makes the load dead.
 17 // may-aliasing stores can't change the value in memory before it's read by the
 18 // load.
 20 //===----------------------------------------------------------------------===//
 66 #define LLE_OPTION "loop-load-elim"
 [all …]
 
 | 
| H A D | GVN.cpp | 1 //===- GVN.cpp - Eliminate redundant values and loads ---------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 10 // instructions.  It also performs simple dead load elimination.
 15 //===----------------------------------------------------------------------===//
 105           "Number of times we we reached gvn-max-block-speculations cut-off "
 108 static cl::opt<bool> GVNEnablePRE("enable-pre", cl::init(true), cl::Hidden);
 109 static cl::opt<bool> GVNEnableLoadPRE("enable-load-pre", cl::init(true));
 110 static cl::opt<bool> GVNEnableLoadInLoopPRE("enable-load-in-loop-pre",
 113 GVNEnableSplitBackedgeInLoadPRE("enable-split-backedge-in-load-pre",
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Target/BPF/ | 
| H A D | BPFPreserveStaticOffset.cpp | 1 //===------ BPFPreserveStaticOffset.cpp -----------------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 9 // TLDR: replaces llvm.preserve.static.offset + GEP + load / store
 10 //           with llvm.bpf.getelementptr.and.load / store
 16 //     using load and store instructions with static immediate offsets.
 21 //     kernel. During BPF program load LDX and STX instructions
 42 //   %y = load %x
 48 // In order for cases (a) and (b) to work the sequence %x-%y above has
 51 // However, several optimization passes might sink `load` instruction
 [all …]
 
 | 
| H A D | BPFCheckAndAdjustIR.cpp | 1 //===------------ BPFCheckAndAdjustIR.cpp - Check and Adjust IR -----------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 11 //   - no relocation globals in PHI node.
 13 //   - remove __builtin_bpf_passthrough builtins. Target independent IR
 15 //   - remove llvm.bpf.getelementptr.and.load builtins.
 16 //   - remove llvm.bpf.getelementptr.and.store builtins.
 17 //   - for loads and stores with base addresses from non-zero address space
 20 //===----------------------------------------------------------------------===//
 39 #define DEBUG_TYPE "bpf-check-and-opt-ir"
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/InstCombine/ | 
| H A D | InstCombineLoadStoreAlloca.cpp | 1 //===- InstCombineLoadStoreAlloca.cpp -------------------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 9 // This file implements the visit functions for load, store and alloca.
 11 //===----------------------------------------------------------------------===//
 35     "instcombine-max-copied-from-constant-users", cl::init(300),
 41     "enable-infer-alignment-pass", cl::init(true), cl::Hidden, cl::ZeroOrMore,
 46 /// isOnlyCopiedFromConstantMemory - Recursively walk the uses of a (derived)
 72     const auto [Value, IsOffset] = Elem;  in isOnlyCopiedFromConstantMemory()  local
 73     for (auto &U : Value->uses()) {  in isOnlyCopiedFromConstantMemory()
 [all …]
 
 | 
| H A D | InstCombinePHI.cpp | 1 //===- InstCombinePHI.cpp -------------------------------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 11 //===----------------------------------------------------------------------===//
 31 MaxNumPhis("instcombine-max-num-phis", cl::init(512),
 35           "Number of phi-of-insertvalue turned into insertvalue-of-phis");
 37           "Number of phi-of-extractvalue turned into extractvalue-of-phi");
 44   auto *FirstInst = cast<Instruction>(PN.getIncomingValue(0));  in PHIArgMergedDebugLoc()
 45   Inst->setDebugLoc(FirstInst->getDebugLoc());  in PHIArgMergedDebugLoc()
 46   // We do not expect a CallInst here, otherwise, N-way merging of DebugLoc  in PHIArgMergedDebugLoc()
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/CodeGen/ | 
| H A D | InterleavedAccessPass.cpp | 1 //===- InterleavedAccessPass.cpp ------------------------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 13 // An interleaved load reads data from memory into several vectors, with
 14 // DE-interleaving the data on a factor. An interleaved store writes several
 15 // vectors to memory with RE-interleaving the data on a factor.
 23 // E.g. An interleaved load (Factor = 2):
 24 //        %wide.vec = load <8 x i32>, <8 x i32>* %ptr
 45 //===----------------------------------------------------------------------===//
 77 #define DEBUG_TYPE "interleaved-access"
 [all …]
 
 | 
| H A D | ExpandMemCmp.cpp | 1 //===--- ExpandMemCmp.cpp - Expand memcmp() to load/stores ----------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 9 // This pass tries to expand memcmp() calls into optimally-sized loads and
 12 //===----------------------------------------------------------------------===//
 42 #define DEBUG_TYPE "expand-memcmp"
 51     "memcmp-num-loads-per-block", cl::Hidden, cl::init(1),
 56     "max-loads-per-memcmp", cl::Hidden,
 60     "max-loads-per-memcmp-opt-size", cl::Hidden,
 61     cl::desc("Set maximum number of loads used in expanded memcmp for -Os/Oz"));
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/Vectorize/ | 
| H A D | VectorCombine.cpp | 1 //===------- VectorCombine.cpp - Optimize partial vector operations -------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 10 // transforms implemented here may not fit in traditional loop-based or SLP
 13 //===----------------------------------------------------------------------===//
 37 #define DEBUG_TYPE "vector-combine"
 52     "disable-vector-combine", cl::init(false), cl::Hidden,
 56     "disable-binop-extract-shuffle", cl::init(false), cl::Hidden,
 60     "vector-combine-max-scan-instrs", cl::init(30), cl::Hidden,
 91   // TODO: Direct calls from the top-level "run" loop use a plain "Instruction"
 [all …]
 
 | 
| H A D | VPlanSLP.cpp | 1 //===- VPlanSLP.cpp - SLP Analysis based on VPlan -------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 11 ///   Look-ahead SLP: auto-vectorization in the presence of commutative
 15 //===----------------------------------------------------------------------===//
 37 #define DEBUG_TYPE "vplan-slp"
 39 // Number of levels to look ahead when re-ordering multi node operands.
 51         return cast<VPInstruction>(V)->getUnderlyingInstr();  in addCombined()
 55       Type *T = cast<VPInstruction>(V)->getUnderlyingInstr()->getType();  in addCombined()
 56       assert(!T->isVectorTy() && "Only scalar types supported for now");  in addCombined()
 [all …]
 
 | 
| H A D | LoadStoreVectorizer.cpp | 1 //===- LoadStoreVectorizer.cpp - GPU Load & Store Vectorizer --------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 10 // loads/stores.  Although there's nothing GPU-specific in here, this pass is
 18 // that immediately following our new vector load we'll need to extract out the
 19 // individual elements of the load, so we can operate on them individually.
 23 // usually better just to load each element individually into its own scalar
 27 // "vector load" loads directly into a series of scalar registers.  In effect,
 36 // Some CPU architectures, such as ARM, have instructions that load into
 37 // multiple scalar registers, similar to a GPU vectorized load.  In theory ARM
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Target/AMDGPU/ | 
| H A D | AMDGPULowerKernelAttributes.cpp | 1 //===-- AMDGPULowerKernelAttributes.cpp ------------------------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 11 /// get_local_size-like functions.
 13 //===----------------------------------------------------------------------===//
 29 #define DEBUG_TYPE "amdgpu-lower-kernel-attributes"
 79   auto IntrinsicId = IsV5OrAbove ? Intrinsic::amdgcn_implicitarg_ptr  in getBasePtrIntrinsic()
 88   Function *F = CI->getParent()->getParent();  in processUse()
 90   auto MD = F->getMetadata("reqd_work_group_size");  in processUse()
 91   const bool HasReqdWorkGroupSize = MD && MD->getNumOperands() == 3;  in processUse()
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Target/ARM/ | 
| H A D | ARMParallelDSP.cpp | 1 //===- ARMParallelDSP.cpp - Parallel DSP Pass -----------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 10 /// Armv6 introduced instructions to perform 32-bit SIMD operations. The
 12 /// DSP intrinsics, which map on these 32-bit SIMD operations.
 15 //===----------------------------------------------------------------------===//
 42 #define DEBUG_TYPE "arm-parallel-dsp"
 47 DisableParallelDSP("disable-arm-parallel-dsp", cl::Hidden, cl::init(false),
 51 NumLoadLimit("arm-parallel-dsp-load-limit", cl::Hidden, cl::init(16),
 84   /// Represent a sequence of multiply-accumulate operations with the aim to
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Analysis/ | 
| H A D | Loads.cpp | 1 //===- Loads.cpp - Local load analysis ------------------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 9 // This file defines simple local analyses for load instructions.
 11 //===----------------------------------------------------------------------===//
 31   Align BA = Base->getPointerAlignment(DL);  in isAligned()
 36 /// a simple load or store.
 42   assert(V->getType()->isPointerTy() && "Base must be pointer");  in isDereferenceableAndAlignedPointer()
 45   if (MaxDepth-- == 0)  in isDereferenceableAndAlignedPointer()
 57     const Value *Base = GEP->getPointerOperand();  in isDereferenceableAndAlignedPointer()
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Target/NVPTX/ | 
| H A D | NVPTXLowerArgs.cpp | 1 //===-- NVPTXLowerArgs.cpp - Lower arguments ------------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 12 // http://docs.nvidia.com/cuda/parallel-thread-execution/#state-spaces
 14 // Kernel parameters are read-only and accessible only via ld.param
 29 // 1. Convert non-byval pointer arguments of CUDA kernels to pointers in the
 35 //      %v = load float, float* %input, align 4
 44 //      %v = load float, float* %input3, align 4
 52 //      %v = load float, float addrspace(1)* %input2, align 4
 74 //      %b = load ptr, ptr %b_ptr
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/IPO/ | 
| H A D | ArgumentPromotion.cpp | 1 //===- ArgumentPromotion.cpp - Promote by-reference arguments -------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 29 //===----------------------------------------------------------------------===//
 91   /// A representative guaranteed-executed load or store instruction for use by
 103     APInt APOffset(DL.getIndexTypeSizeInBits(Ptr->getType()), Offset);  in createByteGEP()
 109 /// DoPromotion - This method actually performs the promotion of the specified
 118   FunctionType *FTy = F->getFunctionType();  in doPromotion()
 121   // Attribute - Keep track of the parameter attributes for the arguments  in doPromotion()
 125   // Mapping from old to new argument indices. -1 for promoted or removed  in doPromotion()
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Target/AArch64/ | 
| H A D | SVEIntrinsicOpts.cpp | 1 //===----- SVEIntrinsicOpts - SVE ACLE Intrinsics Opts --------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 13 // - removes unnecessary ptrue intrinsics (llvm.aarch64.sve.ptrue), e.g:
 18 // - optimizes ptest intrinsics where the operands are being needlessly
 21 //===----------------------------------------------------------------------===//
 43 #define DEBUG_TYPE "aarch64-sve-intrinsic-opts"
 64   /// Operates at the function-scope. I.e., optimizations are applied local to
 98   // Find all users of this intrinsic that are calls to convert-to-svbool  in isPTruePromoted()
 101   for (User *User : PTrue->users()) {  in isPTruePromoted()
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Target/AMDGPU/Utils/ | 
| H A D | AMDGPUMemoryUtils.cpp | 1 //===-- AMDGPUMemoryUtils.cpp - -------------------------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 24 #define DEBUG_TYPE "amdgpu-memory-utils"
 31   return DL.getValueOrABITypeAlignment(GV->getPointerAlignment(DL),  in getAlign()
 32                                        GV->getValueType());  in getAlign()
 38   const DataLayout &DL = M->getDataLayout();  in isDynamicLDS()
 39   if (GV.getType()->getPointerAddressSpace() != AMDGPUAS::LOCAL_ADDRESS)  in isDynamicLDS()
 45   if (GV.getType()->getPointerAddressSpace() != AMDGPUAS::LOCAL_ADDRESS) {  in isLDSVariableToLower()
 52     // A constant undef variable can't be written to, and any load is  in isLDSVariableToLower()
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Target/Hexagon/ | 
| H A D | HexagonVectorCombine.cpp | 1 //===-- HexagonVectorCombine.cpp ------------------------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 9 // that assist in vector-based optimizations.
 13 //===----------------------------------------------------------------------===//
 57 #define DEBUG_TYPE "hexagon-vc"
 62 cl::opt<bool> DumpModule("hvc-dump-module", cl::Hidden);
 63 cl::opt<bool> VAEnabled("hvc-va", cl::Hidden, cl::init(true)); // Align
 64 cl::opt<bool> VIEnabled("hvc-vi", cl::Hidden, cl::init(true)); // Idioms
 65 cl::opt<bool> VADoFullStores("hvc-va-full-stores", cl::Hidden);
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Object/ | 
| H A D | MachOObjectFile.cpp | 1 //===- MachOObjectFile.cpp - Mach-O object file binding -------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 12 //===----------------------------------------------------------------------===//
 87     return malformedError("Structure read out-of-range");  in getStructOrErr()
 194   if (auto CmdOrErr = getStructOrErr<MachO::load_command>(Obj, Ptr)) {  in getLoadCommandInfo()
 195     if (CmdOrErr->cmdsize + Ptr > Obj.getData().end())  in getLoadCommandInfo()
 196       return malformedError("load command " + Twine(LoadCommandIndex) +  in getLoadCommandInfo()
 198     if (CmdOrErr->cmdsize < 8)  in getLoadCommandInfo()
 199       return malformedError("load command " + Twine(LoadCommandIndex) +  in getLoadCommandInfo()
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/tools/llvm-rtdyld/ | 
| H A D | llvm-rtdyld.cpp | 1 //===-- llvm-rtdyld.cpp - MCJIT Testing Tool ------------------------------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 9 // This is a testing tool for use with the MC-JIT LLVM components.
 11 //===----------------------------------------------------------------------===//
 65                    "Load, link, and execute the inputs."),
 67                    "Load, link, and print line information for each function."),
 69                    "Load, link, and print line information for each function "
 72                    "Like -printlineinfo but does not load the object first"),
 74                    "Load, link and verify the resulting memory image.")),
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Target/X86/ | 
| H A D | X86LowerAMXType.cpp | 1 //===- Target/X86/X86LowerAMXType.cpp - -------------------------*- C++ -*-===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 9 /// \file Pass to transform <256 x i32> load/store
 14 /// load/store <256 x i32> instruction to AMX load/store. If the bitcast can
 15 /// not be combined with load/store, we transform the bitcast to amx load/store
 16 /// and <256 x i32> store/load.
 18 /// If Front End not use O0 but the Mid/Back end use O0, (e.g. "Clang -O2 -S
 19 /// -emit-llvm t.c" + "llc t.ll") we should make sure the amx data is volatile,
 25 /// ----------------------------------------------------------
 [all …]
 
 | 
| H A D | X86SpeculativeLoadHardening.cpp | 1 //====- X86SpeculativeLoadHardening.cpp - A Spectre v1 mitigation ---------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 12 /// or other condition) to reach a load with invalid inputs and leak the data
 13 /// accessed by that load using a side channel out of the speculative domain.
 17 /// https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html
 20 //===----------------------------------------------------------------------===//
 63 #define PASS_KEY "x86-slh"
 71           "Number of post-load register values hardened");
 78     "x86-speculative-load-hardening",
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/Utils/ | 
| H A D | PromoteMemoryToRegister.cpp | 1 //===- PromoteMemoryToRegister.cpp - Convert allocas to registers ---------===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 12 // traversing the function in depth-first order to rewrite loads and stores as
 15 //===----------------------------------------------------------------------===//
 66   // Only allow direct and non-volatile loads and stores...  in isAllocaPromotable()
 67   for (const User *U : AI->users()) {  in isAllocaPromotable()
 71       if (LI->isVolatile() || LI->getType() != AI->getAllocatedType())  in isAllocaPromotable()
 74       if (SI->getValueOperand() == AI ||  in isAllocaPromotable()
 75           SI->getValueOperand()->getType() != AI->getAllocatedType())  in isAllocaPromotable()
 [all …]
 
 | 
| /freebsd/contrib/llvm-project/llvm/lib/Target/SystemZ/ | 
| H A D | SystemZISelDAGToDAG.cpp | 1 //===-- SystemZISelDAGToDAG.cpp - A dag to dag inst selector for SystemZ --===//5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 7 //===----------------------------------------------------------------------===//
 11 //===----------------------------------------------------------------------===//
 23 #define DEBUG_TYPE "systemz-isel"
 24 #define PASS_NAME "SystemZ DAG->DAG Pattern Instruction Selection"
 34     // base+displacement+index for load and store operands
 37     // base+displacement+index for load address operands
 47   // flags -- single/pair, 128-bit, etc. -- but it hardly seems worth it.
 79       Base.getNode()->dump(DAG);  in dump()
 [all …]
 
 |