[InstCombine] transform more extract/insert pairs into shuffles (PR2109)
[oota-llvm.git] / test / Transforms / InstCombine / bitcast-vec-canon.ll
index d27765e89424f3a63f6941f833a48127032e9fab..97145221099ec27c13ddee51addd347c4971eee9 100644 (file)
@@ -1,22 +1,41 @@
-; RUN: opt < %s -instcombine -S | grep element | count 4
+; RUN: opt < %s -instcombine -S | FileCheck %s
 
 define double @a(<1 x i64> %y) {
   %c = bitcast <1 x i64> %y to double
-  ret double %c 
+  ret double %c
+; CHECK-LABEL: @a(
+; CHECK-NEXT:  bitcast <1 x i64> %y to <1 x double>
+; CHECK-NEXT:  extractelement <1 x double> {{.*}}, i32 0
+; CHECK-NEXT:  ret double
 }
 
 define i64 @b(<1 x i64> %y) {
   %c = bitcast <1 x i64> %y to i64
-  ret i64 %c 
+  ret i64 %c
+
+; CHECK-LABEL: @b(
+; CHECK-NEXT:  extractelement <1 x i64> %y, i32 0
+; CHECK-NEXT:  ret i64
 }
 
 define <1 x i64> @c(double %y) {
   %c = bitcast double %y to <1 x i64>
   ret <1 x i64> %c
+
+; CHECK-LABEL: @c(
+; CHECK-NEXT:  bitcast double %y to i64
+; CHECK-NEXT:  insertelement <1 x i64> undef, i64 {{.*}}, i32 0
+; CHECK-NEXT:  ret <1 x i64>
 }
 
 define <1 x i64> @d(i64 %y) {
   %c = bitcast i64 %y to <1 x i64>
   ret <1 x i64> %c
+
+; CHECK-LABEL: @d(
+; CHECK-NEXT:  insertelement <1 x i64> undef, i64 %y, i32 0
+; CHECK-NEXT:  ret <1 x i64>
 }
 
+