Fix InstCombine/2007-10-31-StringCrash.ll by removing an obvious
[oota-llvm.git] / test / Transforms / InstCombine / 2006-12-08-Select-ICmp.ll
1 ; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep select
2 ; END.
3
4 target datalayout = "e-p:32:32"
5 target endian = little
6 target pointersize = 32
7 target triple = "i686-pc-linux-gnu"
8         %struct.point = type { int, int }
9
10 implementation   ; Functions:
11
12 int %visible(int %direction, long %p1.0, long %p2.0, long %p3.0) {
13 entry:
14         %p1_addr = alloca %struct.point         ; <%struct.point*> [#uses=2]
15         %p2_addr = alloca %struct.point         ; <%struct.point*> [#uses=2]
16         %p3_addr = alloca %struct.point         ; <%struct.point*> [#uses=2]
17         %tmp = bitcast %struct.point* %p1_addr to { long }*             ; <{ long }*> [#uses=1]
18         %tmp = getelementptr { long }* %tmp, int 0, uint 0              ; <long*> [#uses=1]
19         store long %p1.0, long* %tmp
20         %tmp1 = bitcast %struct.point* %p2_addr to { long }*            ; <{ long }*> [#uses=1]
21         %tmp2 = getelementptr { long }* %tmp1, int 0, uint 0            ; <long*> [#uses=1]
22         store long %p2.0, long* %tmp2
23         %tmp3 = bitcast %struct.point* %p3_addr to { long }*            ; <{ long }*> [#uses=1]
24         %tmp4 = getelementptr { long }* %tmp3, int 0, uint 0            ; <long*> [#uses=1]
25         store long %p3.0, long* %tmp4
26         %tmp = seteq int %direction, 0          ; <bool> [#uses=1]
27         %tmp5 = bitcast %struct.point* %p1_addr to { long }*            ; <{ long }*> [#uses=1]
28         %tmp6 = getelementptr { long }* %tmp5, int 0, uint 0            ; <long*> [#uses=1]
29         %tmp = load long* %tmp6         ; <long> [#uses=1]
30         %tmp7 = bitcast %struct.point* %p2_addr to { long }*            ; <{ long }*> [#uses=1]
31         %tmp8 = getelementptr { long }* %tmp7, int 0, uint 0            ; <long*> [#uses=1]
32         %tmp9 = load long* %tmp8                ; <long> [#uses=1]
33         %tmp10 = bitcast %struct.point* %p3_addr to { long }*           ; <{ long }*> [#uses=1]
34         %tmp11 = getelementptr { long }* %tmp10, int 0, uint 0          ; <long*> [#uses=1]
35         %tmp12 = load long* %tmp11              ; <long> [#uses=1]
36         %tmp13 = call int %determinant( long %tmp, long %tmp9, long %tmp12 )            ; <int> [#uses=2]
37         %tmp14 = setlt int %tmp13, 0            ; <bool> [#uses=1]
38         %tmp26 = setgt int %tmp13, 0            ; <bool> [#uses=1]
39         %retval.0.in = select bool %tmp, bool %tmp14, bool %tmp26               ; <bool> [#uses=1]
40         %retval.0 = zext bool %retval.0.in to int               ; <int> [#uses=1]
41         ret int %retval.0
42 }
43
44 declare int %determinant(long, long, long)