1/* 2 * Copyright (c) 2003-2005 The Regents of The University of Michigan |
3 * Copyright (c) 2013 Advanced Micro Devices, Inc. |
4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer; 10 * redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the --- 94 unchanged lines hidden (view full) --- 106 /// model we should be able to get rid of these flags and 107 /// implement this behavior via the execute() methods. 108 /// 109 enum Flags { 110 IsNop, ///< Is a no-op (no effect at all). 111 112 IsInteger, ///< References integer regs. 113 IsFloating, ///< References FP regs. |
114 IsCC, ///< References CC regs. |
115 116 IsMemRef, ///< References memory (load, store, or prefetch). 117 IsLoad, ///< Reads from memory (load or prefetch). 118 IsStore, ///< Writes to memory. 119 IsStoreConditional, ///< Store conditional instruction. 120 IsIndexed, ///< Accesses memory with an indexed address computation 121 IsInstPrefetch, ///< Instruction-cache prefetch. 122 IsDataPrefetch, ///< Data-cache prefetch. --- 55 unchanged lines hidden (view full) --- 178 /// See numDestRegs(). 179 int8_t _numDestRegs; 180 181 /// The following are used to track physical register usage 182 /// for machines with separate int & FP reg files. 183 //@{ 184 int8_t _numFPDestRegs; 185 int8_t _numIntDestRegs; |
186 int8_t _numCCDestRegs; |
187 //@} 188 189 public: 190 191 /// @name Register information. 192 /// The sum of numFPDestRegs() and numIntDestRegs() equals 193 /// numDestRegs(). The former two functions are used to track 194 /// physical register usage for machines with separate int & FP --- 23 unchanged lines hidden (view full) --- 218 bool isStoreConditional() const { return flags[IsStoreConditional]; } 219 bool isInstPrefetch() const { return flags[IsInstPrefetch]; } 220 bool isDataPrefetch() const { return flags[IsDataPrefetch]; } 221 bool isPrefetch() const { return isInstPrefetch() || 222 isDataPrefetch(); } 223 224 bool isInteger() const { return flags[IsInteger]; } 225 bool isFloating() const { return flags[IsFloating]; } |
226 bool isCC() const { return flags[IsCC]; } |
227 228 bool isControl() const { return flags[IsControl]; } 229 bool isCall() const { return flags[IsCall]; } 230 bool isReturn() const { return flags[IsReturn]; } 231 bool isDirectCtrl() const { return flags[IsDirectControl]; } 232 bool isIndirectCtrl() const { return flags[IsIndirectControl]; } 233 bool isCondCtrl() const { return flags[IsCondControl]; } 234 bool isUncondCtrl() const { return flags[IsUncondControl]; } --- 160 unchanged lines hidden --- |