blob: 1e89ca8e0530e183dcc5594808a18c373ef72922 [file] [log] [blame]
Dan Gohmanbcde1722008-05-05 00:28:39 +00001; RUN: llvm-as < %s | llc -march=x86 | grep {not\[lwb\]} | count 3
2; RUN: llvm-as < %s | llc -march=x86-64 | grep {not\[lwb\]} | count 4
Torok Edwin613d7af2008-04-06 21:23:02 +00003define i32 @test(i32 %a, i32 %b) nounwind {
4entry:
5 %tmp1not = xor i32 %b, -2
6 %tmp3 = and i32 %tmp1not, %a
7 %tmp4 = lshr i32 %tmp3, 1
8 ret i32 %tmp4
9}
10
11define i32 @sum32(i32 %a, i32 %b) nounwind {
12entry:
13 br label %bb
14bb:
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
23bb12:
24 ret i32 %tmp3
25}
26
27define i16 @sum16(i16 %a, i16 %b) nounwind {
28entry:
29 br label %bb
30bb:
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
39bb12:
40 ret i16 %tmp3
41}
42
43define i8 @sum8(i8 %a, i8 %b) nounwind {
44entry:
45 br label %bb
46bb:
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
55bb12:
56 ret i8 %tmp3
57}
58
Chris Lattner5bd2f732008-04-06 21:39:17 +000059define i32 @test2(i32 %a, i32 %b) nounwind {
Torok Edwin613d7af2008-04-06 21:23:02 +000060entry:
61 br label %bb
62bb:
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
71bb12:
72 ret i32 %tmp3
73}
Torok Edwin613d7af2008-04-06 21:23:02 +000074