1 ; RUN: llvm-dis < %s.bc| FileCheck %s 2 3 ; miscInstructions.3.2.ll.bc was generated by passing this file to llvm-as-3.2. 4 ; The test checks that LLVM does not misread miscellaneous instructions of 5 ; older bitcode files. 6 7 define void @icmp(i32 %x1, i32 %x2, i32* %ptr1, i32* %ptr2, <2 x i32> %vec1, <2 x i32> %vec2){ 8 entry: 9 ; CHECK: %res1 = icmp eq i32 %x1, %x2 10 %res1 = icmp eq i32 %x1, %x2 11 12 ; CHECK-NEXT: %res2 = icmp ne i32 %x1, %x2 13 %res2 = icmp ne i32 %x1, %x2 14 15 ; CHECK-NEXT: %res3 = icmp ugt i32 %x1, %x2 16 %res3 = icmp ugt i32 %x1, %x2 17 18 ; CHECK-NEXT: %res4 = icmp uge i32 %x1, %x2 19 %res4 = icmp uge i32 %x1, %x2 20 21 ; CHECK-NEXT: %res5 = icmp ult i32 %x1, %x2 22 %res5 = icmp ult i32 %x1, %x2 23 24 ; CHECK-NEXT: %res6 = icmp ule i32 %x1, %x2 25 %res6 = icmp ule i32 %x1, %x2 26 27 ; CHECK-NEXT: %res7 = icmp sgt i32 %x1, %x2 28 %res7 = icmp sgt i32 %x1, %x2 29 30 ; CHECK-NEXT: %res8 = icmp sge i32 %x1, %x2 31 %res8 = icmp sge i32 %x1, %x2 32 33 ; CHECK-NEXT: %res9 = icmp slt i32 %x1, %x2 34 %res9 = icmp slt i32 %x1, %x2 35 36 ; CHECK-NEXT: %res10 = icmp sle i32 %x1, %x2 37 %res10 = icmp sle i32 %x1, %x2 38 39 ; CHECK-NEXT: %res11 = icmp eq i32* %ptr1, %ptr2 40 %res11 = icmp eq i32* %ptr1, %ptr2 41 42 ; CHECK-NEXT: %res12 = icmp eq <2 x i32> %vec1, %vec2 43 %res12 = icmp eq <2 x i32> %vec1, %vec2 44 45 ret void 46 } 47 48 49 define void @fcmp(float %x1, float %x2, <2 x float> %vec1, <2 x float> %vec2){ 50 entry: 51 ; CHECK: %res1 = fcmp oeq float %x1, %x2 52 %res1 = fcmp oeq float %x1, %x2 53 54 ; CHECK-NEXT: %res2 = fcmp one float %x1, %x2 55 %res2 = fcmp one float %x1, %x2 56 57 ; CHECK-NEXT: %res3 = fcmp ugt float %x1, %x2 58 %res3 = fcmp ugt float %x1, %x2 59 60 ; CHECK-NEXT: %res4 = fcmp uge float %x1, %x2 61 %res4 = fcmp uge float %x1, %x2 62 63 ; CHECK-NEXT: %res5 = fcmp ult float %x1, %x2 64 %res5 = fcmp ult float %x1, %x2 65 66 ; CHECK-NEXT: %res6 = fcmp ule float %x1, %x2 67 %res6 = fcmp ule float %x1, %x2 68 69 ; CHECK-NEXT: %res7 = fcmp ogt float %x1, %x2 70 %res7 = fcmp ogt float %x1, %x2 71 72 ; CHECK-NEXT: %res8 = fcmp oge float %x1, %x2 73 %res8 = fcmp oge float %x1, %x2 74 75 ; CHECK-NEXT: %res9 = fcmp olt float %x1, %x2 76 %res9 = fcmp olt float %x1, %x2 77 78 ; CHECK-NEXT: %res10 = fcmp ole float %x1, %x2 79 %res10 = fcmp ole float %x1, %x2 80 81 ; CHECK-NEXT: %res11 = fcmp ord float %x1, %x2 82 %res11 = fcmp ord float %x1, %x2 83 84 ; CHECK-NEXT: %res12 = fcmp ueq float %x1, %x2 85 %res12 = fcmp ueq float %x1, %x2 86 87 ; CHECK-NEXT: %res13 = fcmp une float %x1, %x2 88 %res13 = fcmp une float %x1, %x2 89 90 ; CHECK-NEXT: %res14 = fcmp uno float %x1, %x2 91 %res14 = fcmp uno float %x1, %x2 92 93 ; CHECK-NEXT: %res15 = fcmp true float %x1, %x2 94 %res15 = fcmp true float %x1, %x2 95 96 ; CHECK-NEXT: %res16 = fcmp false float %x1, %x2 97 %res16 = fcmp false float %x1, %x2 98 99 ; CHECK-NEXT: %res17 = fcmp oeq <2 x float> %vec1, %vec2 100 %res17 = fcmp oeq <2 x float> %vec1, %vec2 101 102 ret void 103 } 104 105 declare i32 @printf(i8* noalias nocapture, ...) 106 107 define void @call(i32 %x, i8* %msg ){ 108 entry: 109 110 ; CHECK: %res1 = call i32 @test(i32 %x) 111 %res1 = call i32 @test(i32 %x) 112 113 ; CHECK-NEXT: %res2 = tail call i32 @test(i32 %x) 114 %res2 = tail call i32 @test(i32 %x) 115 116 ; CHECK-NEXT: %res3 = call i32 (i8*, ...)* @printf(i8* %msg, i32 12, i8 42) 117 %res3 = call i32 (i8*, ...)* @printf(i8* %msg, i32 12, i8 42) 118 119 ret void 120 } 121 122 define i32 @test(i32 %x){ 123 entry: 124 125 ret i32 %x 126 } 127