Add ShiftInst::isLogical/ArithmeticShift methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30445 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-09-17 19:29:56 +00:00
parent a5b07404f7
commit 2f463865c2
3 changed files with 28 additions and 7 deletions

View File

@ -207,16 +207,16 @@ public:
/// isNeg, isNot - Check if the given Value is a NEG or NOT instruction.
///
static bool isNeg(const Value *V);
static bool isNot(const Value *V);
static bool isNeg(const Value *V);
static bool isNot(const Value *V);
/// getNegArgument, getNotArgument - Helper functions to extract the
/// unary argument of a NEG or NOT operation implemented via Sub or Xor.
///
static const Value* getNegArgument(const Value *BinOp);
static Value* getNegArgument( Value *BinOp);
static const Value* getNotArgument(const Value *BinOp);
static Value* getNotArgument( Value *BinOp);
static const Value *getNegArgument(const Value *BinOp);
static Value *getNegArgument( Value *BinOp);
static const Value *getNotArgument(const Value *BinOp);
static Value *getNotArgument( Value *BinOp);
BinaryOps getOpcode() const {
return static_cast<BinaryOps>(Instruction::getOpcode());

View File

@ -16,7 +16,6 @@
#ifndef LLVM_INSTRUCTIONS_H
#define LLVM_INSTRUCTIONS_H
#include "llvm/Instruction.h"
#include "llvm/InstrTypes.h"
namespace llvm {
@ -633,6 +632,17 @@ public:
}
unsigned getNumOperands() const { return 2; }
/// isLogicalShift - Return true if this is a logical shift left or a logical
/// shift right.
bool isLogicalShift() const;
/// isArithmeticShift - Return true if this is a sign-extending shift right
/// operation.
bool isArithmeticShift() const {
return !isLogicalShift();
}
virtual ShiftInst *clone() const;
// Methods for support type inquiry through isa, cast, and dyn_cast:

View File

@ -1141,6 +1141,17 @@ bool BinaryOperator::swapOperands() {
}
//===----------------------------------------------------------------------===//
// ShiftInst Class
//===----------------------------------------------------------------------===//
/// isLogicalShift - Return true if this is a logical shift left or a logical
/// shift right.
bool ShiftInst::isLogicalShift() const {
return getOpcode() == Instruction::Shl || getType()->isUnsigned();
}
//===----------------------------------------------------------------------===//
// SetCondInst Class
//===----------------------------------------------------------------------===//