mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
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:
parent
a5b07404f7
commit
2f463865c2
@ -207,16 +207,16 @@ public:
|
|||||||
|
|
||||||
/// isNeg, isNot - Check if the given Value is a NEG or NOT instruction.
|
/// isNeg, isNot - Check if the given Value is a NEG or NOT instruction.
|
||||||
///
|
///
|
||||||
static bool isNeg(const Value *V);
|
static bool isNeg(const Value *V);
|
||||||
static bool isNot(const Value *V);
|
static bool isNot(const Value *V);
|
||||||
|
|
||||||
/// getNegArgument, getNotArgument - Helper functions to extract the
|
/// getNegArgument, getNotArgument - Helper functions to extract the
|
||||||
/// unary argument of a NEG or NOT operation implemented via Sub or Xor.
|
/// unary argument of a NEG or NOT operation implemented via Sub or Xor.
|
||||||
///
|
///
|
||||||
static const Value* getNegArgument(const Value *BinOp);
|
static const Value *getNegArgument(const Value *BinOp);
|
||||||
static Value* getNegArgument( Value *BinOp);
|
static Value *getNegArgument( Value *BinOp);
|
||||||
static const Value* getNotArgument(const Value *BinOp);
|
static const Value *getNotArgument(const Value *BinOp);
|
||||||
static Value* getNotArgument( Value *BinOp);
|
static Value *getNotArgument( Value *BinOp);
|
||||||
|
|
||||||
BinaryOps getOpcode() const {
|
BinaryOps getOpcode() const {
|
||||||
return static_cast<BinaryOps>(Instruction::getOpcode());
|
return static_cast<BinaryOps>(Instruction::getOpcode());
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
#ifndef LLVM_INSTRUCTIONS_H
|
#ifndef LLVM_INSTRUCTIONS_H
|
||||||
#define LLVM_INSTRUCTIONS_H
|
#define LLVM_INSTRUCTIONS_H
|
||||||
|
|
||||||
#include "llvm/Instruction.h"
|
|
||||||
#include "llvm/InstrTypes.h"
|
#include "llvm/InstrTypes.h"
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
@ -633,6 +632,17 @@ public:
|
|||||||
}
|
}
|
||||||
unsigned getNumOperands() const { return 2; }
|
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;
|
virtual ShiftInst *clone() const;
|
||||||
|
|
||||||
// Methods for support type inquiry through isa, cast, and dyn_cast:
|
// Methods for support type inquiry through isa, cast, and dyn_cast:
|
||||||
|
@ -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
|
// SetCondInst Class
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user