1 ; RUN: llvm-dis < %s.bc| FileCheck %s
2 ; RUN: verify-uselistorder < %s.bc
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
8 define void @add(i1 %x1, i8 %x2 ,i16 %x3, i32 %x4, i64 %x5){
10 ; CHECK: %res1 = add i1 %x1, %x1
11 %res1 = add i1 %x1, %x1
13 ; CHECK-NEXT: %res2 = add i8 %x2, %x2
14 %res2 = add i8 %x2, %x2
16 ; CHECK-NEXT: %res3 = add i16 %x3, %x3
17 %res3 = add i16 %x3, %x3
19 ; CHECK-NEXT: %res4 = add i32 %x4, %x4
20 %res4 = add i32 %x4, %x4
22 ; CHECK-NEXT: %res5 = add i64 %x5, %x5
23 %res5 = add i64 %x5, %x5
25 ; CHECK: %res6 = add nuw i1 %x1, %x1
26 %res6 = add nuw i1 %x1, %x1
28 ; CHECK: %res7 = add nsw i1 %x1, %x1
29 %res7 = add nsw i1 %x1, %x1
31 ; CHECK: %res8 = add nuw nsw i1 %x1, %x1
32 %res8 = add nuw nsw i1 %x1, %x1
37 define void @addvec8NuwNsw(<2 x i8> %x1, <3 x i8> %x2 ,<4 x i8> %x3, <8 x i8> %x4, <16 x i8> %x5){
39 ; CHECK: %res1 = add nuw nsw <2 x i8> %x1, %x1
40 %res1 = add nuw nsw <2 x i8> %x1, %x1
42 ; CHECK-NEXT: %res2 = add nuw nsw <3 x i8> %x2, %x2
43 %res2 = add nuw nsw <3 x i8> %x2, %x2
45 ; CHECK-NEXT: %res3 = add nuw nsw <4 x i8> %x3, %x3
46 %res3 = add nuw nsw <4 x i8> %x3, %x3
48 ; CHECK-NEXT: %res4 = add nuw nsw <8 x i8> %x4, %x4
49 %res4 = add nuw nsw <8 x i8> %x4, %x4
51 ; CHECK-NEXT: %res5 = add nuw nsw <16 x i8> %x5, %x5
52 %res5 = add nuw nsw <16 x i8> %x5, %x5
57 define void @addvec16NuwNsw(<2 x i16> %x1, <3 x i16> %x2 ,<4 x i16> %x3, <8 x i16> %x4, <16 x i16> %x5){
59 ; CHECK: %res1 = add nuw nsw <2 x i16> %x1, %x1
60 %res1 = add nuw nsw <2 x i16> %x1, %x1
62 ; CHECK-NEXT: %res2 = add nuw nsw <3 x i16> %x2, %x2
63 %res2 = add nuw nsw <3 x i16> %x2, %x2
65 ; CHECK-NEXT: %res3 = add nuw nsw <4 x i16> %x3, %x3
66 %res3 = add nuw nsw <4 x i16> %x3, %x3
68 ; CHECK-NEXT: %res4 = add nuw nsw <8 x i16> %x4, %x4
69 %res4 = add nuw nsw <8 x i16> %x4, %x4
71 ; CHECK-NEXT: %res5 = add nuw nsw <16 x i16> %x5, %x5
72 %res5 = add nuw nsw <16 x i16> %x5, %x5
77 define void @addvec32NuwNsw(<2 x i32> %x1, <3 x i32> %x2 ,<4 x i32> %x3, <8 x i32> %x4, <16 x i32> %x5){
79 ; CHECK: %res1 = add nuw nsw <2 x i32> %x1, %x1
80 %res1 = add nuw nsw <2 x i32> %x1, %x1
82 ; CHECK-NEXT: %res2 = add nuw nsw <3 x i32> %x2, %x2
83 %res2 = add nuw nsw <3 x i32> %x2, %x2
85 ; CHECK-NEXT: %res3 = add nuw nsw <4 x i32> %x3, %x3
86 %res3 = add nuw nsw <4 x i32> %x3, %x3
88 ; CHECK-NEXT: %res4 = add nuw nsw <8 x i32> %x4, %x4
89 %res4 = add nuw nsw <8 x i32> %x4, %x4
91 ; CHECK-NEXT: %res5 = add nuw nsw <16 x i32> %x5, %x5
92 %res5 = add nuw nsw <16 x i32> %x5, %x5
97 define void @addvec64NuwNsw(<2 x i64> %x1, <3 x i64> %x2 ,<4 x i64> %x3, <8 x i64> %x4, <16 x i64> %x5){
99 ; CHECK: %res1 = add nuw nsw <2 x i64> %x1, %x1
100 %res1 = add nuw nsw <2 x i64> %x1, %x1
102 ; CHECK-NEXT: %res2 = add nuw nsw <3 x i64> %x2, %x2
103 %res2 = add nuw nsw <3 x i64> %x2, %x2
105 ; CHECK-NEXT: %res3 = add nuw nsw <4 x i64> %x3, %x3
106 %res3 = add nuw nsw <4 x i64> %x3, %x3
108 ; CHECK-NEXT: %res4 = add nuw nsw <8 x i64> %x4, %x4
109 %res4 = add nuw nsw <8 x i64> %x4, %x4
111 ; CHECK-NEXT: %res5 = add nuw nsw <16 x i64> %x5, %x5
112 %res5 = add nuw nsw <16 x i64> %x5, %x5
117 define void @sub(i8 %x1){
119 ; CHECK: %res1 = sub i8 %x1, %x1
120 %res1 = sub i8 %x1, %x1
122 ; CHECK: %res2 = sub nuw i8 %x1, %x1
123 %res2 = sub nuw i8 %x1, %x1
125 ; CHECK: %res3 = sub nsw i8 %x1, %x1
126 %res3 = sub nsw i8 %x1, %x1
128 ; CHECK: %res4 = sub nuw nsw i8 %x1, %x1
129 %res4 = sub nuw nsw i8 %x1, %x1
134 define void @mul(i8 %x1){
136 ; CHECK: %res1 = mul i8 %x1, %x1
137 %res1 = mul i8 %x1, %x1
142 define void @udiv(i8 %x1){
144 ; CHECK: %res1 = udiv i8 %x1, %x1
145 %res1 = udiv i8 %x1, %x1
147 ; CHECK-NEXT: %res2 = udiv exact i8 %x1, %x1
148 %res2 = udiv exact i8 %x1, %x1
153 define void @sdiv(i8 %x1){
155 ; CHECK: %res1 = sdiv i8 %x1, %x1
156 %res1 = sdiv i8 %x1, %x1
158 ; CHECK-NEXT: %res2 = sdiv exact i8 %x1, %x1
159 %res2 = sdiv exact i8 %x1, %x1
164 define void @urem(i32 %x1){
166 ; CHECK: %res1 = urem i32 %x1, %x1
167 %res1 = urem i32 %x1, %x1
172 define void @srem(i32 %x1){
174 ; CHECK: %res1 = srem i32 %x1, %x1
175 %res1 = srem i32 %x1, %x1