| Reid Spencer | 0606d15 | 2006-12-09 05:13:01 +0000 | [diff] [blame] | 1 | ; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep select | 
| Reid Spencer | 91948d4 | 2007-04-14 20:13:02 +0000 | [diff] [blame] | 2 | ; END. | 
| Reid Spencer | ede8c3b | 2007-04-15 07:38:21 +0000 | [diff] [blame] | 3 |  | 
| Reid Spencer | 0606d15 | 2006-12-09 05:13:01 +0000 | [diff] [blame] | 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) |