; RUN: llc < %s -fast-isel -fast-isel-abort=1 -verify-machineinstrs -mtriple=i686-- -mattr=sse2 -no-integrated-as
; RUN: llc < %s -fast-isel -fast-isel-abort=1 -verify-machineinstrs -mtriple=x86_64-apple-darwin10 -no-integrated-as

; This tests very minimal fast-isel functionality.

define i32* @foo(i32* %p, i32* %q, i32** %z) nounwind {
entry:
  %r = load i32, i32* %p
  %s = load i32, i32* %q
  %y = load i32*, i32** %z
  br label %fast

fast:
  %t0 = add i32 %r, %s
  %t1 = mul i32 %t0, %s
  %t2 = sub i32 %t1, %s
  %t3 = and i32 %t2, %s
  %t4 = xor i32 %t3, 3
  %t5 = xor i32 %t4, %s
  %t6 = add i32 %t5, 2
  %t7 = getelementptr i32, i32* %y, i32 1
  %t8 = getelementptr i32, i32* %t7, i32 %t6
  call void asm sideeffect "hello world", ""()
  br label %exit

exit:
  ret i32* %t8
}

define void @bar(double* %p, double* %q) nounwind {
entry:
  %r = load double, double* %p
  %s = load double, double* %q
  br label %fast

fast:
  %t0 = fadd double %r, %s
  %t1 = fmul double %t0, %s
  %t2 = fsub double %t1, %s
  %t3 = fadd double %t2, 707.0
  br label %exit

exit:
  store double %t3, double* %q
  ret void
}

define i32 @cast() nounwind {
entry:
	%tmp2 = bitcast i32 0 to i32
	ret i32 %tmp2
}

define void @ptrtoint_i1(i8* %p, i1* %q) nounwind {
  %t = ptrtoint i8* %p to i1
  store i1 %t, i1* %q
  ret void
}
define i8* @inttoptr_i1(i1 %p) nounwind {
  %t = inttoptr i1 %p to i8*
  ret i8* %t
}
define i32 @ptrtoint_i32(i8* %p) nounwind {
  %t = ptrtoint i8* %p to i32
  ret i32 %t
}
define i8* @inttoptr_i32(i32 %p) nounwind {
  %t = inttoptr i32 %p to i8*
  ret i8* %t
}

define void @trunc_i32_i8(i32 %x, i8* %p) nounwind  {
	%tmp1 = trunc i32 %x to i8
	store i8 %tmp1, i8* %p
	ret void
}

define void @trunc_i16_i8(i16 signext %x, i8* %p) nounwind  {
	%tmp1 = trunc i16 %x to i8
	store i8 %tmp1, i8* %p
	ret void
}

define void @shl_i8(i8 %a, i8 %c, i8* %p) nounwind {
  %tmp = shl i8 %a, %c
  store i8 %tmp, i8* %p
  ret void
}

define void @mul_i8(i8 %a, i8* %p) nounwind {
  %tmp = mul i8 %a, 17
  store i8 %tmp, i8* %p
  ret void
}

define void @load_store_i1(i1* %p, i1* %q) nounwind {
  %t = load i1, i1* %p
  store i1 %t, i1* %q
  ret void
}

@crash_test1x = external global <2 x i32>, align 8

define void @crash_test1() nounwind ssp {
  %tmp = load <2 x i32>, <2 x i32>* @crash_test1x, align 8
  %neg = xor <2 x i32> %tmp, <i32 -1, i32 -1>
  ret void
}

declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind

define i64* @life() nounwind {
  %a1 = alloca i64*, align 8
  %a2 = bitcast i64** %a1 to i8*
  call void @llvm.lifetime.start.p0i8(i64 -1, i8* %a2) nounwind      
  %a3 = load i64*, i64** %a1, align 8
  ret i64* %a3
}

declare void @llvm.donothing() readnone

; CHECK: donada
define void @donada() nounwind {
entry:
  call void @llvm.donothing()
  ret void
}
