1*03ce13f7SAndroid Build Coastguard Worker //===- subzero/src/IceConditionCodesARM32.h - Condition Codes ---*- C++ -*-===// 2*03ce13f7SAndroid Build Coastguard Worker // 3*03ce13f7SAndroid Build Coastguard Worker // The Subzero Code Generator 4*03ce13f7SAndroid Build Coastguard Worker // 5*03ce13f7SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*03ce13f7SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*03ce13f7SAndroid Build Coastguard Worker // 8*03ce13f7SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*03ce13f7SAndroid Build Coastguard Worker /// 10*03ce13f7SAndroid Build Coastguard Worker /// \file 11*03ce13f7SAndroid Build Coastguard Worker /// \brief Declares the condition codes for ARM32. 12*03ce13f7SAndroid Build Coastguard Worker /// 13*03ce13f7SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 14*03ce13f7SAndroid Build Coastguard Worker 15*03ce13f7SAndroid Build Coastguard Worker #ifndef SUBZERO_SRC_ICECONDITIONCODESARM32_H 16*03ce13f7SAndroid Build Coastguard Worker #define SUBZERO_SRC_ICECONDITIONCODESARM32_H 17*03ce13f7SAndroid Build Coastguard Worker 18*03ce13f7SAndroid Build Coastguard Worker #include "IceDefs.h" 19*03ce13f7SAndroid Build Coastguard Worker #include "IceInstARM32.def" 20*03ce13f7SAndroid Build Coastguard Worker 21*03ce13f7SAndroid Build Coastguard Worker namespace Ice { 22*03ce13f7SAndroid Build Coastguard Worker 23*03ce13f7SAndroid Build Coastguard Worker class CondARM32 { 24*03ce13f7SAndroid Build Coastguard Worker CondARM32() = delete; 25*03ce13f7SAndroid Build Coastguard Worker CondARM32(const CondARM32 &) = delete; 26*03ce13f7SAndroid Build Coastguard Worker CondARM32 &operator=(const CondARM32 &) = delete; 27*03ce13f7SAndroid Build Coastguard Worker 28*03ce13f7SAndroid Build Coastguard Worker public: 29*03ce13f7SAndroid Build Coastguard Worker /// An enum of codes used for conditional instructions. The enum value should 30*03ce13f7SAndroid Build Coastguard Worker /// match the value used to encode operands in binary instructions. 31*03ce13f7SAndroid Build Coastguard Worker enum Cond { 32*03ce13f7SAndroid Build Coastguard Worker #define X(tag, encode, opp, emit) tag = encode, 33*03ce13f7SAndroid Build Coastguard Worker ICEINSTARM32COND_TABLE 34*03ce13f7SAndroid Build Coastguard Worker #undef X 35*03ce13f7SAndroid Build Coastguard Worker }; 36*03ce13f7SAndroid Build Coastguard Worker isDefined(Cond C)37*03ce13f7SAndroid Build Coastguard Worker static bool isDefined(Cond C) { return C != kNone; } 38*03ce13f7SAndroid Build Coastguard Worker isUnconditional(Cond C)39*03ce13f7SAndroid Build Coastguard Worker static bool isUnconditional(Cond C) { return !isDefined(C) || C == AL; } 40*03ce13f7SAndroid Build Coastguard Worker }; 41*03ce13f7SAndroid Build Coastguard Worker 42*03ce13f7SAndroid Build Coastguard Worker } // end of namespace Ice 43*03ce13f7SAndroid Build Coastguard Worker 44*03ce13f7SAndroid Build Coastguard Worker #endif // SUBZERO_SRC_ICECONDITIONCODESARM32_H 45