12a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen//===---- ADT/IntEqClassesTest.cpp - IntEqClasses unit tests ----*- C++ -*-===// 22a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen// 32a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen// The LLVM Compiler Infrastructure 42a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen// 52a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen// This file is distributed under the University of Illinois Open Source 62a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen// License. See LICENSE.TXT for details. 72a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen// 82a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen//===----------------------------------------------------------------------===// 92a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 102a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen#include "llvm/ADT/IntEqClasses.h" 112a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen#include "gtest/gtest.h" 122a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 132a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesenusing namespace llvm; 142a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 152a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesennamespace { 162a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 172a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund OlesenTEST(IntEqClasses, Simple) { 182a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen IntEqClasses ec(10); 192a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 202a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen ec.join(0, 1); 212a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen ec.join(3, 2); 222a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen ec.join(4, 5); 232a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen ec.join(7, 6); 242a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 252a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(0)); 262a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(1)); 272a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(2u, ec.findLeader(2)); 282a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(2u, ec.findLeader(3)); 292a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(4)); 302a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(5)); 312a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(6u, ec.findLeader(6)); 322a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(6u, ec.findLeader(7)); 332a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(8u, ec.findLeader(8)); 342a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(9u, ec.findLeader(9)); 352a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 362a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen // join two non-leaders. 372a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen ec.join(1, 3); 382a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 392a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(0)); 402a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(1)); 412a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(2)); 422a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(3)); 432a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(4)); 442a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(5)); 452a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(6u, ec.findLeader(6)); 462a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(6u, ec.findLeader(7)); 472a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(8u, ec.findLeader(8)); 482a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(9u, ec.findLeader(9)); 492a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 502a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen // join two leaders. 512a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen ec.join(4, 8); 522a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 532a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(0)); 542a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(1)); 552a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(2)); 562a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(3)); 572a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(4)); 582a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(5)); 592a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(6u, ec.findLeader(6)); 602a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(6u, ec.findLeader(7)); 612a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(8)); 622a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(9u, ec.findLeader(9)); 632a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 642a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen // join mixed. 652a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen ec.join(9, 1); 662a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 672a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(0)); 682a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(1)); 692a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(2)); 702a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(3)); 712a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(4)); 722a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(5)); 732a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(6u, ec.findLeader(6)); 742a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(6u, ec.findLeader(7)); 752a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(8)); 762a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(9)); 772a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 782a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen // compressed map. 792a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen ec.compress(); 802a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(3u, ec.getNumClasses()); 812a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 822a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec[0]); 832a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec[1]); 842a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec[2]); 852a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec[3]); 862a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(1u, ec[4]); 872a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(1u, ec[5]); 882a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(2u, ec[6]); 892a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(2u, ec[7]); 902a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(1u, ec[8]); 912a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec[9]); 922a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 932a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen // uncompressed map. 942a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen ec.uncompress(); 952a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(0)); 962a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(1)); 972a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(2)); 982a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(3)); 992a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(4)); 1002a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(5)); 1012a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(6u, ec.findLeader(6)); 1022a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(6u, ec.findLeader(7)); 1032a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(4u, ec.findLeader(8)); 1042a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen EXPECT_EQ(0u, ec.findLeader(9)); 1052a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen} 1062a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen 1072a6899c5391a9aada02686dee29f9b56218ed1d3Jakob Stoklund Olesen} // end anonymous namespace 108