| Chris Lattner | 0d5644b | 2003-01-13 00:26:36 +0000 | [diff] [blame] | 1 | //===-- TargetInstrInfo.cpp - Target Instruction Information --------------===// | 
| Misha Brukman | 10468d8 | 2005-04-21 22:55:34 +0000 | [diff] [blame] | 2 | // | 
| John Criswell | 482202a | 2003-10-20 19:43:21 +0000 | [diff] [blame] | 3 | //                     The LLVM Compiler Infrastructure | 
|  | 4 | // | 
| Chris Lattner | f3ebc3f | 2007-12-29 20:36:04 +0000 | [diff] [blame] | 5 | // This file is distributed under the University of Illinois Open Source | 
|  | 6 | // License. See LICENSE.TXT for details. | 
| Misha Brukman | 10468d8 | 2005-04-21 22:55:34 +0000 | [diff] [blame] | 7 | // | 
| John Criswell | 482202a | 2003-10-20 19:43:21 +0000 | [diff] [blame] | 8 | //===----------------------------------------------------------------------===// | 
| Chris Lattner | 910b82f | 2002-10-28 23:55:33 +0000 | [diff] [blame] | 9 | // | 
| Chris Lattner | f6932b7 | 2005-01-19 06:53:34 +0000 | [diff] [blame] | 10 | // This file implements the TargetInstrInfo class. | 
| Chris Lattner | 910b82f | 2002-10-28 23:55:33 +0000 | [diff] [blame] | 11 | // | 
|  | 12 | //===----------------------------------------------------------------------===// | 
|  | 13 |  | 
| Chris Lattner | b4d58d7 | 2003-01-14 22:00:31 +0000 | [diff] [blame] | 14 | #include "llvm/Target/TargetInstrInfo.h" | 
| Chris Lattner | 910b82f | 2002-10-28 23:55:33 +0000 | [diff] [blame] | 15 | #include "llvm/Constant.h" | 
|  | 16 | #include "llvm/DerivedTypes.h" | 
| Chris Lattner | f6932b7 | 2005-01-19 06:53:34 +0000 | [diff] [blame] | 17 | using namespace llvm; | 
| Chris Lattner | 910b82f | 2002-10-28 23:55:33 +0000 | [diff] [blame] | 18 |  | 
| Chris Lattner | 03ad885 | 2008-01-07 07:27:27 +0000 | [diff] [blame] | 19 | TargetInstrInfo::TargetInstrInfo(const TargetInstrDesc* Desc, | 
| Misha Brukman | e73e76d | 2005-04-22 17:54:37 +0000 | [diff] [blame] | 20 | unsigned numOpcodes) | 
| Chris Lattner | 03ad885 | 2008-01-07 07:27:27 +0000 | [diff] [blame] | 21 | : Descriptors(Desc), NumOpcodes(numOpcodes) { | 
| Chris Lattner | 910b82f | 2002-10-28 23:55:33 +0000 | [diff] [blame] | 22 | } | 
|  | 23 |  | 
| Chris Lattner | 0d5644b | 2003-01-13 00:26:36 +0000 | [diff] [blame] | 24 | TargetInstrInfo::~TargetInstrInfo() { | 
| Chris Lattner | 910b82f | 2002-10-28 23:55:33 +0000 | [diff] [blame] | 25 | } | 
|  | 26 |  | 
| Evan Cheng | 5514bbe | 2007-06-08 21:59:56 +0000 | [diff] [blame] | 27 | bool TargetInstrInfo::isUnpredicatedTerminator(const MachineInstr *MI) const { | 
| Chris Lattner | 03ad885 | 2008-01-07 07:27:27 +0000 | [diff] [blame] | 28 | const TargetInstrDesc &TID = MI->getDesc(); | 
|  | 29 | if (!TID.isTerminator()) return false; | 
| Chris Lattner | a98c679 | 2008-01-07 01:56:04 +0000 | [diff] [blame] | 30 |  | 
|  | 31 | // Conditional branch is a special case. | 
| Chris Lattner | 03ad885 | 2008-01-07 07:27:27 +0000 | [diff] [blame] | 32 | if (TID.isBranch() && !TID.isBarrier()) | 
| Chris Lattner | a98c679 | 2008-01-07 01:56:04 +0000 | [diff] [blame] | 33 | return true; | 
| Chris Lattner | 03ad885 | 2008-01-07 07:27:27 +0000 | [diff] [blame] | 34 | if (!TID.isPredicable()) | 
| Chris Lattner | a98c679 | 2008-01-07 01:56:04 +0000 | [diff] [blame] | 35 | return true; | 
|  | 36 | return !isPredicated(MI); | 
| Evan Cheng | 5514bbe | 2007-06-08 21:59:56 +0000 | [diff] [blame] | 37 | } |