Fixed some bugs in register stack pass.
[llvm/zpu.git] / test / CodeGen / X86 / fold-and-shift.ll
blob9f79f7723b33dcdcbc043de71fff979413020489
1 ; RUN: llc < %s -march=x86 | not grep and
3 define i32 @t1(i8* %X, i32 %i) {
4 entry:
5         %tmp2 = shl i32 %i, 2           ; <i32> [#uses=1]
6         %tmp4 = and i32 %tmp2, 1020             ; <i32> [#uses=1]
7         %tmp7 = getelementptr i8* %X, i32 %tmp4         ; <i8*> [#uses=1]
8         %tmp78 = bitcast i8* %tmp7 to i32*              ; <i32*> [#uses=1]
9         %tmp9 = load i32* %tmp78, align 4               ; <i32> [#uses=1]
10         ret i32 %tmp9
13 define i32 @t2(i16* %X, i32 %i) {
14 entry:
15         %tmp2 = shl i32 %i, 1           ; <i32> [#uses=1]
16         %tmp4 = and i32 %tmp2, 131070           ; <i32> [#uses=1]
17         %tmp7 = getelementptr i16* %X, i32 %tmp4                ; <i16*> [#uses=1]
18         %tmp78 = bitcast i16* %tmp7 to i32*             ; <i32*> [#uses=1]
19         %tmp9 = load i32* %tmp78, align 4               ; <i32> [#uses=1]
20         ret i32 %tmp9