In some rare cases, the register allocator can spill registers but end up not utilizi...
[llvm/msp430.git] / test / CodeGen / X86 / 2007-03-16-InlineAsm.ll
blobc98c89a537a3e98caaf4ea487cd5c3a18a5a4df1
1 ; RUN: llvm-as < %s | llc -march=x86
3 ; ModuleID = 'a.bc'
5 define i32 @foo(i32 %A, i32 %B) {
6 entry:
7         %A_addr = alloca i32            ; <i32*> [#uses=2]
8         %B_addr = alloca i32            ; <i32*> [#uses=1]
9         %retval = alloca i32, align 4           ; <i32*> [#uses=2]
10         %tmp = alloca i32, align 4              ; <i32*> [#uses=2]
11         %ret = alloca i32, align 4              ; <i32*> [#uses=2]
12         "alloca point" = bitcast i32 0 to i32           ; <i32> [#uses=0]
13         store i32 %A, i32* %A_addr
14         store i32 %B, i32* %B_addr
15         %tmp1 = load i32* %A_addr               ; <i32> [#uses=1]
16         %tmp2 = call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"( i32 7, i32 %tmp1 )               ; <i32> [#uses=1]
17         store i32 %tmp2, i32* %ret
18         %tmp3 = load i32* %ret          ; <i32> [#uses=1]
19         store i32 %tmp3, i32* %tmp
20         %tmp4 = load i32* %tmp          ; <i32> [#uses=1]
21         store i32 %tmp4, i32* %retval
22         br label %return
24 return:         ; preds = %entry
25         %retval5 = load i32* %retval            ; <i32> [#uses=1]
26         ret i32 %retval5