Index: test/Transforms/NaCl/vector-canonicalization-shuffles.ll |
diff --git a/test/Transforms/NaCl/vector-canonicalization-shuffles.ll b/test/Transforms/NaCl/vector-canonicalization-shuffles.ll |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bc68d1bf377862e942a33ac6baab8572d58dfebe |
--- /dev/null |
+++ b/test/Transforms/NaCl/vector-canonicalization-shuffles.ll |
@@ -0,0 +1,6390 @@ |
+; RUN: opt -S -pnacl-vector-canonicalization %s | FileCheck %s |
+ |
+; Auto-generated tests for shuffle operations. |
+ |
+target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-p:32:32:32-v128:32:128" |
+ |
+define <2 x i32> @shuffle_2xi32_to_2xi32_0(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <2 x i32> <i32 1, i32 1> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_2xi32_0(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_2xi32_to_2xi32_1(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <2 x i32> <i32 2, i32 1> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_2xi32_1(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_2xi32_to_2xi32_2(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <2 x i32> <i32 0, i32 1> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_2xi32_2(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: ret <4 x i32> %0 |
+ |
+define <2 x i32> @shuffle_2xi32_to_2xi32_3(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <2 x i32> <i32 0, i32 2> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_2xi32_3(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_2xi32_to_2xi32_4(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <2 x i32> <i32 1, i32 0> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_2xi32_4(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_2xi32_to_2xi32_5(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <2 x i32> <i32 2, i32 0> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_2xi32_5(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_2xi32_to_2xi32_6(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <2 x i32> <i32 1, i32 2> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_2xi32_6(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_2xi32_to_2xi32_7(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <2 x i32> <i32 1, i32 2> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_2xi32_7(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_2xi32_to_2xi32_8(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <2 x i32> <i32 2, i32 1> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_2xi32_8(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_2xi32_to_2xi32_9(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <2 x i32> <i32 0, i32 2> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_2xi32_9(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_2xi32_to_4xi32_0(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <4 x i32> <i32 2, i32 0, i32 1, i32 0> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_4xi32_0(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 4, i32 5, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_2xi32_to_4xi32_1(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <4 x i32> <i32 0, i32 1, i32 1, i32 1> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_4xi32_1(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: ret <4 x i32> %0 |
+ |
+define <4 x i32> @shuffle_2xi32_to_4xi32_2(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 1> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_4xi32_2(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 4, i32 1> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_2xi32_to_4xi32_3(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <4 x i32> <i32 2, i32 1, i32 0, i32 1> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_4xi32_3(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 5, i32 4, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_2xi32_to_4xi32_4(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <4 x i32> <i32 2, i32 1, i32 0, i32 1> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_4xi32_4(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 5, i32 4, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_2xi32_to_4xi32_5(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <4 x i32> <i32 0, i32 1, i32 0, i32 2> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_4xi32_5(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 0, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_2xi32_to_4xi32_6(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <4 x i32> <i32 2, i32 2, i32 2, i32 0> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_4xi32_6(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 0, i32 0, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_2xi32_to_4xi32_7(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <4 x i32> <i32 0, i32 2, i32 0, i32 0> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_4xi32_7(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_2xi32_to_4xi32_8(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <4 x i32> <i32 1, i32 0, i32 1, i32 2> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_4xi32_8(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 1, i32 0, i32 1, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_2xi32_to_4xi32_9(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <4 x i32> <i32 2, i32 0, i32 1, i32 1> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_4xi32_9(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 4, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <6 x i32> @shuffle_2xi32_to_6xi32_0(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <6 x i32> <i32 0, i32 1, i32 0, i32 0, i32 1, i32 1> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_6xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 0> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_2xi32_to_6xi32_1(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <6 x i32> <i32 2, i32 0, i32 0, i32 0, i32 1, i32 0> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_6xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_2xi32_to_6xi32_2(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <6 x i32> <i32 2, i32 1, i32 0, i32 1, i32 0, i32 0> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_6xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 5, i32 4, i32 5> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> zeroinitializer |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_2xi32_to_6xi32_3(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <6 x i32> <i32 2, i32 0, i32 2, i32 0, i32 0, i32 2> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_6xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 0, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_2xi32_to_6xi32_4(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <6 x i32> <i32 0, i32 0, i32 2, i32 1, i32 2, i32 1> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_6xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 0, i32 4, i32 1> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_2xi32_to_6xi32_5(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <6 x i32> <i32 2, i32 2, i32 2, i32 2, i32 0, i32 0> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_6xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> zeroinitializer |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> zeroinitializer |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_2xi32_to_6xi32_6(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <6 x i32> <i32 1, i32 0, i32 1, i32 1, i32 0, i32 2> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_6xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 1, i32 1> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_2xi32_to_6xi32_7(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <6 x i32> <i32 1, i32 0, i32 2, i32 2, i32 2, i32 0> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_6xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 0, i32 4, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_2xi32_to_6xi32_8(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <6 x i32> <i32 2, i32 1, i32 1, i32 2, i32 0, i32 1> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_6xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 5, i32 5, i32 0> |
+; CHECK-NEXT: store <4 x i32> %1, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_2xi32_to_6xi32_9(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <6 x i32> <i32 0, i32 0, i32 1, i32 0, i32 2, i32 0> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_6xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 0, i32 0, i32 1, i32 0> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_2xi32_to_8xi32_0(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <8 x i32> <i32 1, i32 2, i32 0, i32 2, i32 0, i32 2, i32 2, i32 2> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_8xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 4, i32 0, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_2xi32_to_8xi32_1(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <8 x i32> <i32 2, i32 0, i32 1, i32 2, i32 2, i32 2, i32 2, i32 2> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_8xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 5, i32 0> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> zeroinitializer |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_2xi32_to_8xi32_2(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <8 x i32> <i32 2, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 2> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_8xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 5, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 0, i32 1, i32 4> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_2xi32_to_8xi32_3(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <8 x i32> <i32 1, i32 1, i32 2, i32 2, i32 2, i32 2, i32 0, i32 1> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_8xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 0, i32 4, i32 5> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_2xi32_to_8xi32_4(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <8 x i32> <i32 1, i32 0, i32 1, i32 2, i32 2, i32 1, i32 1, i32 0> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_8xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 0, i32 1, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 5, i32 5, i32 4> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_2xi32_to_8xi32_5(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <8 x i32> <i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_8xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 4, i32 0> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_2xi32_to_8xi32_6(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <8 x i32> <i32 2, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_8xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 5, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 0, i32 0> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_2xi32_to_8xi32_7(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <8 x i32> <i32 0, i32 1, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_8xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 1, i32 0> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_2xi32_to_8xi32_8(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <8 x i32> <i32 1, i32 2, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_8xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 4, i32 1, i32 0> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 0, i32 0> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_2xi32_to_8xi32_9(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <8 x i32> <i32 2, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_8xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 0, i32 1> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <12 x i32> @shuffle_2xi32_to_12xi32_0(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <12 x i32> <i32 2, i32 1, i32 2, i32 1, i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_12xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 5, i32 0, i32 5> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_2xi32_to_12xi32_1(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <12 x i32> <i32 2, i32 0, i32 1, i32 1, i32 2, i32 1, i32 2, i32 2, i32 2, i32 2, i32 0, i32 1> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_12xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 5, i32 5> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 5, i32 0, i32 0> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 0, i32 4, i32 5> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_2xi32_to_12xi32_2(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <12 x i32> <i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 2, i32 1, i32 2, i32 2> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_12xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> zeroinitializer |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 5, i32 0, i32 0> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_2xi32_to_12xi32_3(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <12 x i32> <i32 2, i32 1, i32 2, i32 1, i32 0, i32 0, i32 1, i32 2, i32 1, i32 1, i32 2, i32 1> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_12xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 5, i32 0, i32 5> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 0, i32 1, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 1, i32 4, i32 1> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_2xi32_to_12xi32_4(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <12 x i32> <i32 2, i32 2, i32 1, i32 2, i32 0, i32 0, i32 2, i32 2, i32 2, i32 2, i32 0, i32 2> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_12xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 0, i32 5, i32 0> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 0, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 0, i32 4, i32 0> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_2xi32_to_12xi32_5(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <12 x i32> <i32 2, i32 0, i32 0, i32 2, i32 1, i32 0, i32 1, i32 2, i32 2, i32 0, i32 0, i32 1> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_12xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 4, i32 0> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 0, i32 1, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 4, i32 5> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_2xi32_to_12xi32_6(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <12 x i32> <i32 1, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_12xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 1> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 0> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_2xi32_to_12xi32_7(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <12 x i32> <i32 0, i32 1, i32 0, i32 2, i32 1, i32 0, i32 1, i32 1, i32 0, i32 2, i32 0, i32 2> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_12xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 0, i32 4> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 1, i32 1> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 0, i32 4> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_2xi32_to_12xi32_8(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <12 x i32> <i32 1, i32 1, i32 1, i32 1, i32 0, i32 0, i32 0, i32 1, i32 1, i32 2, i32 1, i32 1> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_12xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 1> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_2xi32_to_12xi32_9(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <12 x i32> <i32 0, i32 0, i32 1, i32 2, i32 1, i32 2, i32 1, i32 0, i32 0, i32 2, i32 1, i32 1> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_12xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 0, i32 1, i32 4> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 4, i32 1, i32 0> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <16 x i32> @shuffle_2xi32_to_16xi32_0(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 0, i32 0, i32 2, i32 1, i32 1, i32 0, i32 1, i32 0> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_16xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 4, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 1, i32 0> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_2xi32_to_16xi32_1(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <16 x i32> <i32 0, i32 2, i32 1, i32 2, i32 0, i32 0, i32 2, i32 2, i32 0, i32 1, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_16xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 1, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 1, i32 0> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 0, i32 1> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_2xi32_to_16xi32_2(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <16 x i32> <i32 1, i32 2, i32 0, i32 1, i32 2, i32 2, i32 1, i32 2, i32 0, i32 0, i32 1, i32 1, i32 2, i32 1, i32 2, i32 0> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_16xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 0, i32 1> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 0, i32 5, i32 0> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 0, i32 0, i32 1, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 0, i32 4> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_2xi32_to_16xi32_3(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <16 x i32> <i32 2, i32 0, i32 2, i32 0, i32 1, i32 1, i32 0, i32 0, i32 2, i32 2, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_16xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 0, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 0, i32 0> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 0, i32 0, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 1> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_2xi32_to_16xi32_4(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <16 x i32> <i32 1, i32 0, i32 1, i32 0, i32 1, i32 2, i32 1, i32 2, i32 0, i32 1, i32 2, i32 1, i32 2, i32 0, i32 2, i32 0> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_16xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 1, i32 0> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 1, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 0, i32 4> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_2xi32_to_16xi32_5(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <16 x i32> <i32 1, i32 2, i32 0, i32 2, i32 0, i32 0, i32 0, i32 2, i32 2, i32 0, i32 1, i32 1, i32 0, i32 2, i32 2, i32 0> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_16xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 0, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 0, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 4, i32 0> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_2xi32_to_16xi32_6(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <16 x i32> <i32 0, i32 2, i32 0, i32 2, i32 2, i32 2, i32 1, i32 1, i32 0, i32 0, i32 0, i32 2, i32 1, i32 0, i32 0, i32 1> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_16xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 0, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 0, i32 5, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 0, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 1> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_2xi32_to_16xi32_7(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <16 x i32> <i32 0, i32 1, i32 2, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 0, i32 1, i32 1, i32 1, i32 2, i32 2, i32 1> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_16xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 1> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 0, i32 0, i32 1, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 4, i32 1> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_2xi32_to_16xi32_8(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <16 x i32> <i32 2, i32 0, i32 1, i32 1, i32 2, i32 1, i32 0, i32 2, i32 2, i32 0, i32 1, i32 1, i32 2, i32 1, i32 1, i32 0> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_16xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 5, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 4, i32 0> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 5, i32 4> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_2xi32_to_16xi32_9(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <16 x i32> <i32 0, i32 2, i32 1, i32 1, i32 0, i32 2, i32 1, i32 0, i32 1, i32 1, i32 2, i32 0, i32 0, i32 1, i32 1, i32 2> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_16xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 1, i32 0> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 1, i32 4, i32 0> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 1, i32 4> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <20 x i32> @shuffle_2xi32_to_20xi32_0(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <20 x i32> <i32 0, i32 1, i32 1, i32 2, i32 2, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0, i32 1, i32 1, i32 1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_20xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 1, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 5, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 4, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 0, i32 1> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 1> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_2xi32_to_20xi32_1(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <20 x i32> <i32 1, i32 2, i32 0, i32 2, i32 2, i32 1, i32 1, i32 1, i32 1, i32 2, i32 0, i32 2, i32 1, i32 0, i32 2, i32 0, i32 2, i32 0, i32 1, i32 1> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_20xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 0, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 0, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 0, i32 4, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_2xi32_to_20xi32_2(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <20 x i32> <i32 1, i32 2, i32 2, i32 1, i32 1, i32 1, i32 2, i32 2, i32 0, i32 2, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2, i32 2, i32 1, i32 1, i32 2> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_20xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 4, i32 1> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 1, i32 0, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 5, i32 0> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_2xi32_to_20xi32_3(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <20 x i32> <i32 1, i32 1, i32 1, i32 0, i32 1, i32 0, i32 2, i32 1, i32 2, i32 2, i32 2, i32 1, i32 0, i32 0, i32 2, i32 1, i32 1, i32 1, i32 2, i32 1> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_20xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 0> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 0, i32 4, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 0, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 0, i32 4, i32 1> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 1, i32 4, i32 1> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_2xi32_to_20xi32_4(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <20 x i32> <i32 2, i32 1, i32 0, i32 1, i32 1, i32 0, i32 2, i32 1, i32 0, i32 2, i32 1, i32 2, i32 0, i32 2, i32 0, i32 2, i32 1, i32 1, i32 1, i32 0> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_20xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 4, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 0, i32 4, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 4, i32 1, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 4, i32 0, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 0> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_2xi32_to_20xi32_5(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <20 x i32> <i32 2, i32 1, i32 0, i32 2, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1, i32 2, i32 2, i32 0, i32 1, i32 2, i32 1> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_20xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 4, i32 0> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 0, i32 1, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 1> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_2xi32_to_20xi32_6(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <20 x i32> <i32 2, i32 0, i32 1, i32 0, i32 2, i32 2, i32 0, i32 1, i32 1, i32 2, i32 2, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2, i32 1> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_20xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 5, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 4, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 4, i32 1> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 0, i32 0, i32 1, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 0, i32 4, i32 1> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_2xi32_to_20xi32_7(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <20 x i32> <i32 1, i32 2, i32 0, i32 1, i32 1, i32 1, i32 2, i32 2, i32 0, i32 1, i32 2, i32 2, i32 1, i32 1, i32 1, i32 0, i32 2, i32 2, i32 0, i32 2> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_20xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 0, i32 1> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 4, i32 0> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_2xi32_to_20xi32_8(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <20 x i32> <i32 1, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 2, i32 1, i32 2, i32 1, i32 1, i32 0, i32 0, i32 0, i32 1, i32 2, i32 1> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_20xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 0, i32 4, i32 0> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 1, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 0, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 1> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_2xi32_to_20xi32_9(<2 x i32>, <2 x i32>) { |
+ %3 = shufflevector <2 x i32> %0, <2 x i32> %1, <20 x i32> <i32 0, i32 1, i32 2, i32 1, i32 1, i32 0, i32 0, i32 0, i32 1, i32 2, i32 1, i32 1, i32 2, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0, i32 0> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_2xi32_to_20xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 1> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 5, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <2 x i32> @shuffle_4xi32_to_2xi32_0(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <2 x i32> <i32 6, i32 4> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_2xi32_0(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 2, i32 0, i32 0, i32 0> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_4xi32_to_2xi32_1(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <2 x i32> <i32 0, i32 5> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_2xi32_1(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_4xi32_to_2xi32_2(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <2 x i32> <i32 6, i32 4> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_2xi32_2(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 2, i32 0, i32 0, i32 0> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_4xi32_to_2xi32_3(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <2 x i32> <i32 5, i32 5> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_2xi32_3(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_4xi32_to_2xi32_4(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <2 x i32> <i32 3, i32 3> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_2xi32_4(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_4xi32_to_2xi32_5(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <2 x i32> <i32 2, i32 4> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_2xi32_5(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_4xi32_to_2xi32_6(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <2 x i32> <i32 1, i32 6> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_2xi32_6(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_4xi32_to_2xi32_7(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <2 x i32> <i32 0, i32 1> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_2xi32_7(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: ret <4 x i32> %0 |
+ |
+define <2 x i32> @shuffle_4xi32_to_2xi32_8(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <2 x i32> <i32 0, i32 4> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_2xi32_8(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <2 x i32> @shuffle_4xi32_to_2xi32_9(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <2 x i32> <i32 2, i32 5> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_2xi32_9(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_4xi32_to_4xi32_0(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 3, i32 6, i32 6, i32 1> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_4xi32_0(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 3, i32 6, i32 6, i32 1> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_4xi32_to_4xi32_1(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 3, i32 2, i32 3, i32 3> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_4xi32_1(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 3, i32 2, i32 3, i32 3> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_4xi32_to_4xi32_2(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 1, i32 4, i32 1, i32 4> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_4xi32_2(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 1, i32 4, i32 1, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_4xi32_to_4xi32_3(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 0, i32 5, i32 3, i32 5> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_4xi32_3(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 0, i32 5, i32 3, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_4xi32_to_4xi32_4(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 6, i32 1, i32 5, i32 0> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_4xi32_4(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 6, i32 1, i32 5, i32 0> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_4xi32_to_4xi32_5(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 1, i32 3, i32 5, i32 6> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_4xi32_5(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 1, i32 3, i32 5, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_4xi32_to_4xi32_6(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 6, i32 0, i32 0, i32 2> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_4xi32_6(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 6, i32 0, i32 0, i32 2> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_4xi32_to_4xi32_7(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 3, i32 2, i32 6, i32 3> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_4xi32_7(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 3, i32 2, i32 6, i32 3> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_4xi32_to_4xi32_8(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 3, i32 5, i32 3, i32 6> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_4xi32_8(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 3, i32 5, i32 3, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <4 x i32> @shuffle_4xi32_to_4xi32_9(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 1, i32 3, i32 0, i32 0> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_4xi32_9(<4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 1, i32 3, i32 0, i32 0> |
+; CHECK-NEXT: ret <4 x i32> %3 |
+ |
+define <6 x i32> @shuffle_4xi32_to_6xi32_0(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <6 x i32> <i32 0, i32 6, i32 2, i32 2, i32 4, i32 2> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_6xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 6, i32 2, i32 2> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_4xi32_to_6xi32_1(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <6 x i32> <i32 6, i32 2, i32 6, i32 3, i32 4, i32 0> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_6xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 2, i32 6, i32 2, i32 7> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_4xi32_to_6xi32_2(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <6 x i32> <i32 6, i32 3, i32 0, i32 6, i32 6, i32 0> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_6xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 2, i32 7, i32 4, i32 2> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_4xi32_to_6xi32_3(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <6 x i32> <i32 1, i32 2, i32 0, i32 0, i32 4, i32 4> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_6xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 1, i32 2, i32 0, i32 0> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> zeroinitializer |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_4xi32_to_6xi32_4(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <6 x i32> <i32 5, i32 6, i32 2, i32 0, i32 0, i32 3> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_6xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 2, i32 6, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 0, i32 3, i32 3, i32 3> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_4xi32_to_6xi32_5(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <6 x i32> <i32 6, i32 0, i32 5, i32 4, i32 0, i32 2> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_6xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 2, i32 4, i32 1, i32 0> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 0, i32 2, i32 2, i32 2> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_4xi32_to_6xi32_6(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <6 x i32> <i32 0, i32 3, i32 3, i32 1, i32 5, i32 4> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_6xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 0, i32 3, i32 3, i32 1> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_4xi32_to_6xi32_7(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <6 x i32> <i32 6, i32 0, i32 2, i32 2, i32 2, i32 5> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_6xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 2, i32 4, i32 6, i32 6> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_4xi32_to_6xi32_8(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <6 x i32> <i32 2, i32 5, i32 2, i32 6, i32 3, i32 4> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_6xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 2, i32 5, i32 2, i32 6> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <6 x i32> @shuffle_4xi32_to_6xi32_9(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <6 x i32> <i32 1, i32 0, i32 3, i32 5, i32 3, i32 1> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_6xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 0, i32 3, i32 5> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 3, i32 1, i32 1, i32 1> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_4xi32_to_8xi32_0(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <8 x i32> <i32 5, i32 2, i32 4, i32 1, i32 5, i32 3, i32 1, i32 2> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_8xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 6, i32 0, i32 5> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 7, i32 5, i32 6> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_4xi32_to_8xi32_1(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <8 x i32> <i32 1, i32 0, i32 6, i32 1, i32 4, i32 4, i32 6, i32 4> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_8xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 0, i32 6, i32 1> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 0, i32 0, i32 2, i32 0> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_4xi32_to_8xi32_2(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <8 x i32> <i32 0, i32 4, i32 4, i32 0, i32 2, i32 1, i32 1, i32 5> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_8xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 4, i32 0> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 2, i32 1, i32 1, i32 5> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_4xi32_to_8xi32_3(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <8 x i32> <i32 6, i32 6, i32 0, i32 0, i32 4, i32 6, i32 3, i32 6> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_8xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 2, i32 2, i32 4, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 2, i32 7, i32 2> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_4xi32_to_8xi32_4(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <8 x i32> <i32 5, i32 0, i32 5, i32 5, i32 5, i32 5, i32 0, i32 1> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_8xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 4, i32 5> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_4xi32_to_8xi32_5(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <8 x i32> <i32 5, i32 5, i32 4, i32 0, i32 2, i32 5, i32 3, i32 0> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_8xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 0, i32 4> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 2, i32 5, i32 3, i32 0> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_4xi32_to_8xi32_6(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <8 x i32> <i32 3, i32 5, i32 0, i32 6, i32 5, i32 6, i32 5, i32 3> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_8xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 3, i32 5, i32 0, i32 6> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 2, i32 1, i32 7> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_4xi32_to_8xi32_7(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <8 x i32> <i32 3, i32 5, i32 1, i32 2, i32 5, i32 1, i32 5, i32 0> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_8xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 3, i32 5, i32 1, i32 2> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 5, i32 1, i32 4> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_4xi32_to_8xi32_8(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <8 x i32> <i32 6, i32 5, i32 1, i32 6, i32 3, i32 5, i32 2, i32 5> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_8xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 2, i32 1, i32 5, i32 2> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 3, i32 5, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <8 x i32> @shuffle_4xi32_to_8xi32_9(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <8 x i32> <i32 3, i32 6, i32 3, i32 3, i32 5, i32 1, i32 5, i32 2> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_8xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %4 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 3, i32 6, i32 3, i32 3> |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 5, i32 1, i32 6> |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+ |
+define <12 x i32> @shuffle_4xi32_to_12xi32_0(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <12 x i32> <i32 5, i32 5, i32 4, i32 3, i32 0, i32 0, i32 3, i32 0, i32 6, i32 4, i32 0, i32 3> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_12xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 1, i32 0, i32 7> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 0, i32 0, i32 3, i32 0> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 2, i32 0, i32 4, i32 7> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_4xi32_to_12xi32_1(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <12 x i32> <i32 3, i32 1, i32 5, i32 4, i32 1, i32 5, i32 6, i32 2, i32 4, i32 5, i32 6, i32 5> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_12xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 3, i32 1, i32 5, i32 4> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 5, i32 6, i32 2> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 1> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_4xi32_to_12xi32_2(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <12 x i32> <i32 4, i32 4, i32 1, i32 0, i32 3, i32 5, i32 0, i32 4, i32 1, i32 3, i32 3, i32 4> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_12xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 0, i32 5, i32 4> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 3, i32 5, i32 0, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 3, i32 3, i32 4> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_4xi32_to_12xi32_3(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <12 x i32> <i32 5, i32 2, i32 3, i32 4, i32 2, i32 6, i32 3, i32 6, i32 5, i32 2, i32 5, i32 0> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_12xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 6, i32 7, i32 0> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 2, i32 6, i32 3, i32 6> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 6, i32 1, i32 4> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_4xi32_to_12xi32_4(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <12 x i32> <i32 1, i32 6, i32 5, i32 6, i32 2, i32 4, i32 3, i32 1, i32 2, i32 5, i32 5, i32 6> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_12xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 6, i32 5, i32 6> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 2, i32 4, i32 3, i32 1> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 2, i32 5, i32 5, i32 6> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_4xi32_to_12xi32_5(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <12 x i32> <i32 1, i32 1, i32 2, i32 1, i32 5, i32 3, i32 2, i32 6, i32 3, i32 2, i32 2, i32 1> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_12xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 2, i32 1> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 7, i32 6, i32 2> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 3, i32 2, i32 2, i32 1> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_4xi32_to_12xi32_6(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <12 x i32> <i32 1, i32 2, i32 6, i32 0, i32 2, i32 1, i32 1, i32 3, i32 0, i32 5, i32 2, i32 6> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_12xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 2, i32 6, i32 0> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 2, i32 1, i32 1, i32 3> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_4xi32_to_12xi32_7(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <12 x i32> <i32 3, i32 2, i32 1, i32 4, i32 1, i32 6, i32 4, i32 6, i32 5, i32 0, i32 3, i32 6> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_12xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 3, i32 2, i32 1, i32 4> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 6, i32 4, i32 6> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 4, i32 7, i32 2> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_4xi32_to_12xi32_8(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <12 x i32> <i32 0, i32 3, i32 1, i32 1, i32 4, i32 1, i32 2, i32 3, i32 0, i32 5, i32 5, i32 3> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_12xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 0, i32 3, i32 1, i32 1> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 5, i32 6, i32 7> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 5, i32 3> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <12 x i32> @shuffle_4xi32_to_12xi32_9(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <12 x i32> <i32 4, i32 0, i32 4, i32 2, i32 3, i32 0, i32 2, i32 2, i32 0, i32 4, i32 3, i32 4> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_12xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 0, i32 6> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 3, i32 0, i32 2, i32 2> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 3, i32 4> |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <16 x i32> @shuffle_4xi32_to_16xi32_0(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <16 x i32> <i32 0, i32 6, i32 5, i32 3, i32 0, i32 2, i32 4, i32 2, i32 3, i32 2, i32 2, i32 6, i32 5, i32 3, i32 2, i32 4> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_16xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 5, i32 3> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 2, i32 4, i32 2> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 3, i32 2, i32 2, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 1, i32 7, i32 6, i32 0> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_4xi32_to_16xi32_1(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <16 x i32> <i32 4, i32 0, i32 6, i32 2, i32 5, i32 6, i32 6, i32 0, i32 5, i32 3, i32 1, i32 1, i32 6, i32 0, i32 0, i32 4> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_16xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 2, i32 6> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 1, i32 2, i32 2, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 1, i32 7, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 4, i32 4, i32 0> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_4xi32_to_16xi32_2(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <16 x i32> <i32 1, i32 3, i32 4, i32 4, i32 4, i32 4, i32 1, i32 3, i32 2, i32 3, i32 5, i32 5, i32 2, i32 5, i32 4, i32 0> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_16xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 3, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 0, i32 5, i32 7> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 2, i32 3, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 2, i32 5, i32 4, i32 0> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_4xi32_to_16xi32_3(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <16 x i32> <i32 1, i32 2, i32 1, i32 5, i32 2, i32 2, i32 5, i32 0, i32 0, i32 0, i32 4, i32 2, i32 0, i32 1, i32 4, i32 2> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_16xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 2, i32 1, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 2, i32 2, i32 5, i32 0> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 4, i32 2> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 2> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_4xi32_to_16xi32_4(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <16 x i32> <i32 5, i32 3, i32 3, i32 4, i32 6, i32 3, i32 6, i32 1, i32 0, i32 6, i32 0, i32 6, i32 0, i32 1, i32 0, i32 3> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_16xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 1, i32 7, i32 7, i32 0> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 7, i32 2, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 0, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 3> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_4xi32_to_16xi32_5(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <16 x i32> <i32 6, i32 6, i32 6, i32 0, i32 0, i32 2, i32 5, i32 5, i32 5, i32 4, i32 0, i32 2, i32 1, i32 5, i32 2, i32 0> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_16xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 2, i32 2, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 2, i32 5, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 1, i32 0, i32 4, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 5, i32 2, i32 0> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_4xi32_to_16xi32_6(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <16 x i32> <i32 4, i32 2, i32 6, i32 2, i32 1, i32 3, i32 0, i32 4, i32 6, i32 4, i32 2, i32 6, i32 6, i32 5, i32 1, i32 2> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_16xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 6, i32 2, i32 6> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 3, i32 0, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 0, i32 6, i32 2> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 1, i32 5, i32 6> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_4xi32_to_16xi32_7(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <16 x i32> <i32 4, i32 6, i32 6, i32 6, i32 0, i32 1, i32 4, i32 3, i32 1, i32 3, i32 2, i32 1, i32 1, i32 2, i32 2, i32 2> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_16xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 0, i32 2, i32 2, i32 2> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 3> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 1, i32 3, i32 2, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 1, i32 2, i32 2, i32 2> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_4xi32_to_16xi32_8(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <16 x i32> <i32 0, i32 6, i32 1, i32 5, i32 0, i32 2, i32 1, i32 5, i32 0, i32 4, i32 2, i32 1, i32 4, i32 6, i32 6, i32 2> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_16xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 1, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 2, i32 1, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 2, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 2, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <16 x i32> @shuffle_4xi32_to_16xi32_9(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <16 x i32> <i32 5, i32 6, i32 0, i32 3, i32 6, i32 5, i32 6, i32 0, i32 6, i32 0, i32 5, i32 5, i32 2, i32 0, i32 3, i32 6> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_16xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 1, i32 2, i32 4, i32 7> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 2, i32 0, i32 3, i32 6> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <20 x i32> @shuffle_4xi32_to_20xi32_0(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <20 x i32> <i32 6, i32 1, i32 4, i32 6, i32 4, i32 2, i32 2, i32 3, i32 0, i32 4, i32 2, i32 1, i32 4, i32 4, i32 3, i32 4, i32 3, i32 1, i32 2, i32 1> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_20xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 2, i32 5, i32 0, i32 2> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 6, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 4, i32 2, i32 1> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 7, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 3, i32 1, i32 2, i32 1> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_4xi32_to_20xi32_1(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <20 x i32> <i32 1, i32 4, i32 6, i32 1, i32 2, i32 1, i32 5, i32 2, i32 5, i32 4, i32 1, i32 6, i32 4, i32 3, i32 4, i32 3, i32 6, i32 6, i32 6, i32 3> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_20xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 6, i32 1> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 1, i32 5, i32 2> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 0, i32 5, i32 2> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 7, i32 0, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 2, i32 2, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_4xi32_to_20xi32_2(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <20 x i32> <i32 6, i32 2, i32 2, i32 5, i32 6, i32 2, i32 3, i32 3, i32 2, i32 0, i32 3, i32 2, i32 0, i32 2, i32 4, i32 5, i32 1, i32 0, i32 3, i32 3> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_20xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 2, i32 6, i32 6, i32 1> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 2, i32 6, i32 7, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 2, i32 0, i32 3, i32 2> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 2, i32 4, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 3, i32 3> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_4xi32_to_20xi32_3(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <20 x i32> <i32 0, i32 0, i32 0, i32 5, i32 6, i32 2, i32 0, i32 3, i32 0, i32 4, i32 2, i32 4, i32 0, i32 0, i32 3, i32 6, i32 4, i32 6, i32 5, i32 1> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_20xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 0, i32 0, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 2, i32 6, i32 4, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 4, i32 2, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 0, i32 3, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 2, i32 1, i32 5> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_4xi32_to_20xi32_4(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <20 x i32> <i32 2, i32 5, i32 4, i32 3, i32 1, i32 6, i32 4, i32 3, i32 2, i32 1, i32 2, i32 1, i32 0, i32 5, i32 6, i32 3, i32 1, i32 0, i32 6, i32 3> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_20xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 5, i32 4, i32 3> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 6, i32 4, i32 3> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 2, i32 1, i32 2, i32 1> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 6, i32 3> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 0, i32 6, i32 3> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_4xi32_to_20xi32_5(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <20 x i32> <i32 3, i32 2, i32 4, i32 5, i32 5, i32 4, i32 3, i32 2, i32 4, i32 2, i32 2, i32 2, i32 0, i32 0, i32 0, i32 4, i32 4, i32 2, i32 1, i32 0> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_20xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 3, i32 2, i32 4, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 0, i32 7, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 0, i32 0, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 5, i32 4> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_4xi32_to_20xi32_6(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <20 x i32> <i32 5, i32 5, i32 3, i32 0, i32 6, i32 5, i32 2, i32 1, i32 0, i32 2, i32 1, i32 2, i32 5, i32 2, i32 2, i32 4, i32 4, i32 6, i32 1, i32 3> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_20xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 1, i32 7, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 2, i32 1, i32 6, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 0, i32 2, i32 1, i32 2> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 6, i32 6, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 2, i32 5, i32 7> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_4xi32_to_20xi32_7(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <20 x i32> <i32 3, i32 6, i32 1, i32 4, i32 1, i32 3, i32 5, i32 0, i32 6, i32 6, i32 2, i32 0, i32 3, i32 0, i32 6, i32 5, i32 1, i32 0, i32 1, i32 6> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_20xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 3, i32 6, i32 1, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 3, i32 5, i32 0> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 2, i32 2, i32 6, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 3, i32 0, i32 6, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 0, i32 1, i32 6> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_4xi32_to_20xi32_8(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <20 x i32> <i32 6, i32 3, i32 5, i32 6, i32 5, i32 1, i32 6, i32 6, i32 2, i32 0, i32 6, i32 3, i32 2, i32 1, i32 0, i32 6, i32 0, i32 0, i32 6, i32 3> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_20xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 2, i32 7, i32 1, i32 2> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 5, i32 2, i32 2> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 0, i32 6, i32 3> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 1, i32 0, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 0, i32 6, i32 3> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <20 x i32> @shuffle_4xi32_to_20xi32_9(<4 x i32>, <4 x i32>) { |
+ %3 = shufflevector <4 x i32> %0, <4 x i32> %1, <20 x i32> <i32 2, i32 5, i32 1, i32 2, i32 0, i32 3, i32 5, i32 4, i32 4, i32 2, i32 3, i32 2, i32 5, i32 0, i32 0, i32 6, i32 4, i32 2, i32 3, i32 4> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_4xi32_to_20xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 5, i32 1, i32 2> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 3, i32 5, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 7, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 4, i32 2> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 7, i32 0> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <2 x i32> @shuffle_6xi32_to_2xi32_0(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <2 x i32> <i32 7, i32 3> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_2xi32_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %0, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_6xi32_to_2xi32_1(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <2 x i32> <i32 6, i32 4> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_2xi32_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_6xi32_to_2xi32_2(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <2 x i32> <i32 9, i32 3> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_2xi32_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %0, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_6xi32_to_2xi32_3(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <2 x i32> <i32 7, i32 4> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_2xi32_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_6xi32_to_2xi32_4(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <2 x i32> <i32 5, i32 9> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_2xi32_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_6xi32_to_2xi32_5(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <2 x i32> <i32 0, i32 3> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_2xi32_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> undef, <4 x i32> <i32 0, i32 3, i32 3, i32 3> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_6xi32_to_2xi32_6(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <2 x i32> <i32 3, i32 7> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_2xi32_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> %2, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_6xi32_to_2xi32_7(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <2 x i32> <i32 4, i32 1> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_2xi32_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_6xi32_to_2xi32_8(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <2 x i32> <i32 6, i32 3> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_2xi32_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %0, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_6xi32_to_2xi32_9(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <2 x i32> <i32 7, i32 9> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_2xi32_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 1, i32 3, i32 3, i32 3> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <4 x i32> @shuffle_6xi32_to_4xi32_0(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <4 x i32> <i32 9, i32 3, i32 5, i32 2> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_4xi32_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %0, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %0, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <4 x i32> @shuffle_6xi32_to_4xi32_1(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <4 x i32> <i32 9, i32 0, i32 6, i32 4> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_4xi32_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %0, <4 x i32> <i32 3, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <4 x i32> @shuffle_6xi32_to_4xi32_2(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <4 x i32> <i32 6, i32 3, i32 8, i32 0> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_4xi32_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %0, <4 x i32> <i32 0, i32 7, i32 2, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <4 x i32> @shuffle_6xi32_to_4xi32_3(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <4 x i32> <i32 8, i32 10, i32 4, i32 6> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_4xi32_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <4 x i32> @shuffle_6xi32_to_4xi32_4(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <4 x i32> <i32 1, i32 3, i32 0, i32 6> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_4xi32_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> %2, <4 x i32> <i32 1, i32 3, i32 0, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <4 x i32> @shuffle_6xi32_to_4xi32_5(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <4 x i32> <i32 1, i32 10, i32 9, i32 3> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_4xi32_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> %3, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %0, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <4 x i32> @shuffle_6xi32_to_4xi32_6(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <4 x i32> <i32 6, i32 10, i32 0, i32 1> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_4xi32_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %0, <4 x i32> <i32 0, i32 1, i32 4, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <4 x i32> @shuffle_6xi32_to_4xi32_7(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <4 x i32> <i32 7, i32 5, i32 6, i32 2> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_4xi32_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 5, i32 0, i32 0> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %0, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <4 x i32> @shuffle_6xi32_to_4xi32_8(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <4 x i32> <i32 8, i32 6, i32 4, i32 5> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_4xi32_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 2, i32 0, i32 4, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <4 x i32> @shuffle_6xi32_to_4xi32_9(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <4 x i32> <i32 1, i32 7, i32 0, i32 5> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_4xi32_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> %2, <4 x i32> <i32 1, i32 5, i32 0, i32 0> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <6 x i32> @shuffle_6xi32_to_6xi32_0(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <6 x i32> <i32 2, i32 0, i32 6, i32 10, i32 5, i32 7> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_6xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 2, i32 0, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <6 x i32> @shuffle_6xi32_to_6xi32_1(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <6 x i32> <i32 7, i32 7, i32 3, i32 8, i32 8, i32 10> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_6xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 7, i32 2> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <6 x i32> @shuffle_6xi32_to_6xi32_2(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <6 x i32> <i32 1, i32 5, i32 4, i32 0, i32 7, i32 4> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_6xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 5, i32 4, i32 0> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <6 x i32> @shuffle_6xi32_to_6xi32_3(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <6 x i32> <i32 8, i32 2, i32 0, i32 3, i32 7, i32 0> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_6xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 2, i32 6, i32 4, i32 7> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <6 x i32> @shuffle_6xi32_to_6xi32_4(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <6 x i32> <i32 3, i32 5, i32 1, i32 4, i32 7, i32 4> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_6xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 3, i32 5, i32 1, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <6 x i32> @shuffle_6xi32_to_6xi32_5(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <6 x i32> <i32 8, i32 4, i32 3, i32 7, i32 3, i32 2> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_6xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 3, i32 2, i32 2, i32 2> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <6 x i32> @shuffle_6xi32_to_6xi32_6(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <6 x i32> <i32 4, i32 3, i32 0, i32 0, i32 8, i32 5> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_6xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 7, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <6 x i32> @shuffle_6xi32_to_6xi32_7(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <6 x i32> <i32 0, i32 2, i32 4, i32 0, i32 6, i32 2> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_6xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 2, i32 4, i32 0> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <6 x i32> @shuffle_6xi32_to_6xi32_8(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <6 x i32> <i32 9, i32 1, i32 0, i32 10, i32 1, i32 5> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_6xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 3, i32 5, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <6 x i32> @shuffle_6xi32_to_6xi32_9(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <6 x i32> <i32 6, i32 8, i32 3, i32 10, i32 3, i32 3> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_6xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 0, i32 2, i32 7, i32 7> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <8 x i32> @shuffle_6xi32_to_8xi32_0(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <8 x i32> <i32 0, i32 5, i32 7, i32 9, i32 10, i32 3, i32 6, i32 9> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_8xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 5, i32 7> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 7> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <8 x i32> @shuffle_6xi32_to_8xi32_1(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <8 x i32> <i32 0, i32 7, i32 9, i32 2, i32 3, i32 5, i32 5, i32 9> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_8xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 7, i32 2> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <8 x i32> @shuffle_6xi32_to_8xi32_2(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <8 x i32> <i32 4, i32 1, i32 10, i32 1, i32 1, i32 5, i32 3, i32 4> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_8xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 5, i32 3, i32 4> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <8 x i32> @shuffle_6xi32_to_8xi32_3(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <8 x i32> <i32 0, i32 8, i32 6, i32 4, i32 5, i32 2, i32 6, i32 9> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_8xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 0, i32 6, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 7> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <8 x i32> @shuffle_6xi32_to_8xi32_4(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <8 x i32> <i32 1, i32 3, i32 0, i32 2, i32 9, i32 10, i32 1, i32 5> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_8xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 1, i32 3, i32 0, i32 2> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <8 x i32> @shuffle_6xi32_to_8xi32_5(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <8 x i32> <i32 7, i32 6, i32 8, i32 6, i32 7, i32 4, i32 5, i32 8> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_8xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 2, i32 0> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 4, i32 5, i32 2> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <8 x i32> @shuffle_6xi32_to_8xi32_6(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <8 x i32> <i32 1, i32 10, i32 0, i32 1, i32 7, i32 7, i32 5, i32 1> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_8xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 0, i32 1> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <8 x i32> @shuffle_6xi32_to_8xi32_7(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <8 x i32> <i32 1, i32 3, i32 8, i32 6, i32 8, i32 10, i32 6, i32 8> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_8xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 1, i32 3, i32 6, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 0, i32 2> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <8 x i32> @shuffle_6xi32_to_8xi32_8(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <8 x i32> <i32 9, i32 2, i32 6, i32 2, i32 8, i32 9, i32 6, i32 3> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_8xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 3, i32 6, i32 0, i32 6> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 2, i32 3, i32 0, i32 7> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <8 x i32> @shuffle_6xi32_to_8xi32_9(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <8 x i32> <i32 10, i32 3, i32 0, i32 1, i32 10, i32 3, i32 3, i32 10> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_8xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 0, i32 7, i32 4, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 0, i32 7, i32 7, i32 0> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <12 x i32> @shuffle_6xi32_to_12xi32_0(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <12 x i32> <i32 9, i32 9, i32 6, i32 2, i32 1, i32 6, i32 1, i32 5, i32 6, i32 1, i32 7, i32 3> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_12xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 3, i32 3, i32 0, i32 6> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 0, i32 5, i32 1, i32 7> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <12 x i32> @shuffle_6xi32_to_12xi32_1(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <12 x i32> <i32 3, i32 1, i32 0, i32 1, i32 2, i32 0, i32 7, i32 10, i32 9, i32 4, i32 5, i32 5> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_12xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 3, i32 1, i32 0, i32 1> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 2, i32 0, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 3, i32 4, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <12 x i32> @shuffle_6xi32_to_12xi32_2(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <12 x i32> <i32 7, i32 6, i32 9, i32 4, i32 4, i32 8, i32 8, i32 0, i32 9, i32 3, i32 9, i32 4> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_12xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 1, i32 0, i32 3, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 3, i32 7, i32 3, i32 3> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <12 x i32> @shuffle_6xi32_to_12xi32_3(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <12 x i32> <i32 7, i32 10, i32 8, i32 4, i32 6, i32 9, i32 10, i32 10, i32 5, i32 1, i32 3, i32 0> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_12xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 2, i32 2> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 3, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 5, i32 7, i32 4> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <12 x i32> @shuffle_6xi32_to_12xi32_4(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <12 x i32> <i32 7, i32 1, i32 10, i32 3, i32 4, i32 4, i32 2, i32 9, i32 6, i32 4, i32 1, i32 8> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_12xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 0, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <12 x i32> @shuffle_6xi32_to_12xi32_5(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <12 x i32> <i32 4, i32 9, i32 10, i32 10, i32 5, i32 1, i32 1, i32 2, i32 5, i32 2, i32 0, i32 2> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_12xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 5, i32 5, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 6, i32 4, i32 6> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <12 x i32> @shuffle_6xi32_to_12xi32_6(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <12 x i32> <i32 1, i32 7, i32 0, i32 7, i32 7, i32 6, i32 0, i32 0, i32 1, i32 10, i32 2, i32 0> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_12xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 1, i32 5, i32 0, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 1, i32 0, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %2, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 2, i32 0> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <12 x i32> @shuffle_6xi32_to_12xi32_7(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <12 x i32> <i32 1, i32 4, i32 7, i32 1, i32 6, i32 2, i32 3, i32 2, i32 0, i32 5, i32 3, i32 5> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_12xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 0, i32 6, i32 7, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 3, i32 5> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <12 x i32> @shuffle_6xi32_to_12xi32_8(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <12 x i32> <i32 5, i32 10, i32 5, i32 2, i32 10, i32 7, i32 7, i32 0, i32 0, i32 0, i32 6, i32 9> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_12xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 4, i32 7> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <12 x i32> @shuffle_6xi32_to_12xi32_9(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <12 x i32> <i32 6, i32 6, i32 9, i32 1, i32 8, i32 3, i32 9, i32 10, i32 10, i32 5, i32 6, i32 10> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_12xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 0, i32 0, i32 3, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 2, i32 7, i32 3, i32 3> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <16 x i32> @shuffle_6xi32_to_16xi32_0(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <16 x i32> <i32 7, i32 3, i32 9, i32 5, i32 8, i32 5, i32 2, i32 1, i32 9, i32 5, i32 10, i32 7, i32 5, i32 7, i32 0, i32 3> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_16xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 1, i32 7, i32 3, i32 3> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 7> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <16 x i32> @shuffle_6xi32_to_16xi32_1(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <16 x i32> <i32 6, i32 7, i32 10, i32 3, i32 10, i32 4, i32 2, i32 2, i32 3, i32 7, i32 6, i32 6, i32 9, i32 7, i32 0, i32 6> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_16xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 3, i32 5, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 3, i32 1, i32 4, i32 0> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <16 x i32> @shuffle_6xi32_to_16xi32_2(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <16 x i32> <i32 4, i32 1, i32 4, i32 0, i32 7, i32 3, i32 6, i32 4, i32 3, i32 7, i32 7, i32 8, i32 9, i32 4, i32 2, i32 0> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_16xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 0, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 1, i32 7, i32 0, i32 0> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 3, i32 5, i32 5, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 4> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <16 x i32> @shuffle_6xi32_to_16xi32_3(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <16 x i32> <i32 7, i32 9, i32 8, i32 3, i32 6, i32 8, i32 0, i32 8, i32 7, i32 10, i32 1, i32 0, i32 4, i32 4, i32 3, i32 9> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_16xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 1, i32 3, i32 2, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 0, i32 2, i32 4, i32 2> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 5, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 0, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <16 x i32> @shuffle_6xi32_to_16xi32_4(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <16 x i32> <i32 4, i32 8, i32 8, i32 5, i32 2, i32 8, i32 8, i32 5, i32 10, i32 7, i32 9, i32 9, i32 5, i32 6, i32 1, i32 4> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_16xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 6, i32 6, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <16 x i32> @shuffle_6xi32_to_16xi32_5(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <16 x i32> <i32 0, i32 8, i32 2, i32 7, i32 6, i32 2, i32 9, i32 6, i32 1, i32 6, i32 6, i32 9, i32 7, i32 2, i32 5, i32 4> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_16xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 0, i32 6, i32 2, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 0, i32 6, i32 3, i32 0> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 4, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 4> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <16 x i32> @shuffle_6xi32_to_16xi32_6(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <16 x i32> <i32 2, i32 4, i32 10, i32 0, i32 2, i32 4, i32 8, i32 4, i32 2, i32 6, i32 4, i32 8, i32 4, i32 5, i32 7, i32 10> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_16xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <16 x i32> @shuffle_6xi32_to_16xi32_7(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <16 x i32> <i32 0, i32 8, i32 3, i32 0, i32 10, i32 10, i32 6, i32 6, i32 6, i32 8, i32 8, i32 10, i32 3, i32 4, i32 6, i32 3> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_16xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 0, i32 6, i32 3, i32 0> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 0, i32 0, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 0, i32 2, i32 2, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <16 x i32> @shuffle_6xi32_to_16xi32_8(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <16 x i32> <i32 6, i32 0, i32 1, i32 3, i32 0, i32 2, i32 2, i32 7, i32 8, i32 10, i32 2, i32 2, i32 0, i32 10, i32 8, i32 1> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_16xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 5, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 0, i32 2, i32 2, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %3, <4 x i32> %6, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <16 x i32> @shuffle_6xi32_to_16xi32_9(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <16 x i32> <i32 4, i32 9, i32 8, i32 0, i32 3, i32 7, i32 5, i32 2, i32 4, i32 2, i32 5, i32 9, i32 8, i32 0, i32 6, i32 1> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_16xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 7, i32 6, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 6, i32 1, i32 1> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 2, i32 4, i32 0, i32 5> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <20 x i32> @shuffle_6xi32_to_20xi32_0(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <20 x i32> <i32 7, i32 4, i32 8, i32 9, i32 7, i32 5, i32 7, i32 5, i32 3, i32 2, i32 1, i32 4, i32 9, i32 4, i32 8, i32 4, i32 8, i32 6, i32 1, i32 0> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_20xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 2, i32 3> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 1, i32 5, i32 1, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 3, i32 2, i32 1, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 3, i32 4, i32 2, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 2, i32 0, i32 5, i32 4> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <20 x i32> @shuffle_6xi32_to_20xi32_1(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <20 x i32> <i32 8, i32 8, i32 1, i32 0, i32 0, i32 7, i32 10, i32 8, i32 1, i32 6, i32 0, i32 8, i32 3, i32 2, i32 4, i32 7, i32 6, i32 6, i32 7, i32 4> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_20xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 2, i32 2, i32 5, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 1, i32 4, i32 0, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 3, i32 2, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 0, i32 0, i32 1, i32 4> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <20 x i32> @shuffle_6xi32_to_20xi32_2(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <20 x i32> <i32 0, i32 5, i32 9, i32 9, i32 6, i32 5, i32 0, i32 3, i32 10, i32 1, i32 1, i32 10, i32 10, i32 10, i32 4, i32 5, i32 4, i32 4, i32 8, i32 7> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_20xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 5, i32 0> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 0, i32 0, i32 4, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 0, i32 0, i32 6, i32 5> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <20 x i32> @shuffle_6xi32_to_20xi32_3(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <20 x i32> <i32 0, i32 3, i32 1, i32 5, i32 9, i32 7, i32 1, i32 1, i32 5, i32 3, i32 3, i32 10, i32 3, i32 7, i32 3, i32 2, i32 1, i32 2, i32 8, i32 6> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_20xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 3, i32 1, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 3, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 5, i32 3, i32 2> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 1, i32 2, i32 6, i32 4> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <20 x i32> @shuffle_6xi32_to_20xi32_4(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <20 x i32> <i32 10, i32 10, i32 2, i32 2, i32 5, i32 4, i32 10, i32 7, i32 6, i32 1, i32 0, i32 9, i32 6, i32 0, i32 10, i32 6, i32 3, i32 2, i32 3, i32 9> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_20xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 1, i32 0, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 4, i32 3> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 2, i32 3, i32 7> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <20 x i32> @shuffle_6xi32_to_20xi32_5(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <20 x i32> <i32 7, i32 5, i32 9, i32 10, i32 10, i32 3, i32 1, i32 4, i32 4, i32 10, i32 7, i32 4, i32 6, i32 10, i32 10, i32 1, i32 0, i32 1, i32 1, i32 2> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_20xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 1, i32 5, i32 3, i32 3> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 0, i32 7, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %6, <4 x i32> %7, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 1, i32 2> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <20 x i32> @shuffle_6xi32_to_20xi32_6(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <20 x i32> <i32 5, i32 1, i32 5, i32 6, i32 3, i32 8, i32 5, i32 5, i32 0, i32 8, i32 7, i32 5, i32 9, i32 6, i32 10, i32 10, i32 5, i32 10, i32 8, i32 4> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_20xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 5, i32 1, i32 1> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 0, i32 6, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %6, <4 x i32> %7, <4 x i32> <i32 3, i32 0, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <20 x i32> @shuffle_6xi32_to_20xi32_7(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <20 x i32> <i32 8, i32 5, i32 7, i32 8, i32 1, i32 6, i32 1, i32 7, i32 2, i32 10, i32 2, i32 3, i32 8, i32 6, i32 0, i32 1, i32 3, i32 9, i32 4, i32 0> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_20xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 2, i32 5, i32 1, i32 2> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 1, i32 4, i32 1, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 2, i32 4, i32 2, i32 3> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 2, i32 0, i32 4, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <20 x i32> @shuffle_6xi32_to_20xi32_8(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <20 x i32> <i32 1, i32 5, i32 10, i32 3, i32 10, i32 3, i32 10, i32 6, i32 8, i32 4, i32 0, i32 5, i32 7, i32 9, i32 9, i32 1, i32 3, i32 9, i32 1, i32 9> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_20xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 0, i32 7, i32 0, i32 0> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 1, i32 3, i32 3, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 7, i32 1, i32 7> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <20 x i32> @shuffle_6xi32_to_20xi32_9(<6 x i32>, <6 x i32>) { |
+ %3 = shufflevector <6 x i32> %0, <6 x i32> %1, <20 x i32> <i32 0, i32 9, i32 2, i32 7, i32 1, i32 2, i32 5, i32 9, i32 1, i32 6, i32 3, i32 4, i32 8, i32 7, i32 9, i32 2, i32 8, i32 7, i32 9, i32 9> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_6xi32_to_20xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 0, i32 7, i32 2, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 2, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 1, i32 4, i32 3, i32 3> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 2, i32 1, i32 3, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %6, <4 x i32> undef, <4 x i32> <i32 2, i32 1, i32 3, i32 3> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <2 x i32> @shuffle_8xi32_to_2xi32_0(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <2 x i32> <i32 5, i32 6> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_2xi32_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 1, i32 2, i32 2, i32 2> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_8xi32_to_2xi32_1(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <2 x i32> <i32 5, i32 8> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_2xi32_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_8xi32_to_2xi32_2(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <2 x i32> <i32 3, i32 5> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_2xi32_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_8xi32_to_2xi32_3(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <2 x i32> <i32 3, i32 12> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_2xi32_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> %3, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_8xi32_to_2xi32_4(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <2 x i32> <i32 11, i32 3> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_2xi32_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %0, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_8xi32_to_2xi32_5(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <2 x i32> <i32 2, i32 10> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_2xi32_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> %2, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_8xi32_to_2xi32_6(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <2 x i32> <i32 10, i32 9> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_2xi32_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 2, i32 1, i32 1, i32 1> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_8xi32_to_2xi32_7(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <2 x i32> <i32 4, i32 3> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_2xi32_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_8xi32_to_2xi32_8(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <2 x i32> <i32 10, i32 3> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_2xi32_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %0, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <2 x i32> @shuffle_8xi32_to_2xi32_9(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <2 x i32> <i32 12, i32 5> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_2xi32_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <4 x i32> @shuffle_8xi32_to_4xi32_0(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <4 x i32> <i32 10, i32 4, i32 7, i32 3> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_4xi32_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 2, i32 4, i32 7, i32 7> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %0, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <4 x i32> @shuffle_8xi32_to_4xi32_1(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <4 x i32> <i32 4, i32 5, i32 4, i32 13> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_4xi32_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 0, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <4 x i32> @shuffle_8xi32_to_4xi32_2(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <4 x i32> <i32 8, i32 9, i32 2, i32 12> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_4xi32_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %0, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <4 x i32> @shuffle_8xi32_to_4xi32_3(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <4 x i32> <i32 3, i32 12, i32 14, i32 6> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_4xi32_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> %3, <4 x i32> <i32 3, i32 4, i32 6, i32 6> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <4 x i32> @shuffle_8xi32_to_4xi32_4(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <4 x i32> <i32 10, i32 9, i32 8, i32 13> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_4xi32_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 2, i32 1, i32 0, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <4 x i32> @shuffle_8xi32_to_4xi32_5(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <4 x i32> <i32 2, i32 10, i32 2, i32 7> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_4xi32_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> %2, <4 x i32> <i32 2, i32 6, i32 2, i32 2> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <4 x i32> @shuffle_8xi32_to_4xi32_6(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <4 x i32> <i32 3, i32 8, i32 13, i32 11> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_4xi32_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> %2, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <4 x i32> @shuffle_8xi32_to_4xi32_7(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <4 x i32> <i32 11, i32 11, i32 11, i32 9> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_4xi32_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 1> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <4 x i32> @shuffle_8xi32_to_4xi32_8(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <4 x i32> <i32 10, i32 10, i32 11, i32 9> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_4xi32_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 2, i32 2, i32 3, i32 1> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <4 x i32> @shuffle_8xi32_to_4xi32_9(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <4 x i32> <i32 2, i32 5, i32 4, i32 4> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_4xi32_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %5 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 2, i32 5, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %5 |
+ |
+define <6 x i32> @shuffle_8xi32_to_6xi32_0(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <6 x i32> <i32 5, i32 2, i32 14, i32 4, i32 11, i32 7> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_6xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <6 x i32> @shuffle_8xi32_to_6xi32_1(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <6 x i32> <i32 3, i32 3, i32 4, i32 1, i32 9, i32 3> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_6xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 3, i32 3, i32 4, i32 1> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <6 x i32> @shuffle_8xi32_to_6xi32_2(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <6 x i32> <i32 14, i32 13, i32 2, i32 6, i32 2, i32 0> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_6xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 2, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 2, i32 0, i32 0, i32 0> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <6 x i32> @shuffle_8xi32_to_6xi32_3(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <6 x i32> <i32 11, i32 11, i32 6, i32 6, i32 7, i32 11> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_6xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 3, i32 3, i32 6, i32 6> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <6 x i32> @shuffle_8xi32_to_6xi32_4(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <6 x i32> <i32 12, i32 1, i32 7, i32 8, i32 4, i32 6> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_6xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 0, i32 2, i32 2, i32 2> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <6 x i32> @shuffle_8xi32_to_6xi32_5(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <6 x i32> <i32 6, i32 11, i32 0, i32 13, i32 0, i32 10> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_6xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <6 x i32> @shuffle_8xi32_to_6xi32_6(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <6 x i32> <i32 2, i32 5, i32 13, i32 13, i32 6, i32 9> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_6xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <6 x i32> @shuffle_8xi32_to_6xi32_7(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <6 x i32> <i32 14, i32 14, i32 3, i32 4, i32 10, i32 6> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_6xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 2, i32 2, i32 7, i32 7> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <6 x i32> @shuffle_8xi32_to_6xi32_8(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <6 x i32> <i32 1, i32 6, i32 12, i32 5, i32 1, i32 8> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_6xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <6 x i32> @shuffle_8xi32_to_6xi32_9(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <6 x i32> <i32 0, i32 8, i32 1, i32 8, i32 7, i32 9> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_6xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 1, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <8 x i32> @shuffle_8xi32_to_8xi32_0(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <8 x i32> <i32 13, i32 12, i32 1, i32 9, i32 5, i32 7, i32 0, i32 4> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_8xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 1, i32 0, i32 5, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 3, i32 4, i32 0> |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <8 x i32> @shuffle_8xi32_to_8xi32_1(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <8 x i32> <i32 1, i32 13, i32 14, i32 2, i32 0, i32 1, i32 14, i32 12> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_8xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %4, <4 x i32> <i32 1, i32 5, i32 6, i32 2> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %1, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 6, i32 4> |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <8 x i32> @shuffle_8xi32_to_8xi32_2(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <8 x i32> <i32 6, i32 13, i32 11, i32 13, i32 0, i32 11, i32 13, i32 14> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_8xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 6> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <8 x i32> @shuffle_8xi32_to_8xi32_3(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <8 x i32> <i32 1, i32 11, i32 12, i32 11, i32 4, i32 3, i32 0, i32 7> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_8xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 7, i32 4, i32 3> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <8 x i32> @shuffle_8xi32_to_8xi32_4(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <8 x i32> <i32 10, i32 10, i32 4, i32 6, i32 9, i32 7, i32 0, i32 11> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_8xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 2, i32 2, i32 4, i32 6> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+ |
+define <8 x i32> @shuffle_8xi32_to_8xi32_5(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <8 x i32> <i32 10, i32 1, i32 0, i32 12, i32 3, i32 14, i32 7, i32 0> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_8xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 2, i32 5, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %1, <4 x i32> %4, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <8 x i32> @shuffle_8xi32_to_8xi32_6(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <8 x i32> <i32 6, i32 12, i32 0, i32 9, i32 12, i32 11, i32 0, i32 5> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_8xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <8 x i32> @shuffle_8xi32_to_8xi32_7(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <8 x i32> <i32 7, i32 11, i32 1, i32 7, i32 3, i32 2, i32 13, i32 3> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_8xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %1, <4 x i32> %4, <4 x i32> <i32 3, i32 2, i32 5, i32 3> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <8 x i32> @shuffle_8xi32_to_8xi32_8(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <8 x i32> <i32 0, i32 4, i32 8, i32 5, i32 1, i32 13, i32 4, i32 8> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_8xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %1, <4 x i32> %4, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <8 x i32> @shuffle_8xi32_to_8xi32_9(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <8 x i32> <i32 8, i32 0, i32 6, i32 10, i32 9, i32 2, i32 8, i32 3> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_8xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %6 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %6, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 1, i32 6, i32 0, i32 7> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <12 x i32> @shuffle_8xi32_to_12xi32_0(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <12 x i32> <i32 9, i32 4, i32 2, i32 9, i32 8, i32 8, i32 9, i32 4, i32 6, i32 0, i32 14, i32 1> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_12xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 0, i32 0, i32 1, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <12 x i32> @shuffle_8xi32_to_12xi32_1(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <12 x i32> <i32 3, i32 9, i32 6, i32 12, i32 0, i32 7, i32 14, i32 4, i32 12, i32 8, i32 8, i32 3> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_12xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <12 x i32> @shuffle_8xi32_to_12xi32_2(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <12 x i32> <i32 2, i32 9, i32 3, i32 10, i32 9, i32 6, i32 4, i32 12, i32 1, i32 7, i32 3, i32 14> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_12xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 2, i32 5, i32 3, i32 6> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 1, i32 6, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 7, i32 3, i32 3> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <12 x i32> @shuffle_8xi32_to_12xi32_3(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <12 x i32> <i32 0, i32 13, i32 4, i32 7, i32 4, i32 2, i32 13, i32 5, i32 11, i32 6, i32 13, i32 1> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_12xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <12 x i32> @shuffle_8xi32_to_12xi32_4(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <12 x i32> <i32 3, i32 7, i32 5, i32 0, i32 2, i32 9, i32 13, i32 6, i32 0, i32 5, i32 4, i32 7> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_12xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 3, i32 7, i32 5, i32 0> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 4, i32 7> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <12 x i32> @shuffle_8xi32_to_12xi32_5(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <12 x i32> <i32 9, i32 4, i32 4, i32 9, i32 11, i32 10, i32 3, i32 7, i32 10, i32 13, i32 1, i32 11> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_12xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 1, i32 4, i32 4, i32 1> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 3, i32 2, i32 7, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <12 x i32> @shuffle_8xi32_to_12xi32_6(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <12 x i32> <i32 10, i32 3, i32 7, i32 0, i32 7, i32 6, i32 0, i32 8, i32 10, i32 13, i32 0, i32 1> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_12xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 3, i32 2, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 4, i32 5> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <12 x i32> @shuffle_8xi32_to_12xi32_7(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <12 x i32> <i32 9, i32 12, i32 8, i32 5, i32 0, i32 11, i32 8, i32 5, i32 10, i32 12, i32 6, i32 7> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_12xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 0, i32 7, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 7> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <12 x i32> @shuffle_8xi32_to_12xi32_8(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <12 x i32> <i32 13, i32 1, i32 14, i32 7, i32 9, i32 12, i32 1, i32 10, i32 12, i32 14, i32 4, i32 7> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_12xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %5, <4 x i32> %2, <4 x i32> <i32 1, i32 5, i32 2, i32 2> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 0, i32 2, i32 4, i32 7> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <12 x i32> @shuffle_8xi32_to_12xi32_9(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <12 x i32> <i32 3, i32 10, i32 9, i32 1, i32 9, i32 0, i32 11, i32 5, i32 12, i32 10, i32 5, i32 5> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_12xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 3, i32 6, i32 5, i32 1> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 1, i32 4, i32 3, i32 3> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <16 x i32> @shuffle_8xi32_to_16xi32_0(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <16 x i32> <i32 4, i32 12, i32 5, i32 7, i32 3, i32 8, i32 14, i32 8, i32 6, i32 7, i32 7, i32 11, i32 11, i32 7, i32 11, i32 8> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_16xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 0, i32 4, i32 1, i32 3> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 3, i32 3, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 3, i32 7, i32 3, i32 0> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <16 x i32> @shuffle_8xi32_to_16xi32_1(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <16 x i32> <i32 0, i32 9, i32 10, i32 2, i32 8, i32 6, i32 11, i32 4, i32 7, i32 6, i32 9, i32 1, i32 9, i32 7, i32 7, i32 7> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_16xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 6, i32 2> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 3, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 3, i32 2, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <16 x i32> @shuffle_8xi32_to_16xi32_2(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <16 x i32> <i32 11, i32 7, i32 9, i32 11, i32 9, i32 2, i32 5, i32 5, i32 8, i32 5, i32 4, i32 5, i32 8, i32 7, i32 9, i32 11> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_16xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 3, i32 7, i32 1, i32 3> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 4, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 7, i32 1, i32 3> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <16 x i32> @shuffle_8xi32_to_16xi32_3(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <16 x i32> <i32 14, i32 0, i32 13, i32 13, i32 14, i32 0, i32 10, i32 14, i32 12, i32 4, i32 1, i32 8, i32 1, i32 11, i32 1, i32 1> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_16xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 2, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 1, i32 7, i32 1, i32 1> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <16 x i32> @shuffle_8xi32_to_16xi32_4(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <16 x i32> <i32 14, i32 2, i32 9, i32 11, i32 7, i32 13, i32 10, i32 0, i32 4, i32 9, i32 7, i32 7, i32 13, i32 12, i32 7, i32 13> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_16xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 3, i32 3> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 1, i32 0, i32 7, i32 1> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <16 x i32> @shuffle_8xi32_to_16xi32_5(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <16 x i32> <i32 12, i32 9, i32 0, i32 10, i32 12, i32 9, i32 12, i32 4, i32 0, i32 12, i32 6, i32 14, i32 3, i32 5, i32 0, i32 3> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_16xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 0, i32 0> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %3, <4 x i32> %6, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 3, i32 5, i32 0, i32 3> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <16 x i32> @shuffle_8xi32_to_16xi32_6(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <16 x i32> <i32 3, i32 9, i32 5, i32 4, i32 4, i32 4, i32 4, i32 7, i32 3, i32 3, i32 10, i32 2, i32 11, i32 2, i32 2, i32 3> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_16xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 3> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 3, i32 3, i32 6, i32 2> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 3, i32 6, i32 6, i32 7> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <16 x i32> @shuffle_8xi32_to_16xi32_7(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <16 x i32> <i32 1, i32 13, i32 7, i32 2, i32 12, i32 7, i32 14, i32 2, i32 5, i32 10, i32 9, i32 9, i32 7, i32 13, i32 11, i32 7> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_16xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %6, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 7, i32 2, i32 2> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 6, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <16 x i32> @shuffle_8xi32_to_16xi32_8(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <16 x i32> <i32 14, i32 13, i32 2, i32 14, i32 13, i32 4, i32 7, i32 6, i32 1, i32 11, i32 3, i32 11, i32 2, i32 9, i32 9, i32 8> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_16xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 2, i32 1, i32 6, i32 2> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 7, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 1, i32 7, i32 3, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 2, i32 5, i32 5, i32 4> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <16 x i32> @shuffle_8xi32_to_16xi32_9(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <16 x i32> <i32 1, i32 11, i32 6, i32 2, i32 3, i32 7, i32 11, i32 5, i32 3, i32 12, i32 1, i32 13, i32 13, i32 3, i32 4, i32 1> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_16xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %3, <4 x i32> %6, <4 x i32> <i32 3, i32 4, i32 1, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <20 x i32> @shuffle_8xi32_to_20xi32_0(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <20 x i32> <i32 4, i32 10, i32 14, i32 11, i32 10, i32 0, i32 4, i32 12, i32 2, i32 8, i32 0, i32 4, i32 8, i32 4, i32 11, i32 0, i32 11, i32 8, i32 1, i32 14> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_20xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 2, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 0, i32 4, i32 3, i32 3> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 3, i32 0, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <20 x i32> @shuffle_8xi32_to_20xi32_1(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <20 x i32> <i32 1, i32 3, i32 8, i32 5, i32 2, i32 2, i32 11, i32 10, i32 11, i32 10, i32 10, i32 6, i32 9, i32 7, i32 8, i32 6, i32 5, i32 14, i32 12, i32 14> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_20xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 1, i32 3, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 2, i32 2, i32 7, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 3, i32 2, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 1, i32 7, i32 0, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 1, i32 6, i32 4, i32 6> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <20 x i32> @shuffle_8xi32_to_20xi32_2(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <20 x i32> <i32 3, i32 8, i32 11, i32 10, i32 11, i32 8, i32 10, i32 1, i32 6, i32 6, i32 6, i32 13, i32 3, i32 9, i32 12, i32 2, i32 3, i32 3, i32 7, i32 10> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_20xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 4, i32 7, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 3, i32 0, i32 2, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 2, i32 2, i32 2, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 3, i32 3, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <20 x i32> @shuffle_8xi32_to_20xi32_3(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <20 x i32> <i32 2, i32 7, i32 11, i32 3, i32 11, i32 13, i32 13, i32 0, i32 11, i32 8, i32 1, i32 11, i32 2, i32 7, i32 1, i32 3, i32 2, i32 3, i32 0, i32 8> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_20xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %7, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 3, i32 0, i32 5, i32 3> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 7, i32 1, i32 3> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 2, i32 3, i32 0, i32 4> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <20 x i32> @shuffle_8xi32_to_20xi32_4(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <20 x i32> <i32 1, i32 2, i32 1, i32 0, i32 5, i32 9, i32 14, i32 2, i32 12, i32 0, i32 11, i32 2, i32 14, i32 6, i32 9, i32 14, i32 0, i32 3, i32 0, i32 10> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_20xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 1, i32 2, i32 1, i32 0> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 0, i32 3, i32 0, i32 6> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <20 x i32> @shuffle_8xi32_to_20xi32_5(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <20 x i32> <i32 14, i32 4, i32 10, i32 1, i32 3, i32 14, i32 6, i32 7, i32 14, i32 3, i32 8, i32 8, i32 8, i32 8, i32 1, i32 12, i32 10, i32 14, i32 10, i32 0> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_20xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 0, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %6, <4 x i32> %7, <4 x i32> <i32 2, i32 6, i32 2, i32 2> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <20 x i32> @shuffle_8xi32_to_20xi32_6(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <20 x i32> <i32 14, i32 12, i32 9, i32 7, i32 5, i32 1, i32 10, i32 2, i32 6, i32 1, i32 8, i32 11, i32 3, i32 5, i32 5, i32 0, i32 2, i32 6, i32 5, i32 14> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_20xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %7, <4 x i32> %6, <4 x i32> <i32 2, i32 0, i32 5, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 3, i32 5, i32 5, i32 0> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 6, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <20 x i32> @shuffle_8xi32_to_20xi32_7(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <20 x i32> <i32 4, i32 1, i32 13, i32 13, i32 10, i32 6, i32 7, i32 7, i32 8, i32 6, i32 7, i32 0, i32 0, i32 11, i32 7, i32 3, i32 14, i32 2, i32 0, i32 0> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_20xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 2, i32 6, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 0, i32 6, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 2, i32 6, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <20 x i32> @shuffle_8xi32_to_20xi32_8(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <20 x i32> <i32 5, i32 4, i32 3, i32 1, i32 10, i32 0, i32 6, i32 3, i32 3, i32 13, i32 11, i32 2, i32 2, i32 12, i32 8, i32 13, i32 6, i32 5, i32 13, i32 13> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_20xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 0, i32 7, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 2, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <20 x i32> @shuffle_8xi32_to_20xi32_9(<8 x i32>, <8 x i32>) { |
+ %3 = shufflevector <8 x i32> %0, <8 x i32> %1, <20 x i32> <i32 3, i32 13, i32 0, i32 3, i32 0, i32 1, i32 9, i32 3, i32 4, i32 4, i32 5, i32 12, i32 4, i32 14, i32 10, i32 11, i32 1, i32 7, i32 4, i32 9> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_8xi32_to_20xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 3, i32 5, i32 0, i32 3> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 3> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 0, i32 0, i32 1, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 6, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 7, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <2 x i32> @shuffle_12xi32_to_2xi32_0(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <2 x i32> <i32 0, i32 1> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_2xi32_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: ret <4 x i32> %0 |
+ |
+define <2 x i32> @shuffle_12xi32_to_2xi32_1(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <2 x i32> <i32 15, i32 16> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_2xi32_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <2 x i32> @shuffle_12xi32_to_2xi32_2(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <2 x i32> <i32 2, i32 13> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_2xi32_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %0, <4 x i32> %3, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <2 x i32> @shuffle_12xi32_to_2xi32_3(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <2 x i32> <i32 0, i32 1> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_2xi32_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: ret <4 x i32> %0 |
+ |
+define <2 x i32> @shuffle_12xi32_to_2xi32_4(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <2 x i32> <i32 1, i32 6> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_2xi32_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <2 x i32> @shuffle_12xi32_to_2xi32_5(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <2 x i32> <i32 19, i32 17> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_2xi32_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 3, i32 1, i32 1, i32 1> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <2 x i32> @shuffle_12xi32_to_2xi32_6(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <2 x i32> <i32 22, i32 13> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_2xi32_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <2 x i32> @shuffle_12xi32_to_2xi32_7(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <2 x i32> <i32 3, i32 12> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_2xi32_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %0, <4 x i32> %3, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <2 x i32> @shuffle_12xi32_to_2xi32_8(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <2 x i32> <i32 6, i32 14> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_2xi32_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <2 x i32> @shuffle_12xi32_to_2xi32_9(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <2 x i32> <i32 2, i32 15> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_2xi32_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %0, <4 x i32> %3, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <4 x i32> @shuffle_12xi32_to_4xi32_0(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <4 x i32> <i32 14, i32 9, i32 11, i32 14> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_4xi32_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 2, i32 5, i32 7, i32 2> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <4 x i32> @shuffle_12xi32_to_4xi32_1(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <4 x i32> <i32 16, i32 0, i32 7, i32 6> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_4xi32_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %0, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 7, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <4 x i32> @shuffle_12xi32_to_4xi32_2(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <4 x i32> <i32 0, i32 17, i32 2, i32 8> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_4xi32_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %0, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 2, i32 2> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <4 x i32> @shuffle_12xi32_to_4xi32_3(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <4 x i32> <i32 7, i32 17, i32 18, i32 4> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_4xi32_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %1, <4 x i32> %4, <4 x i32> <i32 3, i32 5, i32 6, i32 0> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <4 x i32> @shuffle_12xi32_to_4xi32_4(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <4 x i32> <i32 7, i32 13, i32 12, i32 5> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_4xi32_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 3, i32 5, i32 4, i32 1> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <4 x i32> @shuffle_12xi32_to_4xi32_5(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <4 x i32> <i32 11, i32 21, i32 11, i32 22> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_4xi32_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %5, <4 x i32> <i32 3, i32 5, i32 3, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <4 x i32> @shuffle_12xi32_to_4xi32_6(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <4 x i32> <i32 21, i32 14, i32 20, i32 15> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_4xi32_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 1, i32 6, i32 0, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %7 |
+ |
+define <4 x i32> @shuffle_12xi32_to_4xi32_7(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <4 x i32> <i32 3, i32 12, i32 14, i32 4> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_4xi32_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %0, <4 x i32> %3, <4 x i32> <i32 3, i32 4, i32 6, i32 6> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <4 x i32> @shuffle_12xi32_to_4xi32_8(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <4 x i32> <i32 8, i32 16, i32 0, i32 6> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_4xi32_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %0, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <4 x i32> @shuffle_12xi32_to_4xi32_9(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <4 x i32> <i32 18, i32 19, i32 8, i32 5> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_4xi32_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %7 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 2, i32 3, i32 4, i32 4> |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %7, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <6 x i32> @shuffle_12xi32_to_6xi32_0(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <6 x i32> <i32 11, i32 13, i32 6, i32 20, i32 12, i32 7> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_6xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <6 x i32> @shuffle_12xi32_to_6xi32_1(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <6 x i32> <i32 17, i32 4, i32 15, i32 7, i32 19, i32 16> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_6xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %2, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <6 x i32> @shuffle_12xi32_to_6xi32_2(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <6 x i32> <i32 6, i32 2, i32 21, i32 8, i32 22, i32 12> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_6xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <6 x i32> @shuffle_12xi32_to_6xi32_3(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <6 x i32> <i32 11, i32 6, i32 0, i32 11, i32 16, i32 5> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_6xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %2, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <6 x i32> @shuffle_12xi32_to_6xi32_4(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <6 x i32> <i32 21, i32 5, i32 11, i32 8, i32 21, i32 12> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_6xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %6, <4 x i32> %2, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 7, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <6 x i32> @shuffle_12xi32_to_6xi32_5(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <6 x i32> <i32 0, i32 15, i32 3, i32 14, i32 11, i32 18> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_6xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %1, <4 x i32> %4, <4 x i32> <i32 0, i32 7, i32 3, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <6 x i32> @shuffle_12xi32_to_6xi32_6(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <6 x i32> <i32 9, i32 12, i32 8, i32 19, i32 5, i32 5> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_6xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <6 x i32> @shuffle_12xi32_to_6xi32_7(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <6 x i32> <i32 17, i32 3, i32 18, i32 16, i32 9, i32 18> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_6xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 1, i32 7, i32 2, i32 0> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: store <4 x i32> %9, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <6 x i32> @shuffle_12xi32_to_6xi32_8(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <6 x i32> <i32 11, i32 14, i32 6, i32 20, i32 15, i32 0> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_6xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <6 x i32> @shuffle_12xi32_to_6xi32_9(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <6 x i32> <i32 12, i32 20, i32 10, i32 10, i32 14, i32 14> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_6xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> undef, <4 x i32> <i32 2, i32 2, i32 2, i32 2> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <8 x i32> @shuffle_12xi32_to_8xi32_0(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <8 x i32> <i32 7, i32 14, i32 14, i32 18, i32 18, i32 20, i32 22, i32 15> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_8xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 2, i32 4, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <8 x i32> @shuffle_12xi32_to_8xi32_1(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <8 x i32> <i32 5, i32 7, i32 16, i32 22, i32 16, i32 2, i32 16, i32 20> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_8xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %5, <4 x i32> <i32 1, i32 3, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 0, i32 6, i32 0, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <8 x i32> @shuffle_12xi32_to_8xi32_2(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <8 x i32> <i32 3, i32 3, i32 1, i32 0, i32 5, i32 22, i32 5, i32 9> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_8xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 1, i32 0> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %2, <4 x i32> %6, <4 x i32> <i32 1, i32 6, i32 1, i32 1> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <8 x i32> @shuffle_12xi32_to_8xi32_3(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <8 x i32> <i32 5, i32 1, i32 18, i32 1, i32 13, i32 6, i32 7, i32 14> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_8xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 1, i32 6, i32 7, i32 2> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <8 x i32> @shuffle_12xi32_to_8xi32_4(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <8 x i32> <i32 21, i32 21, i32 7, i32 11, i32 17, i32 19, i32 3, i32 16> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_8xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %6, <4 x i32> %2, <4 x i32> <i32 1, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 1, i32 3, i32 7, i32 0> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <8 x i32> @shuffle_12xi32_to_8xi32_5(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <8 x i32> <i32 14, i32 9, i32 22, i32 12, i32 13, i32 1, i32 3, i32 0> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_8xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 1, i32 5, i32 7, i32 4> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <8 x i32> @shuffle_12xi32_to_8xi32_6(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <8 x i32> <i32 15, i32 7, i32 0, i32 6, i32 2, i32 3, i32 7, i32 12> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_8xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 2, i32 3, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <8 x i32> @shuffle_12xi32_to_8xi32_7(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <8 x i32> <i32 22, i32 20, i32 9, i32 8, i32 5, i32 5, i32 22, i32 9> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_8xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 2, i32 0, i32 5, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %2, <4 x i32> %6, <4 x i32> <i32 1, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+ |
+define <8 x i32> @shuffle_12xi32_to_8xi32_8(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <8 x i32> <i32 5, i32 20, i32 19, i32 3, i32 7, i32 18, i32 3, i32 1> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_8xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %2, <4 x i32> %6, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %2, <4 x i32> %5, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 7, i32 5> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <8 x i32> @shuffle_12xi32_to_8xi32_9(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <8 x i32> <i32 19, i32 21, i32 15, i32 11, i32 16, i32 1, i32 10, i32 3> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_8xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %8 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <12 x i32> @shuffle_12xi32_to_12xi32_0(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <12 x i32> <i32 18, i32 14, i32 14, i32 4, i32 15, i32 11, i32 12, i32 14, i32 17, i32 8, i32 0, i32 3> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_12xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 3, i32 7, i32 0, i32 2> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 4, i32 7> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <12 x i32> @shuffle_12xi32_to_12xi32_1(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <12 x i32> <i32 3, i32 2, i32 10, i32 19, i32 1, i32 11, i32 21, i32 0, i32 14, i32 14, i32 13, i32 0> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_12xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 3, i32 2, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %5, <4 x i32> %2, <4 x i32> <i32 2, i32 2, i32 1, i32 4> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <12 x i32> @shuffle_12xi32_to_12xi32_2(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <12 x i32> <i32 7, i32 13, i32 1, i32 10, i32 9, i32 18, i32 2, i32 17, i32 8, i32 11, i32 2, i32 18> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_12xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 0, i32 3, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <12 x i32> @shuffle_12xi32_to_12xi32_3(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <12 x i32> <i32 5, i32 20, i32 1, i32 3, i32 14, i32 18, i32 10, i32 1, i32 6, i32 16, i32 21, i32 22> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_12xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %7, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 5, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %3, <4 x i32> %6, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 5, i32 6> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <12 x i32> @shuffle_12xi32_to_12xi32_4(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <12 x i32> <i32 7, i32 9, i32 16, i32 5, i32 13, i32 19, i32 6, i32 9, i32 6, i32 15, i32 8, i32 0> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_12xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <12 x i32> @shuffle_12xi32_to_12xi32_5(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <12 x i32> <i32 2, i32 11, i32 19, i32 2, i32 14, i32 21, i32 17, i32 3, i32 1, i32 4, i32 3, i32 11> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_12xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %2, <4 x i32> %3, <4 x i32> <i32 1, i32 4, i32 3, i32 3> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <12 x i32> @shuffle_12xi32_to_12xi32_6(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <12 x i32> <i32 20, i32 6, i32 9, i32 13, i32 20, i32 19, i32 17, i32 21, i32 12, i32 8, i32 8, i32 8> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_12xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %7, <4 x i32> %6, <4 x i32> <i32 0, i32 7, i32 5, i32 1> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <12 x i32> @shuffle_12xi32_to_12xi32_7(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <12 x i32> <i32 10, i32 15, i32 5, i32 15, i32 15, i32 21, i32 3, i32 16, i32 10, i32 4, i32 0, i32 17> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_12xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <12 x i32> @shuffle_12xi32_to_12xi32_8(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <12 x i32> <i32 12, i32 7, i32 3, i32 10, i32 11, i32 4, i32 11, i32 20, i32 15, i32 19, i32 20, i32 17> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_12xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 3, i32 4, i32 3, i32 3> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <12 x i32> @shuffle_12xi32_to_12xi32_9(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <12 x i32> <i32 5, i32 14, i32 9, i32 5, i32 15, i32 18, i32 11, i32 18, i32 19, i32 3, i32 7, i32 15> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_12xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %6, <4 x i32> %2, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <16 x i32> @shuffle_12xi32_to_16xi32_0(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <16 x i32> <i32 15, i32 11, i32 14, i32 12, i32 2, i32 14, i32 18, i32 2, i32 14, i32 0, i32 10, i32 5, i32 9, i32 9, i32 21, i32 0> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_16xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 3, i32 7, i32 2, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %3, <4 x i32> %6, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %5, <4 x i32> %8, <4 x i32> <i32 1, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <16 x i32> @shuffle_12xi32_to_16xi32_1(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <16 x i32> <i32 1, i32 9, i32 12, i32 2, i32 15, i32 8, i32 0, i32 20, i32 10, i32 16, i32 18, i32 17, i32 9, i32 17, i32 0, i32 18> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_16xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 2, i32 4, i32 6, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <16 x i32> @shuffle_12xi32_to_16xi32_2(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <16 x i32> <i32 18, i32 5, i32 6, i32 3, i32 7, i32 10, i32 22, i32 18, i32 15, i32 14, i32 14, i32 10, i32 6, i32 14, i32 9, i32 6> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_16xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 2, i32 5, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 3, i32 2, i32 2, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <16 x i32> @shuffle_12xi32_to_16xi32_3(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <16 x i32> <i32 17, i32 11, i32 6, i32 13, i32 6, i32 15, i32 22, i32 13, i32 12, i32 18, i32 15, i32 13, i32 9, i32 21, i32 22, i32 3> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_16xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %6, <4 x i32> %7, <4 x i32> <i32 0, i32 6, i32 3, i32 1> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %5, <4 x i32> %8, <4 x i32> <i32 1, i32 5, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <16 x i32> @shuffle_12xi32_to_16xi32_4(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <16 x i32> <i32 9, i32 6, i32 16, i32 18, i32 6, i32 8, i32 8, i32 15, i32 10, i32 18, i32 16, i32 18, i32 6, i32 1, i32 22, i32 2> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_16xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 2, i32 6, i32 4, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <16 x i32> @shuffle_12xi32_to_16xi32_5(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <16 x i32> <i32 15, i32 3, i32 8, i32 18, i32 18, i32 9, i32 14, i32 4, i32 11, i32 5, i32 2, i32 6, i32 6, i32 19, i32 0, i32 19> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_16xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <16 x i32> @shuffle_12xi32_to_16xi32_6(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <16 x i32> <i32 6, i32 7, i32 18, i32 5, i32 1, i32 16, i32 21, i32 11, i32 2, i32 2, i32 0, i32 19, i32 10, i32 10, i32 21, i32 19> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_16xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 2, i32 3, i32 6, i32 1> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %3, <4 x i32> %7, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %3, <4 x i32> %7, <4 x i32> <i32 2, i32 2, i32 0, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %8, <4 x i32> <i32 2, i32 2, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <16 x i32> @shuffle_12xi32_to_16xi32_7(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <16 x i32> <i32 19, i32 21, i32 22, i32 12, i32 18, i32 11, i32 20, i32 5, i32 12, i32 5, i32 22, i32 16, i32 6, i32 9, i32 13, i32 17> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_16xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %7, <4 x i32> %8, <4 x i32> <i32 3, i32 5, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <16 x i32> @shuffle_12xi32_to_16xi32_8(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <16 x i32> <i32 0, i32 17, i32 16, i32 3, i32 12, i32 3, i32 20, i32 22, i32 8, i32 9, i32 0, i32 20, i32 11, i32 20, i32 13, i32 6> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_16xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %7, <4 x i32> <i32 0, i32 5, i32 4, i32 3> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 4, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %8, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <16 x i32> @shuffle_12xi32_to_16xi32_9(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <16 x i32> <i32 0, i32 6, i32 10, i32 3, i32 9, i32 2, i32 22, i32 22, i32 5, i32 9, i32 21, i32 17, i32 6, i32 2, i32 12, i32 20> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_16xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <20 x i32> @shuffle_12xi32_to_20xi32_0(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <20 x i32> <i32 13, i32 15, i32 10, i32 6, i32 14, i32 0, i32 3, i32 9, i32 14, i32 4, i32 8, i32 20, i32 19, i32 1, i32 16, i32 20, i32 7, i32 7, i32 13, i32 20> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_20xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %7, <4 x i32> %6, <4 x i32> <i32 1, i32 3, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 3, i32 5, i32 0, i32 0> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 3, i32 3, i32 5, i32 5> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <20 x i32> @shuffle_12xi32_to_20xi32_1(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <20 x i32> <i32 4, i32 2, i32 9, i32 14, i32 22, i32 17, i32 12, i32 10, i32 6, i32 13, i32 21, i32 14, i32 2, i32 19, i32 17, i32 12, i32 15, i32 17, i32 9, i32 12> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_20xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %9, <4 x i32> %8, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %5, <4 x i32> %7, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %4, <4 x i32> %8, <4 x i32> <i32 2, i32 7, i32 5, i32 5> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %7, <4 x i32> %8, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %24, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <20 x i32> @shuffle_12xi32_to_20xi32_2(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <20 x i32> <i32 3, i32 1, i32 10, i32 4, i32 17, i32 18, i32 9, i32 17, i32 9, i32 13, i32 1, i32 20, i32 11, i32 0, i32 15, i32 15, i32 16, i32 3, i32 19, i32 12> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_20xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 1, i32 2, i32 5, i32 1> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %6, <4 x i32> %7, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 0, i32 7, i32 3, i32 3> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <20 x i32> @shuffle_12xi32_to_20xi32_3(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <20 x i32> <i32 2, i32 4, i32 0, i32 22, i32 17, i32 18, i32 15, i32 7, i32 4, i32 9, i32 2, i32 9, i32 10, i32 6, i32 19, i32 6, i32 15, i32 7, i32 5, i32 5> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_20xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %8, <4 x i32> %7, <4 x i32> <i32 1, i32 2, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 3, i32 7, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <20 x i32> @shuffle_12xi32_to_20xi32_4(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <20 x i32> <i32 4, i32 20, i32 1, i32 15, i32 17, i32 13, i32 7, i32 8, i32 10, i32 22, i32 7, i32 8, i32 11, i32 14, i32 0, i32 12, i32 12, i32 14, i32 19, i32 3> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_20xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %9, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %8, <4 x i32> %7, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %6, <4 x i32> %9, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %6, <4 x i32> %7, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %7, <4 x i32> %8, <4 x i32> <i32 0, i32 2, i32 7, i32 7> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %24, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <20 x i32> @shuffle_12xi32_to_20xi32_5(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <20 x i32> <i32 20, i32 21, i32 13, i32 7, i32 13, i32 6, i32 20, i32 17, i32 1, i32 9, i32 16, i32 8, i32 21, i32 21, i32 7, i32 10, i32 5, i32 10, i32 8, i32 18> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_20xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %9, <4 x i32> %5, <4 x i32> <i32 1, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 1, i32 6, i32 4, i32 4> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <20 x i32> @shuffle_12xi32_to_20xi32_6(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <20 x i32> <i32 14, i32 19, i32 14, i32 3, i32 6, i32 9, i32 17, i32 21, i32 8, i32 16, i32 16, i32 7, i32 13, i32 20, i32 4, i32 11, i32 10, i32 4, i32 4, i32 19> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_20xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %7, <4 x i32> %8, <4 x i32> <i32 2, i32 7, i32 2, i32 2> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %6, <4 x i32> %8, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %7, <4 x i32> %9, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <20 x i32> @shuffle_12xi32_to_20xi32_7(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <20 x i32> <i32 22, i32 5, i32 5, i32 6, i32 9, i32 16, i32 19, i32 16, i32 14, i32 9, i32 10, i32 5, i32 3, i32 10, i32 20, i32 18, i32 18, i32 11, i32 17, i32 7> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_20xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %9, <4 x i32> %5, <4 x i32> <i32 2, i32 5, i32 5, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %8, <4 x i32> <i32 1, i32 4, i32 7, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %7, <4 x i32> %6, <4 x i32> <i32 2, i32 5, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 2, i32 7, i32 1, i32 1> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <20 x i32> @shuffle_12xi32_to_20xi32_8(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <20 x i32> <i32 18, i32 21, i32 0, i32 1, i32 4, i32 4, i32 11, i32 10, i32 9, i32 21, i32 16, i32 6, i32 7, i32 1, i32 9, i32 14, i32 11, i32 1, i32 18, i32 18> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_20xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %8, <4 x i32> %9, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 0, i32 0, i32 7, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %6, <4 x i32> %9, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <20 x i32> @shuffle_12xi32_to_20xi32_9(<12 x i32>, <12 x i32>) { |
+ %3 = shufflevector <12 x i32> %0, <12 x i32> %1, <20 x i32> <i32 21, i32 10, i32 18, i32 0, i32 7, i32 16, i32 4, i32 15, i32 5, i32 20, i32 8, i32 19, i32 4, i32 20, i32 20, i32 7, i32 13, i32 7, i32 9, i32 13> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_12xi32_to_20xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %5, <4 x i32> %8, <4 x i32> <i32 3, i32 4, i32 0, i32 0> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %5, <4 x i32> %9, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %5, <4 x i32> %9, <4 x i32> <i32 0, i32 4, i32 4, i32 3> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <2 x i32> @shuffle_16xi32_to_2xi32_0(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <2 x i32> <i32 3, i32 12> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_2xi32_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %0, <4 x i32> %3, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <2 x i32> @shuffle_16xi32_to_2xi32_1(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <2 x i32> <i32 1, i32 2> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_2xi32_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %0, <4 x i32> undef, <4 x i32> <i32 1, i32 2, i32 2, i32 2> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <2 x i32> @shuffle_16xi32_to_2xi32_2(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <2 x i32> <i32 14, i32 1> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_2xi32_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %0, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <2 x i32> @shuffle_16xi32_to_2xi32_3(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <2 x i32> <i32 21, i32 25> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_2xi32_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <2 x i32> @shuffle_16xi32_to_2xi32_4(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <2 x i32> <i32 18, i32 6> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_2xi32_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <2 x i32> @shuffle_16xi32_to_2xi32_5(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <2 x i32> <i32 13, i32 20> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_2xi32_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <2 x i32> @shuffle_16xi32_to_2xi32_6(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <2 x i32> <i32 10, i32 0> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_2xi32_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %2, <4 x i32> %0, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <2 x i32> @shuffle_16xi32_to_2xi32_7(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <2 x i32> <i32 12, i32 24> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_2xi32_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %6, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <2 x i32> @shuffle_16xi32_to_2xi32_8(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <2 x i32> <i32 22, i32 21> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_2xi32_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> undef, <4 x i32> <i32 2, i32 1, i32 1, i32 1> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <2 x i32> @shuffle_16xi32_to_2xi32_9(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <2 x i32> <i32 27, i32 20> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_2xi32_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <4 x i32> @shuffle_16xi32_to_4xi32_0(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <4 x i32> <i32 22, i32 6, i32 29, i32 29> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_4xi32_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <4 x i32> @shuffle_16xi32_to_4xi32_1(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <4 x i32> <i32 28, i32 29, i32 14, i32 17> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_4xi32_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <4 x i32> @shuffle_16xi32_to_4xi32_2(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <4 x i32> <i32 18, i32 5, i32 4, i32 10> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_4xi32_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 2, i32 5, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <4 x i32> @shuffle_16xi32_to_4xi32_3(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <4 x i32> <i32 9, i32 19, i32 22, i32 22> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_4xi32_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <4 x i32> @shuffle_16xi32_to_4xi32_4(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <4 x i32> <i32 28, i32 13, i32 0, i32 26> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_4xi32_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %0, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <4 x i32> @shuffle_16xi32_to_4xi32_5(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <4 x i32> <i32 24, i32 1, i32 25, i32 27> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_4xi32_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %6, <4 x i32> %0, <4 x i32> <i32 0, i32 5, i32 1, i32 3> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <4 x i32> @shuffle_16xi32_to_4xi32_6(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <4 x i32> <i32 12, i32 6, i32 19, i32 11> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_4xi32_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <4 x i32> @shuffle_16xi32_to_4xi32_7(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <4 x i32> <i32 12, i32 14, i32 19, i32 17> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_4xi32_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 2, i32 7, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %9 |
+ |
+define <4 x i32> @shuffle_16xi32_to_4xi32_8(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <4 x i32> <i32 12, i32 11, i32 24, i32 4> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_4xi32_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <4 x i32> @shuffle_16xi32_to_4xi32_9(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <4 x i32> <i32 2, i32 0, i32 20, i32 28> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_4xi32_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %9 = shufflevector <4 x i32> %0, <4 x i32> %5, <4 x i32> <i32 2, i32 0, i32 4, i32 4> |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <6 x i32> @shuffle_16xi32_to_6xi32_0(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <6 x i32> <i32 21, i32 11, i32 20, i32 26, i32 25, i32 5> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_6xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 1, i32 7, i32 0, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %7, <4 x i32> %2, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <6 x i32> @shuffle_16xi32_to_6xi32_1(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <6 x i32> <i32 14, i32 12, i32 17, i32 30, i32 28, i32 15> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_6xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 0, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <6 x i32> @shuffle_16xi32_to_6xi32_2(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <6 x i32> <i32 25, i32 3, i32 21, i32 5, i32 8, i32 30> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_6xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %7, <4 x i32> %1, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %3, <4 x i32> %8, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <6 x i32> @shuffle_16xi32_to_6xi32_3(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <6 x i32> <i32 8, i32 16, i32 28, i32 18, i32 7, i32 19> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_6xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %2, <4 x i32> %5, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <6 x i32> @shuffle_16xi32_to_6xi32_4(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <6 x i32> <i32 13, i32 7, i32 8, i32 5, i32 13, i32 19> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_6xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <6 x i32> @shuffle_16xi32_to_6xi32_5(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <6 x i32> <i32 26, i32 0, i32 0, i32 2, i32 16, i32 9> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_6xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %7, <4 x i32> %1, <4 x i32> <i32 2, i32 4, i32 4, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %3, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <6 x i32> @shuffle_16xi32_to_6xi32_6(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <6 x i32> <i32 20, i32 30, i32 11, i32 0, i32 20, i32 3> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_6xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %6, <4 x i32> %8, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %6, <4 x i32> %1, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <6 x i32> @shuffle_16xi32_to_6xi32_7(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <6 x i32> <i32 10, i32 3, i32 7, i32 6, i32 2, i32 11> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_6xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 7, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <6 x i32> @shuffle_16xi32_to_6xi32_8(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <6 x i32> <i32 15, i32 16, i32 19, i32 12, i32 18, i32 29> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_6xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 3, i32 4, i32 7, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %8, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <6 x i32> @shuffle_16xi32_to_6xi32_9(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <6 x i32> <i32 15, i32 4, i32 4, i32 15, i32 0, i32 16> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_6xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 3, i32 4, i32 4, i32 3> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %1, <4 x i32> %5, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %11, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <8 x i32> @shuffle_16xi32_to_8xi32_0(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <8 x i32> <i32 17, i32 20, i32 29, i32 9, i32 9, i32 7, i32 17, i32 22> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_8xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <8 x i32> @shuffle_16xi32_to_8xi32_1(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <8 x i32> <i32 1, i32 12, i32 18, i32 23, i32 15, i32 6, i32 0, i32 28> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_8xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %1, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <8 x i32> @shuffle_16xi32_to_8xi32_2(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <8 x i32> <i32 21, i32 6, i32 11, i32 22, i32 23, i32 30, i32 1, i32 2> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_8xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %6, <4 x i32> %2, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %6, <4 x i32> %8, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 5, i32 6> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <8 x i32> @shuffle_16xi32_to_8xi32_3(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <8 x i32> <i32 12, i32 29, i32 3, i32 24, i32 29, i32 4, i32 8, i32 2> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_8xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %8, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %8, <4 x i32> %2, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <8 x i32> @shuffle_16xi32_to_8xi32_4(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <8 x i32> <i32 26, i32 30, i32 25, i32 27, i32 9, i32 24, i32 4, i32 1> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_8xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %7, <4 x i32> %8, <4 x i32> <i32 2, i32 6, i32 1, i32 3> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %3, <4 x i32> %7, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %13, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <8 x i32> @shuffle_16xi32_to_8xi32_5(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <8 x i32> <i32 0, i32 5, i32 0, i32 17, i32 30, i32 12, i32 23, i32 1> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_8xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %1, <4 x i32> %2, <4 x i32> <i32 0, i32 5, i32 0, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <8 x i32> @shuffle_16xi32_to_8xi32_6(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <8 x i32> <i32 13, i32 1, i32 0, i32 6, i32 24, i32 16, i32 23, i32 14> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_8xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 1, i32 5, i32 4, i32 4> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <8 x i32> @shuffle_16xi32_to_8xi32_7(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <8 x i32> <i32 4, i32 21, i32 17, i32 2, i32 15, i32 30, i32 10, i32 14> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_8xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %2, <4 x i32> %6, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %8, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <8 x i32> @shuffle_16xi32_to_8xi32_8(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <8 x i32> <i32 18, i32 1, i32 1, i32 24, i32 2, i32 19, i32 21, i32 6> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_8xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %10, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %1, <4 x i32> %5, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <8 x i32> @shuffle_16xi32_to_8xi32_9(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <8 x i32> <i32 4, i32 14, i32 14, i32 4, i32 30, i32 23, i32 23, i32 11> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_8xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %10 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 6, i32 0> |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+ |
+define <12 x i32> @shuffle_16xi32_to_12xi32_0(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <12 x i32> <i32 3, i32 24, i32 25, i32 17, i32 11, i32 21, i32 30, i32 0, i32 22, i32 19, i32 0, i32 23> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_12xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %2, <4 x i32> %8, <4 x i32> <i32 3, i32 4, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %7, <4 x i32> %6, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <12 x i32> @shuffle_16xi32_to_12xi32_1(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <12 x i32> <i32 21, i32 3, i32 9, i32 20, i32 21, i32 22, i32 14, i32 25, i32 5, i32 28, i32 29, i32 1> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_12xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %7, <4 x i32> %2, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 1, i32 2, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %3, <4 x i32> %9, <4 x i32> <i32 1, i32 4, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <12 x i32> @shuffle_16xi32_to_12xi32_2(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <12 x i32> <i32 20, i32 1, i32 8, i32 28, i32 9, i32 28, i32 14, i32 29, i32 2, i32 14, i32 29, i32 6> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_12xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %7, <4 x i32> %2, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %4, <4 x i32> %9, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %2, <4 x i32> %5, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <12 x i32> @shuffle_16xi32_to_12xi32_3(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <12 x i32> <i32 25, i32 12, i32 6, i32 23, i32 21, i32 16, i32 19, i32 7, i32 8, i32 24, i32 27, i32 5> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_12xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %7, <4 x i32> %6, <4 x i32> <i32 1, i32 4, i32 7, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %4, <4 x i32> %8, <4 x i32> <i32 0, i32 4, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <12 x i32> @shuffle_16xi32_to_12xi32_4(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <12 x i32> <i32 26, i32 25, i32 30, i32 27, i32 4, i32 28, i32 16, i32 5, i32 25, i32 28, i32 23, i32 15> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_12xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %8, <4 x i32> %9, <4 x i32> <i32 2, i32 1, i32 6, i32 3> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %3, <4 x i32> %9, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %8, <4 x i32> %9, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <12 x i32> @shuffle_16xi32_to_12xi32_5(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <12 x i32> <i32 4, i32 21, i32 11, i32 5, i32 2, i32 19, i32 10, i32 1, i32 27, i32 17, i32 8, i32 24> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_12xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %3, <4 x i32> %7, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %2, <4 x i32> %6, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <12 x i32> @shuffle_16xi32_to_12xi32_6(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <12 x i32> <i32 9, i32 29, i32 28, i32 9, i32 24, i32 3, i32 3, i32 27, i32 4, i32 9, i32 8, i32 21> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_12xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %9, <4 x i32> <i32 1, i32 5, i32 4, i32 1> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %8, <4 x i32> %2, <4 x i32> <i32 0, i32 7, i32 7, i32 3> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %12, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <12 x i32> @shuffle_16xi32_to_12xi32_7(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <12 x i32> <i32 1, i32 1, i32 19, i32 8, i32 4, i32 13, i32 22, i32 17, i32 7, i32 10, i32 26, i32 5> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_12xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %2, <4 x i32> %6, <4 x i32> <i32 1, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <12 x i32> @shuffle_16xi32_to_12xi32_8(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <12 x i32> <i32 8, i32 18, i32 30, i32 9, i32 14, i32 12, i32 2, i32 1, i32 19, i32 7, i32 16, i32 17> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_12xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %5, <4 x i32> %2, <4 x i32> <i32 2, i32 0, i32 6, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 3, i32 7, i32 0, i32 1> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <12 x i32> @shuffle_16xi32_to_12xi32_9(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <12 x i32> <i32 29, i32 30, i32 1, i32 18, i32 18, i32 22, i32 5, i32 22, i32 1, i32 26, i32 5, i32 13> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_12xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %9, <4 x i32> %2, <4 x i32> <i32 1, i32 2, i32 5, i32 5> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %6, <4 x i32> %7, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %2, <4 x i32> %8, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <16 x i32> @shuffle_16xi32_to_16xi32_0(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <16 x i32> <i32 0, i32 25, i32 0, i32 24, i32 6, i32 17, i32 23, i32 21, i32 15, i32 16, i32 24, i32 17, i32 26, i32 26, i32 24, i32 21> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_16xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %3, <4 x i32> %9, <4 x i32> <i32 0, i32 5, i32 0, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 7, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %6, <4 x i32> %7, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %9, <4 x i32> %8, <4 x i32> <i32 2, i32 2, i32 0, i32 5> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <16 x i32> @shuffle_16xi32_to_16xi32_1(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <16 x i32> <i32 13, i32 4, i32 10, i32 19, i32 21, i32 13, i32 27, i32 21, i32 21, i32 14, i32 5, i32 2, i32 11, i32 15, i32 15, i32 16> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_16xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <16 x i32> @shuffle_16xi32_to_16xi32_2(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <16 x i32> <i32 19, i32 15, i32 12, i32 18, i32 24, i32 27, i32 0, i32 29, i32 15, i32 11, i32 11, i32 25, i32 13, i32 30, i32 12, i32 19> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_16xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %7, <4 x i32> %6, <4 x i32> <i32 3, i32 7, i32 4, i32 2> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 3, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %6, <4 x i32> %10, <4 x i32> <i32 1, i32 6, i32 0, i32 0> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <16 x i32> @shuffle_16xi32_to_16xi32_3(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <16 x i32> <i32 4, i32 28, i32 27, i32 23, i32 6, i32 29, i32 17, i32 23, i32 20, i32 12, i32 12, i32 18, i32 30, i32 28, i32 20, i32 8> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_16xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %10, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %10, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %10, <4 x i32> %8, <4 x i32> <i32 2, i32 0, i32 4, i32 4> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <16 x i32> @shuffle_16xi32_to_16xi32_4(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <16 x i32> <i32 20, i32 6, i32 14, i32 26, i32 20, i32 30, i32 18, i32 25, i32 1, i32 21, i32 3, i32 12, i32 8, i32 29, i32 26, i32 17> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_16xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %8, <4 x i32> %10, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %3, <4 x i32> %8, <4 x i32> <i32 1, i32 5, i32 3, i32 3> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %5, <4 x i32> %10, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <16 x i32> @shuffle_16xi32_to_16xi32_5(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <16 x i32> <i32 27, i32 4, i32 0, i32 12, i32 0, i32 11, i32 14, i32 15, i32 17, i32 9, i32 27, i32 23, i32 17, i32 7, i32 30, i32 22> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_16xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 6, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <16 x i32> @shuffle_16xi32_to_16xi32_6(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <16 x i32> <i32 16, i32 0, i32 7, i32 26, i32 3, i32 28, i32 21, i32 21, i32 30, i32 17, i32 28, i32 0, i32 8, i32 24, i32 5, i32 7> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_16xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %3, <4 x i32> %10, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %10, <4 x i32> %7, <4 x i32> <i32 2, i32 5, i32 0, i32 0> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %5, <4 x i32> %9, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 7> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <16 x i32> @shuffle_16xi32_to_16xi32_7(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <16 x i32> <i32 13, i32 21, i32 0, i32 29, i32 6, i32 2, i32 15, i32 5, i32 7, i32 18, i32 14, i32 13, i32 2, i32 1, i32 14, i32 11> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_16xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %8, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %3, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 6, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %3, <4 x i32> %6, <4 x i32> <i32 2, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <16 x i32> @shuffle_16xi32_to_16xi32_8(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <16 x i32> <i32 0, i32 1, i32 19, i32 24, i32 6, i32 21, i32 24, i32 16, i32 19, i32 11, i32 3, i32 1, i32 5, i32 17, i32 27, i32 28> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_16xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %3, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %4, <4 x i32> %8, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 7, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <16 x i32> @shuffle_16xi32_to_16xi32_9(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <16 x i32> <i32 14, i32 0, i32 13, i32 20, i32 29, i32 0, i32 24, i32 10, i32 4, i32 10, i32 16, i32 15, i32 18, i32 22, i32 22, i32 28> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_16xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 2, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %7, <4 x i32> %8, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <20 x i32> @shuffle_16xi32_to_20xi32_0(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <20 x i32> <i32 18, i32 4, i32 4, i32 25, i32 5, i32 18, i32 0, i32 8, i32 28, i32 5, i32 17, i32 13, i32 0, i32 25, i32 7, i32 13, i32 9, i32 0, i32 15, i32 16> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_20xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %8, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %4, <4 x i32> %10, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %25, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %23, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %26, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <20 x i32> @shuffle_16xi32_to_20xi32_1(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <20 x i32> <i32 2, i32 0, i32 25, i32 16, i32 29, i32 8, i32 9, i32 11, i32 11, i32 30, i32 29, i32 22, i32 1, i32 9, i32 19, i32 18, i32 11, i32 14, i32 1, i32 9> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_20xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %10, <4 x i32> <i32 2, i32 0, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 1, i32 4, i32 5, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %6, <4 x i32> %11, <4 x i32> <i32 3, i32 6, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 7, i32 6> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %6, <4 x i32> %7, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <20 x i32> @shuffle_16xi32_to_20xi32_2(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <20 x i32> <i32 18, i32 15, i32 28, i32 26, i32 17, i32 6, i32 8, i32 25, i32 13, i32 23, i32 30, i32 9, i32 10, i32 29, i32 6, i32 28, i32 4, i32 9, i32 13, i32 2> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_20xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %8, <4 x i32> %7, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %7, <4 x i32> %9, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %6, <4 x i32> %11, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %25, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %27 = shufflevector <4 x i32> %26, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %24, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %27, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <20 x i32> @shuffle_16xi32_to_20xi32_3(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <20 x i32> <i32 21, i32 10, i32 10, i32 16, i32 20, i32 15, i32 7, i32 4, i32 13, i32 15, i32 27, i32 8, i32 19, i32 16, i32 14, i32 25, i32 4, i32 19, i32 19, i32 29> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_20xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %7, <4 x i32> %10, <4 x i32> <i32 1, i32 3, i32 7, i32 7> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %8, <4 x i32> %7, <4 x i32> <i32 3, i32 0, i32 6, i32 6> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %5, <4 x i32> %8, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <20 x i32> @shuffle_16xi32_to_20xi32_4(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <20 x i32> <i32 17, i32 10, i32 24, i32 1, i32 13, i32 9, i32 6, i32 10, i32 15, i32 27, i32 13, i32 7, i32 0, i32 16, i32 30, i32 22, i32 29, i32 16, i32 23, i32 3> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_20xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %7, <4 x i32> %6, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %7, <4 x i32> %10, <4 x i32> <i32 3, i32 7, i32 1, i32 1> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %4, <4 x i32> %8, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %11, <4 x i32> %8, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %25, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %23, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %26, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <20 x i32> @shuffle_16xi32_to_20xi32_5(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <20 x i32> <i32 2, i32 2, i32 1, i32 14, i32 20, i32 0, i32 15, i32 30, i32 19, i32 19, i32 18, i32 20, i32 20, i32 13, i32 21, i32 15, i32 7, i32 11, i32 29, i32 4> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_20xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 2, i32 2, i32 1, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %8, <4 x i32> %9, <4 x i32> <i32 3, i32 3, i32 2, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 0, i32 5, i32 1, i32 7> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <20 x i32> @shuffle_16xi32_to_20xi32_6(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <20 x i32> <i32 24, i32 13, i32 9, i32 13, i32 25, i32 20, i32 8, i32 29, i32 10, i32 3, i32 14, i32 29, i32 3, i32 29, i32 14, i32 14, i32 7, i32 9, i32 9, i32 19> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_20xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %10, <4 x i32> %7, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %10, <4 x i32> %9, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %4, <4 x i32> %11, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %23, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %25, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <20 x i32> @shuffle_16xi32_to_20xi32_7(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <20 x i32> <i32 15, i32 9, i32 28, i32 26, i32 15, i32 23, i32 5, i32 1, i32 18, i32 12, i32 12, i32 13, i32 26, i32 15, i32 25, i32 19, i32 7, i32 28, i32 2, i32 12> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_20xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %7, <4 x i32> %6, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %7, <4 x i32> %9, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %8, <4 x i32> %7, <4 x i32> <i32 2, i32 4, i32 4, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %10, <4 x i32> %7, <4 x i32> <i32 2, i32 7, i32 1, i32 1> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %5, <4 x i32> %11, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %24, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <20 x i32> @shuffle_16xi32_to_20xi32_8(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <20 x i32> <i32 28, i32 9, i32 16, i32 26, i32 8, i32 21, i32 5, i32 10, i32 11, i32 20, i32 14, i32 16, i32 16, i32 11, i32 29, i32 2, i32 23, i32 16, i32 8, i32 21> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_20xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %6, <4 x i32> %9, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %6, <4 x i32> %9, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %9, <4 x i32> %8, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %25, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %27 = shufflevector <4 x i32> %26, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %24, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %27, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <20 x i32> @shuffle_16xi32_to_20xi32_9(<16 x i32>, <16 x i32>) { |
+ %3 = shufflevector <16 x i32> %0, <16 x i32> %1, <20 x i32> <i32 5, i32 7, i32 24, i32 3, i32 0, i32 11, i32 19, i32 10, i32 26, i32 3, i32 25, i32 16, i32 27, i32 23, i32 9, i32 26, i32 27, i32 7, i32 29, i32 23> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_16xi32_to_20xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %5, <4 x i32> %10, <4 x i32> <i32 1, i32 3, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %10, <4 x i32> %4, <4 x i32> <i32 2, i32 7, i32 1, i32 1> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %10, <4 x i32> %9, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %25, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <2 x i32> @shuffle_20xi32_to_2xi32_0(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <2 x i32> <i32 4, i32 2> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_2xi32_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <2 x i32> @shuffle_20xi32_to_2xi32_1(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <2 x i32> <i32 2, i32 4> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_2xi32_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %0, <4 x i32> %1, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <2 x i32> @shuffle_20xi32_to_2xi32_2(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <2 x i32> <i32 34, i32 16> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_2xi32_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <2 x i32> @shuffle_20xi32_to_2xi32_3(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <2 x i32> <i32 27, i32 25> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_2xi32_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %6, <4 x i32> undef, <4 x i32> <i32 3, i32 1, i32 1, i32 1> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <2 x i32> @shuffle_20xi32_to_2xi32_4(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <2 x i32> <i32 2, i32 29> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_2xi32_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %0, <4 x i32> %7, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <2 x i32> @shuffle_20xi32_to_2xi32_5(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <2 x i32> <i32 18, i32 0> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_2xi32_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %0, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <2 x i32> @shuffle_20xi32_to_2xi32_6(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <2 x i32> <i32 37, i32 3> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_2xi32_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %9, <4 x i32> %0, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <2 x i32> @shuffle_20xi32_to_2xi32_7(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <2 x i32> <i32 3, i32 33> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_2xi32_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %0, <4 x i32> %8, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <2 x i32> @shuffle_20xi32_to_2xi32_8(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <2 x i32> <i32 28, i32 17> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_2xi32_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <2 x i32> @shuffle_20xi32_to_2xi32_9(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <2 x i32> <i32 16, i32 35> |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_2xi32_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %8, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: ret <4 x i32> %11 |
+ |
+define <4 x i32> @shuffle_20xi32_to_4xi32_0(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <4 x i32> <i32 38, i32 30, i32 38, i32 13> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_4xi32_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 2, i32 6, i32 2, i32 2> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <4 x i32> @shuffle_20xi32_to_4xi32_1(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <4 x i32> <i32 38, i32 14, i32 25, i32 14> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_4xi32_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <4 x i32> @shuffle_20xi32_to_4xi32_2(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <4 x i32> <i32 24, i32 7, i32 3, i32 32> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_4xi32_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %6, <4 x i32> %1, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %0, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <4 x i32> @shuffle_20xi32_to_4xi32_3(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <4 x i32> <i32 18, i32 20, i32 35, i32 34> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_4xi32_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 7, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <4 x i32> @shuffle_20xi32_to_4xi32_4(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <4 x i32> <i32 22, i32 26, i32 4, i32 9> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_4xi32_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <4 x i32> @shuffle_20xi32_to_4xi32_5(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <4 x i32> <i32 29, i32 6, i32 31, i32 34> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_4xi32_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %7, <4 x i32> %1, <4 x i32> <i32 1, i32 6, i32 3, i32 3> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <4 x i32> @shuffle_20xi32_to_4xi32_6(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <4 x i32> <i32 9, i32 18, i32 15, i32 8> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_4xi32_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %2, <4 x i32> %4, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <4 x i32> @shuffle_20xi32_to_4xi32_7(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <4 x i32> <i32 6, i32 38, i32 10, i32 8> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_4xi32_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %1, <4 x i32> %9, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 6, i32 4> |
+; CHECK-NEXT: ret <4 x i32> %12 |
+ |
+define <4 x i32> @shuffle_20xi32_to_4xi32_8(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <4 x i32> <i32 35, i32 2, i32 15, i32 21> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_4xi32_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %8, <4 x i32> %0, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <4 x i32> @shuffle_20xi32_to_4xi32_9(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <4 x i32> <i32 21, i32 19, i32 27, i32 37> |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_4xi32_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %11 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <6 x i32> @shuffle_20xi32_to_6xi32_0(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <6 x i32> <i32 11, i32 6, i32 8, i32 2, i32 24, i32 3> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_6xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 3, i32 6, i32 0, i32 0> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %7, <4 x i32> %1, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <6 x i32> @shuffle_20xi32_to_6xi32_1(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <6 x i32> <i32 33, i32 24, i32 30, i32 20, i32 37, i32 31> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_6xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %10, <4 x i32> %8, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <6 x i32> @shuffle_20xi32_to_6xi32_2(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <6 x i32> <i32 35, i32 38, i32 32, i32 2, i32 2, i32 2> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_6xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %9, <4 x i32> %10, <4 x i32> <i32 3, i32 6, i32 0, i32 0> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 2, i32 2, i32 2, i32 2> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <6 x i32> @shuffle_20xi32_to_6xi32_3(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <6 x i32> <i32 34, i32 21, i32 21, i32 24, i32 8, i32 4> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_6xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %9, <4 x i32> %6, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <6 x i32> @shuffle_20xi32_to_6xi32_4(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <6 x i32> <i32 18, i32 0, i32 33, i32 30, i32 22, i32 25> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_6xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %6, <4 x i32> %7, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <6 x i32> @shuffle_20xi32_to_6xi32_5(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <6 x i32> <i32 1, i32 31, i32 14, i32 4, i32 25, i32 36> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_6xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %1, <4 x i32> %8, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %7, <4 x i32> %10, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <6 x i32> @shuffle_20xi32_to_6xi32_6(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <6 x i32> <i32 9, i32 17, i32 0, i32 27, i32 9, i32 35> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_6xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %3, <4 x i32> %9, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <6 x i32> @shuffle_20xi32_to_6xi32_7(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <6 x i32> <i32 28, i32 26, i32 24, i32 19, i32 9, i32 6> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_6xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %8, <4 x i32> %7, <4 x i32> <i32 0, i32 6, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: store <4 x i32> %14, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <6 x i32> @shuffle_20xi32_to_6xi32_8(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <6 x i32> <i32 38, i32 9, i32 19, i32 6, i32 0, i32 13> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_6xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %10, <4 x i32> %3, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %1, <4 x i32> %4, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <6 x i32> @shuffle_20xi32_to_6xi32_9(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <6 x i32> <i32 30, i32 8, i32 19, i32 23, i32 28, i32 32> |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_6xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %8, <4 x i32> %3, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %8, <4 x i32> %9, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <8 x i32> @shuffle_20xi32_to_8xi32_0(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <8 x i32> <i32 9, i32 3, i32 37, i32 8, i32 15, i32 2, i32 19, i32 28> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_8xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %3, <4 x i32> %1, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %1, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <8 x i32> @shuffle_20xi32_to_8xi32_1(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <8 x i32> <i32 24, i32 28, i32 10, i32 37, i32 30, i32 5, i32 13, i32 11> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_8xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %7, <4 x i32> %8, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %8, <4 x i32> %2, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <8 x i32> @shuffle_20xi32_to_8xi32_2(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <8 x i32> <i32 12, i32 27, i32 35, i32 3, i32 10, i32 12, i32 38, i32 30> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_8xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %4, <4 x i32> %7, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %3, <4 x i32> %4, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <8 x i32> @shuffle_20xi32_to_8xi32_3(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <8 x i32> <i32 9, i32 9, i32 30, i32 13, i32 4, i32 17, i32 18, i32 27> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_8xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %3, <4 x i32> %8, <4 x i32> <i32 1, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %2, <4 x i32> %5, <4 x i32> <i32 0, i32 5, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <8 x i32> @shuffle_20xi32_to_8xi32_4(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <8 x i32> <i32 17, i32 35, i32 22, i32 26, i32 16, i32 2, i32 5, i32 15> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_8xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %5, <4 x i32> %9, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %1, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <8 x i32> @shuffle_20xi32_to_8xi32_5(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <8 x i32> <i32 21, i32 22, i32 18, i32 11, i32 28, i32 36, i32 5, i32 35> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_8xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 1, i32 2, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %8, <4 x i32> %10, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <8 x i32> @shuffle_20xi32_to_8xi32_6(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <8 x i32> <i32 4, i32 24, i32 15, i32 21, i32 34, i32 2, i32 5, i32 7> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_8xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %2, <4 x i32> %7, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %9, <4 x i32> %1, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 5, i32 7> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <8 x i32> @shuffle_20xi32_to_8xi32_7(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <8 x i32> <i32 30, i32 2, i32 30, i32 11, i32 21, i32 9, i32 9, i32 34> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_8xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %8, <4 x i32> %1, <4 x i32> <i32 2, i32 6, i32 2, i32 2> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %15, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <8 x i32> @shuffle_20xi32_to_8xi32_8(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <8 x i32> <i32 3, i32 9, i32 24, i32 37, i32 26, i32 38, i32 31, i32 27> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_8xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %1, <4 x i32> %3, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %7, <4 x i32> %10, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <8 x i32> @shuffle_20xi32_to_8xi32_9(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <8 x i32> <i32 4, i32 7, i32 2, i32 34, i32 21, i32 0, i32 29, i32 13> |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_8xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %12 = shufflevector <4 x i32> %2, <4 x i32> %1, <4 x i32> <i32 0, i32 3, i32 6, i32 6> |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %12, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %6, <4 x i32> %1, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <12 x i32> @shuffle_20xi32_to_12xi32_0(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <12 x i32> <i32 34, i32 35, i32 2, i32 2, i32 3, i32 18, i32 33, i32 2, i32 23, i32 13, i32 3, i32 22> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_12xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %10, <4 x i32> %2, <4 x i32> <i32 2, i32 3, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %2, <4 x i32> %6, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %13 |
+ |
+define <12 x i32> @shuffle_20xi32_to_12xi32_1(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <12 x i32> <i32 15, i32 25, i32 21, i32 38, i32 35, i32 2, i32 30, i32 36, i32 30, i32 23, i32 29, i32 18> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_12xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %5, <4 x i32> %8, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %10, <4 x i32> %2, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 2, i32 7, i32 1, i32 1> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <12 x i32> @shuffle_20xi32_to_12xi32_2(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <12 x i32> <i32 6, i32 0, i32 30, i32 25, i32 3, i32 28, i32 33, i32 4, i32 2, i32 25, i32 16, i32 25> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_12xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %3, <4 x i32> %2, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %2, <4 x i32> %9, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %2, <4 x i32> %8, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <12 x i32> @shuffle_20xi32_to_12xi32_3(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <12 x i32> <i32 11, i32 18, i32 22, i32 16, i32 21, i32 36, i32 7, i32 16, i32 38, i32 31, i32 23, i32 38> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_12xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %7, <4 x i32> %11, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %11, <4 x i32> %9, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <12 x i32> @shuffle_20xi32_to_12xi32_4(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <12 x i32> <i32 10, i32 19, i32 38, i32 13, i32 21, i32 25, i32 13, i32 9, i32 0, i32 19, i32 17, i32 4> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_12xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %7, <4 x i32> %8, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %2, <4 x i32> %6, <4 x i32> <i32 0, i32 7, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <12 x i32> @shuffle_20xi32_to_12xi32_5(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <12 x i32> <i32 24, i32 38, i32 8, i32 29, i32 2, i32 26, i32 0, i32 19, i32 17, i32 5, i32 24, i32 38> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_12xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %8, <4 x i32> %11, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %2, <4 x i32> %8, <4 x i32> <i32 2, i32 6, i32 0, i32 0> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %6, <4 x i32> %3, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <12 x i32> @shuffle_20xi32_to_12xi32_6(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <12 x i32> <i32 36, i32 20, i32 2, i32 22, i32 26, i32 24, i32 24, i32 14, i32 10, i32 15, i32 32, i32 9> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_12xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %11, <4 x i32> %7, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 2, i32 0, i32 0, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %4, <4 x i32> %5, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %16, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <12 x i32> @shuffle_20xi32_to_12xi32_7(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <12 x i32> <i32 1, i32 32, i32 3, i32 38, i32 8, i32 19, i32 35, i32 31, i32 7, i32 6, i32 25, i32 30> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_12xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %2, <4 x i32> %10, <4 x i32> <i32 1, i32 4, i32 3, i32 3> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %4, <4 x i32> %6, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %3, <4 x i32> %8, <4 x i32> <i32 3, i32 2, i32 5, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <12 x i32> @shuffle_20xi32_to_12xi32_8(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <12 x i32> <i32 25, i32 27, i32 9, i32 4, i32 28, i32 7, i32 32, i32 28, i32 22, i32 14, i32 25, i32 20> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_12xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 1, i32 3, i32 5, i32 5> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <12 x i32> @shuffle_20xi32_to_12xi32_9(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <12 x i32> <i32 8, i32 3, i32 21, i32 12, i32 25, i32 28, i32 37, i32 36, i32 15, i32 15, i32 2, i32 2> |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_12xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %13 = shufflevector <4 x i32> %4, <4 x i32> %2, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %13, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %8, <4 x i32> %9, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 5, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %5, <4 x i32> %2, <4 x i32> <i32 3, i32 3, i32 6, i32 6> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <16 x i32> @shuffle_20xi32_to_16xi32_0(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <16 x i32> <i32 23, i32 33, i32 2, i32 18, i32 9, i32 7, i32 36, i32 23, i32 23, i32 7, i32 10, i32 10, i32 5, i32 23, i32 7, i32 21> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_16xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %8, <4 x i32> %11, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %8, <4 x i32> %4, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %4, <4 x i32> %8, <4 x i32> <i32 1, i32 7, i32 3, i32 5> |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %16 |
+ |
+define <16 x i32> @shuffle_20xi32_to_16xi32_1(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <16 x i32> <i32 7, i32 21, i32 5, i32 10, i32 13, i32 28, i32 32, i32 22, i32 3, i32 21, i32 37, i32 38, i32 36, i32 6, i32 7, i32 7> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_16xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %4, <4 x i32> %8, <4 x i32> <i32 3, i32 5, i32 1, i32 1> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %6, <4 x i32> %10, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %3, <4 x i32> %8, <4 x i32> <i32 3, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 5, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 0, i32 6, i32 7, i32 7> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <16 x i32> @shuffle_20xi32_to_16xi32_2(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <16 x i32> <i32 26, i32 1, i32 9, i32 38, i32 37, i32 4, i32 1, i32 20, i32 1, i32 19, i32 20, i32 12, i32 1, i32 32, i32 12, i32 3> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_16xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %3, <4 x i32> %7, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %3, <4 x i32> %11, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %25, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %16 |
+ |
+define <16 x i32> @shuffle_20xi32_to_16xi32_3(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <16 x i32> <i32 1, i32 11, i32 24, i32 21, i32 24, i32 8, i32 10, i32 36, i32 38, i32 31, i32 37, i32 12, i32 10, i32 28, i32 36, i32 25> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_16xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %9, <4 x i32> %5, <4 x i32> <i32 0, i32 4, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %12, <4 x i32> %10, <4 x i32> <i32 2, i32 7, i32 1, i32 1> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %5, <4 x i32> %10, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %23, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %16 |
+ |
+define <16 x i32> @shuffle_20xi32_to_16xi32_4(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <16 x i32> <i32 29, i32 10, i32 26, i32 20, i32 38, i32 16, i32 37, i32 25, i32 34, i32 2, i32 0, i32 38, i32 19, i32 4, i32 31, i32 28> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_16xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %12, <4 x i32> %7, <4 x i32> <i32 2, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %11, <4 x i32> %3, <4 x i32> <i32 2, i32 6, i32 4, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %7, <4 x i32> %4, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 7, i32 4> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %16 |
+ |
+define <16 x i32> @shuffle_20xi32_to_16xi32_5(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <16 x i32> <i32 36, i32 30, i32 26, i32 8, i32 25, i32 2, i32 28, i32 37, i32 17, i32 8, i32 29, i32 16, i32 12, i32 12, i32 8, i32 35> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_16xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %12, <4 x i32> %10, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 1, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 0, i32 0, i32 4, i32 4> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %24, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %16 |
+ |
+define <16 x i32> @shuffle_20xi32_to_16xi32_6(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <16 x i32> <i32 15, i32 11, i32 15, i32 15, i32 11, i32 15, i32 5, i32 1, i32 27, i32 2, i32 29, i32 32, i32 24, i32 35, i32 35, i32 13> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_16xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %6, <4 x i32> %5, <4 x i32> <i32 3, i32 7, i32 3, i32 3> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %9, <4 x i32> %3, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %9, <4 x i32> %11, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <16 x i32> @shuffle_20xi32_to_16xi32_7(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <16 x i32> <i32 28, i32 10, i32 9, i32 29, i32 3, i32 11, i32 37, i32 6, i32 34, i32 6, i32 9, i32 9, i32 32, i32 12, i32 20, i32 27> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_16xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %10, <4 x i32> %5, <4 x i32> <i32 0, i32 6, i32 5, i32 1> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %3, <4 x i32> %5, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %11, <4 x i32> %4, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %17, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %14 |
+ |
+define <16 x i32> @shuffle_20xi32_to_16xi32_8(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <16 x i32> <i32 38, i32 9, i32 26, i32 34, i32 15, i32 20, i32 21, i32 37, i32 13, i32 30, i32 23, i32 37, i32 2, i32 38, i32 5, i32 15> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_16xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %12, <4 x i32> %5, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %6, <4 x i32> %8, <4 x i32> <i32 3, i32 4, i32 5, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %6, <4 x i32> %10, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %3, <4 x i32> %12, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %24, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %16 |
+ |
+define <16 x i32> @shuffle_20xi32_to_16xi32_9(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <16 x i32> <i32 16, i32 0, i32 7, i32 4, i32 26, i32 18, i32 22, i32 14, i32 15, i32 6, i32 23, i32 6, i32 24, i32 7, i32 16, i32 1> |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_16xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %14 = shufflevector <4 x i32> %7, <4 x i32> %3, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %14, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 7, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %9, <4 x i32> %7, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %6, <4 x i32> %4, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %24, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <20 x i32> @shuffle_20xi32_to_20xi32_0(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <20 x i32> <i32 33, i32 9, i32 31, i32 14, i32 24, i32 15, i32 38, i32 7, i32 35, i32 32, i32 2, i32 29, i32 16, i32 6, i32 34, i32 2, i32 12, i32 32, i32 30, i32 16> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_20xi32_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %10, <4 x i32> %7, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %13, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %12, <4 x i32> %4, <4 x i32> <i32 3, i32 0, i32 6, i32 6> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %7, <4 x i32> %12, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %27 = shufflevector <4 x i32> %26, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %28 = shufflevector <4 x i32> %27, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %25, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %28, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %17 |
+ |
+define <20 x i32> @shuffle_20xi32_to_20xi32_1(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <20 x i32> <i32 27, i32 11, i32 23, i32 33, i32 29, i32 28, i32 6, i32 17, i32 26, i32 23, i32 9, i32 5, i32 14, i32 28, i32 18, i32 14, i32 14, i32 7, i32 36, i32 11> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_20xi32_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %10, <4 x i32> %6, <4 x i32> <i32 3, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %11, <4 x i32> %5, <4 x i32> <i32 1, i32 0, i32 6, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %10, <4 x i32> %9, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %7, <4 x i32> %11, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %7, <4 x i32> %5, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %27 = shufflevector <4 x i32> %26, <4 x i32> %13, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %28 = shufflevector <4 x i32> %27, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %25, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %28, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %17 |
+ |
+define <20 x i32> @shuffle_20xi32_to_20xi32_2(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <20 x i32> <i32 19, i32 19, i32 25, i32 17, i32 14, i32 16, i32 0, i32 12, i32 29, i32 17, i32 34, i32 18, i32 17, i32 10, i32 27, i32 7, i32 8, i32 20, i32 13, i32 18> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_20xi32_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %8, <4 x i32> %10, <4 x i32> <i32 3, i32 3, i32 5, i32 1> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %7, <4 x i32> %8, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %11, <4 x i32> %8, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %8, <4 x i32> %6, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %6, <4 x i32> %9, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %25, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %27 = shufflevector <4 x i32> %26, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %24, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %27, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %15 |
+ |
+define <20 x i32> @shuffle_20xi32_to_20xi32_3(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <20 x i32> <i32 7, i32 0, i32 35, i32 30, i32 11, i32 32, i32 10, i32 0, i32 27, i32 10, i32 30, i32 32, i32 2, i32 26, i32 16, i32 2, i32 38, i32 16, i32 21, i32 21> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_20xi32_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 3, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %6, <4 x i32> %12, <4 x i32> <i32 3, i32 4, i32 2, i32 2> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %10, <4 x i32> %6, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %4, <4 x i32> %10, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %27 = shufflevector <4 x i32> %26, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %25, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %27, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %17 |
+ |
+define <20 x i32> @shuffle_20xi32_to_20xi32_4(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <20 x i32> <i32 6, i32 10, i32 14, i32 28, i32 21, i32 3, i32 16, i32 4, i32 22, i32 38, i32 4, i32 29, i32 20, i32 27, i32 32, i32 16, i32 8, i32 20, i32 9, i32 29> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_20xi32_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %9, <4 x i32> %4, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %9, <4 x i32> %13, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %9, <4 x i32> %10, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %25, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %27 = shufflevector <4 x i32> %6, <4 x i32> %9, <4 x i32> <i32 0, i32 4, i32 1, i32 1> |
+; CHECK-NEXT: %28 = shufflevector <4 x i32> %27, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %23, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %26, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %28, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %17 |
+ |
+define <20 x i32> @shuffle_20xi32_to_20xi32_5(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <20 x i32> <i32 6, i32 18, i32 22, i32 15, i32 7, i32 2, i32 14, i32 32, i32 10, i32 36, i32 7, i32 38, i32 21, i32 33, i32 19, i32 23, i32 30, i32 15, i32 2, i32 6> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_20xi32_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %8, <4 x i32> <i32 2, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 3, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %6, <4 x i32> %13, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %13, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %9, <4 x i32> %12, <4 x i32> <i32 1, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %25, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %27 = shufflevector <4 x i32> %11, <4 x i32> %7, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %28 = shufflevector <4 x i32> %27, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %29 = shufflevector <4 x i32> %28, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %23, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %26, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %29, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %17 |
+ |
+define <20 x i32> @shuffle_20xi32_to_20xi32_6(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <20 x i32> <i32 8, i32 27, i32 21, i32 37, i32 5, i32 23, i32 38, i32 23, i32 4, i32 25, i32 12, i32 29, i32 30, i32 9, i32 21, i32 4, i32 10, i32 16, i32 18, i32 25> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_20xi32_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %6, <4 x i32> %10, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %13, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %5, <4 x i32> %9, <4 x i32> <i32 1, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %13, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %5, <4 x i32> %10, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %22, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %11, <4 x i32> %6, <4 x i32> <i32 2, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 5, i32 5> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %25, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %27 = shufflevector <4 x i32> %6, <4 x i32> %8, <4 x i32> <i32 2, i32 4, i32 6, i32 6> |
+; CHECK-NEXT: %28 = shufflevector <4 x i32> %27, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %23, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %26, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %28, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %17 |
+ |
+define <20 x i32> @shuffle_20xi32_to_20xi32_7(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <20 x i32> <i32 12, i32 37, i32 23, i32 16, i32 7, i32 6, i32 8, i32 21, i32 36, i32 19, i32 6, i32 2, i32 32, i32 10, i32 18, i32 15, i32 7, i32 5, i32 6, i32 21> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_20xi32_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %7, <4 x i32> %13, <4 x i32> <i32 0, i32 5, i32 5, i32 5> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 3, i32 2, i32 4, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %13, <4 x i32> %8, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %12, <4 x i32> %6, <4 x i32> <i32 0, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %8, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %5, <4 x i32> %9, <4 x i32> <i32 3, i32 1, i32 2, i32 5> |
+; CHECK-NEXT: store <4 x i32> %19, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %25, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %26, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %17 |
+ |
+define <20 x i32> @shuffle_20xi32_to_20xi32_8(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <20 x i32> <i32 14, i32 11, i32 7, i32 3, i32 24, i32 36, i32 11, i32 28, i32 14, i32 11, i32 11, i32 7, i32 26, i32 15, i32 20, i32 36, i32 6, i32 3, i32 12, i32 26> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_20xi32_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %7, <4 x i32> %6, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %16, <4 x i32> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %10, <4 x i32> %13, <4 x i32> <i32 0, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %18, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 7, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %7, <4 x i32> %6, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %21, <4 x i32> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 7> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %10, <4 x i32> %7, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %13, <4 x i32> <i32 0, i32 1, i32 2, i32 4> |
+; CHECK-NEXT: %26 = shufflevector <4 x i32> %5, <4 x i32> %4, <4 x i32> <i32 2, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %27 = shufflevector <4 x i32> %26, <4 x i32> %7, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %28 = shufflevector <4 x i32> %27, <4 x i32> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %20, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %25, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %28, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %17 |
+ |
+define <20 x i32> @shuffle_20xi32_to_20xi32_9(<20 x i32>, <20 x i32>) { |
+ %3 = shufflevector <20 x i32> %0, <20 x i32> %1, <20 x i32> <i32 4, i32 11, i32 35, i32 32, i32 6, i32 24, i32 11, i32 9, i32 16, i32 7, i32 28, i32 10, i32 19, i32 22, i32 17, i32 23, i32 13, i32 30, i32 22, i32 38> |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @shuffle_20xi32_to_20xi32_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) |
+; CHECK-NEXT: %15 = shufflevector <4 x i32> %5, <4 x i32> %6, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %16 = shufflevector <4 x i32> %15, <4 x i32> %12, <4 x i32> <i32 0, i32 1, i32 7, i32 4> |
+; CHECK-NEXT: %17 = shufflevector <4 x i32> %5, <4 x i32> %10, <4 x i32> <i32 2, i32 4, i32 4, i32 4> |
+; CHECK-NEXT: %18 = shufflevector <4 x i32> %17, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 7, i32 5> |
+; CHECK-NEXT: %19 = shufflevector <4 x i32> %8, <4 x i32> %5, <4 x i32> <i32 0, i32 7, i32 7, i32 7> |
+; CHECK-NEXT: %20 = shufflevector <4 x i32> %19, <4 x i32> %11, <4 x i32> <i32 0, i32 1, i32 4, i32 4> |
+; CHECK-NEXT: %21 = shufflevector <4 x i32> %20, <4 x i32> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: %22 = shufflevector <4 x i32> %8, <4 x i32> %9, <4 x i32> <i32 3, i32 6, i32 1, i32 7> |
+; CHECK-NEXT: %23 = shufflevector <4 x i32> %7, <4 x i32> %11, <4 x i32> <i32 1, i32 6, i32 6, i32 6> |
+; CHECK-NEXT: %24 = shufflevector <4 x i32> %23, <4 x i32> %9, <4 x i32> <i32 0, i32 1, i32 6, i32 6> |
+; CHECK-NEXT: %25 = shufflevector <4 x i32> %24, <4 x i32> %13, <4 x i32> <i32 0, i32 1, i32 2, i32 6> |
+; CHECK-NEXT: store <4 x i32> %18, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %21, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %25, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %16 |
+ |