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 7define void @icmp(i32 %x1, i32 %x2, i32* %ptr1, i32* %ptr2, <2 x i32> %vec1, <2 x i32> %vec2){ 8entry: 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 49define void @fcmp(float %x1, float %x2, <2 x float> %vec1, <2 x float> %vec2){ 50entry: 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 105declare i32 @printf(i8* noalias nocapture, ...) 106 107define void @call(i32 %x, i8* %msg ){ 108entry: 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 122define i32 @test(i32 %x){ 123entry: 124 125 ret i32 %x 126} 127