Craig Topper | 79dd1bf | 2015-10-06 02:50:24 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -O3 -march=x86-64 |FileCheck %s |
| 2 | define i64 @foo(i1 %z, i64 %data1, i64 %data2) |
| 3 | { |
| 4 | ; If constant 4294967294 is hoisted to a variable, then we won't be able to use |
| 5 | ; the implicit zero extension of 32-bit operations to handle the AND. |
| 6 | entry: |
| 7 | %val1 = and i64 %data1, 4294967294 |
| 8 | br i1 %z, label %End, label %L_val2 |
| 9 | |
| 10 | ; CHECK: andl $-2, {{.*}} |
| 11 | ; CHECK: andl $-2, {{.*}} |
| 12 | L_val2: |
| 13 | %val2 = and i64 %data2, 4294967294 |
| 14 | br label %End |
| 15 | |
| 16 | End: |
| 17 | %p1 = phi i64 [%val1,%entry], [%val2,%L_val2] |
| 18 | ret i64 %p1 |
| 19 | } |