blob: ca134fa9be4c3efd65a87f8eaded5666775fe302 [file] [log] [blame]
Dan Gohmanc8054d92009-09-09 00:09:15 +00001; RUN: llc < %s -march=ppc32 -mtriple=powerpc-apple-darwin8 | \
Hal Finkel7c5cb062015-04-23 18:30:38 +00002; RUN: grep cntlz
Bill Wendlinge21237e2007-01-16 03:42:04 +00003
Chris Lattner774a88a2009-08-12 05:44:03 +00004define i32 @foo() nounwind {
Bill Wendlinge21237e2007-01-16 03:42:04 +00005entry:
6 %retval = alloca i32, align 4 ; <i32*> [#uses=2]
Reid Spenceraf6a4082007-01-30 16:16:01 +00007 %temp = alloca i32, align 4 ; <i32*> [#uses=2]
Bill Wendlinge21237e2007-01-16 03:42:04 +00008 %ctz_x = alloca i32, align 4 ; <i32*> [#uses=3]
9 %ctz_c = alloca i32, align 4 ; <i32*> [#uses=2]
Bill Wendlinge21237e2007-01-16 03:42:04 +000010 store i32 61440, i32* %ctz_x
David Blaikiea79ac142015-02-27 21:17:42 +000011 %tmp = load i32, i32* %ctz_x ; <i32> [#uses=1]
Bill Wendlinge21237e2007-01-16 03:42:04 +000012 %tmp1 = sub i32 0, %tmp ; <i32> [#uses=1]
David Blaikiea79ac142015-02-27 21:17:42 +000013 %tmp2 = load i32, i32* %ctz_x ; <i32> [#uses=1]
Bill Wendlinge21237e2007-01-16 03:42:04 +000014 %tmp3 = and i32 %tmp1, %tmp2 ; <i32> [#uses=1]
15 %tmp4 = call i32 asm "$(cntlz$|cntlzw$) $0,$1", "=r,r,~{dirflag},~{fpsr},~{flags}"( i32 %tmp3 ) ; <i32> [#uses=1]
16 store i32 %tmp4, i32* %ctz_c
David Blaikiea79ac142015-02-27 21:17:42 +000017 %tmp5 = load i32, i32* %ctz_c ; <i32> [#uses=1]
Reid Spenceraf6a4082007-01-30 16:16:01 +000018 store i32 %tmp5, i32* %temp
David Blaikiea79ac142015-02-27 21:17:42 +000019 %tmp6 = load i32, i32* %temp ; <i32> [#uses=1]
Bill Wendlinge21237e2007-01-16 03:42:04 +000020 store i32 %tmp6, i32* %retval
21 br label %return
22
23return: ; preds = %entry
David Blaikiea79ac142015-02-27 21:17:42 +000024 %retval2 = load i32, i32* %retval ; <i32> [#uses=1]
Reid Spenceraf6a4082007-01-30 16:16:01 +000025 ret i32 %retval2
Bill Wendlinge21237e2007-01-16 03:42:04 +000026}