Add testcase for r63142.
[oota-llvm.git] / test / CodeGen / X86 / shift-folding.ll
index 19bf4ee6480c80f1d133d0d53da3d2382dabfff1..d26823220ff85c405bfe4b77b75c35949429b41c 100644 (file)
@@ -1,20 +1,23 @@
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | \
+; RUN: llvm-as < %s | llc -march=x86 | \
 ; RUN:   grep {s\[ah\]\[rl\]l} | count 1
 
-int* %test1(int *%P, uint %X) {
-       %Y = shr uint %X, ubyte 2
-       %P2 = getelementptr int* %P, uint %Y
-       ret int* %P2
+define i32* @test1(i32* %P, i32 %X) {
+        %Y = lshr i32 %X, 2             ; <i32> [#uses=1]
+        %gep.upgrd.1 = zext i32 %Y to i64               ; <i64> [#uses=1]
+        %P2 = getelementptr i32* %P, i64 %gep.upgrd.1           ; <i32*> [#uses=1]
+        ret i32* %P2
 }
 
-int* %test2(int *%P, uint %X) {
-       %Y = shl uint %X, ubyte 2
-       %P2 = getelementptr int* %P, uint %Y
-       ret int* %P2
+define i32* @test2(i32* %P, i32 %X) {
+        %Y = shl i32 %X, 2              ; <i32> [#uses=1]
+        %gep.upgrd.2 = zext i32 %Y to i64               ; <i64> [#uses=1]
+        %P2 = getelementptr i32* %P, i64 %gep.upgrd.2           ; <i32*> [#uses=1]
+        ret i32* %P2
 }
 
-int* %test3(int *%P, int %X) {
-       %Y = shr int %X, ubyte 2
-       %P2 = getelementptr int* %P, int %Y
-       ret int* %P2
+define i32* @test3(i32* %P, i32 %X) {
+        %Y = ashr i32 %X, 2             ; <i32> [#uses=1]
+        %P2 = getelementptr i32* %P, i32 %Y             ; <i32*> [#uses=1]
+        ret i32* %P2
 }
+