5#ifndef V8_INTERPRETER_BYTECODE_TRAITS_H_
6#define V8_INTERPRETER_BYTECODE_TRAITS_H_
12namespace interpreter {
14template <OperandTypeInfo>
17#define DECLARE_OPERAND_TYPE_INFO(Name, Scalable, Unsigned, BaseSize) \
19 struct OperandTypeInfoTraits<OperandTypeInfo::k##Name> { \
20 static constexpr bool kIsScalable = Scalable; \
21 static constexpr bool kIsUnsigned = Unsigned; \
22 static constexpr OperandSize kUnscaledSize = BaseSize; \
25#undef DECLARE_OPERAND_TYPE_INFO
30#define DECLARE_OPERAND_TYPE_TRAITS(Name, InfoType) \
32 struct OperandTraits<OperandType::k##Name> { \
33 using TypeInfoTraits = OperandTypeInfoTraits<InfoType>; \
34 static constexpr OperandTypeInfo kOperandTypeInfo = InfoType; \
37#undef DECLARE_OPERAND_TYPE_TRAITS
39template <OperandType operand_type, OperandScale operand_scale>
45 ?
static_cast<int>(operand_scale)
63 template <OperandScale scale>
65 std::array<int,
sizeof...(operands) + 1>
result{};
89 implicit_register_use;
93template <ImplicitRegisterUse implicit_register_use>
109 implicit_register_use;
#define OPERAND_TYPE_LIST(V)
#define OPERAND_TYPE_INFO_LIST(V)
#define DECLARE_OPERAND_TYPE_TRAITS(Name, InfoType)
ZoneVector< RpoNumber > & result
DECLARE_OPERAND_TYPE_INFO(Name,...)
static constexpr OperandType kOperandTypes[]
static constexpr auto kQuadrupleScaleOperandOffsets
static constexpr OperandSize kDoubleScaleOperandSizes[]
static constexpr int kSingleScaleSize
static constexpr OperandTypeInfo kOperandTypeInfos[]
static constexpr OperandSize kSingleScaleOperandSizes[]
static constexpr int kQuadrupleScaleSize
static constexpr auto kDoubleScaleOperandOffsets
static constexpr int kDoubleScaleSize
static constexpr ImplicitRegisterUse kImplicitRegisterUse
static constexpr auto kSingleScaleOperandOffsets
static constexpr OperandSize kQuadrupleScaleOperandSizes[]
static constexpr int kOperandCount
static constexpr auto CalculateOperandOffsets()
static constexpr OperandSize kOperandSize
static constexpr int kSize