Upstream version 11.39.266.0
[platform/framework/web/crosswalk.git] / src / native_client / src / trusted / validator / x86 / decoder / ncop_exps_inl.c
1 /*
2  * Copyright (c) 2012 The Native Client Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  */
6
7 /*
8  * ncop_exps_inl.c - Holds inline routines for commonly used (simple)
9  * functions in ncop_exps.h. Used to speed up code. Inlined routines
10  * correspond to the following functions in ncop_exps.h, but with an
11  * 'Inline' suffix:
12  *
13  *    NaClGetExpRegister
14  */
15 #ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_NCOP_EXPS_INL_H_
16 #define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_NCOP_EXPS_INL_H_
17
18 #include <assert.h>
19 #include "native_client/src/trusted/validator/x86/decoder/ncop_exps.h"
20
21 static INLINE NaClOpKind NaClGetExpRegisterInline(NaClExp* node) {
22   assert(node->kind == ExprRegister);
23   return (NaClOpKind) node->value;
24 }
25
26 /* Return the sign extended integer in the given expr node. */
27 static INLINE int64_t NaClGetExprSignedValue(NaClExp* node) {
28   if (node->flags & NACL_EFLAG(ExprSize8)) {
29     return (int8_t) node->value;
30   } else if (node->flags & NACL_EFLAG(ExprSize16)) {
31     return (int16_t) node->value;
32   } else if (node->flags & NACL_EFLAG(ExprSize32)) {
33     return (int32_t) node->value;
34   } else {
35     return (int64_t) node->value;
36   }
37 }
38
39 /* Return the zero padded integer in the given expr node. */
40 static INLINE uint64_t NaClGetExprUnsignedValue(NaClExp* node) {
41   if (node->flags & NACL_EFLAG(ExprSize8)) {
42     return (uint8_t) node->value;
43   } else if (node->flags & NACL_EFLAG(ExprSize16)) {
44     return (uint16_t) node->value;
45   } else if (node->flags & NACL_EFLAG(ExprSize32)) {
46     return (uint32_t) node->value;
47   } else {
48     return (uint64_t) node->value;
49   }
50 }
51
52 #endif  /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_NCOP_EXPS_INL_H_ */