1; RUN: llc < %s -fast-isel -fast-isel-abort=1 -verify-machineinstrs -mtriple=i686-- -mattr=sse2 -no-integrated-as 2; RUN: llc < %s -fast-isel -fast-isel-abort=1 -verify-machineinstrs -mtriple=x86_64-apple-darwin10 -no-integrated-as 3 4; This tests very minimal fast-isel functionality. 5 6define i32* @foo(i32* %p, i32* %q, i32** %z) nounwind { 7entry: 8 %r = load i32, i32* %p 9 %s = load i32, i32* %q 10 %y = load i32*, i32** %z 11 br label %fast 12 13fast: 14 %t0 = add i32 %r, %s 15 %t1 = mul i32 %t0, %s 16 %t2 = sub i32 %t1, %s 17 %t3 = and i32 %t2, %s 18 %t4 = xor i32 %t3, 3 19 %t5 = xor i32 %t4, %s 20 %t6 = add i32 %t5, 2 21 %t7 = getelementptr i32, i32* %y, i32 1 22 %t8 = getelementptr i32, i32* %t7, i32 %t6 23 call void asm sideeffect "hello world", ""() 24 br label %exit 25 26exit: 27 ret i32* %t8 28} 29 30define void @bar(double* %p, double* %q) nounwind { 31entry: 32 %r = load double, double* %p 33 %s = load double, double* %q 34 br label %fast 35 36fast: 37 %t0 = fadd double %r, %s 38 %t1 = fmul double %t0, %s 39 %t2 = fsub double %t1, %s 40 %t3 = fadd double %t2, 707.0 41 br label %exit 42 43exit: 44 store double %t3, double* %q 45 ret void 46} 47 48define i32 @cast() nounwind { 49entry: 50 %tmp2 = bitcast i32 0 to i32 51 ret i32 %tmp2 52} 53 54define void @ptrtoint_i1(i8* %p, i1* %q) nounwind { 55 %t = ptrtoint i8* %p to i1 56 store i1 %t, i1* %q 57 ret void 58} 59define i8* @inttoptr_i1(i1 %p) nounwind { 60 %t = inttoptr i1 %p to i8* 61 ret i8* %t 62} 63define i32 @ptrtoint_i32(i8* %p) nounwind { 64 %t = ptrtoint i8* %p to i32 65 ret i32 %t 66} 67define i8* @inttoptr_i32(i32 %p) nounwind { 68 %t = inttoptr i32 %p to i8* 69 ret i8* %t 70} 71 72define void @trunc_i32_i8(i32 %x, i8* %p) nounwind { 73 %tmp1 = trunc i32 %x to i8 74 store i8 %tmp1, i8* %p 75 ret void 76} 77 78define void @trunc_i16_i8(i16 signext %x, i8* %p) nounwind { 79 %tmp1 = trunc i16 %x to i8 80 store i8 %tmp1, i8* %p 81 ret void 82} 83 84define void @shl_i8(i8 %a, i8 %c, i8* %p) nounwind { 85 %tmp = shl i8 %a, %c 86 store i8 %tmp, i8* %p 87 ret void 88} 89 90define void @mul_i8(i8 %a, i8* %p) nounwind { 91 %tmp = mul i8 %a, 17 92 store i8 %tmp, i8* %p 93 ret void 94} 95 96define void @load_store_i1(i1* %p, i1* %q) nounwind { 97 %t = load i1, i1* %p 98 store i1 %t, i1* %q 99 ret void 100} 101 102@crash_test1x = external global <2 x i32>, align 8 103 104define void @crash_test1() nounwind ssp { 105 %tmp = load <2 x i32>, <2 x i32>* @crash_test1x, align 8 106 %neg = xor <2 x i32> %tmp, <i32 -1, i32 -1> 107 ret void 108} 109 110declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind 111 112define i64* @life() nounwind { 113 %a1 = alloca i64*, align 8 114 %a2 = bitcast i64** %a1 to i8* 115 call void @llvm.lifetime.start.p0i8(i64 -1, i8* %a2) nounwind 116 %a3 = load i64*, i64** %a1, align 8 117 ret i64* %a3 118} 119 120declare void @llvm.donothing() readnone 121 122; CHECK: donada 123define void @donada() nounwind { 124entry: 125 call void @llvm.donothing() 126 ret void 127} 128