| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- //===- unittests/SPIRV/SpirvBasicBlockTest.cpp ----- Basic Block Tests ----===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- #include "clang/SPIRV/SpirvBasicBlock.h"
- #include "clang/SPIRV/SpirvInstruction.h"
- #include "gmock/gmock.h"
- #include "gtest/gtest.h"
- using namespace clang::spirv;
- namespace {
- TEST(SpirvBasicBlockTest, CheckName) {
- SpirvBasicBlock bb("myBasicBlock");
- EXPECT_EQ(bb.getName(), "myBasicBlock");
- }
- TEST(SpirvBasicBlockTest, CheckResultId) {
- SpirvBasicBlock bb("myBasicBlock");
- bb.setResultId(5);
- EXPECT_EQ(bb.getResultId(), 5u);
- }
- TEST(SpirvBasicBlockTest, CheckMergeTarget) {
- SpirvBasicBlock bb1("bb1");
- SpirvBasicBlock bb2("bb2");
- bb1.setMergeTarget(&bb2);
- EXPECT_EQ(bb1.getMergeTarget(), &bb2);
- }
- TEST(SpirvBasicBlockTest, CheckContinueTarget) {
- SpirvBasicBlock bb1("bb1");
- SpirvBasicBlock bb2("bb2");
- bb1.setContinueTarget(&bb2);
- EXPECT_EQ(bb1.getContinueTarget(), &bb2);
- }
- TEST(SpirvBasicBlockTest, CheckSuccessors) {
- SpirvBasicBlock bb1("bb1");
- SpirvBasicBlock bb2("bb2");
- SpirvBasicBlock bb3("bb3");
- bb1.addSuccessor(&bb2);
- bb1.addSuccessor(&bb3);
- auto successors = bb1.getSuccessors();
- EXPECT_EQ(successors[0], &bb2);
- EXPECT_EQ(successors[1], &bb3);
- }
- TEST(SpirvBasicBlockTest, CheckTerminatedByKill) {
- SpirvBasicBlock bb("bb");
- SpirvKill kill({});
- bb.addInstruction(&kill);
- EXPECT_TRUE(bb.hasTerminator());
- }
- TEST(SpirvBasicBlockTest, CheckTerminatedByBranch) {
- SpirvBasicBlock bb("bb");
- SpirvBranch branch({}, nullptr);
- bb.addInstruction(&branch);
- EXPECT_TRUE(bb.hasTerminator());
- }
- TEST(SpirvBasicBlockTest, CheckTerminatedByBranchConditional) {
- SpirvBasicBlock bb("bb");
- SpirvBranchConditional branch({}, nullptr, nullptr, nullptr);
- bb.addInstruction(&branch);
- EXPECT_TRUE(bb.hasTerminator());
- }
- TEST(SpirvBasicBlockTest, CheckTerminatedByReturn) {
- SpirvBasicBlock bb("bb");
- SpirvReturn returnInstr({});
- bb.addInstruction(&returnInstr);
- EXPECT_TRUE(bb.hasTerminator());
- }
- TEST(SpirvBasicBlockTest, CheckTerminatedByUnreachable) {
- SpirvBasicBlock bb("bb");
- SpirvUnreachable unreachable({});
- bb.addInstruction(&unreachable);
- EXPECT_TRUE(bb.hasTerminator());
- }
- TEST(SpirvBasicBlockTest, CheckNotTerminated) {
- SpirvBasicBlock bb("bb");
- SpirvLoad load({}, {}, nullptr);
- bb.addInstruction(&load);
- EXPECT_FALSE(bb.hasTerminator());
- }
- } // anonymous namespace
|