1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "src/compiler/opcodes.h"
6 #include "testing/gtest/include/gtest/gtest.h"
14 bool IsCommonOpcode(IrOpcode::Value opcode) {
16 #define OPCODE(Opcode) \
17 case IrOpcode::k##Opcode: \
19 COMMON_OP_LIST(OPCODE)
20 CONTROL_OP_LIST(OPCODE)
28 bool IsControlOpcode(IrOpcode::Value opcode) {
30 #define OPCODE(Opcode) \
31 case IrOpcode::k##Opcode: \
33 CONTROL_OP_LIST(OPCODE)
41 bool IsJsOpcode(IrOpcode::Value opcode) {
43 #define OPCODE(Opcode) \
44 case IrOpcode::k##Opcode: \
54 bool IsConstantOpcode(IrOpcode::Value opcode) {
56 #define OPCODE(Opcode) \
57 case IrOpcode::k##Opcode: \
59 CONSTANT_OP_LIST(OPCODE)
67 const IrOpcode::Value kInvalidOpcode = static_cast<IrOpcode::Value>(123456789);
72 TEST(IrOpcodeTest, IsCommonOpcode) {
73 EXPECT_FALSE(IrOpcode::IsCommonOpcode(kInvalidOpcode));
74 #define OPCODE(Opcode) \
75 EXPECT_EQ(IsCommonOpcode(IrOpcode::k##Opcode), \
76 IrOpcode::IsCommonOpcode(IrOpcode::k##Opcode));
82 TEST(IrOpcodeTest, IsControlOpcode) {
83 EXPECT_FALSE(IrOpcode::IsControlOpcode(kInvalidOpcode));
84 #define OPCODE(Opcode) \
85 EXPECT_EQ(IsControlOpcode(IrOpcode::k##Opcode), \
86 IrOpcode::IsControlOpcode(IrOpcode::k##Opcode));
92 TEST(IrOpcodeTest, IsJsOpcode) {
93 EXPECT_FALSE(IrOpcode::IsJsOpcode(kInvalidOpcode));
94 #define OPCODE(Opcode) \
95 EXPECT_EQ(IsJsOpcode(IrOpcode::k##Opcode), \
96 IrOpcode::IsJsOpcode(IrOpcode::k##Opcode));
102 TEST(IrOpcodeTest, IsConstantOpcode) {
103 EXPECT_FALSE(IrOpcode::IsConstantOpcode(kInvalidOpcode));
104 #define OPCODE(Opcode) \
105 EXPECT_EQ(IsConstantOpcode(IrOpcode::k##Opcode), \
106 IrOpcode::IsConstantOpcode(IrOpcode::k##Opcode));
112 TEST(IrOpcodeTest, Mnemonic) {
113 EXPECT_STREQ("UnknownOpcode", IrOpcode::Mnemonic(kInvalidOpcode));
114 #define OPCODE(Opcode) \
115 EXPECT_STREQ(#Opcode, IrOpcode::Mnemonic(IrOpcode::k##Opcode));
120 } // namespace compiler
121 } // namespace internal