1 ; RUN: llvm-as < %s | llc -march=x86 | grep {not\[lwb\]} | count 4
2 ; RUN: llvm-as < %s | llc -march=x86-64 | grep {not\[lwb\]} | count 4
3 define i32 @test(i32 %a, i32 %b) nounwind {
5 %tmp1not = xor i32 %b, -2
6 %tmp3 = and i32 %tmp1not, %a
7 %tmp4 = lshr i32 %tmp3, 1
11 define i32 @sum32(i32 %a, i32 %b) nounwind {
15 %b_addr.0 = phi i32 [ %b, %entry ], [ %tmp8, %bb ]
16 %a_addr.0 = phi i32 [ %a, %entry ], [ %tmp3, %bb ]
17 %tmp3 = xor i32 %a_addr.0, %b_addr.0
18 %tmp4not = xor i32 %tmp3, 2147483647
19 %tmp6 = and i32 %tmp4not, %b_addr.0
20 %tmp8 = shl i32 %tmp6, 1
21 %tmp10 = icmp eq i32 %tmp8, 0
22 br i1 %tmp10, label %bb12, label %bb
27 define i16 @sum16(i16 %a, i16 %b) nounwind {
31 %b_addr.0 = phi i16 [ %b, %entry ], [ %tmp8, %bb ]
32 %a_addr.0 = phi i16 [ %a, %entry ], [ %tmp3, %bb ]
33 %tmp3 = xor i16 %a_addr.0, %b_addr.0
34 %tmp4not = xor i16 %tmp3, 32767
35 %tmp6 = and i16 %tmp4not, %b_addr.0
36 %tmp8 = shl i16 %tmp6, 1
37 %tmp10 = icmp eq i16 %tmp8, 0
38 br i1 %tmp10, label %bb12, label %bb
43 define i8 @sum8(i8 %a, i8 %b) nounwind {
47 %b_addr.0 = phi i8 [ %b, %entry ], [ %tmp8, %bb ]
48 %a_addr.0 = phi i8 [ %a, %entry ], [ %tmp3, %bb ]
49 %tmp3 = xor i8 %a_addr.0, %b_addr.0
50 %tmp4not = xor i8 %tmp3, 127
51 %tmp6 = and i8 %tmp4not, %b_addr.0
52 %tmp8 = shl i8 %tmp6, 1
53 %tmp10 = icmp eq i8 %tmp8, 0
54 br i1 %tmp10, label %bb12, label %bb
59 define i32 @test2(i32 %a, i32 %b) nounwind {
63 %b_addr.0 = phi i32 [ %b, %entry ], [ %tmp8, %bb ]
64 %a_addr.0 = phi i32 [ %a, %entry ], [ %tmp3, %bb ]
65 %tmp3 = xor i32 %a_addr.0, %b_addr.0
66 %tmp4not = xor i32 %tmp3, 2147483646
67 %tmp6 = and i32 %tmp4not, %b_addr.0
68 %tmp8 = shl i32 %tmp6, 1
69 %tmp10 = icmp eq i32 %tmp8, 0
70 br i1 %tmp10, label %bb12, label %bb