15cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur//===- subzero/src/IceConditionCodesMIPS32.h - Condition Codes --*- C++ -*-===//
25cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur//
35cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur//                        The Subzero Code Generator
45cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur//
55cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur// This file is distributed under the University of Illinois Open Source
65cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur// License. See LICENSE.TXT for details.
75cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur//
85cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur//===----------------------------------------------------------------------===//
95cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur///
105cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur/// \file
115cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur/// \brief Declares the condition codes for MIPS32.
125cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur///
135cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur//===----------------------------------------------------------------------===//
145cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur
155cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur#ifndef SUBZERO_SRC_ICECONDITIONCODESMIPS32_H
165cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur#define SUBZERO_SRC_ICECONDITIONCODESMIPS32_H
175cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur
185cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur#include "IceDefs.h"
195cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur#include "IceInstMIPS32.def"
205cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur
215cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakurnamespace Ice {
225cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur
235cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakurclass CondMIPS32 {
245cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur  CondMIPS32() = delete;
255cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur  CondMIPS32(const CondMIPS32 &) = delete;
265cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur  CondMIPS32 &operator=(const CondMIPS32 &) = delete;
275cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur
285cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakurpublic:
295cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur  /// An enum of codes used for conditional instructions. The enum value should
305cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur  /// match the value used to encode operands in binary instructions.
315cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur  enum Cond {
325cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur#define X(tag, opp, emit) tag,
335cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur    ICEINSTMIPS32COND_TABLE
345cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur#undef X
355cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur  };
365cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur
375cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur  static bool isDefined(Cond C) { return C != kNone; }
385cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur
395cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur  static bool isUnconditional(Cond C) { return !isDefined(C) || C == AL; }
405cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur};
415cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur
425cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur} // end of namespace Ice
435cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur
445cce76190a9bd6a6a524b2afee917f6bec922d8dSagar Thakur#endif // SUBZERO_SRC_ICECONDITIONCODESMIPS32_H
45