Dan Gohman | bcde172 | 2008-05-05 00:28:39 +0000 | [diff] [blame] | 1 | ; 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 Edwin | 613d7af | 2008-04-06 21:23:02 +0000 | [diff] [blame] | 3 | define i32 @test(i32 %a, i32 %b) nounwind { |
| 4 | entry: |
| 5 | %tmp1not = xor i32 %b, -2 |
| 6 | %tmp3 = and i32 %tmp1not, %a |
| 7 | %tmp4 = lshr i32 %tmp3, 1 |
| 8 | ret i32 %tmp4 |
| 9 | } |
| 10 | |
| 11 | define i32 @sum32(i32 %a, i32 %b) nounwind { |
| 12 | entry: |
| 13 | br label %bb |
| 14 | bb: |
| 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 |
| 23 | bb12: |
| 24 | ret i32 %tmp3 |
| 25 | } |
| 26 | |
| 27 | define i16 @sum16(i16 %a, i16 %b) nounwind { |
| 28 | entry: |
| 29 | br label %bb |
| 30 | bb: |
| 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 |
| 39 | bb12: |
| 40 | ret i16 %tmp3 |
| 41 | } |
| 42 | |
| 43 | define i8 @sum8(i8 %a, i8 %b) nounwind { |
| 44 | entry: |
| 45 | br label %bb |
| 46 | bb: |
| 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 |
| 55 | bb12: |
| 56 | ret i8 %tmp3 |
| 57 | } |
| 58 | |
Chris Lattner | 5bd2f73 | 2008-04-06 21:39:17 +0000 | [diff] [blame] | 59 | define i32 @test2(i32 %a, i32 %b) nounwind { |
Torok Edwin | 613d7af | 2008-04-06 21:23:02 +0000 | [diff] [blame] | 60 | entry: |
| 61 | br label %bb |
| 62 | bb: |
| 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 |
| 71 | bb12: |
| 72 | ret i32 %tmp3 |
| 73 | } |
Torok Edwin | 613d7af | 2008-04-06 21:23:02 +0000 | [diff] [blame] | 74 | |