diff options
Diffstat (limited to 'include/llvm/Transforms/Utils/CmpInstAnalysis.h')
| -rw-r--r-- | include/llvm/Transforms/Utils/CmpInstAnalysis.h | 70 | 
1 files changed, 0 insertions, 70 deletions
diff --git a/include/llvm/Transforms/Utils/CmpInstAnalysis.h b/include/llvm/Transforms/Utils/CmpInstAnalysis.h deleted file mode 100644 index 5ec3888d4538..000000000000 --- a/include/llvm/Transforms/Utils/CmpInstAnalysis.h +++ /dev/null @@ -1,70 +0,0 @@ -//===-- CmpInstAnalysis.h - Utils to help fold compare insts ----*- C++ -*-===// -// -//                     The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file holds routines to help analyse compare instructions -// and fold them into constants or other compare instructions -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_TRANSFORMS_UTILS_CMPINSTANALYSIS_H -#define LLVM_TRANSFORMS_UTILS_CMPINSTANALYSIS_H - -#include "llvm/IR/InstrTypes.h" - -namespace llvm { -  class ICmpInst; -  class Value; - -  /// Encode a icmp predicate into a three bit mask. These bits are carefully -  /// arranged to allow folding of expressions such as: -  /// -  ///      (A < B) | (A > B) --> (A != B) -  /// -  /// Note that this is only valid if the first and second predicates have the -  /// same sign. It is illegal to do: (A u< B) | (A s> B) -  /// -  /// Three bits are used to represent the condition, as follows: -  ///   0  A > B -  ///   1  A == B -  ///   2  A < B -  /// -  /// <=>  Value  Definition -  /// 000     0   Always false -  /// 001     1   A >  B -  /// 010     2   A == B -  /// 011     3   A >= B -  /// 100     4   A <  B -  /// 101     5   A != B -  /// 110     6   A <= B -  /// 111     7   Always true -  /// -  unsigned getICmpCode(const ICmpInst *ICI, bool InvertPred = false); - -  /// This is the complement of getICmpCode, which turns an opcode and two -  /// operands into either a constant true or false, or the predicate for a new -  /// ICmp instruction. The sign is passed in to determine which kind of -  /// predicate to use in the new icmp instruction. -  /// Non-NULL return value will be a true or false constant. -  /// NULL return means a new ICmp is needed. The predicate for which is output -  /// in NewICmpPred. -  Value *getICmpValue(bool Sign, unsigned Code, Value *LHS, Value *RHS, -                      CmpInst::Predicate &NewICmpPred); - -  /// Return true if both predicates match sign or if at least one of them is an -  /// equality comparison (which is signless). -  bool PredicatesFoldable(CmpInst::Predicate p1, CmpInst::Predicate p2); - -  /// Decompose an icmp into the form ((X & Y) pred Z) if possible. The returned -  /// predicate is either == or !=. Returns false if decomposition fails. -  bool decomposeBitTestICmp(const ICmpInst *I, CmpInst::Predicate &Pred, -                            Value *&X, Value *&Y, Value *&Z); - -} // end namespace llvm - -#endif  | 
