1 ; RUN: llvm-dis < %s.bc| FileCheck %s 2 ; RUN: verify-uselistorder < %s.bc 3 4 ; BinaryIntOperation.3.2.ll.bc was generated by passing this file to llvm-as-3.2. 5 ; The test checks that LLVM does not misread binary integer instructions from 6 ; older bitcode files. 7 8 define void @add(i1 %x1, i8 %x2 ,i16 %x3, i32 %x4, i64 %x5){ 9 entry: 10 ; CHECK: %res1 = add i1 %x1, %x1 11 %res1 = add i1 %x1, %x1 12 13 ; CHECK-NEXT: %res2 = add i8 %x2, %x2 14 %res2 = add i8 %x2, %x2 15 16 ; CHECK-NEXT: %res3 = add i16 %x3, %x3 17 %res3 = add i16 %x3, %x3 18 19 ; CHECK-NEXT: %res4 = add i32 %x4, %x4 20 %res4 = add i32 %x4, %x4 21 22 ; CHECK-NEXT: %res5 = add i64 %x5, %x5 23 %res5 = add i64 %x5, %x5 24 25 ; CHECK: %res6 = add nuw i1 %x1, %x1 26 %res6 = add nuw i1 %x1, %x1 27 28 ; CHECK: %res7 = add nsw i1 %x1, %x1 29 %res7 = add nsw i1 %x1, %x1 30 31 ; CHECK: %res8 = add nuw nsw i1 %x1, %x1 32 %res8 = add nuw nsw i1 %x1, %x1 33 34 ret void 35 } 36 37 define void @addvec8NuwNsw(<2 x i8> %x1, <3 x i8> %x2 ,<4 x i8> %x3, <8 x i8> %x4, <16 x i8> %x5){ 38 entry: 39 ; CHECK: %res1 = add nuw nsw <2 x i8> %x1, %x1 40 %res1 = add nuw nsw <2 x i8> %x1, %x1 41 42 ; CHECK-NEXT: %res2 = add nuw nsw <3 x i8> %x2, %x2 43 %res2 = add nuw nsw <3 x i8> %x2, %x2 44 45 ; CHECK-NEXT: %res3 = add nuw nsw <4 x i8> %x3, %x3 46 %res3 = add nuw nsw <4 x i8> %x3, %x3 47 48 ; CHECK-NEXT: %res4 = add nuw nsw <8 x i8> %x4, %x4 49 %res4 = add nuw nsw <8 x i8> %x4, %x4 50 51 ; CHECK-NEXT: %res5 = add nuw nsw <16 x i8> %x5, %x5 52 %res5 = add nuw nsw <16 x i8> %x5, %x5 53 54 ret void 55 } 56 57 define void @addvec16NuwNsw(<2 x i16> %x1, <3 x i16> %x2 ,<4 x i16> %x3, <8 x i16> %x4, <16 x i16> %x5){ 58 entry: 59 ; CHECK: %res1 = add nuw nsw <2 x i16> %x1, %x1 60 %res1 = add nuw nsw <2 x i16> %x1, %x1 61 62 ; CHECK-NEXT: %res2 = add nuw nsw <3 x i16> %x2, %x2 63 %res2 = add nuw nsw <3 x i16> %x2, %x2 64 65 ; CHECK-NEXT: %res3 = add nuw nsw <4 x i16> %x3, %x3 66 %res3 = add nuw nsw <4 x i16> %x3, %x3 67 68 ; CHECK-NEXT: %res4 = add nuw nsw <8 x i16> %x4, %x4 69 %res4 = add nuw nsw <8 x i16> %x4, %x4 70 71 ; CHECK-NEXT: %res5 = add nuw nsw <16 x i16> %x5, %x5 72 %res5 = add nuw nsw <16 x i16> %x5, %x5 73 74 ret void 75 } 76 77 define void @addvec32NuwNsw(<2 x i32> %x1, <3 x i32> %x2 ,<4 x i32> %x3, <8 x i32> %x4, <16 x i32> %x5){ 78 entry: 79 ; CHECK: %res1 = add nuw nsw <2 x i32> %x1, %x1 80 %res1 = add nuw nsw <2 x i32> %x1, %x1 81 82 ; CHECK-NEXT: %res2 = add nuw nsw <3 x i32> %x2, %x2 83 %res2 = add nuw nsw <3 x i32> %x2, %x2 84 85 ; CHECK-NEXT: %res3 = add nuw nsw <4 x i32> %x3, %x3 86 %res3 = add nuw nsw <4 x i32> %x3, %x3 87 88 ; CHECK-NEXT: %res4 = add nuw nsw <8 x i32> %x4, %x4 89 %res4 = add nuw nsw <8 x i32> %x4, %x4 90 91 ; CHECK-NEXT: %res5 = add nuw nsw <16 x i32> %x5, %x5 92 %res5 = add nuw nsw <16 x i32> %x5, %x5 93 94 ret void 95 } 96 97 define void @addvec64NuwNsw(<2 x i64> %x1, <3 x i64> %x2 ,<4 x i64> %x3, <8 x i64> %x4, <16 x i64> %x5){ 98 entry: 99 ; CHECK: %res1 = add nuw nsw <2 x i64> %x1, %x1 100 %res1 = add nuw nsw <2 x i64> %x1, %x1 101 102 ; CHECK-NEXT: %res2 = add nuw nsw <3 x i64> %x2, %x2 103 %res2 = add nuw nsw <3 x i64> %x2, %x2 104 105 ; CHECK-NEXT: %res3 = add nuw nsw <4 x i64> %x3, %x3 106 %res3 = add nuw nsw <4 x i64> %x3, %x3 107 108 ; CHECK-NEXT: %res4 = add nuw nsw <8 x i64> %x4, %x4 109 %res4 = add nuw nsw <8 x i64> %x4, %x4 110 111 ; CHECK-NEXT: %res5 = add nuw nsw <16 x i64> %x5, %x5 112 %res5 = add nuw nsw <16 x i64> %x5, %x5 113 114 ret void 115 } 116 117 define void @sub(i8 %x1){ 118 entry: 119 ; CHECK: %res1 = sub i8 %x1, %x1 120 %res1 = sub i8 %x1, %x1 121 122 ; CHECK: %res2 = sub nuw i8 %x1, %x1 123 %res2 = sub nuw i8 %x1, %x1 124 125 ; CHECK: %res3 = sub nsw i8 %x1, %x1 126 %res3 = sub nsw i8 %x1, %x1 127 128 ; CHECK: %res4 = sub nuw nsw i8 %x1, %x1 129 %res4 = sub nuw nsw i8 %x1, %x1 130 131 ret void 132 } 133 134 define void @mul(i8 %x1){ 135 entry: 136 ; CHECK: %res1 = mul i8 %x1, %x1 137 %res1 = mul i8 %x1, %x1 138 139 ret void 140 } 141 142 define void @udiv(i8 %x1){ 143 entry: 144 ; CHECK: %res1 = udiv i8 %x1, %x1 145 %res1 = udiv i8 %x1, %x1 146 147 ; CHECK-NEXT: %res2 = udiv exact i8 %x1, %x1 148 %res2 = udiv exact i8 %x1, %x1 149 150 ret void 151 } 152 153 define void @sdiv(i8 %x1){ 154 entry: 155 ; CHECK: %res1 = sdiv i8 %x1, %x1 156 %res1 = sdiv i8 %x1, %x1 157 158 ; CHECK-NEXT: %res2 = sdiv exact i8 %x1, %x1 159 %res2 = sdiv exact i8 %x1, %x1 160 161 ret void 162 } 163 164 define void @urem(i32 %x1){ 165 entry: 166 ; CHECK: %res1 = urem i32 %x1, %x1 167 %res1 = urem i32 %x1, %x1 168 169 ret void 170 } 171 172 define void @srem(i32 %x1){ 173 entry: 174 ; CHECK: %res1 = srem i32 %x1, %x1 175 %res1 = srem i32 %x1, %x1 176 177 ret void 178 } 179