141ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer//===-- MCInstrAnalysis.cpp - InstrDesc target hooks ------------*- C++ -*-===// 241ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer// 341ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer// The LLVM Compiler Infrastructure 441ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer// 541ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer// This file is distributed under the University of Illinois Open Source 641ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer// License. See LICENSE.TXT for details. 741ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer// 841ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer//===----------------------------------------------------------------------===// 941ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer 1041ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer#include "llvm/MC/MCInstrAnalysis.h" 1141ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramerusing namespace llvm; 1241ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer 1341ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Krameruint64_t MCInstrAnalysis::evaluateBranch(const MCInst &Inst, uint64_t Addr, 1441ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer uint64_t Size) const { 15a182be9b6cab86b3d52371efea1681161820cf1cBenjamin Kramer if (Inst.getNumOperands() == 0 || 16a182be9b6cab86b3d52371efea1681161820cf1cBenjamin Kramer Info->get(Inst.getOpcode()).OpInfo[0].OperandType != MCOI::OPERAND_PCREL) 1741ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer return -1ULL; 1841ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer 1941ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer int64_t Imm = Inst.getOperand(0).getImm(); 2041ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer return Addr+Size+Imm; 2141ab14b725c8f2bb3e54553d0d7d96ff184786b1Benjamin Kramer} 22