CACAO
Aarch64Cond.hpp
Go to the documentation of this file.
1 /* src/vm/jit/compiler2/aarch64/Aarch64Cond.hpp
2 
3  Copyright (C) 2013
4  CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
5 
6  This file is part of CACAO.
7 
8  This program is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License as
10  published by the Free Software Foundation; either version 2, or (at
11  your option) any later version.
12 
13  This program is distributed in the hope that it will be useful, but
14  WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  02110-1301, USA.
22 
23 */
24 
25 #ifndef _JIT_COMPILER2_AARCH64_COND
26 #define _JIT_COMPILER2_AARCH64_COND
27 
28 #include "vm/types.hpp"
29 
30 namespace cacao {
31 namespace jit {
32 namespace compiler2 {
33 namespace aarch64 {
34 
35 class Cond {
36 public:
37  struct COND {
38  const u1 code;
39  private:
40  COND(u1 code) : code(code) {}
41  friend class Cond;
42  };
43 
44  static const COND EQ; ///< Equal (Z == 1)
45  static const COND NE; ///< Not equal (Z == 0)
46  static const COND CS; ///< Carry set (C == 1)
47  static const COND CC; ///< Carry clear (C == 0)
48  static const COND MI; ///< Minus, negative (N == 1)
49  static const COND PL; ///< Plus, positive or zero (N == 0)
50  static const COND VS; ///< Overflow (V == 1)
51  static const COND VC; ///< No overflow (V == 0)
52  static const COND HI; ///< Unsigned higher (C == 1 && Z == 0)
53  static const COND LS; ///< Unsigned lower or same (!(C == 1 && Z == 0))
54  static const COND GE; ///< Signed greater than or equal (N == V)
55  static const COND LT; ///< Signed less then (N != V)
56  static const COND GT; ///< Signed greater then (Z == 0 && N == V)
57  static const COND LE; ///< Signed less than or equal (!(Z == 0 && N == V))
58  static const COND AL; ///< Always (Any)
59 };
60 
61 } // end namespace aarch64
62 } // end namespace compiler2
63 } // end namespace jit
64 } // end namespace cacao
65 
66 #endif /* _JIT_COMPILER2_AARCH64_COND */
67 
68 
69 /*
70  * These are local overrides for various environment variables in Emacs.
71  * Please do not remove this and leave it at the end of the file, where
72  * Emacs will automagically detect them.
73  * ---------------------------------------------------------------------
74  * Local variables:
75  * mode: c++
76  * indent-tabs-mode: t
77  * c-basic-offset: 4
78  * tab-width: 4
79  * End:
80  * vim:noexpandtab:sw=4:ts=4:
81  */
static const COND EQ
Equal (Z == 1)
Definition: Aarch64Cond.hpp:44
static const COND GE
Signed greater than or equal (N == V)
Definition: Aarch64Cond.hpp:54
static const COND VC
No overflow (V == 0)
Definition: Aarch64Cond.hpp:51
static const COND NE
Not equal (Z == 0)
Definition: Aarch64Cond.hpp:45
static const COND GT
Signed greater then (Z == 0 &amp;&amp; N == V)
Definition: Aarch64Cond.hpp:56
static const COND AL
Always (Any)
Definition: Aarch64Cond.hpp:58
static const COND CC
Carry clear (C == 0)
Definition: Aarch64Cond.hpp:47
uint8_t u1
Definition: types.hpp:40
static const COND CS
Carry set (C == 1)
Definition: Aarch64Cond.hpp:46
static const COND VS
Overflow (V == 1)
Definition: Aarch64Cond.hpp:50
static const COND LT
Signed less then (N != V)
Definition: Aarch64Cond.hpp:55
static const COND MI
Minus, negative (N == 1)
Definition: Aarch64Cond.hpp:48
static const COND LS
Unsigned lower or same (!(C == 1 &amp;&amp; Z == 0))
Definition: Aarch64Cond.hpp:53
static const COND HI
Unsigned higher (C == 1 &amp;&amp; Z == 0)
Definition: Aarch64Cond.hpp:52
static const COND PL
Plus, positive or zero (N == 0)
Definition: Aarch64Cond.hpp:49
static const COND LE
Signed less than or equal (!(Z == 0 &amp;&amp; N == V))
Definition: Aarch64Cond.hpp:57