Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 1 | ; RUN: llvm-as < %s | llc -march=x86 |
| 2 | |
| 3 | ; ModuleID = 'a.bc' |
| 4 | |
| 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 |
| 23 | |
| 24 | return: ; preds = %entry |
| 25 | %retval5 = load i32* %retval ; <i32> [#uses=1] |
| 26 | ret i32 %retval5 |
| 27 | } |