Optimized FCMP_OEQ and FCMP_UNE for x86.
[oota-llvm.git] / test / CodeGen / X86 / local-liveness.ll
1 ; RUN: llvm-as < %s | llc -march=x86 -regalloc=local | grep {subl       %eax, %esi}
2
3 ; Local regalloc shouldn't assume that both the uses of the
4 ; sub instruction are kills, because one of them is tied
5 ; to an output. Previously, it was allocating both inputs
6 ; in the same register.
7
8 define i32 @func_3() nounwind {
9 entry:
10         %retval = alloca i32            ; <i32*> [#uses=2]
11         %g_323 = alloca i8              ; <i8*> [#uses=2]
12         %p_5 = alloca i64, align 8              ; <i64*> [#uses=2]
13         %0 = alloca i32         ; <i32*> [#uses=2]
14         %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
15         store i64 0, i64* %p_5, align 8
16         store i8 1, i8* %g_323, align 1
17         %1 = load i8* %g_323, align 1           ; <i8> [#uses=1]
18         %2 = sext i8 %1 to i64          ; <i64> [#uses=1]
19         %3 = load i64* %p_5, align 8            ; <i64> [#uses=1]
20         %4 = sub i64 %3, %2             ; <i64> [#uses=1]
21         %5 = icmp sge i64 %4, 0         ; <i1> [#uses=1]
22         %6 = zext i1 %5 to i32          ; <i32> [#uses=1]
23         store i32 %6, i32* %0, align 4
24         %7 = load i32* %0, align 4              ; <i32> [#uses=1]
25         store i32 %7, i32* %retval, align 4
26         br label %return
27
28 return:         ; preds = %entry
29         %retval1 = load i32* %retval            ; <i32> [#uses=1]
30         ret i32 %retval1
31 }