diff options
| author | orivej <[email protected]> | 2022-02-10 16:45:01 +0300 | 
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:45:01 +0300 | 
| commit | 2d37894b1b037cf24231090eda8589bbb44fb6fc (patch) | |
| tree | be835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/libs/llvm12/include/llvm/CodeGen/MachineBranchProbabilityInfo.h | |
| parent | 718c552901d703c502ccbefdfc3c9028d608b947 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/llvm12/include/llvm/CodeGen/MachineBranchProbabilityInfo.h')
| -rw-r--r-- | contrib/libs/llvm12/include/llvm/CodeGen/MachineBranchProbabilityInfo.h | 168 | 
1 files changed, 84 insertions, 84 deletions
diff --git a/contrib/libs/llvm12/include/llvm/CodeGen/MachineBranchProbabilityInfo.h b/contrib/libs/llvm12/include/llvm/CodeGen/MachineBranchProbabilityInfo.h index 612ea88e6ed..2bf7b31a9e1 100644 --- a/contrib/libs/llvm12/include/llvm/CodeGen/MachineBranchProbabilityInfo.h +++ b/contrib/libs/llvm12/include/llvm/CodeGen/MachineBranchProbabilityInfo.h @@ -1,84 +1,84 @@ -#pragma once  -  -#ifdef __GNUC__  -#pragma GCC diagnostic push  -#pragma GCC diagnostic ignored "-Wunused-parameter"  -#endif  -  -//=- MachineBranchProbabilityInfo.h - Branch Probability Analysis -*- C++ -*-=//  -//  -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.  -// See https://llvm.org/LICENSE.txt for license information.  -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception  -//  -//===----------------------------------------------------------------------===//  -//  -// This pass is used to evaluate branch probabilties on machine basic blocks.  -//  -//===----------------------------------------------------------------------===//  -  -#ifndef LLVM_CODEGEN_MACHINEBRANCHPROBABILITYINFO_H  -#define LLVM_CODEGEN_MACHINEBRANCHPROBABILITYINFO_H  -  -#include "llvm/CodeGen/MachineBasicBlock.h"  -#include "llvm/Pass.h"  -#include "llvm/Support/BranchProbability.h"  -#include <climits>  -#include <numeric>  -  -namespace llvm {  -  -class MachineBranchProbabilityInfo : public ImmutablePass {  -  virtual void anchor();  -  -  // Default weight value. Used when we don't have information about the edge.  -  // TODO: DEFAULT_WEIGHT makes sense during static predication, when none of  -  // the successors have a weight yet. But it doesn't make sense when providing  -  // weight to an edge that may have siblings with non-zero weights. This can  -  // be handled various ways, but it's probably fine for an edge with unknown  -  // weight to just "inherit" the non-zero weight of an adjacent successor.  -  static const uint32_t DEFAULT_WEIGHT = 16;  -  -public:  -  static char ID;  -  -  MachineBranchProbabilityInfo();  -  -  void getAnalysisUsage(AnalysisUsage &AU) const override {  -    AU.setPreservesAll();  -  }  -  -  // Return edge probability.  -  BranchProbability getEdgeProbability(const MachineBasicBlock *Src,  -                                       const MachineBasicBlock *Dst) const;  -  -  // Same as above, but using a const_succ_iterator from Src. This is faster  -  // when the iterator is already available.  -  BranchProbability  -  getEdgeProbability(const MachineBasicBlock *Src,  -                     MachineBasicBlock::const_succ_iterator Dst) const;  -  -  // A 'Hot' edge is an edge which probability is >= 80%.  -  bool isEdgeHot(const MachineBasicBlock *Src,  -                 const MachineBasicBlock *Dst) const;  -  -  // Return a hot successor for the block BB or null if there isn't one.  -  // NB: This routine's complexity is linear on the number of successors.  -  MachineBasicBlock *getHotSucc(MachineBasicBlock *MBB) const;  -  -  // Print value between 0 (0% probability) and 1 (100% probability),  -  // however the value is never equal to 0, and can be 1 only iff SRC block  -  // has only one successor.  -  raw_ostream &printEdgeProbability(raw_ostream &OS,  -                                    const MachineBasicBlock *Src,  -                                    const MachineBasicBlock *Dst) const;  -};  -  -}  -  -  -#endif  -  -#ifdef __GNUC__  -#pragma GCC diagnostic pop  -#endif  +#pragma once + +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-parameter" +#endif + +//=- MachineBranchProbabilityInfo.h - Branch Probability Analysis -*- C++ -*-=// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This pass is used to evaluate branch probabilties on machine basic blocks. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CODEGEN_MACHINEBRANCHPROBABILITYINFO_H +#define LLVM_CODEGEN_MACHINEBRANCHPROBABILITYINFO_H + +#include "llvm/CodeGen/MachineBasicBlock.h" +#include "llvm/Pass.h" +#include "llvm/Support/BranchProbability.h" +#include <climits> +#include <numeric> + +namespace llvm { + +class MachineBranchProbabilityInfo : public ImmutablePass { +  virtual void anchor(); + +  // Default weight value. Used when we don't have information about the edge. +  // TODO: DEFAULT_WEIGHT makes sense during static predication, when none of +  // the successors have a weight yet. But it doesn't make sense when providing +  // weight to an edge that may have siblings with non-zero weights. This can +  // be handled various ways, but it's probably fine for an edge with unknown +  // weight to just "inherit" the non-zero weight of an adjacent successor. +  static const uint32_t DEFAULT_WEIGHT = 16; + +public: +  static char ID; + +  MachineBranchProbabilityInfo(); + +  void getAnalysisUsage(AnalysisUsage &AU) const override { +    AU.setPreservesAll(); +  } + +  // Return edge probability. +  BranchProbability getEdgeProbability(const MachineBasicBlock *Src, +                                       const MachineBasicBlock *Dst) const; + +  // Same as above, but using a const_succ_iterator from Src. This is faster +  // when the iterator is already available. +  BranchProbability +  getEdgeProbability(const MachineBasicBlock *Src, +                     MachineBasicBlock::const_succ_iterator Dst) const; + +  // A 'Hot' edge is an edge which probability is >= 80%. +  bool isEdgeHot(const MachineBasicBlock *Src, +                 const MachineBasicBlock *Dst) const; + +  // Return a hot successor for the block BB or null if there isn't one. +  // NB: This routine's complexity is linear on the number of successors. +  MachineBasicBlock *getHotSucc(MachineBasicBlock *MBB) const; + +  // Print value between 0 (0% probability) and 1 (100% probability), +  // however the value is never equal to 0, and can be 1 only iff SRC block +  // has only one successor. +  raw_ostream &printEdgeProbability(raw_ostream &OS, +                                    const MachineBasicBlock *Src, +                                    const MachineBasicBlock *Dst) const; +}; + +} + + +#endif + +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif  | 
