// Copyright 2016 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "src/init/v8.h" #include "src/execution/isolate.h" #include "src/interpreter/bytecode-operands.h" #include "test/unittests/test-utils.h" namespace v8 { namespace internal { namespace interpreter { using BytecodeOperandsTest = TestWithIsolateAndZone; TEST(BytecodeOperandsTest, IsScalableSignedByte) { #define SCALABLE_SIGNED_OPERAND(Name, ...) \ CHECK(BytecodeOperands::IsScalableSignedByte(OperandType::k##Name)); REGISTER_OPERAND_TYPE_LIST(SCALABLE_SIGNED_OPERAND) SIGNED_SCALABLE_SCALAR_OPERAND_TYPE_LIST(SCALABLE_SIGNED_OPERAND) #undef SCALABLE_SIGNED_OPERAND #define NOT_SCALABLE_SIGNED_OPERAND(Name, ...) \ CHECK(!BytecodeOperands::IsScalableSignedByte(OperandType::k##Name)); INVALID_OPERAND_TYPE_LIST(NOT_SCALABLE_SIGNED_OPERAND) UNSIGNED_FIXED_SCALAR_OPERAND_TYPE_LIST(NOT_SCALABLE_SIGNED_OPERAND) UNSIGNED_SCALABLE_SCALAR_OPERAND_TYPE_LIST(NOT_SCALABLE_SIGNED_OPERAND) #undef NOT_SCALABLE_SIGNED_OPERAND } TEST(BytecodeOperandsTest, IsScalableUnsignedByte) { #define SCALABLE_UNSIGNED_OPERAND(Name, ...) \ CHECK(BytecodeOperands::IsScalableUnsignedByte(OperandType::k##Name)); UNSIGNED_SCALABLE_SCALAR_OPERAND_TYPE_LIST(SCALABLE_UNSIGNED_OPERAND) #undef SCALABLE_SIGNED_OPERAND #define NOT_SCALABLE_UNSIGNED_OPERAND(Name, ...) \ CHECK(!BytecodeOperands::IsScalableUnsignedByte(OperandType::k##Name)); INVALID_OPERAND_TYPE_LIST(NOT_SCALABLE_UNSIGNED_OPERAND) REGISTER_OPERAND_TYPE_LIST(NOT_SCALABLE_UNSIGNED_OPERAND) SIGNED_SCALABLE_SCALAR_OPERAND_TYPE_LIST(NOT_SCALABLE_UNSIGNED_OPERAND) UNSIGNED_FIXED_SCALAR_OPERAND_TYPE_LIST(NOT_SCALABLE_UNSIGNED_OPERAND) #undef NOT_SCALABLE_SIGNED_OPERAND } } // namespace interpreter } // namespace internal } // namespace v8