LLVM: lib/Support/IntEqClasses.cpp Source File (original) (raw)

Go to the documentation of this file.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

21#include

22

23using namespace llvm;

24

26 assert(NumClasses == 0 && "grow() called after compress().");

27 EC.reserve(N);

28 while (EC.size() < N)

29 EC.push_back(EC.size());

30}

31

33 assert(NumClasses == 0 && "join() called after compress().");

34 unsigned eca = EC[a];

35 unsigned ecb = EC[b];

36

37

38

39 while (eca != ecb)

40 if (eca < ecb) {

41 EC[b] = eca;

42 b = ecb;

43 ecb = EC[b];

44 } else {

45 EC[a] = ecb;

46 a = eca;

47 eca = EC[a];

48 }

49

50 return eca;

51}

52

54 assert(NumClasses == 0 && "findLeader() called after compress().");

55 while (a != EC[a])

56 a = EC[a];

57 return a;

58}

59

61 if (NumClasses)

62 return;

63 for (unsigned i = 0, e = EC.size(); i != e; ++i)

64 EC[i] = (EC[i] == i) ? NumClasses++ : EC[EC[i]];

65}

66

68 if (!NumClasses)

69 return;

71 for (unsigned i = 0, e = EC.size(); i != e; ++i)

72 if (EC[i] < Leader.size())

73 EC[i] = Leader[EC[i]];

74 else

76 NumClasses = 0;

77}

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

Equivalence classes for small integers.

LLVM_ABI unsigned findLeader(unsigned a) const

findLeader - Compute the leader of a's equivalence class.

Definition IntEqClasses.cpp:53

LLVM_ABI void compress()

compress - Compress equivalence classes by numbering them 0 .

Definition IntEqClasses.cpp:60

LLVM_ABI void uncompress()

uncompress - Change back to the uncompressed representation that allows editing.

Definition IntEqClasses.cpp:67

LLVM_ABI unsigned join(unsigned a, unsigned b)

Join the equivalence classes of a and b.

Definition IntEqClasses.cpp:32

LLVM_ABI void grow(unsigned N)

grow - Increase capacity to hold 0 .

Definition IntEqClasses.cpp:25

void push_back(const T &Elt)

This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.

This is an optimization pass for GlobalISel generic memory operations.