1*9880d681SAndroid Build Coastguard Worker //===-- MCInstrAnalysis.cpp - InstrDesc target hooks ------------*- C++ -*-===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker #include "llvm/MC/MCInstrAnalysis.h" 11*9880d681SAndroid Build Coastguard Worker using namespace llvm; 12*9880d681SAndroid Build Coastguard Worker evaluateBranch(const MCInst & Inst,uint64_t Addr,uint64_t Size,uint64_t & Target) const13*9880d681SAndroid Build Coastguard Workerbool MCInstrAnalysis::evaluateBranch(const MCInst &Inst, uint64_t Addr, 14*9880d681SAndroid Build Coastguard Worker uint64_t Size, uint64_t &Target) const { 15*9880d681SAndroid Build Coastguard Worker if (Inst.getNumOperands() == 0 || 16*9880d681SAndroid Build Coastguard Worker Info->get(Inst.getOpcode()).OpInfo[0].OperandType != MCOI::OPERAND_PCREL) 17*9880d681SAndroid Build Coastguard Worker return false; 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker int64_t Imm = Inst.getOperand(0).getImm(); 20*9880d681SAndroid Build Coastguard Worker Target = Addr+Size+Imm; 21*9880d681SAndroid Build Coastguard Worker return true; 22*9880d681SAndroid Build Coastguard Worker } 23