156615a26SAndrew Litteken; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2f02c4c87SAndrew Litteken; RUN: opt -disable-output -S -passes=print-ir-similarity < %s 2>&1 | FileCheck %s 3f02c4c87SAndrew Litteken 4f02c4c87SAndrew Litteken; This is a simple test to make sure the IRSimilarityIdentifier and 5f02c4c87SAndrew Litteken; IRSimilarityPrinterPass is working. 6f02c4c87SAndrew Litteken 7*e240e6b8SAndrew Litteken; CHECK: 4 candidates of length 6. Found in: 8f02c4c87SAndrew Litteken; CHECK-NEXT: Function: turtle, Basic Block: (unnamed) 9*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 1, ptr %1, align 4 10da839fffSNikita Popov; CHECK-NEXT: End Instruction: store i32 6, ptr %6, align 4 11f02c4c87SAndrew Litteken; CHECK-NEXT: Function: cat, Basic Block: entry 12*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 6, ptr %0, align 4 13da839fffSNikita Popov; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 14f02c4c87SAndrew Litteken; CHECK-NEXT: Function: fish, Basic Block: entry 15*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 6, ptr %0, align 4 16da839fffSNikita Popov; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 17f02c4c87SAndrew Litteken; CHECK-NEXT: Function: dog, Basic Block: entry 18*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 6, ptr %0, align 4 199baaf4fbSAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 209baaf4fbSAndrew Litteken; CHECK-NEXT:4 candidates of length 5. Found in: 219baaf4fbSAndrew Litteken; CHECK-NEXT: Function: turtle, Basic Block: (unnamed) 229baaf4fbSAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 2, ptr %2, align 4 239baaf4fbSAndrew Litteken; CHECK-NEXT: End Instruction: store i32 6, ptr %6, align 4 249baaf4fbSAndrew Litteken; CHECK-NEXT: Function: cat, Basic Block: entry 259baaf4fbSAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 1, ptr %1, align 4 269baaf4fbSAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 279baaf4fbSAndrew Litteken; CHECK-NEXT: Function: fish, Basic Block: entry 289baaf4fbSAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 1, ptr %1, align 4 299baaf4fbSAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 309baaf4fbSAndrew Litteken; CHECK-NEXT: Function: dog, Basic Block: entry 319baaf4fbSAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 1, ptr %1, align 4 329baaf4fbSAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 33*e240e6b8SAndrew Litteken; CHECK-NEXT:4 candidates of length 4. Found in: 349baaf4fbSAndrew Litteken; CHECK-NEXT: Function: turtle, Basic Block: (unnamed) 35*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 3, ptr %3, align 4 369baaf4fbSAndrew Litteken; CHECK-NEXT: End Instruction: store i32 6, ptr %6, align 4 379baaf4fbSAndrew Litteken; CHECK-NEXT: Function: cat, Basic Block: entry 38*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 2, ptr %2, align 4 399baaf4fbSAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 409baaf4fbSAndrew Litteken; CHECK-NEXT: Function: fish, Basic Block: entry 41*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 2, ptr %2, align 4 429baaf4fbSAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 439baaf4fbSAndrew Litteken; CHECK-NEXT: Function: dog, Basic Block: entry 44*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 2, ptr %2, align 4 45*e240e6b8SAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 46*e240e6b8SAndrew Litteken; CHECK-NEXT:4 candidates of length 3. Found in: 47*e240e6b8SAndrew Litteken; CHECK-NEXT: Function: turtle, Basic Block: (unnamed) 48*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 4, ptr %4, align 4 49*e240e6b8SAndrew Litteken; CHECK-NEXT: End Instruction: store i32 6, ptr %6, align 4 50*e240e6b8SAndrew Litteken; CHECK-NEXT: Function: cat, Basic Block: entry 51*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 3, ptr %3, align 4 52*e240e6b8SAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 53*e240e6b8SAndrew Litteken; CHECK-NEXT: Function: fish, Basic Block: entry 54*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 3, ptr %3, align 4 55*e240e6b8SAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 56*e240e6b8SAndrew Litteken; CHECK-NEXT: Function: dog, Basic Block: entry 57*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 3, ptr %3, align 4 58*e240e6b8SAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 59*e240e6b8SAndrew Litteken; CHECK-NEXT:4 candidates of length 2. Found in: 60*e240e6b8SAndrew Litteken; CHECK-NEXT: Function: turtle, Basic Block: (unnamed) 61*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 5, ptr %5, align 4 62*e240e6b8SAndrew Litteken; CHECK-NEXT: End Instruction: store i32 6, ptr %6, align 4 63*e240e6b8SAndrew Litteken; CHECK-NEXT: Function: cat, Basic Block: entry 64*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 4, ptr %4, align 4 65*e240e6b8SAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 66*e240e6b8SAndrew Litteken; CHECK-NEXT: Function: fish, Basic Block: entry 67*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 4, ptr %4, align 4 68*e240e6b8SAndrew Litteken; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 69*e240e6b8SAndrew Litteken; CHECK-NEXT: Function: dog, Basic Block: entry 70*e240e6b8SAndrew Litteken; CHECK-NEXT: Start Instruction: store i32 4, ptr %4, align 4 71da839fffSNikita Popov; CHECK-NEXT: End Instruction: store i32 5, ptr %5, align 4 72f02c4c87SAndrew Litteken 73f02c4c87SAndrew Littekendefine linkonce_odr void @fish() { 74f02c4c87SAndrew Littekenentry: 75f02c4c87SAndrew Litteken %0 = alloca i32, align 4 76f02c4c87SAndrew Litteken %1 = alloca i32, align 4 77f02c4c87SAndrew Litteken %2 = alloca i32, align 4 78f02c4c87SAndrew Litteken %3 = alloca i32, align 4 79f02c4c87SAndrew Litteken %4 = alloca i32, align 4 80f02c4c87SAndrew Litteken %5 = alloca i32, align 4 81da839fffSNikita Popov store i32 6, ptr %0, align 4 82da839fffSNikita Popov store i32 1, ptr %1, align 4 83da839fffSNikita Popov store i32 2, ptr %2, align 4 84da839fffSNikita Popov store i32 3, ptr %3, align 4 85da839fffSNikita Popov store i32 4, ptr %4, align 4 86da839fffSNikita Popov store i32 5, ptr %5, align 4 87f02c4c87SAndrew Litteken ret void 88f02c4c87SAndrew Litteken} 89f02c4c87SAndrew Litteken 90f02c4c87SAndrew Littekendefine void @turtle() { 91f02c4c87SAndrew Litteken %1 = alloca i32, align 4 92f02c4c87SAndrew Litteken %2 = alloca i32, align 4 93f02c4c87SAndrew Litteken %3 = alloca i32, align 4 94f02c4c87SAndrew Litteken %4 = alloca i32, align 4 95f02c4c87SAndrew Litteken %5 = alloca i32, align 4 96f02c4c87SAndrew Litteken %6 = alloca i32, align 4 97da839fffSNikita Popov store i32 1, ptr %1, align 4 98da839fffSNikita Popov store i32 2, ptr %2, align 4 99da839fffSNikita Popov store i32 3, ptr %3, align 4 100da839fffSNikita Popov store i32 4, ptr %4, align 4 101da839fffSNikita Popov store i32 5, ptr %5, align 4 102da839fffSNikita Popov store i32 6, ptr %6, align 4 103f02c4c87SAndrew Litteken ret void 104f02c4c87SAndrew Litteken} 105f02c4c87SAndrew Litteken 106f02c4c87SAndrew Littekendefine void @cat() { 107f02c4c87SAndrew Littekenentry: 108f02c4c87SAndrew Litteken %0 = alloca i32, align 4 109f02c4c87SAndrew Litteken %1 = alloca i32, align 4 110f02c4c87SAndrew Litteken %2 = alloca i32, align 4 111f02c4c87SAndrew Litteken %3 = alloca i32, align 4 112f02c4c87SAndrew Litteken %4 = alloca i32, align 4 113f02c4c87SAndrew Litteken %5 = alloca i32, align 4 114da839fffSNikita Popov store i32 6, ptr %0, align 4 115da839fffSNikita Popov store i32 1, ptr %1, align 4 116da839fffSNikita Popov store i32 2, ptr %2, align 4 117da839fffSNikita Popov store i32 3, ptr %3, align 4 118da839fffSNikita Popov store i32 4, ptr %4, align 4 119da839fffSNikita Popov store i32 5, ptr %5, align 4 120f02c4c87SAndrew Litteken ret void 121f02c4c87SAndrew Litteken} 122f02c4c87SAndrew Litteken 123f02c4c87SAndrew Littekendefine void @dog() { 124f02c4c87SAndrew Littekenentry: 125f02c4c87SAndrew Litteken %0 = alloca i32, align 4 126f02c4c87SAndrew Litteken %1 = alloca i32, align 4 127f02c4c87SAndrew Litteken %2 = alloca i32, align 4 128f02c4c87SAndrew Litteken %3 = alloca i32, align 4 129f02c4c87SAndrew Litteken %4 = alloca i32, align 4 130f02c4c87SAndrew Litteken %5 = alloca i32, align 4 131da839fffSNikita Popov store i32 6, ptr %0, align 4 132da839fffSNikita Popov store i32 1, ptr %1, align 4 133da839fffSNikita Popov store i32 2, ptr %2, align 4 134da839fffSNikita Popov store i32 3, ptr %3, align 4 135da839fffSNikita Popov store i32 4, ptr %4, align 4 136da839fffSNikita Popov store i32 5, ptr %5, align 4 137f02c4c87SAndrew Litteken ret void 138f02c4c87SAndrew Litteken} 139*e240e6b8SAndrew Litteken;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 140*e240e6b8SAndrew Litteken; CHECK: {{.*}} 141