//===-- X86AsmParserCommon.h - Common functions for X86AsmParser ---------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_LIB_TARGET_X86_ASMPARSER_X86ASMPARSERCOMMON_H
#define LLVM_LIB_TARGET_X86_ASMPARSER_X86ASMPARSERCOMMON_H

#include "llvm/Support/MathExtras.h"

namespace llvm {

inline bool isImmSExti16i8Value(uint64_t Value) {
  return isInt<8>(Value) ||
         (isUInt<16>(Value) && isInt<8>(static_cast<int16_t>(Value)));
}

inline bool isImmSExti32i8Value(uint64_t Value) {
  return isInt<8>(Value) ||
         (isUInt<32>(Value) && isInt<8>(static_cast<int32_t>(Value)));
}

inline bool isImmSExti64i8Value(uint64_t Value) {
  return isInt<8>(Value);
}

inline bool isImmSExti64i32Value(uint64_t Value) {
  return isInt<32>(Value);
}

inline bool isImmUnsignedi8Value(uint64_t Value) {
  return isUInt<8>(Value) || isInt<8>(Value);
}

} // End of namespace llvm

#endif
