Eliminate more redundant llvm-as calls.
[oota-llvm.git] / test / Transforms / InstCombine / trunc-mask-ext.ll
index 1499947cc072f21b9c75c497d0ca76fbec01df23..93e3753cf50234e760006330d2de0aa0392515d0 100644 (file)
@@ -1,8 +1,8 @@
-; RUN: llvm-as < %s | opt -instcombine | llvm-dis > %t
+; RUN: opt < %s -instcombine -S > %t
 ; RUN: not grep zext %t
 ; RUN: not grep sext %t
 
-; Instcombine should be able to eliminate both ext casts.
+; Instcombine should be able to eliminate all of these ext casts.
 
 declare void @use(i32)
 
@@ -21,3 +21,18 @@ define i64 @bar(i64 %a) {
   call void @use(i32 %b)
   ret i64 %d
 }
+define i64 @goo(i64 %a) {
+  %b = trunc i64 %a to i32
+  %c = and i32 %b, 8
+  %d = zext i32 %c to i64
+  call void @use(i32 %b)
+  ret i64 %d
+}
+define i64 @hoo(i64 %a) {
+  %b = trunc i64 %a to i32
+  %c = and i32 %b, 8
+  %x = xor i32 %c, 8
+  %d = zext i32 %x to i64
+  call void @use(i32 %b)
+  ret i64 %d
+}