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.
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
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_
19 #include "native_client/src/trusted/validator/x86/decoder/ncop_exps.h"
21 static INLINE NaClOpKind NaClGetExpRegisterInline(NaClExp* node) {
22 assert(node->kind == ExprRegister);
23 return (NaClOpKind) node->value;
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;
35 return (int64_t) node->value;
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;
48 return (uint64_t) node->value;
52 #endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_NCOP_EXPS_INL_H_ */