CodeGen peephole: fold redundant phys reg copies
[oota-llvm.git] / test / CodeGen / X86 / shift-coalesce.ll
index 0945fe13ce30c4a066a879a4396cef3db817f1e6..dee7d373dceea2d35489bbfe88f40ab5c6e9d2d2 100644 (file)
@@ -1,11 +1,15 @@
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 -x86-asm-syntax=intel | grep 'shld.*CL' &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 -x86-asm-syntax=intel | not grep 'mov CL, BL'
+; RUN: llc < %s -march=x86 -x86-asm-syntax=intel | \
+; RUN:   grep "shld.*cl"
+; RUN: llc < %s -march=x86 -x86-asm-syntax=intel | \
+; RUN:   not grep "mov cl, bl"
 
 ; PR687
 
-ulong %foo(ulong %x, long* %X) {
-       %tmp.1 = load long* %X          ; <long> [#uses=1]
-       %tmp.3 = cast long %tmp.1 to ubyte              ; <ubyte> [#uses=1]
-       %tmp.4 = shl ulong %x, ubyte %tmp.3             ; <ulong> [#uses=1]
-       ret ulong %tmp.4
+define i64 @foo(i64 %x, i64* %X) {
+        %tmp.1 = load i64, i64* %X           ; <i64> [#uses=1]
+        %tmp.3 = trunc i64 %tmp.1 to i8         ; <i8> [#uses=1]
+        %shift.upgrd.1 = zext i8 %tmp.3 to i64          ; <i64> [#uses=1]
+        %tmp.4 = shl i64 %x, %shift.upgrd.1             ; <i64> [#uses=1]
+        ret i64 %tmp.4
 }
+