Index: test/Transforms/NaCl/vector-canonicalization-inserts.ll |
diff --git a/test/Transforms/NaCl/vector-canonicalization-inserts.ll b/test/Transforms/NaCl/vector-canonicalization-inserts.ll |
new file mode 100644 |
index 0000000000000000000000000000000000000000..42d759fb78dad488c6cd9412112567db6eeda30f |
--- /dev/null |
+++ b/test/Transforms/NaCl/vector-canonicalization-inserts.ll |
@@ -0,0 +1,8959 @@ |
+; RUN: opt -S -pnacl-vector-canonicalization %s | FileCheck %s |
+ |
+; Auto-generated tests for insertelement instructions. |
+ |
+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 i8> @insert_2xi8_at_0(<2 x i8>, i8) { |
+entry: |
+ %2 = insertelement <2 x i8> %0, i8 %1, i32 0 |
+ ret <2 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_2xi8_at_0(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x i8> @insert_2xi8_at_1(<2 x i8>, i8) { |
+entry: |
+ %2 = insertelement <2 x i8> %0, i8 %1, i32 1 |
+ ret <2 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_2xi8_at_1(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x i8> @insert_2xi8_undef_idx(<2 x i8>, i8) { |
+entry: |
+ %2 = insertelement <2 x i8> %0, i8 %1, i32 2 |
+ ret <2 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_2xi8_undef_idx(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: ret <16 x i8> %0 |
+; CHECK-NEXT: } |
+ |
+define <2 x i16> @insert_2xi16_at_0(<2 x i16>, i16) { |
+entry: |
+ %2 = insertelement <2 x i16> %0, i16 %1, i32 0 |
+ ret <2 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_2xi16_at_0(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 0 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x i16> @insert_2xi16_at_1(<2 x i16>, i16) { |
+entry: |
+ %2 = insertelement <2 x i16> %0, i16 %1, i32 1 |
+ ret <2 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_2xi16_at_1(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 1 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x i16> @insert_2xi16_undef_idx(<2 x i16>, i16) { |
+entry: |
+ %2 = insertelement <2 x i16> %0, i16 %1, i32 2 |
+ ret <2 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_2xi16_undef_idx(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: ret <8 x i16> %0 |
+; CHECK-NEXT: } |
+ |
+define <2 x i32> @insert_2xi32_at_0(<2 x i32>, i32) { |
+entry: |
+ %2 = insertelement <2 x i32> %0, i32 %1, i32 0 |
+ ret <2 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_2xi32_at_0(<4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 0 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x i32> @insert_2xi32_at_1(<2 x i32>, i32) { |
+entry: |
+ %2 = insertelement <2 x i32> %0, i32 %1, i32 1 |
+ ret <2 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_2xi32_at_1(<4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 1 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x i32> @insert_2xi32_undef_idx(<2 x i32>, i32) { |
+entry: |
+ %2 = insertelement <2 x i32> %0, i32 %1, i32 2 |
+ ret <2 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_2xi32_undef_idx(<4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: ret <4 x i32> %0 |
+; CHECK-NEXT: } |
+ |
+define <2 x i64> @insert_2xi64_at_0(<2 x i64>, i64) { |
+entry: |
+ %2 = insertelement <2 x i64> %0, i64 %1, i32 0 |
+ ret <2 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_2xi64_at_0(<2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <2 x i64> %0, i64 %1, i32 0 |
+; CHECK-NEXT: ret <2 x i64> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x i64> @insert_2xi64_at_1(<2 x i64>, i64) { |
+entry: |
+ %2 = insertelement <2 x i64> %0, i64 %1, i32 1 |
+ ret <2 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_2xi64_at_1(<2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <2 x i64> %0, i64 %1, i32 1 |
+; CHECK-NEXT: ret <2 x i64> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x i64> @insert_2xi64_undef_idx(<2 x i64>, i64) { |
+entry: |
+ %2 = insertelement <2 x i64> %0, i64 %1, i32 2 |
+ ret <2 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_2xi64_undef_idx(<2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <2 x i64> %0, i64 %1, i32 2 |
+; CHECK-NEXT: ret <2 x i64> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x i8*> @insert_2xi8ptr_at_0(<2 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <2 x i8*> %0, i8* %1, i32 0 |
+ ret <2 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_2xi8ptr_at_0(<4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 0 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x i8*> @insert_2xi8ptr_at_1(<2 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <2 x i8*> %0, i8* %1, i32 1 |
+ ret <2 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_2xi8ptr_at_1(<4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 1 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x i8*> @insert_2xi8ptr_undef_idx(<2 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <2 x i8*> %0, i8* %1, i32 2 |
+ ret <2 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_2xi8ptr_undef_idx(<4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: ret <4 x i8*> %0 |
+; CHECK-NEXT: } |
+ |
+define <2 x float> @insert_2xfloat_at_0(<2 x float>, float) { |
+entry: |
+ %2 = insertelement <2 x float> %0, float %1, i32 0 |
+ ret <2 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_2xfloat_at_0(<4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 0 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x float> @insert_2xfloat_at_1(<2 x float>, float) { |
+entry: |
+ %2 = insertelement <2 x float> %0, float %1, i32 1 |
+ ret <2 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_2xfloat_at_1(<4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 1 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x float> @insert_2xfloat_undef_idx(<2 x float>, float) { |
+entry: |
+ %2 = insertelement <2 x float> %0, float %1, i32 2 |
+ ret <2 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_2xfloat_undef_idx(<4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: ret <4 x float> %0 |
+; CHECK-NEXT: } |
+ |
+define <2 x double> @insert_2xdouble_at_0(<2 x double>, double) { |
+entry: |
+ %2 = insertelement <2 x double> %0, double %1, i32 0 |
+ ret <2 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_2xdouble_at_0(<2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <2 x double> %0, double %1, i32 0 |
+; CHECK-NEXT: ret <2 x double> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x double> @insert_2xdouble_at_1(<2 x double>, double) { |
+entry: |
+ %2 = insertelement <2 x double> %0, double %1, i32 1 |
+ ret <2 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_2xdouble_at_1(<2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <2 x double> %0, double %1, i32 1 |
+; CHECK-NEXT: ret <2 x double> %2 |
+; CHECK-NEXT: } |
+ |
+define <2 x double> @insert_2xdouble_undef_idx(<2 x double>, double) { |
+entry: |
+ %2 = insertelement <2 x double> %0, double %1, i32 2 |
+ ret <2 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_2xdouble_undef_idx(<2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <2 x double> %0, double %1, i32 2 |
+; CHECK-NEXT: ret <2 x double> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8> @insert_4xi8_at_0(<4 x i8>, i8) { |
+entry: |
+ %2 = insertelement <4 x i8> %0, i8 %1, i32 0 |
+ ret <4 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_4xi8_at_0(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8> @insert_4xi8_at_1(<4 x i8>, i8) { |
+entry: |
+ %2 = insertelement <4 x i8> %0, i8 %1, i32 1 |
+ ret <4 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_4xi8_at_1(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8> @insert_4xi8_at_2(<4 x i8>, i8) { |
+entry: |
+ %2 = insertelement <4 x i8> %0, i8 %1, i32 2 |
+ ret <4 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_4xi8_at_2(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 2 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8> @insert_4xi8_at_3(<4 x i8>, i8) { |
+entry: |
+ %2 = insertelement <4 x i8> %0, i8 %1, i32 3 |
+ ret <4 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_4xi8_at_3(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 3 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8> @insert_4xi8_undef_idx(<4 x i8>, i8) { |
+entry: |
+ %2 = insertelement <4 x i8> %0, i8 %1, i32 4 |
+ ret <4 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_4xi8_undef_idx(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: ret <16 x i8> %0 |
+; CHECK-NEXT: } |
+ |
+define <4 x i16> @insert_4xi16_at_0(<4 x i16>, i16) { |
+entry: |
+ %2 = insertelement <4 x i16> %0, i16 %1, i32 0 |
+ ret <4 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_4xi16_at_0(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 0 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i16> @insert_4xi16_at_1(<4 x i16>, i16) { |
+entry: |
+ %2 = insertelement <4 x i16> %0, i16 %1, i32 1 |
+ ret <4 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_4xi16_at_1(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 1 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i16> @insert_4xi16_at_2(<4 x i16>, i16) { |
+entry: |
+ %2 = insertelement <4 x i16> %0, i16 %1, i32 2 |
+ ret <4 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_4xi16_at_2(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 2 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i16> @insert_4xi16_at_3(<4 x i16>, i16) { |
+entry: |
+ %2 = insertelement <4 x i16> %0, i16 %1, i32 3 |
+ ret <4 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_4xi16_at_3(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 3 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i16> @insert_4xi16_undef_idx(<4 x i16>, i16) { |
+entry: |
+ %2 = insertelement <4 x i16> %0, i16 %1, i32 4 |
+ ret <4 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_4xi16_undef_idx(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: ret <8 x i16> %0 |
+; CHECK-NEXT: } |
+ |
+define <4 x i32> @insert_4xi32_at_0(<4 x i32>, i32) { |
+entry: |
+ %2 = insertelement <4 x i32> %0, i32 %1, i32 0 |
+ ret <4 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_4xi32_at_0(<4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 0 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i32> @insert_4xi32_at_1(<4 x i32>, i32) { |
+entry: |
+ %2 = insertelement <4 x i32> %0, i32 %1, i32 1 |
+ ret <4 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_4xi32_at_1(<4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 1 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i32> @insert_4xi32_at_2(<4 x i32>, i32) { |
+entry: |
+ %2 = insertelement <4 x i32> %0, i32 %1, i32 2 |
+ ret <4 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_4xi32_at_2(<4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 2 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i32> @insert_4xi32_at_3(<4 x i32>, i32) { |
+entry: |
+ %2 = insertelement <4 x i32> %0, i32 %1, i32 3 |
+ ret <4 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_4xi32_at_3(<4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 3 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i32> @insert_4xi32_undef_idx(<4 x i32>, i32) { |
+entry: |
+ %2 = insertelement <4 x i32> %0, i32 %1, i32 4 |
+ ret <4 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_4xi32_undef_idx(<4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 4 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i64> @insert_4xi64_at_0(<4 x i64>, i64) { |
+entry: |
+ %2 = insertelement <4 x i64> %0, i64 %1, i32 0 |
+ ret <4 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_4xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <2 x i64> %1, i64 %3, i32 0 |
+; CHECK-NEXT: store <2 x i64> %2, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: ret <2 x i64> %4 |
+; CHECK-NEXT: } |
+ |
+define <4 x i64> @insert_4xi64_at_1(<4 x i64>, i64) { |
+entry: |
+ %2 = insertelement <4 x i64> %0, i64 %1, i32 1 |
+ ret <4 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_4xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <2 x i64> %1, i64 %3, i32 1 |
+; CHECK-NEXT: store <2 x i64> %2, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: ret <2 x i64> %4 |
+; CHECK-NEXT: } |
+ |
+define <4 x i64> @insert_4xi64_at_2(<4 x i64>, i64) { |
+entry: |
+ %2 = insertelement <4 x i64> %0, i64 %1, i32 2 |
+ ret <4 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_4xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <2 x i64> %2, i64 %3, i32 0 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: ret <2 x i64> %1 |
+; CHECK-NEXT: } |
+ |
+define <4 x i64> @insert_4xi64_at_3(<4 x i64>, i64) { |
+entry: |
+ %2 = insertelement <4 x i64> %0, i64 %1, i32 3 |
+ ret <4 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_4xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <2 x i64> %2, i64 %3, i32 1 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: ret <2 x i64> %1 |
+; CHECK-NEXT: } |
+ |
+define <4 x i64> @insert_4xi64_undef_idx(<4 x i64>, i64) { |
+entry: |
+ %2 = insertelement <4 x i64> %0, i64 %1, i32 4 |
+ ret <4 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_4xi64_undef_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x i64> %2, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: ret <2 x i64> %1 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8*> @insert_4xi8ptr_at_0(<4 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <4 x i8*> %0, i8* %1, i32 0 |
+ ret <4 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_at_0(<4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 0 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8*> @insert_4xi8ptr_at_1(<4 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <4 x i8*> %0, i8* %1, i32 1 |
+ ret <4 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_at_1(<4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 1 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8*> @insert_4xi8ptr_at_2(<4 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <4 x i8*> %0, i8* %1, i32 2 |
+ ret <4 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_at_2(<4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 2 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8*> @insert_4xi8ptr_at_3(<4 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <4 x i8*> %0, i8* %1, i32 3 |
+ ret <4 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_at_3(<4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 3 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8*> @insert_4xi8ptr_undef_idx(<4 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <4 x i8*> %0, i8* %1, i32 4 |
+ ret <4 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_undef_idx(<4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 4 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x float> @insert_4xfloat_at_0(<4 x float>, float) { |
+entry: |
+ %2 = insertelement <4 x float> %0, float %1, i32 0 |
+ ret <4 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_4xfloat_at_0(<4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 0 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x float> @insert_4xfloat_at_1(<4 x float>, float) { |
+entry: |
+ %2 = insertelement <4 x float> %0, float %1, i32 1 |
+ ret <4 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_4xfloat_at_1(<4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 1 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x float> @insert_4xfloat_at_2(<4 x float>, float) { |
+entry: |
+ %2 = insertelement <4 x float> %0, float %1, i32 2 |
+ ret <4 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_4xfloat_at_2(<4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 2 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x float> @insert_4xfloat_at_3(<4 x float>, float) { |
+entry: |
+ %2 = insertelement <4 x float> %0, float %1, i32 3 |
+ ret <4 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_4xfloat_at_3(<4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 3 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x float> @insert_4xfloat_undef_idx(<4 x float>, float) { |
+entry: |
+ %2 = insertelement <4 x float> %0, float %1, i32 4 |
+ ret <4 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_4xfloat_undef_idx(<4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 4 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <4 x double> @insert_4xdouble_at_0(<4 x double>, double) { |
+entry: |
+ %2 = insertelement <4 x double> %0, double %1, i32 0 |
+ ret <4 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_4xdouble_at_0(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <2 x double> %1, double %3, i32 0 |
+; CHECK-NEXT: store <2 x double> %2, <2 x double>* %0, align 16 |
+; CHECK-NEXT: ret <2 x double> %4 |
+; CHECK-NEXT: } |
+ |
+define <4 x double> @insert_4xdouble_at_1(<4 x double>, double) { |
+entry: |
+ %2 = insertelement <4 x double> %0, double %1, i32 1 |
+ ret <4 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_4xdouble_at_1(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <2 x double> %1, double %3, i32 1 |
+; CHECK-NEXT: store <2 x double> %2, <2 x double>* %0, align 16 |
+; CHECK-NEXT: ret <2 x double> %4 |
+; CHECK-NEXT: } |
+ |
+define <4 x double> @insert_4xdouble_at_2(<4 x double>, double) { |
+entry: |
+ %2 = insertelement <4 x double> %0, double %1, i32 2 |
+ ret <4 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_4xdouble_at_2(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <2 x double> %2, double %3, i32 0 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16 |
+; CHECK-NEXT: ret <2 x double> %1 |
+; CHECK-NEXT: } |
+ |
+define <4 x double> @insert_4xdouble_at_3(<4 x double>, double) { |
+entry: |
+ %2 = insertelement <4 x double> %0, double %1, i32 3 |
+ ret <4 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_4xdouble_at_3(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <2 x double> %2, double %3, i32 1 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16 |
+; CHECK-NEXT: ret <2 x double> %1 |
+; CHECK-NEXT: } |
+ |
+define <4 x double> @insert_4xdouble_undef_idx(<4 x double>, double) { |
+entry: |
+ %2 = insertelement <4 x double> %0, double %1, i32 4 |
+ ret <4 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_4xdouble_undef_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x double> %2, <2 x double>* %0, align 16 |
+; CHECK-NEXT: ret <2 x double> %1 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8> @insert_6xi8_at_0(<6 x i8>, i8) { |
+entry: |
+ %2 = insertelement <6 x i8> %0, i8 %1, i32 0 |
+ ret <6 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_0(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8> @insert_6xi8_at_1(<6 x i8>, i8) { |
+entry: |
+ %2 = insertelement <6 x i8> %0, i8 %1, i32 1 |
+ ret <6 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_1(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8> @insert_6xi8_at_2(<6 x i8>, i8) { |
+entry: |
+ %2 = insertelement <6 x i8> %0, i8 %1, i32 2 |
+ ret <6 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_2(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 2 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8> @insert_6xi8_at_3(<6 x i8>, i8) { |
+entry: |
+ %2 = insertelement <6 x i8> %0, i8 %1, i32 3 |
+ ret <6 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_3(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 3 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8> @insert_6xi8_at_4(<6 x i8>, i8) { |
+entry: |
+ %2 = insertelement <6 x i8> %0, i8 %1, i32 4 |
+ ret <6 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_4(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 4 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8> @insert_6xi8_at_5(<6 x i8>, i8) { |
+entry: |
+ %2 = insertelement <6 x i8> %0, i8 %1, i32 5 |
+ ret <6 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_5(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 5 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8> @insert_6xi8_undef_idx(<6 x i8>, i8) { |
+entry: |
+ %2 = insertelement <6 x i8> %0, i8 %1, i32 6 |
+ ret <6 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_6xi8_undef_idx(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: ret <16 x i8> %0 |
+; CHECK-NEXT: } |
+ |
+define <6 x i16> @insert_6xi16_at_0(<6 x i16>, i16) { |
+entry: |
+ %2 = insertelement <6 x i16> %0, i16 %1, i32 0 |
+ ret <6 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_0(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 0 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i16> @insert_6xi16_at_1(<6 x i16>, i16) { |
+entry: |
+ %2 = insertelement <6 x i16> %0, i16 %1, i32 1 |
+ ret <6 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_1(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 1 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i16> @insert_6xi16_at_2(<6 x i16>, i16) { |
+entry: |
+ %2 = insertelement <6 x i16> %0, i16 %1, i32 2 |
+ ret <6 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_2(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 2 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i16> @insert_6xi16_at_3(<6 x i16>, i16) { |
+entry: |
+ %2 = insertelement <6 x i16> %0, i16 %1, i32 3 |
+ ret <6 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_3(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 3 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i16> @insert_6xi16_at_4(<6 x i16>, i16) { |
+entry: |
+ %2 = insertelement <6 x i16> %0, i16 %1, i32 4 |
+ ret <6 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_4(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 4 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i16> @insert_6xi16_at_5(<6 x i16>, i16) { |
+entry: |
+ %2 = insertelement <6 x i16> %0, i16 %1, i32 5 |
+ ret <6 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_5(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 5 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i16> @insert_6xi16_undef_idx(<6 x i16>, i16) { |
+entry: |
+ %2 = insertelement <6 x i16> %0, i16 %1, i32 6 |
+ ret <6 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_6xi16_undef_idx(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: ret <8 x i16> %0 |
+; CHECK-NEXT: } |
+ |
+define <6 x i32> @insert_6xi32_at_0(<6 x i32>, i32) { |
+entry: |
+ %2 = insertelement <6 x i32> %0, i32 %1, i32 0 |
+ ret <6 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 0 |
+; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x i32> @insert_6xi32_at_1(<6 x i32>, i32) { |
+entry: |
+ %2 = insertelement <6 x i32> %0, i32 %1, i32 1 |
+ ret <6 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 1 |
+; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x i32> @insert_6xi32_at_2(<6 x i32>, i32) { |
+entry: |
+ %2 = insertelement <6 x i32> %0, i32 %1, i32 2 |
+ ret <6 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 2 |
+; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x i32> @insert_6xi32_at_3(<6 x i32>, i32) { |
+entry: |
+ %2 = insertelement <6 x i32> %0, i32 %1, i32 3 |
+ ret <6 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 3 |
+; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x i32> @insert_6xi32_at_4(<6 x i32>, i32) { |
+entry: |
+ %2 = insertelement <6 x i32> %0, i32 %1, i32 4 |
+ ret <6 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 0 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %1 |
+; CHECK-NEXT: } |
+ |
+define <6 x i32> @insert_6xi32_at_5(<6 x i32>, i32) { |
+entry: |
+ %2 = insertelement <6 x i32> %0, i32 %1, i32 5 |
+ ret <6 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 1 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %1 |
+; CHECK-NEXT: } |
+ |
+define <6 x i32> @insert_6xi32_undef_idx(<6 x i32>, i32) { |
+entry: |
+ %2 = insertelement <6 x i32> %0, i32 %1, i32 6 |
+ ret <6 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_6xi32_undef_idx(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %1 |
+; CHECK-NEXT: } |
+ |
+define <6 x i64> @insert_6xi64_at_0(<6 x i64>, i64) { |
+entry: |
+ %2 = insertelement <6 x i64> %0, i64 %1, i32 0 |
+ ret <6 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x i64> %2, i64 %5, i32 0 |
+; CHECK-NEXT: store <2 x i64> %3, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: ret <2 x i64> %6 |
+; CHECK-NEXT: } |
+ |
+define <6 x i64> @insert_6xi64_at_1(<6 x i64>, i64) { |
+entry: |
+ %2 = insertelement <6 x i64> %0, i64 %1, i32 1 |
+ ret <6 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x i64> %2, i64 %5, i32 1 |
+; CHECK-NEXT: store <2 x i64> %3, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: ret <2 x i64> %6 |
+; CHECK-NEXT: } |
+ |
+define <6 x i64> @insert_6xi64_at_2(<6 x i64>, i64) { |
+entry: |
+ %2 = insertelement <6 x i64> %0, i64 %1, i32 2 |
+ ret <6 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x i64> %3, i64 %5, i32 0 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: ret <2 x i64> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i64> @insert_6xi64_at_3(<6 x i64>, i64) { |
+entry: |
+ %2 = insertelement <6 x i64> %0, i64 %1, i32 3 |
+ ret <6 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x i64> %3, i64 %5, i32 1 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: ret <2 x i64> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i64> @insert_6xi64_at_4(<6 x i64>, i64) { |
+entry: |
+ %2 = insertelement <6 x i64> %0, i64 %1, i32 4 |
+ ret <6 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_4(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x i64> %4, i64 %5, i32 0 |
+; CHECK-NEXT: store <2 x i64> %3, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: ret <2 x i64> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i64> @insert_6xi64_at_5(<6 x i64>, i64) { |
+entry: |
+ %2 = insertelement <6 x i64> %0, i64 %1, i32 5 |
+ ret <6 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_5(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x i64> %4, i64 %5, i32 1 |
+; CHECK-NEXT: store <2 x i64> %3, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: ret <2 x i64> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i64> @insert_6xi64_undef_idx(<6 x i64>, i64) { |
+entry: |
+ %2 = insertelement <6 x i64> %0, i64 %1, i32 6 |
+ ret <6 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_6xi64_undef_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x i64> %3, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: ret <2 x i64> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8*> @insert_6xi8ptr_at_0(<6 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <6 x i8*> %0, i8* %1, i32 0 |
+ ret <6 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_0(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8*> @insert_6xi8ptr_at_1(<6 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <6 x i8*> %0, i8* %1, i32 1 |
+ ret <6 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_1(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8*> @insert_6xi8ptr_at_2(<6 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <6 x i8*> %0, i8* %1, i32 2 |
+ ret <6 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_2(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8*> @insert_6xi8ptr_at_3(<6 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <6 x i8*> %0, i8* %1, i32 3 |
+ ret <6 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_3(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8*> @insert_6xi8ptr_at_4(<6 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <6 x i8*> %0, i8* %1, i32 4 |
+ ret <6 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_4(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %1 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8*> @insert_6xi8ptr_at_5(<6 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <6 x i8*> %0, i8* %1, i32 5 |
+ ret <6 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_5(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %1 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8*> @insert_6xi8ptr_undef_idx(<6 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <6 x i8*> %0, i8* %1, i32 6 |
+ ret <6 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_undef_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %1 |
+; CHECK-NEXT: } |
+ |
+define <6 x float> @insert_6xfloat_at_0(<6 x float>, float) { |
+entry: |
+ %2 = insertelement <6 x float> %0, float %1, i32 0 |
+ ret <6 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_0(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 0 |
+; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x float> @insert_6xfloat_at_1(<6 x float>, float) { |
+entry: |
+ %2 = insertelement <6 x float> %0, float %1, i32 1 |
+ ret <6 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_1(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 1 |
+; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x float> @insert_6xfloat_at_2(<6 x float>, float) { |
+entry: |
+ %2 = insertelement <6 x float> %0, float %1, i32 2 |
+ ret <6 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_2(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 2 |
+; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x float> @insert_6xfloat_at_3(<6 x float>, float) { |
+entry: |
+ %2 = insertelement <6 x float> %0, float %1, i32 3 |
+ ret <6 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_3(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 3 |
+; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <6 x float> @insert_6xfloat_at_4(<6 x float>, float) { |
+entry: |
+ %2 = insertelement <6 x float> %0, float %1, i32 4 |
+ ret <6 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_4(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 0 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %1 |
+; CHECK-NEXT: } |
+ |
+define <6 x float> @insert_6xfloat_at_5(<6 x float>, float) { |
+entry: |
+ %2 = insertelement <6 x float> %0, float %1, i32 5 |
+ ret <6 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_5(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 1 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %1 |
+; CHECK-NEXT: } |
+ |
+define <6 x float> @insert_6xfloat_undef_idx(<6 x float>, float) { |
+entry: |
+ %2 = insertelement <6 x float> %0, float %1, i32 6 |
+ ret <6 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_6xfloat_undef_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %1 |
+; CHECK-NEXT: } |
+ |
+define <6 x double> @insert_6xdouble_at_0(<6 x double>, double) { |
+entry: |
+ %2 = insertelement <6 x double> %0, double %1, i32 0 |
+ ret <6 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_0(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x double> %2, double %5, i32 0 |
+; CHECK-NEXT: store <2 x double> %3, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %1, align 16 |
+; CHECK-NEXT: ret <2 x double> %6 |
+; CHECK-NEXT: } |
+ |
+define <6 x double> @insert_6xdouble_at_1(<6 x double>, double) { |
+entry: |
+ %2 = insertelement <6 x double> %0, double %1, i32 1 |
+ ret <6 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_1(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x double> %2, double %5, i32 1 |
+; CHECK-NEXT: store <2 x double> %3, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %1, align 16 |
+; CHECK-NEXT: ret <2 x double> %6 |
+; CHECK-NEXT: } |
+ |
+define <6 x double> @insert_6xdouble_at_2(<6 x double>, double) { |
+entry: |
+ %2 = insertelement <6 x double> %0, double %1, i32 2 |
+ ret <6 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_2(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x double> %3, double %5, i32 0 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %1, align 16 |
+; CHECK-NEXT: ret <2 x double> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x double> @insert_6xdouble_at_3(<6 x double>, double) { |
+entry: |
+ %2 = insertelement <6 x double> %0, double %1, i32 3 |
+ ret <6 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_3(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x double> %3, double %5, i32 1 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %1, align 16 |
+; CHECK-NEXT: ret <2 x double> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x double> @insert_6xdouble_at_4(<6 x double>, double) { |
+entry: |
+ %2 = insertelement <6 x double> %0, double %1, i32 4 |
+ ret <6 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_4(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x double> %4, double %5, i32 0 |
+; CHECK-NEXT: store <2 x double> %3, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %1, align 16 |
+; CHECK-NEXT: ret <2 x double> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x double> @insert_6xdouble_at_5(<6 x double>, double) { |
+entry: |
+ %2 = insertelement <6 x double> %0, double %1, i32 5 |
+ ret <6 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_5(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <2 x double> %4, double %5, i32 1 |
+; CHECK-NEXT: store <2 x double> %3, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %1, align 16 |
+; CHECK-NEXT: ret <2 x double> %2 |
+; CHECK-NEXT: } |
+ |
+define <6 x double> @insert_6xdouble_undef_idx(<6 x double>, double) { |
+entry: |
+ %2 = insertelement <6 x double> %0, double %1, i32 6 |
+ ret <6 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_6xdouble_undef_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x double> %3, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %1, align 16 |
+; CHECK-NEXT: ret <2 x double> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8> @insert_8xi8_at_0(<8 x i8>, i8) { |
+entry: |
+ %2 = insertelement <8 x i8> %0, i8 %1, i32 0 |
+ ret <8 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_0(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8> @insert_8xi8_at_1(<8 x i8>, i8) { |
+entry: |
+ %2 = insertelement <8 x i8> %0, i8 %1, i32 1 |
+ ret <8 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_1(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8> @insert_8xi8_at_2(<8 x i8>, i8) { |
+entry: |
+ %2 = insertelement <8 x i8> %0, i8 %1, i32 2 |
+ ret <8 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_2(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 2 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8> @insert_8xi8_at_3(<8 x i8>, i8) { |
+entry: |
+ %2 = insertelement <8 x i8> %0, i8 %1, i32 3 |
+ ret <8 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_3(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 3 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8> @insert_8xi8_at_4(<8 x i8>, i8) { |
+entry: |
+ %2 = insertelement <8 x i8> %0, i8 %1, i32 4 |
+ ret <8 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_4(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 4 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8> @insert_8xi8_at_5(<8 x i8>, i8) { |
+entry: |
+ %2 = insertelement <8 x i8> %0, i8 %1, i32 5 |
+ ret <8 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_5(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 5 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8> @insert_8xi8_at_6(<8 x i8>, i8) { |
+entry: |
+ %2 = insertelement <8 x i8> %0, i8 %1, i32 6 |
+ ret <8 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_6(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 6 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8> @insert_8xi8_at_7(<8 x i8>, i8) { |
+entry: |
+ %2 = insertelement <8 x i8> %0, i8 %1, i32 7 |
+ ret <8 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_7(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 7 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8> @insert_8xi8_undef_idx(<8 x i8>, i8) { |
+entry: |
+ %2 = insertelement <8 x i8> %0, i8 %1, i32 8 |
+ ret <8 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_8xi8_undef_idx(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: ret <16 x i8> %0 |
+; CHECK-NEXT: } |
+ |
+define <8 x i16> @insert_8xi16_at_0(<8 x i16>, i16) { |
+entry: |
+ %2 = insertelement <8 x i16> %0, i16 %1, i32 0 |
+ ret <8 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_0(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 0 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i16> @insert_8xi16_at_1(<8 x i16>, i16) { |
+entry: |
+ %2 = insertelement <8 x i16> %0, i16 %1, i32 1 |
+ ret <8 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_1(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 1 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i16> @insert_8xi16_at_2(<8 x i16>, i16) { |
+entry: |
+ %2 = insertelement <8 x i16> %0, i16 %1, i32 2 |
+ ret <8 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_2(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 2 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i16> @insert_8xi16_at_3(<8 x i16>, i16) { |
+entry: |
+ %2 = insertelement <8 x i16> %0, i16 %1, i32 3 |
+ ret <8 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_3(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 3 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i16> @insert_8xi16_at_4(<8 x i16>, i16) { |
+entry: |
+ %2 = insertelement <8 x i16> %0, i16 %1, i32 4 |
+ ret <8 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_4(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 4 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i16> @insert_8xi16_at_5(<8 x i16>, i16) { |
+entry: |
+ %2 = insertelement <8 x i16> %0, i16 %1, i32 5 |
+ ret <8 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_5(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 5 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i16> @insert_8xi16_at_6(<8 x i16>, i16) { |
+entry: |
+ %2 = insertelement <8 x i16> %0, i16 %1, i32 6 |
+ ret <8 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_6(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 6 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i16> @insert_8xi16_at_7(<8 x i16>, i16) { |
+entry: |
+ %2 = insertelement <8 x i16> %0, i16 %1, i32 7 |
+ ret <8 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_7(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 7 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i16> @insert_8xi16_undef_idx(<8 x i16>, i16) { |
+entry: |
+ %2 = insertelement <8 x i16> %0, i16 %1, i32 8 |
+ ret <8 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_8xi16_undef_idx(<8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 8 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <8 x i32> @insert_8xi32_at_0(<8 x i32>, i32) { |
+entry: |
+ %2 = insertelement <8 x i32> %0, i32 %1, i32 0 |
+ ret <8 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 0 |
+; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x i32> @insert_8xi32_at_1(<8 x i32>, i32) { |
+entry: |
+ %2 = insertelement <8 x i32> %0, i32 %1, i32 1 |
+ ret <8 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 1 |
+; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x i32> @insert_8xi32_at_2(<8 x i32>, i32) { |
+entry: |
+ %2 = insertelement <8 x i32> %0, i32 %1, i32 2 |
+ ret <8 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 2 |
+; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x i32> @insert_8xi32_at_3(<8 x i32>, i32) { |
+entry: |
+ %2 = insertelement <8 x i32> %0, i32 %1, i32 3 |
+ ret <8 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 3 |
+; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x i32> @insert_8xi32_at_4(<8 x i32>, i32) { |
+entry: |
+ %2 = insertelement <8 x i32> %0, i32 %1, i32 4 |
+ ret <8 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 0 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x i32> @insert_8xi32_at_5(<8 x i32>, i32) { |
+entry: |
+ %2 = insertelement <8 x i32> %0, i32 %1, i32 5 |
+ ret <8 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 1 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x i32> @insert_8xi32_at_6(<8 x i32>, i32) { |
+entry: |
+ %2 = insertelement <8 x i32> %0, i32 %1, i32 6 |
+ ret <8 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 2 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x i32> @insert_8xi32_at_7(<8 x i32>, i32) { |
+entry: |
+ %2 = insertelement <8 x i32> %0, i32 %1, i32 7 |
+ ret <8 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 3 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x i32> @insert_8xi32_undef_idx(<8 x i32>, i32) { |
+entry: |
+ %2 = insertelement <8 x i32> %0, i32 %1, i32 8 |
+ ret <8 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_8xi32_undef_idx(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x i64> @insert_8xi64_at_0(<8 x i64>, i64) { |
+entry: |
+ %2 = insertelement <8 x i64> %0, i64 %1, i32 0 |
+ ret <8 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x i64> %3, i64 %7, i32 0 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: ret <2 x i64> %8 |
+; CHECK-NEXT: } |
+ |
+define <8 x i64> @insert_8xi64_at_1(<8 x i64>, i64) { |
+entry: |
+ %2 = insertelement <8 x i64> %0, i64 %1, i32 1 |
+ ret <8 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x i64> %3, i64 %7, i32 1 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: ret <2 x i64> %8 |
+; CHECK-NEXT: } |
+ |
+define <8 x i64> @insert_8xi64_at_2(<8 x i64>, i64) { |
+entry: |
+ %2 = insertelement <8 x i64> %0, i64 %1, i32 2 |
+ ret <8 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x i64> %4, i64 %7, i32 0 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: ret <2 x i64> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x i64> @insert_8xi64_at_3(<8 x i64>, i64) { |
+entry: |
+ %2 = insertelement <8 x i64> %0, i64 %1, i32 3 |
+ ret <8 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x i64> %4, i64 %7, i32 1 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: ret <2 x i64> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x i64> @insert_8xi64_at_4(<8 x i64>, i64) { |
+entry: |
+ %2 = insertelement <8 x i64> %0, i64 %1, i32 4 |
+ ret <8 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_4(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x i64> %5, i64 %7, i32 0 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: ret <2 x i64> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x i64> @insert_8xi64_at_5(<8 x i64>, i64) { |
+entry: |
+ %2 = insertelement <8 x i64> %0, i64 %1, i32 5 |
+ ret <8 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_5(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x i64> %5, i64 %7, i32 1 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: ret <2 x i64> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x i64> @insert_8xi64_at_6(<8 x i64>, i64) { |
+entry: |
+ %2 = insertelement <8 x i64> %0, i64 %1, i32 6 |
+ ret <8 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_6(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x i64> %6, i64 %7, i32 0 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: ret <2 x i64> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x i64> @insert_8xi64_at_7(<8 x i64>, i64) { |
+entry: |
+ %2 = insertelement <8 x i64> %0, i64 %1, i32 7 |
+ ret <8 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_7(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x i64> %6, i64 %7, i32 1 |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: ret <2 x i64> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x i64> @insert_8xi64_undef_idx(<8 x i64>, i64) { |
+entry: |
+ %2 = insertelement <8 x i64> %0, i64 %1, i32 8 |
+ ret <8 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_8xi64_undef_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: ret <2 x i64> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8*> @insert_8xi8ptr_at_0(<8 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <8 x i8*> %0, i8* %1, i32 0 |
+ ret <8 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_0(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8*> @insert_8xi8ptr_at_1(<8 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <8 x i8*> %0, i8* %1, i32 1 |
+ ret <8 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_1(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8*> @insert_8xi8ptr_at_2(<8 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <8 x i8*> %0, i8* %1, i32 2 |
+ ret <8 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_2(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8*> @insert_8xi8ptr_at_3(<8 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <8 x i8*> %0, i8* %1, i32 3 |
+ ret <8 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_3(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8*> @insert_8xi8ptr_at_4(<8 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <8 x i8*> %0, i8* %1, i32 4 |
+ ret <8 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_4(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8*> @insert_8xi8ptr_at_5(<8 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <8 x i8*> %0, i8* %1, i32 5 |
+ ret <8 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_5(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8*> @insert_8xi8ptr_at_6(<8 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <8 x i8*> %0, i8* %1, i32 6 |
+ ret <8 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_6(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8*> @insert_8xi8ptr_at_7(<8 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <8 x i8*> %0, i8* %1, i32 7 |
+ ret <8 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_7(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8*> @insert_8xi8ptr_undef_idx(<8 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <8 x i8*> %0, i8* %1, i32 8 |
+ ret <8 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_undef_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x float> @insert_8xfloat_at_0(<8 x float>, float) { |
+entry: |
+ %2 = insertelement <8 x float> %0, float %1, i32 0 |
+ ret <8 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_0(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 0 |
+; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x float> @insert_8xfloat_at_1(<8 x float>, float) { |
+entry: |
+ %2 = insertelement <8 x float> %0, float %1, i32 1 |
+ ret <8 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_1(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 1 |
+; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x float> @insert_8xfloat_at_2(<8 x float>, float) { |
+entry: |
+ %2 = insertelement <8 x float> %0, float %1, i32 2 |
+ ret <8 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_2(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 2 |
+; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x float> @insert_8xfloat_at_3(<8 x float>, float) { |
+entry: |
+ %2 = insertelement <8 x float> %0, float %1, i32 3 |
+ ret <8 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_3(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 3 |
+; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <8 x float> @insert_8xfloat_at_4(<8 x float>, float) { |
+entry: |
+ %2 = insertelement <8 x float> %0, float %1, i32 4 |
+ ret <8 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_4(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 0 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x float> @insert_8xfloat_at_5(<8 x float>, float) { |
+entry: |
+ %2 = insertelement <8 x float> %0, float %1, i32 5 |
+ ret <8 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_5(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 1 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x float> @insert_8xfloat_at_6(<8 x float>, float) { |
+entry: |
+ %2 = insertelement <8 x float> %0, float %1, i32 6 |
+ ret <8 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_6(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 2 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x float> @insert_8xfloat_at_7(<8 x float>, float) { |
+entry: |
+ %2 = insertelement <8 x float> %0, float %1, i32 7 |
+ ret <8 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_7(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 3 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x float> @insert_8xfloat_undef_idx(<8 x float>, float) { |
+entry: |
+ %2 = insertelement <8 x float> %0, float %1, i32 8 |
+ ret <8 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_8xfloat_undef_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %1 |
+; CHECK-NEXT: } |
+ |
+define <8 x double> @insert_8xdouble_at_0(<8 x double>, double) { |
+entry: |
+ %2 = insertelement <8 x double> %0, double %1, i32 0 |
+ ret <8 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_0(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x double> %3, double %7, i32 0 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16 |
+; CHECK-NEXT: ret <2 x double> %8 |
+; CHECK-NEXT: } |
+ |
+define <8 x double> @insert_8xdouble_at_1(<8 x double>, double) { |
+entry: |
+ %2 = insertelement <8 x double> %0, double %1, i32 1 |
+ ret <8 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_1(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x double> %3, double %7, i32 1 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16 |
+; CHECK-NEXT: ret <2 x double> %8 |
+; CHECK-NEXT: } |
+ |
+define <8 x double> @insert_8xdouble_at_2(<8 x double>, double) { |
+entry: |
+ %2 = insertelement <8 x double> %0, double %1, i32 2 |
+ ret <8 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_2(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x double> %4, double %7, i32 0 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16 |
+; CHECK-NEXT: ret <2 x double> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x double> @insert_8xdouble_at_3(<8 x double>, double) { |
+entry: |
+ %2 = insertelement <8 x double> %0, double %1, i32 3 |
+ ret <8 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_3(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x double> %4, double %7, i32 1 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16 |
+; CHECK-NEXT: ret <2 x double> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x double> @insert_8xdouble_at_4(<8 x double>, double) { |
+entry: |
+ %2 = insertelement <8 x double> %0, double %1, i32 4 |
+ ret <8 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_4(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x double> %5, double %7, i32 0 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16 |
+; CHECK-NEXT: ret <2 x double> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x double> @insert_8xdouble_at_5(<8 x double>, double) { |
+entry: |
+ %2 = insertelement <8 x double> %0, double %1, i32 5 |
+ ret <8 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_5(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x double> %5, double %7, i32 1 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16 |
+; CHECK-NEXT: ret <2 x double> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x double> @insert_8xdouble_at_6(<8 x double>, double) { |
+entry: |
+ %2 = insertelement <8 x double> %0, double %1, i32 6 |
+ ret <8 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_6(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x double> %6, double %7, i32 0 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: ret <2 x double> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x double> @insert_8xdouble_at_7(<8 x double>, double) { |
+entry: |
+ %2 = insertelement <8 x double> %0, double %1, i32 7 |
+ ret <8 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_7(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <2 x double> %6, double %7, i32 1 |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: ret <2 x double> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x double> @insert_8xdouble_undef_idx(<8 x double>, double) { |
+entry: |
+ %2 = insertelement <8 x double> %0, double %1, i32 8 |
+ ret <8 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_8xdouble_undef_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16 |
+; CHECK-NEXT: ret <2 x double> %3 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_0(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 0 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_0(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_1(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 1 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_1(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_2(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 2 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_2(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 2 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_3(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 3 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_3(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 3 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_4(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 4 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_4(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 4 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_5(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 5 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_5(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 5 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_6(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 6 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_6(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 6 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_7(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 7 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_7(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 7 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_8(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 8 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_8(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 8 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_9(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 9 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_9(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 9 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_10(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 10 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_10(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 10 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_at_11(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 11 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_11(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 11 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_undef_idx(<12 x i8>, i8) { |
+entry: |
+ %2 = insertelement <12 x i8> %0, i8 %1, i32 12 |
+ ret <12 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_undef_idx(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: ret <16 x i8> %0 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_0(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 0 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_0(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 0 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_1(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 1 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_1(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 1 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_2(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 2 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_2(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 2 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_3(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 3 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_3(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 3 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_4(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 4 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_4(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 4 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_5(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 5 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_5(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 5 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_6(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 6 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_6(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 6 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_7(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 7 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_7(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 7 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_8(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 8 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_8(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 0 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_9(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 9 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_9(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 1 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_10(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 10 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_10(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 2 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_at_11(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 11 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_11(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 3 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_undef_idx(<12 x i16>, i16) { |
+entry: |
+ %2 = insertelement <12 x i16> %0, i16 %1, i32 12 |
+ ret <12 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_undef_idx(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_0(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 0 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %2, i32 %5, i32 0 |
+; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_1(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 1 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %2, i32 %5, i32 1 |
+; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_2(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 2 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %2, i32 %5, i32 2 |
+; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_3(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 3 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %2, i32 %5, i32 3 |
+; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_4(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 4 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %3, i32 %5, i32 0 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_5(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 5 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %3, i32 %5, i32 1 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_6(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 6 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %3, i32 %5, i32 2 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_7(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 7 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %3, i32 %5, i32 3 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_8(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 8 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %4, i32 %5, i32 0 |
+; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_9(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 9 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %4, i32 %5, i32 1 |
+; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_10(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 10 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_10(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %4, i32 %5, i32 2 |
+; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_at_11(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 11 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_11(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i32> %4, i32 %5, i32 3 |
+; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_undef_idx(<12 x i32>, i32) { |
+entry: |
+ %2 = insertelement <12 x i32> %0, i32 %1, i32 12 |
+ ret <12 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_undef_idx(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_0(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 0 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %5, i64 %11, i32 0 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %12 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_1(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 1 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %5, i64 %11, i32 1 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %12 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_2(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 2 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %6, i64 %11, i32 0 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_3(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 3 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %6, i64 %11, i32 1 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_4(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 4 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_4(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %7, i64 %11, i32 0 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_5(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 5 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_5(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %7, i64 %11, i32 1 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_6(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 6 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_6(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %8, i64 %11, i32 0 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_7(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 7 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_7(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %8, i64 %11, i32 1 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_8(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 8 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_8(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %9, i64 %11, i32 0 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_9(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 9 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_9(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %9, i64 %11, i32 1 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_10(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 10 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_10(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %10, i64 %11, i32 0 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_at_11(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 11 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_11(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %10, i64 %11, i32 1 |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_undef_idx(<12 x i64>, i64) { |
+entry: |
+ %2 = insertelement <12 x i64> %0, i64 %1, i32 12 |
+ ret <12 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_undef_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_0(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 0 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_0(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %2, i8* %5, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_1(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 1 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_1(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %2, i8* %5, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_2(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 2 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_2(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %2, i8* %5, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_3(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 3 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_3(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %2, i8* %5, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_4(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 4 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_4(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %3, i8* %5, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_5(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 5 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_5(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %3, i8* %5, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_6(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 6 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_6(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %3, i8* %5, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_7(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 7 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_7(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %3, i8* %5, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_8(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 8 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_8(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %4, i8* %5, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_9(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 9 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_9(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %4, i8* %5, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_10(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 10 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_10(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %4, i8* %5, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_at_11(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 11 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_11(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x i8*> %4, i8* %5, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_undef_idx(<12 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <12 x i8*> %0, i8* %1, i32 12 |
+ ret <12 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_undef_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_0(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 0 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_0(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %2, float %5, i32 0 |
+; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_1(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 1 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_1(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %2, float %5, i32 1 |
+; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_2(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 2 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_2(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %2, float %5, i32 2 |
+; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_3(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 3 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_3(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %2, float %5, i32 3 |
+; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %6 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_4(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 4 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_4(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %3, float %5, i32 0 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_5(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 5 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_5(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %3, float %5, i32 1 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_6(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 6 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_6(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %3, float %5, i32 2 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_7(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 7 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_7(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %3, float %5, i32 3 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_8(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 8 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_8(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %4, float %5, i32 0 |
+; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_9(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 9 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_9(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %4, float %5, i32 1 |
+; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_10(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 10 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_10(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %4, float %5, i32 2 |
+; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_at_11(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 11 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_11(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <4 x float> %4, float %5, i32 3 |
+; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_undef_idx(<12 x float>, float) { |
+entry: |
+ %2 = insertelement <12 x float> %0, float %1, i32 12 |
+ ret <12 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_undef_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %2 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_0(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 0 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_0(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %5, double %11, i32 0 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %12 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_1(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 1 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_1(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %5, double %11, i32 1 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %12 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_2(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 2 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_2(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %6, double %11, i32 0 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_3(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 3 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_3(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %6, double %11, i32 1 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_4(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 4 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_4(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %7, double %11, i32 0 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_5(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 5 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_5(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %7, double %11, i32 1 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_6(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 6 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_6(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %8, double %11, i32 0 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_7(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 7 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_7(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %8, double %11, i32 1 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_8(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 8 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_8(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %9, double %11, i32 0 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_9(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 9 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_9(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %9, double %11, i32 1 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_10(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 10 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_10(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %10, double %11, i32 0 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_at_11(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 11 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_11(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %12 = insertelement <2 x double> %10, double %11, i32 1 |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %5 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_undef_idx(<12 x double>, double) { |
+entry: |
+ %2 = insertelement <12 x double> %0, double %1, i32 12 |
+ ret <12 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_undef_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %5 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_0(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 0 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_0(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_1(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 1 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_1(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_2(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 2 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_2(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 2 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_3(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 3 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_3(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 3 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_4(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 4 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_4(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 4 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_5(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 5 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_5(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 5 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_6(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 6 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_6(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 6 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_7(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 7 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_7(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 7 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_8(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 8 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_8(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 8 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_9(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 9 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_9(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 9 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_10(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 10 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_10(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 10 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_11(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 11 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_11(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 11 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_12(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 12 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_12(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 12 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_13(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 13 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_13(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 13 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_14(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 14 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_14(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 14 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_at_15(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 15 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_15(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 15 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_undef_idx(<16 x i8>, i8) { |
+entry: |
+ %2 = insertelement <16 x i8> %0, i8 %1, i32 16 |
+ ret <16 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_undef_idx(<16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 16 |
+; CHECK-NEXT: ret <16 x i8> %2 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_0(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 0 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_0(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 0 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_1(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 1 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_1(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 1 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_2(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 2 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_2(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 2 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_3(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 3 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_3(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 3 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_4(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 4 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_4(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 4 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_5(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 5 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_5(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 5 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_6(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 6 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_6(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 6 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_7(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 7 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_7(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 7 |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %4 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_8(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 8 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_8(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 0 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_9(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 9 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_9(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 1 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_10(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 10 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_10(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 2 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_11(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 11 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_11(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 3 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_12(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 12 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_12(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 4 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_13(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 13 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_13(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 5 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_14(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 14 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_14(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 6 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_at_15(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 15 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_15(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 7 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_undef_idx(<16 x i16>, i16) { |
+entry: |
+ %2 = insertelement <16 x i16> %0, i16 %1, i32 16 |
+ ret <16 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_undef_idx(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %1 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_0(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 0 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %3, i32 %7, i32 0 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_1(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 1 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %3, i32 %7, i32 1 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_2(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 2 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %3, i32 %7, i32 2 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_3(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 3 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %3, i32 %7, i32 3 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_4(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 4 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %4, i32 %7, i32 0 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_5(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 5 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %4, i32 %7, i32 1 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_6(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 6 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %4, i32 %7, i32 2 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_7(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 7 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %4, i32 %7, i32 3 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_8(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 8 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %5, i32 %7, i32 0 |
+; CHECK-NEXT: store <4 x i32> %4, <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> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_9(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 9 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %5, i32 %7, i32 1 |
+; CHECK-NEXT: store <4 x i32> %4, <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> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_10(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 10 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_10(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %5, i32 %7, i32 2 |
+; CHECK-NEXT: store <4 x i32> %4, <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> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_11(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 11 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_11(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %5, i32 %7, i32 3 |
+; CHECK-NEXT: store <4 x i32> %4, <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> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_12(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 12 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_12(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %6, i32 %7, i32 0 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_13(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 13 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_13(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %6, i32 %7, i32 1 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_14(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 14 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_14(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %6, i32 %7, i32 2 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_at_15(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 15 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_15(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %6, i32 %7, i32 3 |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_undef_idx(<16 x i32>, i32) { |
+entry: |
+ %2 = insertelement <16 x i32> %0, i32 %1, i32 16 |
+ ret <16 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_undef_idx(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_0(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 0 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %7, i64 %15, i32 0 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %16 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_1(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 1 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %7, i64 %15, i32 1 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %16 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_2(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 2 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %8, i64 %15, i32 0 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_3(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 3 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %8, i64 %15, i32 1 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_4(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 4 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_4(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %9, i64 %15, i32 0 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_5(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 5 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_5(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %9, i64 %15, i32 1 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_6(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 6 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_6(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %10, i64 %15, i32 0 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_7(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 7 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_7(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %10, i64 %15, i32 1 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_8(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 8 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_8(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %11, i64 %15, i32 0 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_9(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 9 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_9(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %11, i64 %15, i32 1 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_10(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 10 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_10(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %12, i64 %15, i32 0 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_11(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 11 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_11(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %12, i64 %15, i32 1 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_12(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 12 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_12(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %13, i64 %15, i32 0 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_13(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 13 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_13(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %13, i64 %15, i32 1 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_14(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 14 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_14(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %14, i64 %15, i32 0 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_at_15(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 15 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_15(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %14, i64 %15, i32 1 |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_undef_idx(<16 x i64>, i64) { |
+entry: |
+ %2 = insertelement <16 x i64> %0, i64 %1, i32 16 |
+ ret <16 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_undef_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_0(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 0 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_0(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %3, i8* %7, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_1(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 1 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_1(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %3, i8* %7, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_2(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 2 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_2(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %3, i8* %7, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_3(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 3 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_3(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %3, i8* %7, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_4(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 4 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_4(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %4, i8* %7, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_5(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 5 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_5(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %4, i8* %7, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_6(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 6 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_6(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %4, i8* %7, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_7(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 7 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_7(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %4, i8* %7, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_8(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 8 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_8(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %5, i8* %7, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_9(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 9 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_9(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %5, i8* %7, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_10(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 10 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_10(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %5, i8* %7, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_11(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 11 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_11(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %5, i8* %7, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_12(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 12 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_12(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %6, i8* %7, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_13(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 13 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_13(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %6, i8* %7, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_14(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 14 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_14(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %6, i8* %7, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_at_15(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 15 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_15(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %6, i8* %7, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_undef_idx(<16 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <16 x i8*> %0, i8* %1, i32 16 |
+ ret <16 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_undef_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_0(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 0 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_0(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %3, float %7, i32 0 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_1(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 1 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_1(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %3, float %7, i32 1 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_2(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 2 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_2(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %3, float %7, i32 2 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_3(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 3 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_3(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %3, float %7, i32 3 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %8 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_4(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 4 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_4(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %4, float %7, i32 0 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_5(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 5 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_5(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %4, float %7, i32 1 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_6(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 6 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_6(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %4, float %7, i32 2 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_7(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 7 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_7(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %4, float %7, i32 3 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_8(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 8 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_8(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %5, float %7, i32 0 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_9(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 9 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_9(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %5, float %7, i32 1 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_10(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 10 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_10(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %5, float %7, i32 2 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_11(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 11 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_11(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %5, float %7, i32 3 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_12(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 12 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_12(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %6, float %7, i32 0 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_13(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 13 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_13(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %6, float %7, i32 1 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_14(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 14 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_14(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %6, float %7, i32 2 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_at_15(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 15 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_15(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %8 = insertelement <4 x float> %6, float %7, i32 3 |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_undef_idx(<16 x float>, float) { |
+entry: |
+ %2 = insertelement <16 x float> %0, float %1, i32 16 |
+ ret <16 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_undef_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_0(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 0 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_0(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %7, double %15, i32 0 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %16 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_1(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 1 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_1(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %7, double %15, i32 1 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %16 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_2(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 2 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_2(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %8, double %15, i32 0 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_3(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 3 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_3(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %8, double %15, i32 1 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_4(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 4 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_4(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %9, double %15, i32 0 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_5(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 5 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_5(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %9, double %15, i32 1 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_6(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 6 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_6(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %10, double %15, i32 0 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_7(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 7 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_7(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %10, double %15, i32 1 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_8(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 8 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_8(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %11, double %15, i32 0 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_9(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 9 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_9(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %11, double %15, i32 1 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_10(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 10 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_10(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %12, double %15, i32 0 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_11(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 11 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_11(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %12, double %15, i32 1 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_12(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 12 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_12(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %13, double %15, i32 0 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_13(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 13 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_13(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %13, double %15, i32 1 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_14(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 14 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_14(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %14, double %15, i32 0 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_at_15(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 15 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_15(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %16 = insertelement <2 x double> %14, double %15, i32 1 |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_undef_idx(<16 x double>, double) { |
+entry: |
+ %2 = insertelement <16 x double> %0, double %1, i32 16 |
+ ret <16 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_undef_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %7 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_0(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 0 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_0(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 0 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_1(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 1 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_1(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 1 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_2(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 2 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_2(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 2 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_3(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 3 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_3(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 3 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_4(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 4 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_4(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 4 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_5(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 5 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_5(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 5 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_6(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 6 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_6(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 6 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_7(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 7 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_7(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 7 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_8(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 8 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_8(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 8 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_9(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 9 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_9(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 9 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_10(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 10 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_10(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 10 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_11(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 11 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_11(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 11 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_12(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 12 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_12(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 12 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_13(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 13 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_13(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 13 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_14(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 14 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_14(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 14 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_15(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 15 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_15(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 15 |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_16(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 16 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_16(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %2, i8 %3, i32 0 |
+; CHECK-NEXT: store <16 x i8> %4, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %1 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_17(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 17 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_17(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %2, i8 %3, i32 1 |
+; CHECK-NEXT: store <16 x i8> %4, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %1 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_18(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 18 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_18(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %2, i8 %3, i32 2 |
+; CHECK-NEXT: store <16 x i8> %4, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %1 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_at_19(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 19 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_19(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: %4 = insertelement <16 x i8> %2, i8 %3, i32 3 |
+; CHECK-NEXT: store <16 x i8> %4, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %1 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_undef_idx(<20 x i8>, i8) { |
+entry: |
+ %2 = insertelement <20 x i8> %0, i8 %1, i32 20 |
+ ret <20 x i8> %2 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_undef_idx(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %1 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_0(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 0 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_0(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 0 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %6 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_1(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 1 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_1(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 1 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %6 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_2(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 2 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_2(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 2 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %6 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_3(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 3 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_3(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 3 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %6 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_4(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 4 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_4(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 4 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %6 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_5(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 5 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_5(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 5 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %6 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_6(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 6 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_6(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 6 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %6 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_7(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 7 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_7(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 7 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %6 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_8(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 8 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_8(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 0 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_9(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 9 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_9(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 1 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_10(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 10 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_10(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 2 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_11(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 11 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_11(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 3 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_12(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 12 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_12(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 4 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_13(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 13 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_13(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 5 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_14(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 14 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_14(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 6 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_15(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 15 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_15(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 7 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_16(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 16 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_16(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %4, i16 %5, i32 0 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_17(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 17 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_17(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %4, i16 %5, i32 1 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_18(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 18 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_18(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %4, i16 %5, i32 2 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_at_19(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 19 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_19(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: %6 = insertelement <8 x i16> %4, i16 %5, i32 3 |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_undef_idx(<20 x i16>, i16) { |
+entry: |
+ %2 = insertelement <20 x i16> %0, i16 %1, i32 20 |
+ ret <20 x i16> %2 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_undef_idx(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %2 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_0(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 0 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %4, i32 %9, i32 0 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_1(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 1 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %4, i32 %9, i32 1 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_2(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 2 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %4, i32 %9, i32 2 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_3(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 3 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %4, i32 %9, i32 3 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_4(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 4 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %5, i32 %9, i32 0 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_5(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 5 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %5, i32 %9, i32 1 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_6(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 6 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %5, i32 %9, i32 2 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_7(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 7 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %5, i32 %9, i32 3 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_8(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 8 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %6, i32 %9, i32 0 |
+; CHECK-NEXT: store <4 x i32> %5, <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> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_9(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 9 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %6, i32 %9, i32 1 |
+; CHECK-NEXT: store <4 x i32> %5, <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> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_10(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 10 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_10(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %6, i32 %9, i32 2 |
+; CHECK-NEXT: store <4 x i32> %5, <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> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_11(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 11 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_11(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %6, i32 %9, i32 3 |
+; CHECK-NEXT: store <4 x i32> %5, <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> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_12(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 12 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_12(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %7, i32 %9, i32 0 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <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> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_13(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 13 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_13(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %7, i32 %9, i32 1 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <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> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_14(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 14 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_14(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %7, i32 %9, i32 2 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <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> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_15(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 15 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_15(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %7, i32 %9, i32 3 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <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> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_16(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 16 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_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>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %8, i32 %9, i32 0 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_17(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 17 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_17(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %8, i32 %9, i32 1 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_18(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 18 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_18(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %8, i32 %9, i32 2 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_at_19(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 19 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_19(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %8, i32 %9, i32 3 |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_undef_idx(<20 x i32>, i32) { |
+entry: |
+ %2 = insertelement <20 x i32> %0, i32 %1, i32 20 |
+ ret <20 x i32> %2 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_undef_idx(<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>, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_0(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 0 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %9, i64 %19, i32 0 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %20 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_1(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 1 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %9, i64 %19, i32 1 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %20 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_2(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 2 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %10, i64 %19, i32 0 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_3(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 3 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %10, i64 %19, i32 1 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_4(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 4 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_4(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %11, i64 %19, i32 0 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_5(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 5 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_5(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %11, i64 %19, i32 1 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_6(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 6 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_6(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %12, i64 %19, i32 0 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_7(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 7 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_7(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %12, i64 %19, i32 1 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_8(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 8 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_8(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %13, i64 %19, i32 0 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_9(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 9 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_9(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %13, i64 %19, i32 1 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_10(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 10 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_10(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %14, i64 %19, i32 0 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_11(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 11 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_11(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %14, i64 %19, i32 1 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_12(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 12 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_12(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %15, i64 %19, i32 0 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_13(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 13 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_13(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %15, i64 %19, i32 1 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_14(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 14 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_14(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %16, i64 %19, i32 0 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_15(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 15 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_15(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %16, i64 %19, i32 1 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_16(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 16 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_16(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %17, i64 %19, i32 0 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_17(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 17 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_17(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %17, i64 %19, i32 1 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_18(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 18 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_18(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %18, i64 %19, i32 0 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_at_19(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 19 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_19(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %18, i64 %19, i32 1 |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_undef_idx(<20 x i64>, i64) { |
+entry: |
+ %2 = insertelement <20 x i64> %0, i64 %1, i32 20 |
+ ret <20 x i64> %2 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_undef_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_0(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 0 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_0(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %4, i8* %9, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_1(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 1 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_1(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %4, i8* %9, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_2(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 2 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_2(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %4, i8* %9, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_3(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 3 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_3(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %4, i8* %9, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_4(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 4 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_4(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %5, i8* %9, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_5(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 5 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_5(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %5, i8* %9, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_6(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 6 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_6(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %5, i8* %9, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_7(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 7 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_7(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %5, i8* %9, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_8(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 8 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_8(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %6, i8* %9, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_9(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 9 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_9(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %6, i8* %9, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_10(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 10 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_10(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %6, i8* %9, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_11(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 11 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_11(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %6, i8* %9, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_12(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 12 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_12(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %7, i8* %9, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_13(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 13 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_13(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %7, i8* %9, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_14(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 14 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_14(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %7, i8* %9, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_15(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 15 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_15(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %7, i8* %9, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_16(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 16 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_16(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %8, i8* %9, i32 0 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_17(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 17 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_17(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %8, i8* %9, i32 1 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_18(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 18 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_18(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %8, i8* %9, i32 2 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_at_19(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 19 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_19(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %8, i8* %9, i32 3 |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_undef_idx(<20 x i8*>, i8*) { |
+entry: |
+ %2 = insertelement <20 x i8*> %0, i8* %1, i32 20 |
+ ret <20 x i8*> %2 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_undef_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_0(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 0 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_0(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %4, float %9, i32 0 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_1(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 1 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_1(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %4, float %9, i32 1 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_2(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 2 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_2(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %4, float %9, i32 2 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_3(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 3 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_3(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %4, float %9, i32 3 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %10 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_4(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 4 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_4(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %5, float %9, i32 0 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_5(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 5 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_5(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %5, float %9, i32 1 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_6(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 6 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_6(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %5, float %9, i32 2 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_7(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 7 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_7(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %5, float %9, i32 3 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_8(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 8 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_8(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %6, float %9, i32 0 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_9(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 9 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_9(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %6, float %9, i32 1 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_10(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 10 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_10(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %6, float %9, i32 2 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_11(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 11 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_11(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %6, float %9, i32 3 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_12(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 12 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_12(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %7, float %9, i32 0 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_13(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 13 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_13(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %7, float %9, i32 1 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_14(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 14 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_14(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %7, float %9, i32 2 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_15(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 15 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_15(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %7, float %9, i32 3 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_16(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 16 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_16(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %8, float %9, i32 0 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_17(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 17 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_17(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %8, float %9, i32 1 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_18(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 18 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_18(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %8, float %9, i32 2 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_at_19(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 19 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_19(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: %10 = insertelement <4 x float> %8, float %9, i32 3 |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %10, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_undef_idx(<20 x float>, float) { |
+entry: |
+ %2 = insertelement <20 x float> %0, float %1, i32 20 |
+ ret <20 x float> %2 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_undef_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %4 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_0(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 0 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_0(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %9, double %19, i32 0 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %20 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_1(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 1 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_1(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %9, double %19, i32 1 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %20 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_2(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 2 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_2(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %10, double %19, i32 0 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_3(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 3 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_3(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %10, double %19, i32 1 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_4(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 4 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_4(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %11, double %19, i32 0 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_5(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 5 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_5(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %11, double %19, i32 1 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_6(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 6 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_6(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %12, double %19, i32 0 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_7(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 7 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_7(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %12, double %19, i32 1 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_8(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 8 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_8(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %13, double %19, i32 0 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_9(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 9 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_9(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %13, double %19, i32 1 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_10(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 10 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_10(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %14, double %19, i32 0 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_11(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 11 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_11(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %14, double %19, i32 1 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_12(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 12 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_12(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %15, double %19, i32 0 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_13(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 13 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_13(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %15, double %19, i32 1 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_14(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 14 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_14(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %16, double %19, i32 0 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_15(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 15 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_15(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %16, double %19, i32 1 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_16(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 16 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_16(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %17, double %19, i32 0 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_17(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 17 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_17(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %17, double %19, i32 1 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_18(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 18 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_18(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %18, double %19, i32 0 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_at_19(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 19 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_19(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: %20 = insertelement <2 x double> %18, double %19, i32 1 |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_undef_idx(<20 x double>, double) { |
+entry: |
+ %2 = insertelement <20 x double> %0, double %1, i32 20 |
+ ret <20 x double> %2 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_undef_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) { |
+; CHECK: entry: |
+; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %9 |
+; CHECK-NEXT: } |
+ |
+define <2 x i8> @insert_2xi8_var_idx(<2 x i8>, i8, i32) { |
+entry: |
+ %3 = insertelement <2 x i8> %0, i8 %1, i32 %2 |
+ ret <2 x i8> %3 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_2xi8_var_idx(<16 x i8>, i8, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2 |
+; CHECK-NEXT: ret <16 x i8> %3 |
+; CHECK-NEXT: } |
+ |
+define <2 x i16> @insert_2xi16_var_idx(<2 x i16>, i16, i32) { |
+entry: |
+ %3 = insertelement <2 x i16> %0, i16 %1, i32 %2 |
+ ret <2 x i16> %3 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_2xi16_var_idx(<8 x i16>, i16, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <8 x i16> %0, i16 %1, i32 %2 |
+; CHECK-NEXT: ret <8 x i16> %3 |
+; CHECK-NEXT: } |
+ |
+define <2 x i32> @insert_2xi32_var_idx(<2 x i32>, i32, i32) { |
+entry: |
+ %3 = insertelement <2 x i32> %0, i32 %1, i32 %2 |
+ ret <2 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_2xi32_var_idx(<4 x i32>, i32, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <4 x i32> %0, i32 %1, i32 %2 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <2 x i64> @insert_2xi64_var_idx(<2 x i64>, i64, i32) { |
+entry: |
+ %3 = insertelement <2 x i64> %0, i64 %1, i32 %2 |
+ ret <2 x i64> %3 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_2xi64_var_idx(<2 x i64>, i64, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <2 x i64> %0, i64 %1, i32 %2 |
+; CHECK-NEXT: ret <2 x i64> %3 |
+; CHECK-NEXT: } |
+ |
+define <2 x i8*> @insert_2xi8ptr_var_idx(<2 x i8*>, i8*, i32) { |
+entry: |
+ %3 = insertelement <2 x i8*> %0, i8* %1, i32 %2 |
+ ret <2 x i8*> %3 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_2xi8ptr_var_idx(<4 x i8*>, i8*, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <4 x i8*> %0, i8* %1, i32 %2 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <2 x float> @insert_2xfloat_var_idx(<2 x float>, float, i32) { |
+entry: |
+ %3 = insertelement <2 x float> %0, float %1, i32 %2 |
+ ret <2 x float> %3 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_2xfloat_var_idx(<4 x float>, float, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <4 x float> %0, float %1, i32 %2 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <2 x double> @insert_2xdouble_var_idx(<2 x double>, double, i32) { |
+entry: |
+ %3 = insertelement <2 x double> %0, double %1, i32 %2 |
+ ret <2 x double> %3 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_2xdouble_var_idx(<2 x double>, double, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <2 x double> %0, double %1, i32 %2 |
+; CHECK-NEXT: ret <2 x double> %3 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8> @insert_4xi8_var_idx(<4 x i8>, i8, i32) { |
+entry: |
+ %3 = insertelement <4 x i8> %0, i8 %1, i32 %2 |
+ ret <4 x i8> %3 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_4xi8_var_idx(<16 x i8>, i8, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2 |
+; CHECK-NEXT: ret <16 x i8> %3 |
+; CHECK-NEXT: } |
+ |
+define <4 x i16> @insert_4xi16_var_idx(<4 x i16>, i16, i32) { |
+entry: |
+ %3 = insertelement <4 x i16> %0, i16 %1, i32 %2 |
+ ret <4 x i16> %3 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_4xi16_var_idx(<8 x i16>, i16, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <8 x i16> %0, i16 %1, i32 %2 |
+; CHECK-NEXT: ret <8 x i16> %3 |
+; CHECK-NEXT: } |
+ |
+define <4 x i32> @insert_4xi32_var_idx(<4 x i32>, i32, i32) { |
+entry: |
+ %3 = insertelement <4 x i32> %0, i32 %1, i32 %2 |
+ ret <4 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_4xi32_var_idx(<4 x i32>, i32, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <4 x i32> %0, i32 %1, i32 %2 |
+; CHECK-NEXT: ret <4 x i32> %3 |
+; CHECK-NEXT: } |
+ |
+define <4 x i64> @insert_4xi64_var_idx(<4 x i64>, i64, i32) { |
+entry: |
+ %3 = insertelement <4 x i64> %0, i64 %1, i32 %2 |
+ ret <4 x i64> %3 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_4xi64_var_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, i64, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %5 = insertelement <2 x i64> %1, i64 %3, i32 0 |
+; CHECK-NEXT: %6 = icmp eq i32 0, %4 |
+; CHECK-NEXT: %7 = select i1 %6, <2 x i64> %5, <2 x i64> %1 |
+; CHECK-NEXT: %8 = insertelement <2 x i64> %7, i64 %3, i32 1 |
+; CHECK-NEXT: %9 = icmp eq i32 1, %4 |
+; CHECK-NEXT: %10 = select i1 %9, <2 x i64> %8, <2 x i64> %7 |
+; CHECK-NEXT: %11 = insertelement <2 x i64> %2, i64 %3, i32 0 |
+; CHECK-NEXT: %12 = icmp eq i32 2, %4 |
+; CHECK-NEXT: %13 = select i1 %12, <2 x i64> %11, <2 x i64> %2 |
+; CHECK-NEXT: %14 = insertelement <2 x i64> %13, i64 %3, i32 1 |
+; CHECK-NEXT: %15 = icmp eq i32 3, %4 |
+; CHECK-NEXT: %16 = select i1 %15, <2 x i64> %14, <2 x i64> %13 |
+; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: ret <2 x i64> %10 |
+; CHECK-NEXT: } |
+ |
+define <4 x i8*> @insert_4xi8ptr_var_idx(<4 x i8*>, i8*, i32) { |
+entry: |
+ %3 = insertelement <4 x i8*> %0, i8* %1, i32 %2 |
+ ret <4 x i8*> %3 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_var_idx(<4 x i8*>, i8*, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <4 x i8*> %0, i8* %1, i32 %2 |
+; CHECK-NEXT: ret <4 x i8*> %3 |
+; CHECK-NEXT: } |
+ |
+define <4 x float> @insert_4xfloat_var_idx(<4 x float>, float, i32) { |
+entry: |
+ %3 = insertelement <4 x float> %0, float %1, i32 %2 |
+ ret <4 x float> %3 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_4xfloat_var_idx(<4 x float>, float, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <4 x float> %0, float %1, i32 %2 |
+; CHECK-NEXT: ret <4 x float> %3 |
+; CHECK-NEXT: } |
+ |
+define <4 x double> @insert_4xdouble_var_idx(<4 x double>, double, i32) { |
+entry: |
+ %3 = insertelement <4 x double> %0, double %1, i32 %2 |
+ ret <4 x double> %3 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_4xdouble_var_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, double, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %5 = insertelement <2 x double> %1, double %3, i32 0 |
+; CHECK-NEXT: %6 = icmp eq i32 0, %4 |
+; CHECK-NEXT: %7 = select i1 %6, <2 x double> %5, <2 x double> %1 |
+; CHECK-NEXT: %8 = insertelement <2 x double> %7, double %3, i32 1 |
+; CHECK-NEXT: %9 = icmp eq i32 1, %4 |
+; CHECK-NEXT: %10 = select i1 %9, <2 x double> %8, <2 x double> %7 |
+; CHECK-NEXT: %11 = insertelement <2 x double> %2, double %3, i32 0 |
+; CHECK-NEXT: %12 = icmp eq i32 2, %4 |
+; CHECK-NEXT: %13 = select i1 %12, <2 x double> %11, <2 x double> %2 |
+; CHECK-NEXT: %14 = insertelement <2 x double> %13, double %3, i32 1 |
+; CHECK-NEXT: %15 = icmp eq i32 3, %4 |
+; CHECK-NEXT: %16 = select i1 %15, <2 x double> %14, <2 x double> %13 |
+; CHECK-NEXT: store <2 x double> %16, <2 x double>* %0, align 16 |
+; CHECK-NEXT: ret <2 x double> %10 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8> @insert_6xi8_var_idx(<6 x i8>, i8, i32) { |
+entry: |
+ %3 = insertelement <6 x i8> %0, i8 %1, i32 %2 |
+ ret <6 x i8> %3 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_6xi8_var_idx(<16 x i8>, i8, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2 |
+; CHECK-NEXT: ret <16 x i8> %3 |
+; CHECK-NEXT: } |
+ |
+define <6 x i16> @insert_6xi16_var_idx(<6 x i16>, i16, i32) { |
+entry: |
+ %3 = insertelement <6 x i16> %0, i16 %1, i32 %2 |
+ ret <6 x i16> %3 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_6xi16_var_idx(<8 x i16>, i16, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <8 x i16> %0, i16 %1, i32 %2 |
+; CHECK-NEXT: ret <8 x i16> %3 |
+; CHECK-NEXT: } |
+ |
+define <6 x i32> @insert_6xi32_var_idx(<6 x i32>, i32, i32) { |
+entry: |
+ %3 = insertelement <6 x i32> %0, i32 %1, i32 %2 |
+ ret <6 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_6xi32_var_idx(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %5 = insertelement <4 x i32> %1, i32 %3, i32 0 |
+; CHECK-NEXT: %6 = icmp eq i32 0, %4 |
+; CHECK-NEXT: %7 = select i1 %6, <4 x i32> %5, <4 x i32> %1 |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %7, i32 %3, i32 1 |
+; CHECK-NEXT: %9 = icmp eq i32 1, %4 |
+; CHECK-NEXT: %10 = select i1 %9, <4 x i32> %8, <4 x i32> %7 |
+; CHECK-NEXT: %11 = insertelement <4 x i32> %10, i32 %3, i32 2 |
+; CHECK-NEXT: %12 = icmp eq i32 2, %4 |
+; CHECK-NEXT: %13 = select i1 %12, <4 x i32> %11, <4 x i32> %10 |
+; CHECK-NEXT: %14 = insertelement <4 x i32> %13, i32 %3, i32 3 |
+; CHECK-NEXT: %15 = icmp eq i32 3, %4 |
+; CHECK-NEXT: %16 = select i1 %15, <4 x i32> %14, <4 x i32> %13 |
+; CHECK-NEXT: %17 = insertelement <4 x i32> %2, i32 %3, i32 0 |
+; CHECK-NEXT: %18 = icmp eq i32 4, %4 |
+; CHECK-NEXT: %19 = select i1 %18, <4 x i32> %17, <4 x i32> %2 |
+; CHECK-NEXT: %20 = insertelement <4 x i32> %19, i32 %3, i32 1 |
+; CHECK-NEXT: %21 = icmp eq i32 5, %4 |
+; CHECK-NEXT: %22 = select i1 %21, <4 x i32> %20, <4 x i32> %19 |
+; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %16 |
+; CHECK-NEXT: } |
+ |
+define <6 x i64> @insert_6xi64_var_idx(<6 x i64>, i64, i32) { |
+entry: |
+ %3 = insertelement <6 x i64> %0, i64 %1, i32 %2 |
+ ret <6 x i64> %3 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_6xi64_var_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, i64, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %7 = insertelement <2 x i64> %2, i64 %5, i32 0 |
+; CHECK-NEXT: %8 = icmp eq i32 0, %6 |
+; CHECK-NEXT: %9 = select i1 %8, <2 x i64> %7, <2 x i64> %2 |
+; CHECK-NEXT: %10 = insertelement <2 x i64> %9, i64 %5, i32 1 |
+; CHECK-NEXT: %11 = icmp eq i32 1, %6 |
+; CHECK-NEXT: %12 = select i1 %11, <2 x i64> %10, <2 x i64> %9 |
+; CHECK-NEXT: %13 = insertelement <2 x i64> %3, i64 %5, i32 0 |
+; CHECK-NEXT: %14 = icmp eq i32 2, %6 |
+; CHECK-NEXT: %15 = select i1 %14, <2 x i64> %13, <2 x i64> %3 |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %15, i64 %5, i32 1 |
+; CHECK-NEXT: %17 = icmp eq i32 3, %6 |
+; CHECK-NEXT: %18 = select i1 %17, <2 x i64> %16, <2 x i64> %15 |
+; CHECK-NEXT: %19 = insertelement <2 x i64> %4, i64 %5, i32 0 |
+; CHECK-NEXT: %20 = icmp eq i32 4, %6 |
+; CHECK-NEXT: %21 = select i1 %20, <2 x i64> %19, <2 x i64> %4 |
+; CHECK-NEXT: %22 = insertelement <2 x i64> %21, i64 %5, i32 1 |
+; CHECK-NEXT: %23 = icmp eq i32 5, %6 |
+; CHECK-NEXT: %24 = select i1 %23, <2 x i64> %22, <2 x i64> %21 |
+; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %24, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: ret <2 x i64> %12 |
+; CHECK-NEXT: } |
+ |
+define <6 x i8*> @insert_6xi8ptr_var_idx(<6 x i8*>, i8*, i32) { |
+entry: |
+ %3 = insertelement <6 x i8*> %0, i8* %1, i32 %2 |
+ ret <6 x i8*> %3 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_var_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %5 = insertelement <4 x i8*> %1, i8* %3, i32 0 |
+; CHECK-NEXT: %6 = icmp eq i32 0, %4 |
+; CHECK-NEXT: %7 = select i1 %6, <4 x i8*> %5, <4 x i8*> %1 |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %7, i8* %3, i32 1 |
+; CHECK-NEXT: %9 = icmp eq i32 1, %4 |
+; CHECK-NEXT: %10 = select i1 %9, <4 x i8*> %8, <4 x i8*> %7 |
+; CHECK-NEXT: %11 = insertelement <4 x i8*> %10, i8* %3, i32 2 |
+; CHECK-NEXT: %12 = icmp eq i32 2, %4 |
+; CHECK-NEXT: %13 = select i1 %12, <4 x i8*> %11, <4 x i8*> %10 |
+; CHECK-NEXT: %14 = insertelement <4 x i8*> %13, i8* %3, i32 3 |
+; CHECK-NEXT: %15 = icmp eq i32 3, %4 |
+; CHECK-NEXT: %16 = select i1 %15, <4 x i8*> %14, <4 x i8*> %13 |
+; CHECK-NEXT: %17 = insertelement <4 x i8*> %2, i8* %3, i32 0 |
+; CHECK-NEXT: %18 = icmp eq i32 4, %4 |
+; CHECK-NEXT: %19 = select i1 %18, <4 x i8*> %17, <4 x i8*> %2 |
+; CHECK-NEXT: %20 = insertelement <4 x i8*> %19, i8* %3, i32 1 |
+; CHECK-NEXT: %21 = icmp eq i32 5, %4 |
+; CHECK-NEXT: %22 = select i1 %21, <4 x i8*> %20, <4 x i8*> %19 |
+; CHECK-NEXT: store <4 x i8*> %22, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %16 |
+; CHECK-NEXT: } |
+ |
+define <6 x float> @insert_6xfloat_var_idx(<6 x float>, float, i32) { |
+entry: |
+ %3 = insertelement <6 x float> %0, float %1, i32 %2 |
+ ret <6 x float> %3 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_6xfloat_var_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %5 = insertelement <4 x float> %1, float %3, i32 0 |
+; CHECK-NEXT: %6 = icmp eq i32 0, %4 |
+; CHECK-NEXT: %7 = select i1 %6, <4 x float> %5, <4 x float> %1 |
+; CHECK-NEXT: %8 = insertelement <4 x float> %7, float %3, i32 1 |
+; CHECK-NEXT: %9 = icmp eq i32 1, %4 |
+; CHECK-NEXT: %10 = select i1 %9, <4 x float> %8, <4 x float> %7 |
+; CHECK-NEXT: %11 = insertelement <4 x float> %10, float %3, i32 2 |
+; CHECK-NEXT: %12 = icmp eq i32 2, %4 |
+; CHECK-NEXT: %13 = select i1 %12, <4 x float> %11, <4 x float> %10 |
+; CHECK-NEXT: %14 = insertelement <4 x float> %13, float %3, i32 3 |
+; CHECK-NEXT: %15 = icmp eq i32 3, %4 |
+; CHECK-NEXT: %16 = select i1 %15, <4 x float> %14, <4 x float> %13 |
+; CHECK-NEXT: %17 = insertelement <4 x float> %2, float %3, i32 0 |
+; CHECK-NEXT: %18 = icmp eq i32 4, %4 |
+; CHECK-NEXT: %19 = select i1 %18, <4 x float> %17, <4 x float> %2 |
+; CHECK-NEXT: %20 = insertelement <4 x float> %19, float %3, i32 1 |
+; CHECK-NEXT: %21 = icmp eq i32 5, %4 |
+; CHECK-NEXT: %22 = select i1 %21, <4 x float> %20, <4 x float> %19 |
+; CHECK-NEXT: store <4 x float> %22, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %16 |
+; CHECK-NEXT: } |
+ |
+define <6 x double> @insert_6xdouble_var_idx(<6 x double>, double, i32) { |
+entry: |
+ %3 = insertelement <6 x double> %0, double %1, i32 %2 |
+ ret <6 x double> %3 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_6xdouble_var_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, double, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %7 = insertelement <2 x double> %2, double %5, i32 0 |
+; CHECK-NEXT: %8 = icmp eq i32 0, %6 |
+; CHECK-NEXT: %9 = select i1 %8, <2 x double> %7, <2 x double> %2 |
+; CHECK-NEXT: %10 = insertelement <2 x double> %9, double %5, i32 1 |
+; CHECK-NEXT: %11 = icmp eq i32 1, %6 |
+; CHECK-NEXT: %12 = select i1 %11, <2 x double> %10, <2 x double> %9 |
+; CHECK-NEXT: %13 = insertelement <2 x double> %3, double %5, i32 0 |
+; CHECK-NEXT: %14 = icmp eq i32 2, %6 |
+; CHECK-NEXT: %15 = select i1 %14, <2 x double> %13, <2 x double> %3 |
+; CHECK-NEXT: %16 = insertelement <2 x double> %15, double %5, i32 1 |
+; CHECK-NEXT: %17 = icmp eq i32 3, %6 |
+; CHECK-NEXT: %18 = select i1 %17, <2 x double> %16, <2 x double> %15 |
+; CHECK-NEXT: %19 = insertelement <2 x double> %4, double %5, i32 0 |
+; CHECK-NEXT: %20 = icmp eq i32 4, %6 |
+; CHECK-NEXT: %21 = select i1 %20, <2 x double> %19, <2 x double> %4 |
+; CHECK-NEXT: %22 = insertelement <2 x double> %21, double %5, i32 1 |
+; CHECK-NEXT: %23 = icmp eq i32 5, %6 |
+; CHECK-NEXT: %24 = select i1 %23, <2 x double> %22, <2 x double> %21 |
+; CHECK-NEXT: store <2 x double> %18, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %24, <2 x double>* %1, align 16 |
+; CHECK-NEXT: ret <2 x double> %12 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8> @insert_8xi8_var_idx(<8 x i8>, i8, i32) { |
+entry: |
+ %3 = insertelement <8 x i8> %0, i8 %1, i32 %2 |
+ ret <8 x i8> %3 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_8xi8_var_idx(<16 x i8>, i8, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2 |
+; CHECK-NEXT: ret <16 x i8> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x i16> @insert_8xi16_var_idx(<8 x i16>, i16, i32) { |
+entry: |
+ %3 = insertelement <8 x i16> %0, i16 %1, i32 %2 |
+ ret <8 x i16> %3 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_8xi16_var_idx(<8 x i16>, i16, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <8 x i16> %0, i16 %1, i32 %2 |
+; CHECK-NEXT: ret <8 x i16> %3 |
+; CHECK-NEXT: } |
+ |
+define <8 x i32> @insert_8xi32_var_idx(<8 x i32>, i32, i32) { |
+entry: |
+ %3 = insertelement <8 x i32> %0, i32 %1, i32 %2 |
+ ret <8 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_8xi32_var_idx(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %5 = insertelement <4 x i32> %1, i32 %3, i32 0 |
+; CHECK-NEXT: %6 = icmp eq i32 0, %4 |
+; CHECK-NEXT: %7 = select i1 %6, <4 x i32> %5, <4 x i32> %1 |
+; CHECK-NEXT: %8 = insertelement <4 x i32> %7, i32 %3, i32 1 |
+; CHECK-NEXT: %9 = icmp eq i32 1, %4 |
+; CHECK-NEXT: %10 = select i1 %9, <4 x i32> %8, <4 x i32> %7 |
+; CHECK-NEXT: %11 = insertelement <4 x i32> %10, i32 %3, i32 2 |
+; CHECK-NEXT: %12 = icmp eq i32 2, %4 |
+; CHECK-NEXT: %13 = select i1 %12, <4 x i32> %11, <4 x i32> %10 |
+; CHECK-NEXT: %14 = insertelement <4 x i32> %13, i32 %3, i32 3 |
+; CHECK-NEXT: %15 = icmp eq i32 3, %4 |
+; CHECK-NEXT: %16 = select i1 %15, <4 x i32> %14, <4 x i32> %13 |
+; CHECK-NEXT: %17 = insertelement <4 x i32> %2, i32 %3, i32 0 |
+; CHECK-NEXT: %18 = icmp eq i32 4, %4 |
+; CHECK-NEXT: %19 = select i1 %18, <4 x i32> %17, <4 x i32> %2 |
+; CHECK-NEXT: %20 = insertelement <4 x i32> %19, i32 %3, i32 1 |
+; CHECK-NEXT: %21 = icmp eq i32 5, %4 |
+; CHECK-NEXT: %22 = select i1 %21, <4 x i32> %20, <4 x i32> %19 |
+; CHECK-NEXT: %23 = insertelement <4 x i32> %22, i32 %3, i32 2 |
+; CHECK-NEXT: %24 = icmp eq i32 6, %4 |
+; CHECK-NEXT: %25 = select i1 %24, <4 x i32> %23, <4 x i32> %22 |
+; CHECK-NEXT: %26 = insertelement <4 x i32> %25, i32 %3, i32 3 |
+; CHECK-NEXT: %27 = icmp eq i32 7, %4 |
+; CHECK-NEXT: %28 = select i1 %27, <4 x i32> %26, <4 x i32> %25 |
+; CHECK-NEXT: store <4 x i32> %28, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i32> %16 |
+; CHECK-NEXT: } |
+ |
+define <8 x i64> @insert_8xi64_var_idx(<8 x i64>, i64, i32) { |
+entry: |
+ %3 = insertelement <8 x i64> %0, i64 %1, i32 %2 |
+ ret <8 x i64> %3 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_8xi64_var_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %9 = insertelement <2 x i64> %3, i64 %7, i32 0 |
+; CHECK-NEXT: %10 = icmp eq i32 0, %8 |
+; CHECK-NEXT: %11 = select i1 %10, <2 x i64> %9, <2 x i64> %3 |
+; CHECK-NEXT: %12 = insertelement <2 x i64> %11, i64 %7, i32 1 |
+; CHECK-NEXT: %13 = icmp eq i32 1, %8 |
+; CHECK-NEXT: %14 = select i1 %13, <2 x i64> %12, <2 x i64> %11 |
+; CHECK-NEXT: %15 = insertelement <2 x i64> %4, i64 %7, i32 0 |
+; CHECK-NEXT: %16 = icmp eq i32 2, %8 |
+; CHECK-NEXT: %17 = select i1 %16, <2 x i64> %15, <2 x i64> %4 |
+; CHECK-NEXT: %18 = insertelement <2 x i64> %17, i64 %7, i32 1 |
+; CHECK-NEXT: %19 = icmp eq i32 3, %8 |
+; CHECK-NEXT: %20 = select i1 %19, <2 x i64> %18, <2 x i64> %17 |
+; CHECK-NEXT: %21 = insertelement <2 x i64> %5, i64 %7, i32 0 |
+; CHECK-NEXT: %22 = icmp eq i32 4, %8 |
+; CHECK-NEXT: %23 = select i1 %22, <2 x i64> %21, <2 x i64> %5 |
+; CHECK-NEXT: %24 = insertelement <2 x i64> %23, i64 %7, i32 1 |
+; CHECK-NEXT: %25 = icmp eq i32 5, %8 |
+; CHECK-NEXT: %26 = select i1 %25, <2 x i64> %24, <2 x i64> %23 |
+; CHECK-NEXT: %27 = insertelement <2 x i64> %6, i64 %7, i32 0 |
+; CHECK-NEXT: %28 = icmp eq i32 6, %8 |
+; CHECK-NEXT: %29 = select i1 %28, <2 x i64> %27, <2 x i64> %6 |
+; CHECK-NEXT: %30 = insertelement <2 x i64> %29, i64 %7, i32 1 |
+; CHECK-NEXT: %31 = icmp eq i32 7, %8 |
+; CHECK-NEXT: %32 = select i1 %31, <2 x i64> %30, <2 x i64> %29 |
+; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %26, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %32, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: ret <2 x i64> %14 |
+; CHECK-NEXT: } |
+ |
+define <8 x i8*> @insert_8xi8ptr_var_idx(<8 x i8*>, i8*, i32) { |
+entry: |
+ %3 = insertelement <8 x i8*> %0, i8* %1, i32 %2 |
+ ret <8 x i8*> %3 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_var_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %5 = insertelement <4 x i8*> %1, i8* %3, i32 0 |
+; CHECK-NEXT: %6 = icmp eq i32 0, %4 |
+; CHECK-NEXT: %7 = select i1 %6, <4 x i8*> %5, <4 x i8*> %1 |
+; CHECK-NEXT: %8 = insertelement <4 x i8*> %7, i8* %3, i32 1 |
+; CHECK-NEXT: %9 = icmp eq i32 1, %4 |
+; CHECK-NEXT: %10 = select i1 %9, <4 x i8*> %8, <4 x i8*> %7 |
+; CHECK-NEXT: %11 = insertelement <4 x i8*> %10, i8* %3, i32 2 |
+; CHECK-NEXT: %12 = icmp eq i32 2, %4 |
+; CHECK-NEXT: %13 = select i1 %12, <4 x i8*> %11, <4 x i8*> %10 |
+; CHECK-NEXT: %14 = insertelement <4 x i8*> %13, i8* %3, i32 3 |
+; CHECK-NEXT: %15 = icmp eq i32 3, %4 |
+; CHECK-NEXT: %16 = select i1 %15, <4 x i8*> %14, <4 x i8*> %13 |
+; CHECK-NEXT: %17 = insertelement <4 x i8*> %2, i8* %3, i32 0 |
+; CHECK-NEXT: %18 = icmp eq i32 4, %4 |
+; CHECK-NEXT: %19 = select i1 %18, <4 x i8*> %17, <4 x i8*> %2 |
+; CHECK-NEXT: %20 = insertelement <4 x i8*> %19, i8* %3, i32 1 |
+; CHECK-NEXT: %21 = icmp eq i32 5, %4 |
+; CHECK-NEXT: %22 = select i1 %21, <4 x i8*> %20, <4 x i8*> %19 |
+; CHECK-NEXT: %23 = insertelement <4 x i8*> %22, i8* %3, i32 2 |
+; CHECK-NEXT: %24 = icmp eq i32 6, %4 |
+; CHECK-NEXT: %25 = select i1 %24, <4 x i8*> %23, <4 x i8*> %22 |
+; CHECK-NEXT: %26 = insertelement <4 x i8*> %25, i8* %3, i32 3 |
+; CHECK-NEXT: %27 = icmp eq i32 7, %4 |
+; CHECK-NEXT: %28 = select i1 %27, <4 x i8*> %26, <4 x i8*> %25 |
+; CHECK-NEXT: store <4 x i8*> %28, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %16 |
+; CHECK-NEXT: } |
+ |
+define <8 x float> @insert_8xfloat_var_idx(<8 x float>, float, i32) { |
+entry: |
+ %3 = insertelement <8 x float> %0, float %1, i32 %2 |
+ ret <8 x float> %3 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_8xfloat_var_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %5 = insertelement <4 x float> %1, float %3, i32 0 |
+; CHECK-NEXT: %6 = icmp eq i32 0, %4 |
+; CHECK-NEXT: %7 = select i1 %6, <4 x float> %5, <4 x float> %1 |
+; CHECK-NEXT: %8 = insertelement <4 x float> %7, float %3, i32 1 |
+; CHECK-NEXT: %9 = icmp eq i32 1, %4 |
+; CHECK-NEXT: %10 = select i1 %9, <4 x float> %8, <4 x float> %7 |
+; CHECK-NEXT: %11 = insertelement <4 x float> %10, float %3, i32 2 |
+; CHECK-NEXT: %12 = icmp eq i32 2, %4 |
+; CHECK-NEXT: %13 = select i1 %12, <4 x float> %11, <4 x float> %10 |
+; CHECK-NEXT: %14 = insertelement <4 x float> %13, float %3, i32 3 |
+; CHECK-NEXT: %15 = icmp eq i32 3, %4 |
+; CHECK-NEXT: %16 = select i1 %15, <4 x float> %14, <4 x float> %13 |
+; CHECK-NEXT: %17 = insertelement <4 x float> %2, float %3, i32 0 |
+; CHECK-NEXT: %18 = icmp eq i32 4, %4 |
+; CHECK-NEXT: %19 = select i1 %18, <4 x float> %17, <4 x float> %2 |
+; CHECK-NEXT: %20 = insertelement <4 x float> %19, float %3, i32 1 |
+; CHECK-NEXT: %21 = icmp eq i32 5, %4 |
+; CHECK-NEXT: %22 = select i1 %21, <4 x float> %20, <4 x float> %19 |
+; CHECK-NEXT: %23 = insertelement <4 x float> %22, float %3, i32 2 |
+; CHECK-NEXT: %24 = icmp eq i32 6, %4 |
+; CHECK-NEXT: %25 = select i1 %24, <4 x float> %23, <4 x float> %22 |
+; CHECK-NEXT: %26 = insertelement <4 x float> %25, float %3, i32 3 |
+; CHECK-NEXT: %27 = icmp eq i32 7, %4 |
+; CHECK-NEXT: %28 = select i1 %27, <4 x float> %26, <4 x float> %25 |
+; CHECK-NEXT: store <4 x float> %28, <4 x float>* %0, align 16 |
+; CHECK-NEXT: ret <4 x float> %16 |
+; CHECK-NEXT: } |
+ |
+define <8 x double> @insert_8xdouble_var_idx(<8 x double>, double, i32) { |
+entry: |
+ %3 = insertelement <8 x double> %0, double %1, i32 %2 |
+ ret <8 x double> %3 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_8xdouble_var_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, double, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %9 = insertelement <2 x double> %3, double %7, i32 0 |
+; CHECK-NEXT: %10 = icmp eq i32 0, %8 |
+; CHECK-NEXT: %11 = select i1 %10, <2 x double> %9, <2 x double> %3 |
+; CHECK-NEXT: %12 = insertelement <2 x double> %11, double %7, i32 1 |
+; CHECK-NEXT: %13 = icmp eq i32 1, %8 |
+; CHECK-NEXT: %14 = select i1 %13, <2 x double> %12, <2 x double> %11 |
+; CHECK-NEXT: %15 = insertelement <2 x double> %4, double %7, i32 0 |
+; CHECK-NEXT: %16 = icmp eq i32 2, %8 |
+; CHECK-NEXT: %17 = select i1 %16, <2 x double> %15, <2 x double> %4 |
+; CHECK-NEXT: %18 = insertelement <2 x double> %17, double %7, i32 1 |
+; CHECK-NEXT: %19 = icmp eq i32 3, %8 |
+; CHECK-NEXT: %20 = select i1 %19, <2 x double> %18, <2 x double> %17 |
+; CHECK-NEXT: %21 = insertelement <2 x double> %5, double %7, i32 0 |
+; CHECK-NEXT: %22 = icmp eq i32 4, %8 |
+; CHECK-NEXT: %23 = select i1 %22, <2 x double> %21, <2 x double> %5 |
+; CHECK-NEXT: %24 = insertelement <2 x double> %23, double %7, i32 1 |
+; CHECK-NEXT: %25 = icmp eq i32 5, %8 |
+; CHECK-NEXT: %26 = select i1 %25, <2 x double> %24, <2 x double> %23 |
+; CHECK-NEXT: %27 = insertelement <2 x double> %6, double %7, i32 0 |
+; CHECK-NEXT: %28 = icmp eq i32 6, %8 |
+; CHECK-NEXT: %29 = select i1 %28, <2 x double> %27, <2 x double> %6 |
+; CHECK-NEXT: %30 = insertelement <2 x double> %29, double %7, i32 1 |
+; CHECK-NEXT: %31 = icmp eq i32 7, %8 |
+; CHECK-NEXT: %32 = select i1 %31, <2 x double> %30, <2 x double> %29 |
+; CHECK-NEXT: store <2 x double> %20, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %26, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %32, <2 x double>* %2, align 16 |
+; CHECK-NEXT: ret <2 x double> %14 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8> @insert_12xi8_var_idx(<12 x i8>, i8, i32) { |
+entry: |
+ %3 = insertelement <12 x i8> %0, i8 %1, i32 %2 |
+ ret <12 x i8> %3 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_12xi8_var_idx(<16 x i8>, i8, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2 |
+; CHECK-NEXT: ret <16 x i8> %3 |
+; CHECK-NEXT: } |
+ |
+define <12 x i16> @insert_12xi16_var_idx(<12 x i16>, i16, i32) { |
+entry: |
+ %3 = insertelement <12 x i16> %0, i16 %1, i32 %2 |
+ ret <12 x i16> %3 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_12xi16_var_idx(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %5 = insertelement <8 x i16> %1, i16 %3, i32 0 |
+; CHECK-NEXT: %6 = icmp eq i32 0, %4 |
+; CHECK-NEXT: %7 = select i1 %6, <8 x i16> %5, <8 x i16> %1 |
+; CHECK-NEXT: %8 = insertelement <8 x i16> %7, i16 %3, i32 1 |
+; CHECK-NEXT: %9 = icmp eq i32 1, %4 |
+; CHECK-NEXT: %10 = select i1 %9, <8 x i16> %8, <8 x i16> %7 |
+; CHECK-NEXT: %11 = insertelement <8 x i16> %10, i16 %3, i32 2 |
+; CHECK-NEXT: %12 = icmp eq i32 2, %4 |
+; CHECK-NEXT: %13 = select i1 %12, <8 x i16> %11, <8 x i16> %10 |
+; CHECK-NEXT: %14 = insertelement <8 x i16> %13, i16 %3, i32 3 |
+; CHECK-NEXT: %15 = icmp eq i32 3, %4 |
+; CHECK-NEXT: %16 = select i1 %15, <8 x i16> %14, <8 x i16> %13 |
+; CHECK-NEXT: %17 = insertelement <8 x i16> %16, i16 %3, i32 4 |
+; CHECK-NEXT: %18 = icmp eq i32 4, %4 |
+; CHECK-NEXT: %19 = select i1 %18, <8 x i16> %17, <8 x i16> %16 |
+; CHECK-NEXT: %20 = insertelement <8 x i16> %19, i16 %3, i32 5 |
+; CHECK-NEXT: %21 = icmp eq i32 5, %4 |
+; CHECK-NEXT: %22 = select i1 %21, <8 x i16> %20, <8 x i16> %19 |
+; CHECK-NEXT: %23 = insertelement <8 x i16> %22, i16 %3, i32 6 |
+; CHECK-NEXT: %24 = icmp eq i32 6, %4 |
+; CHECK-NEXT: %25 = select i1 %24, <8 x i16> %23, <8 x i16> %22 |
+; CHECK-NEXT: %26 = insertelement <8 x i16> %25, i16 %3, i32 7 |
+; CHECK-NEXT: %27 = icmp eq i32 7, %4 |
+; CHECK-NEXT: %28 = select i1 %27, <8 x i16> %26, <8 x i16> %25 |
+; CHECK-NEXT: %29 = insertelement <8 x i16> %2, i16 %3, i32 0 |
+; CHECK-NEXT: %30 = icmp eq i32 8, %4 |
+; CHECK-NEXT: %31 = select i1 %30, <8 x i16> %29, <8 x i16> %2 |
+; CHECK-NEXT: %32 = insertelement <8 x i16> %31, i16 %3, i32 1 |
+; CHECK-NEXT: %33 = icmp eq i32 9, %4 |
+; CHECK-NEXT: %34 = select i1 %33, <8 x i16> %32, <8 x i16> %31 |
+; CHECK-NEXT: %35 = insertelement <8 x i16> %34, i16 %3, i32 2 |
+; CHECK-NEXT: %36 = icmp eq i32 10, %4 |
+; CHECK-NEXT: %37 = select i1 %36, <8 x i16> %35, <8 x i16> %34 |
+; CHECK-NEXT: %38 = insertelement <8 x i16> %37, i16 %3, i32 3 |
+; CHECK-NEXT: %39 = icmp eq i32 11, %4 |
+; CHECK-NEXT: %40 = select i1 %39, <8 x i16> %38, <8 x i16> %37 |
+; CHECK-NEXT: store <8 x i16> %40, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %28 |
+; CHECK-NEXT: } |
+ |
+define <12 x i32> @insert_12xi32_var_idx(<12 x i32>, i32, i32) { |
+entry: |
+ %3 = insertelement <12 x i32> %0, i32 %1, i32 %2 |
+ ret <12 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_12xi32_var_idx(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %7 = insertelement <4 x i32> %2, i32 %5, i32 0 |
+; CHECK-NEXT: %8 = icmp eq i32 0, %6 |
+; CHECK-NEXT: %9 = select i1 %8, <4 x i32> %7, <4 x i32> %2 |
+; CHECK-NEXT: %10 = insertelement <4 x i32> %9, i32 %5, i32 1 |
+; CHECK-NEXT: %11 = icmp eq i32 1, %6 |
+; CHECK-NEXT: %12 = select i1 %11, <4 x i32> %10, <4 x i32> %9 |
+; CHECK-NEXT: %13 = insertelement <4 x i32> %12, i32 %5, i32 2 |
+; CHECK-NEXT: %14 = icmp eq i32 2, %6 |
+; CHECK-NEXT: %15 = select i1 %14, <4 x i32> %13, <4 x i32> %12 |
+; CHECK-NEXT: %16 = insertelement <4 x i32> %15, i32 %5, i32 3 |
+; CHECK-NEXT: %17 = icmp eq i32 3, %6 |
+; CHECK-NEXT: %18 = select i1 %17, <4 x i32> %16, <4 x i32> %15 |
+; CHECK-NEXT: %19 = insertelement <4 x i32> %3, i32 %5, i32 0 |
+; CHECK-NEXT: %20 = icmp eq i32 4, %6 |
+; CHECK-NEXT: %21 = select i1 %20, <4 x i32> %19, <4 x i32> %3 |
+; CHECK-NEXT: %22 = insertelement <4 x i32> %21, i32 %5, i32 1 |
+; CHECK-NEXT: %23 = icmp eq i32 5, %6 |
+; CHECK-NEXT: %24 = select i1 %23, <4 x i32> %22, <4 x i32> %21 |
+; CHECK-NEXT: %25 = insertelement <4 x i32> %24, i32 %5, i32 2 |
+; CHECK-NEXT: %26 = icmp eq i32 6, %6 |
+; CHECK-NEXT: %27 = select i1 %26, <4 x i32> %25, <4 x i32> %24 |
+; CHECK-NEXT: %28 = insertelement <4 x i32> %27, i32 %5, i32 3 |
+; CHECK-NEXT: %29 = icmp eq i32 7, %6 |
+; CHECK-NEXT: %30 = select i1 %29, <4 x i32> %28, <4 x i32> %27 |
+; CHECK-NEXT: %31 = insertelement <4 x i32> %4, i32 %5, i32 0 |
+; CHECK-NEXT: %32 = icmp eq i32 8, %6 |
+; CHECK-NEXT: %33 = select i1 %32, <4 x i32> %31, <4 x i32> %4 |
+; CHECK-NEXT: %34 = insertelement <4 x i32> %33, i32 %5, i32 1 |
+; CHECK-NEXT: %35 = icmp eq i32 9, %6 |
+; CHECK-NEXT: %36 = select i1 %35, <4 x i32> %34, <4 x i32> %33 |
+; CHECK-NEXT: %37 = insertelement <4 x i32> %36, i32 %5, i32 2 |
+; CHECK-NEXT: %38 = icmp eq i32 10, %6 |
+; CHECK-NEXT: %39 = select i1 %38, <4 x i32> %37, <4 x i32> %36 |
+; CHECK-NEXT: %40 = insertelement <4 x i32> %39, i32 %5, i32 3 |
+; CHECK-NEXT: %41 = icmp eq i32 11, %6 |
+; CHECK-NEXT: %42 = select i1 %41, <4 x i32> %40, <4 x i32> %39 |
+; CHECK-NEXT: store <4 x i32> %30, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %42, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i32> %18 |
+; CHECK-NEXT: } |
+ |
+define <12 x i64> @insert_12xi64_var_idx(<12 x i64>, i64, i32) { |
+entry: |
+ %3 = insertelement <12 x i64> %0, i64 %1, i32 %2 |
+ ret <12 x i64> %3 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_12xi64_var_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %13 = insertelement <2 x i64> %5, i64 %11, i32 0 |
+; CHECK-NEXT: %14 = icmp eq i32 0, %12 |
+; CHECK-NEXT: %15 = select i1 %14, <2 x i64> %13, <2 x i64> %5 |
+; CHECK-NEXT: %16 = insertelement <2 x i64> %15, i64 %11, i32 1 |
+; CHECK-NEXT: %17 = icmp eq i32 1, %12 |
+; CHECK-NEXT: %18 = select i1 %17, <2 x i64> %16, <2 x i64> %15 |
+; CHECK-NEXT: %19 = insertelement <2 x i64> %6, i64 %11, i32 0 |
+; CHECK-NEXT: %20 = icmp eq i32 2, %12 |
+; CHECK-NEXT: %21 = select i1 %20, <2 x i64> %19, <2 x i64> %6 |
+; CHECK-NEXT: %22 = insertelement <2 x i64> %21, i64 %11, i32 1 |
+; CHECK-NEXT: %23 = icmp eq i32 3, %12 |
+; CHECK-NEXT: %24 = select i1 %23, <2 x i64> %22, <2 x i64> %21 |
+; CHECK-NEXT: %25 = insertelement <2 x i64> %7, i64 %11, i32 0 |
+; CHECK-NEXT: %26 = icmp eq i32 4, %12 |
+; CHECK-NEXT: %27 = select i1 %26, <2 x i64> %25, <2 x i64> %7 |
+; CHECK-NEXT: %28 = insertelement <2 x i64> %27, i64 %11, i32 1 |
+; CHECK-NEXT: %29 = icmp eq i32 5, %12 |
+; CHECK-NEXT: %30 = select i1 %29, <2 x i64> %28, <2 x i64> %27 |
+; CHECK-NEXT: %31 = insertelement <2 x i64> %8, i64 %11, i32 0 |
+; CHECK-NEXT: %32 = icmp eq i32 6, %12 |
+; CHECK-NEXT: %33 = select i1 %32, <2 x i64> %31, <2 x i64> %8 |
+; CHECK-NEXT: %34 = insertelement <2 x i64> %33, i64 %11, i32 1 |
+; CHECK-NEXT: %35 = icmp eq i32 7, %12 |
+; CHECK-NEXT: %36 = select i1 %35, <2 x i64> %34, <2 x i64> %33 |
+; CHECK-NEXT: %37 = insertelement <2 x i64> %9, i64 %11, i32 0 |
+; CHECK-NEXT: %38 = icmp eq i32 8, %12 |
+; CHECK-NEXT: %39 = select i1 %38, <2 x i64> %37, <2 x i64> %9 |
+; CHECK-NEXT: %40 = insertelement <2 x i64> %39, i64 %11, i32 1 |
+; CHECK-NEXT: %41 = icmp eq i32 9, %12 |
+; CHECK-NEXT: %42 = select i1 %41, <2 x i64> %40, <2 x i64> %39 |
+; CHECK-NEXT: %43 = insertelement <2 x i64> %10, i64 %11, i32 0 |
+; CHECK-NEXT: %44 = icmp eq i32 10, %12 |
+; CHECK-NEXT: %45 = select i1 %44, <2 x i64> %43, <2 x i64> %10 |
+; CHECK-NEXT: %46 = insertelement <2 x i64> %45, i64 %11, i32 1 |
+; CHECK-NEXT: %47 = icmp eq i32 11, %12 |
+; CHECK-NEXT: %48 = select i1 %47, <2 x i64> %46, <2 x i64> %45 |
+; CHECK-NEXT: store <2 x i64> %24, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %30, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %36, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %42, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %48, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: ret <2 x i64> %18 |
+; CHECK-NEXT: } |
+ |
+define <12 x i8*> @insert_12xi8ptr_var_idx(<12 x i8*>, i8*, i32) { |
+entry: |
+ %3 = insertelement <12 x i8*> %0, i8* %1, i32 %2 |
+ ret <12 x i8*> %3 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_var_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %7 = insertelement <4 x i8*> %2, i8* %5, i32 0 |
+; CHECK-NEXT: %8 = icmp eq i32 0, %6 |
+; CHECK-NEXT: %9 = select i1 %8, <4 x i8*> %7, <4 x i8*> %2 |
+; CHECK-NEXT: %10 = insertelement <4 x i8*> %9, i8* %5, i32 1 |
+; CHECK-NEXT: %11 = icmp eq i32 1, %6 |
+; CHECK-NEXT: %12 = select i1 %11, <4 x i8*> %10, <4 x i8*> %9 |
+; CHECK-NEXT: %13 = insertelement <4 x i8*> %12, i8* %5, i32 2 |
+; CHECK-NEXT: %14 = icmp eq i32 2, %6 |
+; CHECK-NEXT: %15 = select i1 %14, <4 x i8*> %13, <4 x i8*> %12 |
+; CHECK-NEXT: %16 = insertelement <4 x i8*> %15, i8* %5, i32 3 |
+; CHECK-NEXT: %17 = icmp eq i32 3, %6 |
+; CHECK-NEXT: %18 = select i1 %17, <4 x i8*> %16, <4 x i8*> %15 |
+; CHECK-NEXT: %19 = insertelement <4 x i8*> %3, i8* %5, i32 0 |
+; CHECK-NEXT: %20 = icmp eq i32 4, %6 |
+; CHECK-NEXT: %21 = select i1 %20, <4 x i8*> %19, <4 x i8*> %3 |
+; CHECK-NEXT: %22 = insertelement <4 x i8*> %21, i8* %5, i32 1 |
+; CHECK-NEXT: %23 = icmp eq i32 5, %6 |
+; CHECK-NEXT: %24 = select i1 %23, <4 x i8*> %22, <4 x i8*> %21 |
+; CHECK-NEXT: %25 = insertelement <4 x i8*> %24, i8* %5, i32 2 |
+; CHECK-NEXT: %26 = icmp eq i32 6, %6 |
+; CHECK-NEXT: %27 = select i1 %26, <4 x i8*> %25, <4 x i8*> %24 |
+; CHECK-NEXT: %28 = insertelement <4 x i8*> %27, i8* %5, i32 3 |
+; CHECK-NEXT: %29 = icmp eq i32 7, %6 |
+; CHECK-NEXT: %30 = select i1 %29, <4 x i8*> %28, <4 x i8*> %27 |
+; CHECK-NEXT: %31 = insertelement <4 x i8*> %4, i8* %5, i32 0 |
+; CHECK-NEXT: %32 = icmp eq i32 8, %6 |
+; CHECK-NEXT: %33 = select i1 %32, <4 x i8*> %31, <4 x i8*> %4 |
+; CHECK-NEXT: %34 = insertelement <4 x i8*> %33, i8* %5, i32 1 |
+; CHECK-NEXT: %35 = icmp eq i32 9, %6 |
+; CHECK-NEXT: %36 = select i1 %35, <4 x i8*> %34, <4 x i8*> %33 |
+; CHECK-NEXT: %37 = insertelement <4 x i8*> %36, i8* %5, i32 2 |
+; CHECK-NEXT: %38 = icmp eq i32 10, %6 |
+; CHECK-NEXT: %39 = select i1 %38, <4 x i8*> %37, <4 x i8*> %36 |
+; CHECK-NEXT: %40 = insertelement <4 x i8*> %39, i8* %5, i32 3 |
+; CHECK-NEXT: %41 = icmp eq i32 11, %6 |
+; CHECK-NEXT: %42 = select i1 %41, <4 x i8*> %40, <4 x i8*> %39 |
+; CHECK-NEXT: store <4 x i8*> %30, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %42, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %18 |
+; CHECK-NEXT: } |
+ |
+define <12 x float> @insert_12xfloat_var_idx(<12 x float>, float, i32) { |
+entry: |
+ %3 = insertelement <12 x float> %0, float %1, i32 %2 |
+ ret <12 x float> %3 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_12xfloat_var_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %7 = insertelement <4 x float> %2, float %5, i32 0 |
+; CHECK-NEXT: %8 = icmp eq i32 0, %6 |
+; CHECK-NEXT: %9 = select i1 %8, <4 x float> %7, <4 x float> %2 |
+; CHECK-NEXT: %10 = insertelement <4 x float> %9, float %5, i32 1 |
+; CHECK-NEXT: %11 = icmp eq i32 1, %6 |
+; CHECK-NEXT: %12 = select i1 %11, <4 x float> %10, <4 x float> %9 |
+; CHECK-NEXT: %13 = insertelement <4 x float> %12, float %5, i32 2 |
+; CHECK-NEXT: %14 = icmp eq i32 2, %6 |
+; CHECK-NEXT: %15 = select i1 %14, <4 x float> %13, <4 x float> %12 |
+; CHECK-NEXT: %16 = insertelement <4 x float> %15, float %5, i32 3 |
+; CHECK-NEXT: %17 = icmp eq i32 3, %6 |
+; CHECK-NEXT: %18 = select i1 %17, <4 x float> %16, <4 x float> %15 |
+; CHECK-NEXT: %19 = insertelement <4 x float> %3, float %5, i32 0 |
+; CHECK-NEXT: %20 = icmp eq i32 4, %6 |
+; CHECK-NEXT: %21 = select i1 %20, <4 x float> %19, <4 x float> %3 |
+; CHECK-NEXT: %22 = insertelement <4 x float> %21, float %5, i32 1 |
+; CHECK-NEXT: %23 = icmp eq i32 5, %6 |
+; CHECK-NEXT: %24 = select i1 %23, <4 x float> %22, <4 x float> %21 |
+; CHECK-NEXT: %25 = insertelement <4 x float> %24, float %5, i32 2 |
+; CHECK-NEXT: %26 = icmp eq i32 6, %6 |
+; CHECK-NEXT: %27 = select i1 %26, <4 x float> %25, <4 x float> %24 |
+; CHECK-NEXT: %28 = insertelement <4 x float> %27, float %5, i32 3 |
+; CHECK-NEXT: %29 = icmp eq i32 7, %6 |
+; CHECK-NEXT: %30 = select i1 %29, <4 x float> %28, <4 x float> %27 |
+; CHECK-NEXT: %31 = insertelement <4 x float> %4, float %5, i32 0 |
+; CHECK-NEXT: %32 = icmp eq i32 8, %6 |
+; CHECK-NEXT: %33 = select i1 %32, <4 x float> %31, <4 x float> %4 |
+; CHECK-NEXT: %34 = insertelement <4 x float> %33, float %5, i32 1 |
+; CHECK-NEXT: %35 = icmp eq i32 9, %6 |
+; CHECK-NEXT: %36 = select i1 %35, <4 x float> %34, <4 x float> %33 |
+; CHECK-NEXT: %37 = insertelement <4 x float> %36, float %5, i32 2 |
+; CHECK-NEXT: %38 = icmp eq i32 10, %6 |
+; CHECK-NEXT: %39 = select i1 %38, <4 x float> %37, <4 x float> %36 |
+; CHECK-NEXT: %40 = insertelement <4 x float> %39, float %5, i32 3 |
+; CHECK-NEXT: %41 = icmp eq i32 11, %6 |
+; CHECK-NEXT: %42 = select i1 %41, <4 x float> %40, <4 x float> %39 |
+; CHECK-NEXT: store <4 x float> %30, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %42, <4 x float>* %1, align 16 |
+; CHECK-NEXT: ret <4 x float> %18 |
+; CHECK-NEXT: } |
+ |
+define <12 x double> @insert_12xdouble_var_idx(<12 x double>, double, i32) { |
+entry: |
+ %3 = insertelement <12 x double> %0, double %1, i32 %2 |
+ ret <12 x double> %3 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_12xdouble_var_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %13 = insertelement <2 x double> %5, double %11, i32 0 |
+; CHECK-NEXT: %14 = icmp eq i32 0, %12 |
+; CHECK-NEXT: %15 = select i1 %14, <2 x double> %13, <2 x double> %5 |
+; CHECK-NEXT: %16 = insertelement <2 x double> %15, double %11, i32 1 |
+; CHECK-NEXT: %17 = icmp eq i32 1, %12 |
+; CHECK-NEXT: %18 = select i1 %17, <2 x double> %16, <2 x double> %15 |
+; CHECK-NEXT: %19 = insertelement <2 x double> %6, double %11, i32 0 |
+; CHECK-NEXT: %20 = icmp eq i32 2, %12 |
+; CHECK-NEXT: %21 = select i1 %20, <2 x double> %19, <2 x double> %6 |
+; CHECK-NEXT: %22 = insertelement <2 x double> %21, double %11, i32 1 |
+; CHECK-NEXT: %23 = icmp eq i32 3, %12 |
+; CHECK-NEXT: %24 = select i1 %23, <2 x double> %22, <2 x double> %21 |
+; CHECK-NEXT: %25 = insertelement <2 x double> %7, double %11, i32 0 |
+; CHECK-NEXT: %26 = icmp eq i32 4, %12 |
+; CHECK-NEXT: %27 = select i1 %26, <2 x double> %25, <2 x double> %7 |
+; CHECK-NEXT: %28 = insertelement <2 x double> %27, double %11, i32 1 |
+; CHECK-NEXT: %29 = icmp eq i32 5, %12 |
+; CHECK-NEXT: %30 = select i1 %29, <2 x double> %28, <2 x double> %27 |
+; CHECK-NEXT: %31 = insertelement <2 x double> %8, double %11, i32 0 |
+; CHECK-NEXT: %32 = icmp eq i32 6, %12 |
+; CHECK-NEXT: %33 = select i1 %32, <2 x double> %31, <2 x double> %8 |
+; CHECK-NEXT: %34 = insertelement <2 x double> %33, double %11, i32 1 |
+; CHECK-NEXT: %35 = icmp eq i32 7, %12 |
+; CHECK-NEXT: %36 = select i1 %35, <2 x double> %34, <2 x double> %33 |
+; CHECK-NEXT: %37 = insertelement <2 x double> %9, double %11, i32 0 |
+; CHECK-NEXT: %38 = icmp eq i32 8, %12 |
+; CHECK-NEXT: %39 = select i1 %38, <2 x double> %37, <2 x double> %9 |
+; CHECK-NEXT: %40 = insertelement <2 x double> %39, double %11, i32 1 |
+; CHECK-NEXT: %41 = icmp eq i32 9, %12 |
+; CHECK-NEXT: %42 = select i1 %41, <2 x double> %40, <2 x double> %39 |
+; CHECK-NEXT: %43 = insertelement <2 x double> %10, double %11, i32 0 |
+; CHECK-NEXT: %44 = icmp eq i32 10, %12 |
+; CHECK-NEXT: %45 = select i1 %44, <2 x double> %43, <2 x double> %10 |
+; CHECK-NEXT: %46 = insertelement <2 x double> %45, double %11, i32 1 |
+; CHECK-NEXT: %47 = icmp eq i32 11, %12 |
+; CHECK-NEXT: %48 = select i1 %47, <2 x double> %46, <2 x double> %45 |
+; CHECK-NEXT: store <2 x double> %24, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %30, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %36, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %42, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %48, <2 x double>* %4, align 16 |
+; CHECK-NEXT: ret <2 x double> %18 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8> @insert_16xi8_var_idx(<16 x i8>, i8, i32) { |
+entry: |
+ %3 = insertelement <16 x i8> %0, i8 %1, i32 %2 |
+ ret <16 x i8> %3 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_16xi8_var_idx(<16 x i8>, i8, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2 |
+; CHECK-NEXT: ret <16 x i8> %3 |
+; CHECK-NEXT: } |
+ |
+define <16 x i16> @insert_16xi16_var_idx(<16 x i16>, i16, i32) { |
+entry: |
+ %3 = insertelement <16 x i16> %0, i16 %1, i32 %2 |
+ ret <16 x i16> %3 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_16xi16_var_idx(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %5 = insertelement <8 x i16> %1, i16 %3, i32 0 |
+; CHECK-NEXT: %6 = icmp eq i32 0, %4 |
+; CHECK-NEXT: %7 = select i1 %6, <8 x i16> %5, <8 x i16> %1 |
+; CHECK-NEXT: %8 = insertelement <8 x i16> %7, i16 %3, i32 1 |
+; CHECK-NEXT: %9 = icmp eq i32 1, %4 |
+; CHECK-NEXT: %10 = select i1 %9, <8 x i16> %8, <8 x i16> %7 |
+; CHECK-NEXT: %11 = insertelement <8 x i16> %10, i16 %3, i32 2 |
+; CHECK-NEXT: %12 = icmp eq i32 2, %4 |
+; CHECK-NEXT: %13 = select i1 %12, <8 x i16> %11, <8 x i16> %10 |
+; CHECK-NEXT: %14 = insertelement <8 x i16> %13, i16 %3, i32 3 |
+; CHECK-NEXT: %15 = icmp eq i32 3, %4 |
+; CHECK-NEXT: %16 = select i1 %15, <8 x i16> %14, <8 x i16> %13 |
+; CHECK-NEXT: %17 = insertelement <8 x i16> %16, i16 %3, i32 4 |
+; CHECK-NEXT: %18 = icmp eq i32 4, %4 |
+; CHECK-NEXT: %19 = select i1 %18, <8 x i16> %17, <8 x i16> %16 |
+; CHECK-NEXT: %20 = insertelement <8 x i16> %19, i16 %3, i32 5 |
+; CHECK-NEXT: %21 = icmp eq i32 5, %4 |
+; CHECK-NEXT: %22 = select i1 %21, <8 x i16> %20, <8 x i16> %19 |
+; CHECK-NEXT: %23 = insertelement <8 x i16> %22, i16 %3, i32 6 |
+; CHECK-NEXT: %24 = icmp eq i32 6, %4 |
+; CHECK-NEXT: %25 = select i1 %24, <8 x i16> %23, <8 x i16> %22 |
+; CHECK-NEXT: %26 = insertelement <8 x i16> %25, i16 %3, i32 7 |
+; CHECK-NEXT: %27 = icmp eq i32 7, %4 |
+; CHECK-NEXT: %28 = select i1 %27, <8 x i16> %26, <8 x i16> %25 |
+; CHECK-NEXT: %29 = insertelement <8 x i16> %2, i16 %3, i32 0 |
+; CHECK-NEXT: %30 = icmp eq i32 8, %4 |
+; CHECK-NEXT: %31 = select i1 %30, <8 x i16> %29, <8 x i16> %2 |
+; CHECK-NEXT: %32 = insertelement <8 x i16> %31, i16 %3, i32 1 |
+; CHECK-NEXT: %33 = icmp eq i32 9, %4 |
+; CHECK-NEXT: %34 = select i1 %33, <8 x i16> %32, <8 x i16> %31 |
+; CHECK-NEXT: %35 = insertelement <8 x i16> %34, i16 %3, i32 2 |
+; CHECK-NEXT: %36 = icmp eq i32 10, %4 |
+; CHECK-NEXT: %37 = select i1 %36, <8 x i16> %35, <8 x i16> %34 |
+; CHECK-NEXT: %38 = insertelement <8 x i16> %37, i16 %3, i32 3 |
+; CHECK-NEXT: %39 = icmp eq i32 11, %4 |
+; CHECK-NEXT: %40 = select i1 %39, <8 x i16> %38, <8 x i16> %37 |
+; CHECK-NEXT: %41 = insertelement <8 x i16> %40, i16 %3, i32 4 |
+; CHECK-NEXT: %42 = icmp eq i32 12, %4 |
+; CHECK-NEXT: %43 = select i1 %42, <8 x i16> %41, <8 x i16> %40 |
+; CHECK-NEXT: %44 = insertelement <8 x i16> %43, i16 %3, i32 5 |
+; CHECK-NEXT: %45 = icmp eq i32 13, %4 |
+; CHECK-NEXT: %46 = select i1 %45, <8 x i16> %44, <8 x i16> %43 |
+; CHECK-NEXT: %47 = insertelement <8 x i16> %46, i16 %3, i32 6 |
+; CHECK-NEXT: %48 = icmp eq i32 14, %4 |
+; CHECK-NEXT: %49 = select i1 %48, <8 x i16> %47, <8 x i16> %46 |
+; CHECK-NEXT: %50 = insertelement <8 x i16> %49, i16 %3, i32 7 |
+; CHECK-NEXT: %51 = icmp eq i32 15, %4 |
+; CHECK-NEXT: %52 = select i1 %51, <8 x i16> %50, <8 x i16> %49 |
+; CHECK-NEXT: store <8 x i16> %52, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: ret <8 x i16> %28 |
+; CHECK-NEXT: } |
+ |
+define <16 x i32> @insert_16xi32_var_idx(<16 x i32>, i32, i32) { |
+entry: |
+ %3 = insertelement <16 x i32> %0, i32 %1, i32 %2 |
+ ret <16 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_16xi32_var_idx(<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>, i32, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %9 = insertelement <4 x i32> %3, i32 %7, i32 0 |
+; CHECK-NEXT: %10 = icmp eq i32 0, %8 |
+; CHECK-NEXT: %11 = select i1 %10, <4 x i32> %9, <4 x i32> %3 |
+; CHECK-NEXT: %12 = insertelement <4 x i32> %11, i32 %7, i32 1 |
+; CHECK-NEXT: %13 = icmp eq i32 1, %8 |
+; CHECK-NEXT: %14 = select i1 %13, <4 x i32> %12, <4 x i32> %11 |
+; CHECK-NEXT: %15 = insertelement <4 x i32> %14, i32 %7, i32 2 |
+; CHECK-NEXT: %16 = icmp eq i32 2, %8 |
+; CHECK-NEXT: %17 = select i1 %16, <4 x i32> %15, <4 x i32> %14 |
+; CHECK-NEXT: %18 = insertelement <4 x i32> %17, i32 %7, i32 3 |
+; CHECK-NEXT: %19 = icmp eq i32 3, %8 |
+; CHECK-NEXT: %20 = select i1 %19, <4 x i32> %18, <4 x i32> %17 |
+; CHECK-NEXT: %21 = insertelement <4 x i32> %4, i32 %7, i32 0 |
+; CHECK-NEXT: %22 = icmp eq i32 4, %8 |
+; CHECK-NEXT: %23 = select i1 %22, <4 x i32> %21, <4 x i32> %4 |
+; CHECK-NEXT: %24 = insertelement <4 x i32> %23, i32 %7, i32 1 |
+; CHECK-NEXT: %25 = icmp eq i32 5, %8 |
+; CHECK-NEXT: %26 = select i1 %25, <4 x i32> %24, <4 x i32> %23 |
+; CHECK-NEXT: %27 = insertelement <4 x i32> %26, i32 %7, i32 2 |
+; CHECK-NEXT: %28 = icmp eq i32 6, %8 |
+; CHECK-NEXT: %29 = select i1 %28, <4 x i32> %27, <4 x i32> %26 |
+; CHECK-NEXT: %30 = insertelement <4 x i32> %29, i32 %7, i32 3 |
+; CHECK-NEXT: %31 = icmp eq i32 7, %8 |
+; CHECK-NEXT: %32 = select i1 %31, <4 x i32> %30, <4 x i32> %29 |
+; CHECK-NEXT: %33 = insertelement <4 x i32> %5, i32 %7, i32 0 |
+; CHECK-NEXT: %34 = icmp eq i32 8, %8 |
+; CHECK-NEXT: %35 = select i1 %34, <4 x i32> %33, <4 x i32> %5 |
+; CHECK-NEXT: %36 = insertelement <4 x i32> %35, i32 %7, i32 1 |
+; CHECK-NEXT: %37 = icmp eq i32 9, %8 |
+; CHECK-NEXT: %38 = select i1 %37, <4 x i32> %36, <4 x i32> %35 |
+; CHECK-NEXT: %39 = insertelement <4 x i32> %38, i32 %7, i32 2 |
+; CHECK-NEXT: %40 = icmp eq i32 10, %8 |
+; CHECK-NEXT: %41 = select i1 %40, <4 x i32> %39, <4 x i32> %38 |
+; CHECK-NEXT: %42 = insertelement <4 x i32> %41, i32 %7, i32 3 |
+; CHECK-NEXT: %43 = icmp eq i32 11, %8 |
+; CHECK-NEXT: %44 = select i1 %43, <4 x i32> %42, <4 x i32> %41 |
+; CHECK-NEXT: %45 = insertelement <4 x i32> %6, i32 %7, i32 0 |
+; CHECK-NEXT: %46 = icmp eq i32 12, %8 |
+; CHECK-NEXT: %47 = select i1 %46, <4 x i32> %45, <4 x i32> %6 |
+; CHECK-NEXT: %48 = insertelement <4 x i32> %47, i32 %7, i32 1 |
+; CHECK-NEXT: %49 = icmp eq i32 13, %8 |
+; CHECK-NEXT: %50 = select i1 %49, <4 x i32> %48, <4 x i32> %47 |
+; CHECK-NEXT: %51 = insertelement <4 x i32> %50, i32 %7, i32 2 |
+; CHECK-NEXT: %52 = icmp eq i32 14, %8 |
+; CHECK-NEXT: %53 = select i1 %52, <4 x i32> %51, <4 x i32> %50 |
+; CHECK-NEXT: %54 = insertelement <4 x i32> %53, i32 %7, i32 3 |
+; CHECK-NEXT: %55 = icmp eq i32 15, %8 |
+; CHECK-NEXT: %56 = select i1 %55, <4 x i32> %54, <4 x i32> %53 |
+; CHECK-NEXT: store <4 x i32> %32, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %44, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %56, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i32> %20 |
+; CHECK-NEXT: } |
+ |
+define <16 x i64> @insert_16xi64_var_idx(<16 x i64>, i64, i32) { |
+entry: |
+ %3 = insertelement <16 x i64> %0, i64 %1, i32 %2 |
+ ret <16 x i64> %3 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_16xi64_var_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %17 = insertelement <2 x i64> %7, i64 %15, i32 0 |
+; CHECK-NEXT: %18 = icmp eq i32 0, %16 |
+; CHECK-NEXT: %19 = select i1 %18, <2 x i64> %17, <2 x i64> %7 |
+; CHECK-NEXT: %20 = insertelement <2 x i64> %19, i64 %15, i32 1 |
+; CHECK-NEXT: %21 = icmp eq i32 1, %16 |
+; CHECK-NEXT: %22 = select i1 %21, <2 x i64> %20, <2 x i64> %19 |
+; CHECK-NEXT: %23 = insertelement <2 x i64> %8, i64 %15, i32 0 |
+; CHECK-NEXT: %24 = icmp eq i32 2, %16 |
+; CHECK-NEXT: %25 = select i1 %24, <2 x i64> %23, <2 x i64> %8 |
+; CHECK-NEXT: %26 = insertelement <2 x i64> %25, i64 %15, i32 1 |
+; CHECK-NEXT: %27 = icmp eq i32 3, %16 |
+; CHECK-NEXT: %28 = select i1 %27, <2 x i64> %26, <2 x i64> %25 |
+; CHECK-NEXT: %29 = insertelement <2 x i64> %9, i64 %15, i32 0 |
+; CHECK-NEXT: %30 = icmp eq i32 4, %16 |
+; CHECK-NEXT: %31 = select i1 %30, <2 x i64> %29, <2 x i64> %9 |
+; CHECK-NEXT: %32 = insertelement <2 x i64> %31, i64 %15, i32 1 |
+; CHECK-NEXT: %33 = icmp eq i32 5, %16 |
+; CHECK-NEXT: %34 = select i1 %33, <2 x i64> %32, <2 x i64> %31 |
+; CHECK-NEXT: %35 = insertelement <2 x i64> %10, i64 %15, i32 0 |
+; CHECK-NEXT: %36 = icmp eq i32 6, %16 |
+; CHECK-NEXT: %37 = select i1 %36, <2 x i64> %35, <2 x i64> %10 |
+; CHECK-NEXT: %38 = insertelement <2 x i64> %37, i64 %15, i32 1 |
+; CHECK-NEXT: %39 = icmp eq i32 7, %16 |
+; CHECK-NEXT: %40 = select i1 %39, <2 x i64> %38, <2 x i64> %37 |
+; CHECK-NEXT: %41 = insertelement <2 x i64> %11, i64 %15, i32 0 |
+; CHECK-NEXT: %42 = icmp eq i32 8, %16 |
+; CHECK-NEXT: %43 = select i1 %42, <2 x i64> %41, <2 x i64> %11 |
+; CHECK-NEXT: %44 = insertelement <2 x i64> %43, i64 %15, i32 1 |
+; CHECK-NEXT: %45 = icmp eq i32 9, %16 |
+; CHECK-NEXT: %46 = select i1 %45, <2 x i64> %44, <2 x i64> %43 |
+; CHECK-NEXT: %47 = insertelement <2 x i64> %12, i64 %15, i32 0 |
+; CHECK-NEXT: %48 = icmp eq i32 10, %16 |
+; CHECK-NEXT: %49 = select i1 %48, <2 x i64> %47, <2 x i64> %12 |
+; CHECK-NEXT: %50 = insertelement <2 x i64> %49, i64 %15, i32 1 |
+; CHECK-NEXT: %51 = icmp eq i32 11, %16 |
+; CHECK-NEXT: %52 = select i1 %51, <2 x i64> %50, <2 x i64> %49 |
+; CHECK-NEXT: %53 = insertelement <2 x i64> %13, i64 %15, i32 0 |
+; CHECK-NEXT: %54 = icmp eq i32 12, %16 |
+; CHECK-NEXT: %55 = select i1 %54, <2 x i64> %53, <2 x i64> %13 |
+; CHECK-NEXT: %56 = insertelement <2 x i64> %55, i64 %15, i32 1 |
+; CHECK-NEXT: %57 = icmp eq i32 13, %16 |
+; CHECK-NEXT: %58 = select i1 %57, <2 x i64> %56, <2 x i64> %55 |
+; CHECK-NEXT: %59 = insertelement <2 x i64> %14, i64 %15, i32 0 |
+; CHECK-NEXT: %60 = icmp eq i32 14, %16 |
+; CHECK-NEXT: %61 = select i1 %60, <2 x i64> %59, <2 x i64> %14 |
+; CHECK-NEXT: %62 = insertelement <2 x i64> %61, i64 %15, i32 1 |
+; CHECK-NEXT: %63 = icmp eq i32 15, %16 |
+; CHECK-NEXT: %64 = select i1 %63, <2 x i64> %62, <2 x i64> %61 |
+; CHECK-NEXT: store <2 x i64> %28, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %34, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %40, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %46, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %52, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %58, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %64, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: ret <2 x i64> %22 |
+; CHECK-NEXT: } |
+ |
+define <16 x i8*> @insert_16xi8ptr_var_idx(<16 x i8*>, i8*, i32) { |
+entry: |
+ %3 = insertelement <16 x i8*> %0, i8* %1, i32 %2 |
+ ret <16 x i8*> %3 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_var_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %9 = insertelement <4 x i8*> %3, i8* %7, i32 0 |
+; CHECK-NEXT: %10 = icmp eq i32 0, %8 |
+; CHECK-NEXT: %11 = select i1 %10, <4 x i8*> %9, <4 x i8*> %3 |
+; CHECK-NEXT: %12 = insertelement <4 x i8*> %11, i8* %7, i32 1 |
+; CHECK-NEXT: %13 = icmp eq i32 1, %8 |
+; CHECK-NEXT: %14 = select i1 %13, <4 x i8*> %12, <4 x i8*> %11 |
+; CHECK-NEXT: %15 = insertelement <4 x i8*> %14, i8* %7, i32 2 |
+; CHECK-NEXT: %16 = icmp eq i32 2, %8 |
+; CHECK-NEXT: %17 = select i1 %16, <4 x i8*> %15, <4 x i8*> %14 |
+; CHECK-NEXT: %18 = insertelement <4 x i8*> %17, i8* %7, i32 3 |
+; CHECK-NEXT: %19 = icmp eq i32 3, %8 |
+; CHECK-NEXT: %20 = select i1 %19, <4 x i8*> %18, <4 x i8*> %17 |
+; CHECK-NEXT: %21 = insertelement <4 x i8*> %4, i8* %7, i32 0 |
+; CHECK-NEXT: %22 = icmp eq i32 4, %8 |
+; CHECK-NEXT: %23 = select i1 %22, <4 x i8*> %21, <4 x i8*> %4 |
+; CHECK-NEXT: %24 = insertelement <4 x i8*> %23, i8* %7, i32 1 |
+; CHECK-NEXT: %25 = icmp eq i32 5, %8 |
+; CHECK-NEXT: %26 = select i1 %25, <4 x i8*> %24, <4 x i8*> %23 |
+; CHECK-NEXT: %27 = insertelement <4 x i8*> %26, i8* %7, i32 2 |
+; CHECK-NEXT: %28 = icmp eq i32 6, %8 |
+; CHECK-NEXT: %29 = select i1 %28, <4 x i8*> %27, <4 x i8*> %26 |
+; CHECK-NEXT: %30 = insertelement <4 x i8*> %29, i8* %7, i32 3 |
+; CHECK-NEXT: %31 = icmp eq i32 7, %8 |
+; CHECK-NEXT: %32 = select i1 %31, <4 x i8*> %30, <4 x i8*> %29 |
+; CHECK-NEXT: %33 = insertelement <4 x i8*> %5, i8* %7, i32 0 |
+; CHECK-NEXT: %34 = icmp eq i32 8, %8 |
+; CHECK-NEXT: %35 = select i1 %34, <4 x i8*> %33, <4 x i8*> %5 |
+; CHECK-NEXT: %36 = insertelement <4 x i8*> %35, i8* %7, i32 1 |
+; CHECK-NEXT: %37 = icmp eq i32 9, %8 |
+; CHECK-NEXT: %38 = select i1 %37, <4 x i8*> %36, <4 x i8*> %35 |
+; CHECK-NEXT: %39 = insertelement <4 x i8*> %38, i8* %7, i32 2 |
+; CHECK-NEXT: %40 = icmp eq i32 10, %8 |
+; CHECK-NEXT: %41 = select i1 %40, <4 x i8*> %39, <4 x i8*> %38 |
+; CHECK-NEXT: %42 = insertelement <4 x i8*> %41, i8* %7, i32 3 |
+; CHECK-NEXT: %43 = icmp eq i32 11, %8 |
+; CHECK-NEXT: %44 = select i1 %43, <4 x i8*> %42, <4 x i8*> %41 |
+; CHECK-NEXT: %45 = insertelement <4 x i8*> %6, i8* %7, i32 0 |
+; CHECK-NEXT: %46 = icmp eq i32 12, %8 |
+; CHECK-NEXT: %47 = select i1 %46, <4 x i8*> %45, <4 x i8*> %6 |
+; CHECK-NEXT: %48 = insertelement <4 x i8*> %47, i8* %7, i32 1 |
+; CHECK-NEXT: %49 = icmp eq i32 13, %8 |
+; CHECK-NEXT: %50 = select i1 %49, <4 x i8*> %48, <4 x i8*> %47 |
+; CHECK-NEXT: %51 = insertelement <4 x i8*> %50, i8* %7, i32 2 |
+; CHECK-NEXT: %52 = icmp eq i32 14, %8 |
+; CHECK-NEXT: %53 = select i1 %52, <4 x i8*> %51, <4 x i8*> %50 |
+; CHECK-NEXT: %54 = insertelement <4 x i8*> %53, i8* %7, i32 3 |
+; CHECK-NEXT: %55 = icmp eq i32 15, %8 |
+; CHECK-NEXT: %56 = select i1 %55, <4 x i8*> %54, <4 x i8*> %53 |
+; CHECK-NEXT: store <4 x i8*> %32, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %44, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %56, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %20 |
+; CHECK-NEXT: } |
+ |
+define <16 x float> @insert_16xfloat_var_idx(<16 x float>, float, i32) { |
+entry: |
+ %3 = insertelement <16 x float> %0, float %1, i32 %2 |
+ ret <16 x float> %3 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_16xfloat_var_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %9 = insertelement <4 x float> %3, float %7, i32 0 |
+; CHECK-NEXT: %10 = icmp eq i32 0, %8 |
+; CHECK-NEXT: %11 = select i1 %10, <4 x float> %9, <4 x float> %3 |
+; CHECK-NEXT: %12 = insertelement <4 x float> %11, float %7, i32 1 |
+; CHECK-NEXT: %13 = icmp eq i32 1, %8 |
+; CHECK-NEXT: %14 = select i1 %13, <4 x float> %12, <4 x float> %11 |
+; CHECK-NEXT: %15 = insertelement <4 x float> %14, float %7, i32 2 |
+; CHECK-NEXT: %16 = icmp eq i32 2, %8 |
+; CHECK-NEXT: %17 = select i1 %16, <4 x float> %15, <4 x float> %14 |
+; CHECK-NEXT: %18 = insertelement <4 x float> %17, float %7, i32 3 |
+; CHECK-NEXT: %19 = icmp eq i32 3, %8 |
+; CHECK-NEXT: %20 = select i1 %19, <4 x float> %18, <4 x float> %17 |
+; CHECK-NEXT: %21 = insertelement <4 x float> %4, float %7, i32 0 |
+; CHECK-NEXT: %22 = icmp eq i32 4, %8 |
+; CHECK-NEXT: %23 = select i1 %22, <4 x float> %21, <4 x float> %4 |
+; CHECK-NEXT: %24 = insertelement <4 x float> %23, float %7, i32 1 |
+; CHECK-NEXT: %25 = icmp eq i32 5, %8 |
+; CHECK-NEXT: %26 = select i1 %25, <4 x float> %24, <4 x float> %23 |
+; CHECK-NEXT: %27 = insertelement <4 x float> %26, float %7, i32 2 |
+; CHECK-NEXT: %28 = icmp eq i32 6, %8 |
+; CHECK-NEXT: %29 = select i1 %28, <4 x float> %27, <4 x float> %26 |
+; CHECK-NEXT: %30 = insertelement <4 x float> %29, float %7, i32 3 |
+; CHECK-NEXT: %31 = icmp eq i32 7, %8 |
+; CHECK-NEXT: %32 = select i1 %31, <4 x float> %30, <4 x float> %29 |
+; CHECK-NEXT: %33 = insertelement <4 x float> %5, float %7, i32 0 |
+; CHECK-NEXT: %34 = icmp eq i32 8, %8 |
+; CHECK-NEXT: %35 = select i1 %34, <4 x float> %33, <4 x float> %5 |
+; CHECK-NEXT: %36 = insertelement <4 x float> %35, float %7, i32 1 |
+; CHECK-NEXT: %37 = icmp eq i32 9, %8 |
+; CHECK-NEXT: %38 = select i1 %37, <4 x float> %36, <4 x float> %35 |
+; CHECK-NEXT: %39 = insertelement <4 x float> %38, float %7, i32 2 |
+; CHECK-NEXT: %40 = icmp eq i32 10, %8 |
+; CHECK-NEXT: %41 = select i1 %40, <4 x float> %39, <4 x float> %38 |
+; CHECK-NEXT: %42 = insertelement <4 x float> %41, float %7, i32 3 |
+; CHECK-NEXT: %43 = icmp eq i32 11, %8 |
+; CHECK-NEXT: %44 = select i1 %43, <4 x float> %42, <4 x float> %41 |
+; CHECK-NEXT: %45 = insertelement <4 x float> %6, float %7, i32 0 |
+; CHECK-NEXT: %46 = icmp eq i32 12, %8 |
+; CHECK-NEXT: %47 = select i1 %46, <4 x float> %45, <4 x float> %6 |
+; CHECK-NEXT: %48 = insertelement <4 x float> %47, float %7, i32 1 |
+; CHECK-NEXT: %49 = icmp eq i32 13, %8 |
+; CHECK-NEXT: %50 = select i1 %49, <4 x float> %48, <4 x float> %47 |
+; CHECK-NEXT: %51 = insertelement <4 x float> %50, float %7, i32 2 |
+; CHECK-NEXT: %52 = icmp eq i32 14, %8 |
+; CHECK-NEXT: %53 = select i1 %52, <4 x float> %51, <4 x float> %50 |
+; CHECK-NEXT: %54 = insertelement <4 x float> %53, float %7, i32 3 |
+; CHECK-NEXT: %55 = icmp eq i32 15, %8 |
+; CHECK-NEXT: %56 = select i1 %55, <4 x float> %54, <4 x float> %53 |
+; CHECK-NEXT: store <4 x float> %32, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %44, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %56, <4 x float>* %2, align 16 |
+; CHECK-NEXT: ret <4 x float> %20 |
+; CHECK-NEXT: } |
+ |
+define <16 x double> @insert_16xdouble_var_idx(<16 x double>, double, i32) { |
+entry: |
+ %3 = insertelement <16 x double> %0, double %1, i32 %2 |
+ ret <16 x double> %3 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_16xdouble_var_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %17 = insertelement <2 x double> %7, double %15, i32 0 |
+; CHECK-NEXT: %18 = icmp eq i32 0, %16 |
+; CHECK-NEXT: %19 = select i1 %18, <2 x double> %17, <2 x double> %7 |
+; CHECK-NEXT: %20 = insertelement <2 x double> %19, double %15, i32 1 |
+; CHECK-NEXT: %21 = icmp eq i32 1, %16 |
+; CHECK-NEXT: %22 = select i1 %21, <2 x double> %20, <2 x double> %19 |
+; CHECK-NEXT: %23 = insertelement <2 x double> %8, double %15, i32 0 |
+; CHECK-NEXT: %24 = icmp eq i32 2, %16 |
+; CHECK-NEXT: %25 = select i1 %24, <2 x double> %23, <2 x double> %8 |
+; CHECK-NEXT: %26 = insertelement <2 x double> %25, double %15, i32 1 |
+; CHECK-NEXT: %27 = icmp eq i32 3, %16 |
+; CHECK-NEXT: %28 = select i1 %27, <2 x double> %26, <2 x double> %25 |
+; CHECK-NEXT: %29 = insertelement <2 x double> %9, double %15, i32 0 |
+; CHECK-NEXT: %30 = icmp eq i32 4, %16 |
+; CHECK-NEXT: %31 = select i1 %30, <2 x double> %29, <2 x double> %9 |
+; CHECK-NEXT: %32 = insertelement <2 x double> %31, double %15, i32 1 |
+; CHECK-NEXT: %33 = icmp eq i32 5, %16 |
+; CHECK-NEXT: %34 = select i1 %33, <2 x double> %32, <2 x double> %31 |
+; CHECK-NEXT: %35 = insertelement <2 x double> %10, double %15, i32 0 |
+; CHECK-NEXT: %36 = icmp eq i32 6, %16 |
+; CHECK-NEXT: %37 = select i1 %36, <2 x double> %35, <2 x double> %10 |
+; CHECK-NEXT: %38 = insertelement <2 x double> %37, double %15, i32 1 |
+; CHECK-NEXT: %39 = icmp eq i32 7, %16 |
+; CHECK-NEXT: %40 = select i1 %39, <2 x double> %38, <2 x double> %37 |
+; CHECK-NEXT: %41 = insertelement <2 x double> %11, double %15, i32 0 |
+; CHECK-NEXT: %42 = icmp eq i32 8, %16 |
+; CHECK-NEXT: %43 = select i1 %42, <2 x double> %41, <2 x double> %11 |
+; CHECK-NEXT: %44 = insertelement <2 x double> %43, double %15, i32 1 |
+; CHECK-NEXT: %45 = icmp eq i32 9, %16 |
+; CHECK-NEXT: %46 = select i1 %45, <2 x double> %44, <2 x double> %43 |
+; CHECK-NEXT: %47 = insertelement <2 x double> %12, double %15, i32 0 |
+; CHECK-NEXT: %48 = icmp eq i32 10, %16 |
+; CHECK-NEXT: %49 = select i1 %48, <2 x double> %47, <2 x double> %12 |
+; CHECK-NEXT: %50 = insertelement <2 x double> %49, double %15, i32 1 |
+; CHECK-NEXT: %51 = icmp eq i32 11, %16 |
+; CHECK-NEXT: %52 = select i1 %51, <2 x double> %50, <2 x double> %49 |
+; CHECK-NEXT: %53 = insertelement <2 x double> %13, double %15, i32 0 |
+; CHECK-NEXT: %54 = icmp eq i32 12, %16 |
+; CHECK-NEXT: %55 = select i1 %54, <2 x double> %53, <2 x double> %13 |
+; CHECK-NEXT: %56 = insertelement <2 x double> %55, double %15, i32 1 |
+; CHECK-NEXT: %57 = icmp eq i32 13, %16 |
+; CHECK-NEXT: %58 = select i1 %57, <2 x double> %56, <2 x double> %55 |
+; CHECK-NEXT: %59 = insertelement <2 x double> %14, double %15, i32 0 |
+; CHECK-NEXT: %60 = icmp eq i32 14, %16 |
+; CHECK-NEXT: %61 = select i1 %60, <2 x double> %59, <2 x double> %14 |
+; CHECK-NEXT: %62 = insertelement <2 x double> %61, double %15, i32 1 |
+; CHECK-NEXT: %63 = icmp eq i32 15, %16 |
+; CHECK-NEXT: %64 = select i1 %63, <2 x double> %62, <2 x double> %61 |
+; CHECK-NEXT: store <2 x double> %28, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %34, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %40, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %46, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %52, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %58, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %64, <2 x double>* %6, align 16 |
+; CHECK-NEXT: ret <2 x double> %22 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8> @insert_20xi8_var_idx(<20 x i8>, i8, i32) { |
+entry: |
+ %3 = insertelement <20 x i8> %0, i8 %1, i32 %2 |
+ ret <20 x i8> %3 |
+} |
+; CHECK-LABEL: define <16 x i8> @insert_20xi8_var_idx(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %5 = insertelement <16 x i8> %1, i8 %3, i32 0 |
+; CHECK-NEXT: %6 = icmp eq i32 0, %4 |
+; CHECK-NEXT: %7 = select i1 %6, <16 x i8> %5, <16 x i8> %1 |
+; CHECK-NEXT: %8 = insertelement <16 x i8> %7, i8 %3, i32 1 |
+; CHECK-NEXT: %9 = icmp eq i32 1, %4 |
+; CHECK-NEXT: %10 = select i1 %9, <16 x i8> %8, <16 x i8> %7 |
+; CHECK-NEXT: %11 = insertelement <16 x i8> %10, i8 %3, i32 2 |
+; CHECK-NEXT: %12 = icmp eq i32 2, %4 |
+; CHECK-NEXT: %13 = select i1 %12, <16 x i8> %11, <16 x i8> %10 |
+; CHECK-NEXT: %14 = insertelement <16 x i8> %13, i8 %3, i32 3 |
+; CHECK-NEXT: %15 = icmp eq i32 3, %4 |
+; CHECK-NEXT: %16 = select i1 %15, <16 x i8> %14, <16 x i8> %13 |
+; CHECK-NEXT: %17 = insertelement <16 x i8> %16, i8 %3, i32 4 |
+; CHECK-NEXT: %18 = icmp eq i32 4, %4 |
+; CHECK-NEXT: %19 = select i1 %18, <16 x i8> %17, <16 x i8> %16 |
+; CHECK-NEXT: %20 = insertelement <16 x i8> %19, i8 %3, i32 5 |
+; CHECK-NEXT: %21 = icmp eq i32 5, %4 |
+; CHECK-NEXT: %22 = select i1 %21, <16 x i8> %20, <16 x i8> %19 |
+; CHECK-NEXT: %23 = insertelement <16 x i8> %22, i8 %3, i32 6 |
+; CHECK-NEXT: %24 = icmp eq i32 6, %4 |
+; CHECK-NEXT: %25 = select i1 %24, <16 x i8> %23, <16 x i8> %22 |
+; CHECK-NEXT: %26 = insertelement <16 x i8> %25, i8 %3, i32 7 |
+; CHECK-NEXT: %27 = icmp eq i32 7, %4 |
+; CHECK-NEXT: %28 = select i1 %27, <16 x i8> %26, <16 x i8> %25 |
+; CHECK-NEXT: %29 = insertelement <16 x i8> %28, i8 %3, i32 8 |
+; CHECK-NEXT: %30 = icmp eq i32 8, %4 |
+; CHECK-NEXT: %31 = select i1 %30, <16 x i8> %29, <16 x i8> %28 |
+; CHECK-NEXT: %32 = insertelement <16 x i8> %31, i8 %3, i32 9 |
+; CHECK-NEXT: %33 = icmp eq i32 9, %4 |
+; CHECK-NEXT: %34 = select i1 %33, <16 x i8> %32, <16 x i8> %31 |
+; CHECK-NEXT: %35 = insertelement <16 x i8> %34, i8 %3, i32 10 |
+; CHECK-NEXT: %36 = icmp eq i32 10, %4 |
+; CHECK-NEXT: %37 = select i1 %36, <16 x i8> %35, <16 x i8> %34 |
+; CHECK-NEXT: %38 = insertelement <16 x i8> %37, i8 %3, i32 11 |
+; CHECK-NEXT: %39 = icmp eq i32 11, %4 |
+; CHECK-NEXT: %40 = select i1 %39, <16 x i8> %38, <16 x i8> %37 |
+; CHECK-NEXT: %41 = insertelement <16 x i8> %40, i8 %3, i32 12 |
+; CHECK-NEXT: %42 = icmp eq i32 12, %4 |
+; CHECK-NEXT: %43 = select i1 %42, <16 x i8> %41, <16 x i8> %40 |
+; CHECK-NEXT: %44 = insertelement <16 x i8> %43, i8 %3, i32 13 |
+; CHECK-NEXT: %45 = icmp eq i32 13, %4 |
+; CHECK-NEXT: %46 = select i1 %45, <16 x i8> %44, <16 x i8> %43 |
+; CHECK-NEXT: %47 = insertelement <16 x i8> %46, i8 %3, i32 14 |
+; CHECK-NEXT: %48 = icmp eq i32 14, %4 |
+; CHECK-NEXT: %49 = select i1 %48, <16 x i8> %47, <16 x i8> %46 |
+; CHECK-NEXT: %50 = insertelement <16 x i8> %49, i8 %3, i32 15 |
+; CHECK-NEXT: %51 = icmp eq i32 15, %4 |
+; CHECK-NEXT: %52 = select i1 %51, <16 x i8> %50, <16 x i8> %49 |
+; CHECK-NEXT: %53 = insertelement <16 x i8> %2, i8 %3, i32 0 |
+; CHECK-NEXT: %54 = icmp eq i32 16, %4 |
+; CHECK-NEXT: %55 = select i1 %54, <16 x i8> %53, <16 x i8> %2 |
+; CHECK-NEXT: %56 = insertelement <16 x i8> %55, i8 %3, i32 1 |
+; CHECK-NEXT: %57 = icmp eq i32 17, %4 |
+; CHECK-NEXT: %58 = select i1 %57, <16 x i8> %56, <16 x i8> %55 |
+; CHECK-NEXT: %59 = insertelement <16 x i8> %58, i8 %3, i32 2 |
+; CHECK-NEXT: %60 = icmp eq i32 18, %4 |
+; CHECK-NEXT: %61 = select i1 %60, <16 x i8> %59, <16 x i8> %58 |
+; CHECK-NEXT: %62 = insertelement <16 x i8> %61, i8 %3, i32 3 |
+; CHECK-NEXT: %63 = icmp eq i32 19, %4 |
+; CHECK-NEXT: %64 = select i1 %63, <16 x i8> %62, <16 x i8> %61 |
+; CHECK-NEXT: store <16 x i8> %64, <16 x i8>* %0, align 16 |
+; CHECK-NEXT: ret <16 x i8> %52 |
+; CHECK-NEXT: } |
+ |
+define <20 x i16> @insert_20xi16_var_idx(<20 x i16>, i16, i32) { |
+entry: |
+ %3 = insertelement <20 x i16> %0, i16 %1, i32 %2 |
+ ret <20 x i16> %3 |
+} |
+; CHECK-LABEL: define <8 x i16> @insert_20xi16_var_idx(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %7 = insertelement <8 x i16> %2, i16 %5, i32 0 |
+; CHECK-NEXT: %8 = icmp eq i32 0, %6 |
+; CHECK-NEXT: %9 = select i1 %8, <8 x i16> %7, <8 x i16> %2 |
+; CHECK-NEXT: %10 = insertelement <8 x i16> %9, i16 %5, i32 1 |
+; CHECK-NEXT: %11 = icmp eq i32 1, %6 |
+; CHECK-NEXT: %12 = select i1 %11, <8 x i16> %10, <8 x i16> %9 |
+; CHECK-NEXT: %13 = insertelement <8 x i16> %12, i16 %5, i32 2 |
+; CHECK-NEXT: %14 = icmp eq i32 2, %6 |
+; CHECK-NEXT: %15 = select i1 %14, <8 x i16> %13, <8 x i16> %12 |
+; CHECK-NEXT: %16 = insertelement <8 x i16> %15, i16 %5, i32 3 |
+; CHECK-NEXT: %17 = icmp eq i32 3, %6 |
+; CHECK-NEXT: %18 = select i1 %17, <8 x i16> %16, <8 x i16> %15 |
+; CHECK-NEXT: %19 = insertelement <8 x i16> %18, i16 %5, i32 4 |
+; CHECK-NEXT: %20 = icmp eq i32 4, %6 |
+; CHECK-NEXT: %21 = select i1 %20, <8 x i16> %19, <8 x i16> %18 |
+; CHECK-NEXT: %22 = insertelement <8 x i16> %21, i16 %5, i32 5 |
+; CHECK-NEXT: %23 = icmp eq i32 5, %6 |
+; CHECK-NEXT: %24 = select i1 %23, <8 x i16> %22, <8 x i16> %21 |
+; CHECK-NEXT: %25 = insertelement <8 x i16> %24, i16 %5, i32 6 |
+; CHECK-NEXT: %26 = icmp eq i32 6, %6 |
+; CHECK-NEXT: %27 = select i1 %26, <8 x i16> %25, <8 x i16> %24 |
+; CHECK-NEXT: %28 = insertelement <8 x i16> %27, i16 %5, i32 7 |
+; CHECK-NEXT: %29 = icmp eq i32 7, %6 |
+; CHECK-NEXT: %30 = select i1 %29, <8 x i16> %28, <8 x i16> %27 |
+; CHECK-NEXT: %31 = insertelement <8 x i16> %3, i16 %5, i32 0 |
+; CHECK-NEXT: %32 = icmp eq i32 8, %6 |
+; CHECK-NEXT: %33 = select i1 %32, <8 x i16> %31, <8 x i16> %3 |
+; CHECK-NEXT: %34 = insertelement <8 x i16> %33, i16 %5, i32 1 |
+; CHECK-NEXT: %35 = icmp eq i32 9, %6 |
+; CHECK-NEXT: %36 = select i1 %35, <8 x i16> %34, <8 x i16> %33 |
+; CHECK-NEXT: %37 = insertelement <8 x i16> %36, i16 %5, i32 2 |
+; CHECK-NEXT: %38 = icmp eq i32 10, %6 |
+; CHECK-NEXT: %39 = select i1 %38, <8 x i16> %37, <8 x i16> %36 |
+; CHECK-NEXT: %40 = insertelement <8 x i16> %39, i16 %5, i32 3 |
+; CHECK-NEXT: %41 = icmp eq i32 11, %6 |
+; CHECK-NEXT: %42 = select i1 %41, <8 x i16> %40, <8 x i16> %39 |
+; CHECK-NEXT: %43 = insertelement <8 x i16> %42, i16 %5, i32 4 |
+; CHECK-NEXT: %44 = icmp eq i32 12, %6 |
+; CHECK-NEXT: %45 = select i1 %44, <8 x i16> %43, <8 x i16> %42 |
+; CHECK-NEXT: %46 = insertelement <8 x i16> %45, i16 %5, i32 5 |
+; CHECK-NEXT: %47 = icmp eq i32 13, %6 |
+; CHECK-NEXT: %48 = select i1 %47, <8 x i16> %46, <8 x i16> %45 |
+; CHECK-NEXT: %49 = insertelement <8 x i16> %48, i16 %5, i32 6 |
+; CHECK-NEXT: %50 = icmp eq i32 14, %6 |
+; CHECK-NEXT: %51 = select i1 %50, <8 x i16> %49, <8 x i16> %48 |
+; CHECK-NEXT: %52 = insertelement <8 x i16> %51, i16 %5, i32 7 |
+; CHECK-NEXT: %53 = icmp eq i32 15, %6 |
+; CHECK-NEXT: %54 = select i1 %53, <8 x i16> %52, <8 x i16> %51 |
+; CHECK-NEXT: %55 = insertelement <8 x i16> %4, i16 %5, i32 0 |
+; CHECK-NEXT: %56 = icmp eq i32 16, %6 |
+; CHECK-NEXT: %57 = select i1 %56, <8 x i16> %55, <8 x i16> %4 |
+; CHECK-NEXT: %58 = insertelement <8 x i16> %57, i16 %5, i32 1 |
+; CHECK-NEXT: %59 = icmp eq i32 17, %6 |
+; CHECK-NEXT: %60 = select i1 %59, <8 x i16> %58, <8 x i16> %57 |
+; CHECK-NEXT: %61 = insertelement <8 x i16> %60, i16 %5, i32 2 |
+; CHECK-NEXT: %62 = icmp eq i32 18, %6 |
+; CHECK-NEXT: %63 = select i1 %62, <8 x i16> %61, <8 x i16> %60 |
+; CHECK-NEXT: %64 = insertelement <8 x i16> %63, i16 %5, i32 3 |
+; CHECK-NEXT: %65 = icmp eq i32 19, %6 |
+; CHECK-NEXT: %66 = select i1 %65, <8 x i16> %64, <8 x i16> %63 |
+; CHECK-NEXT: store <8 x i16> %54, <8 x i16>* %0, align 16 |
+; CHECK-NEXT: store <8 x i16> %66, <8 x i16>* %1, align 16 |
+; CHECK-NEXT: ret <8 x i16> %30 |
+; CHECK-NEXT: } |
+ |
+define <20 x i32> @insert_20xi32_var_idx(<20 x i32>, i32, i32) { |
+entry: |
+ %3 = insertelement <20 x i32> %0, i32 %1, i32 %2 |
+ ret <20 x i32> %3 |
+} |
+; CHECK-LABEL: define <4 x i32> @insert_20xi32_var_idx(<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>, i32, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %11 = insertelement <4 x i32> %4, i32 %9, i32 0 |
+; CHECK-NEXT: %12 = icmp eq i32 0, %10 |
+; CHECK-NEXT: %13 = select i1 %12, <4 x i32> %11, <4 x i32> %4 |
+; CHECK-NEXT: %14 = insertelement <4 x i32> %13, i32 %9, i32 1 |
+; CHECK-NEXT: %15 = icmp eq i32 1, %10 |
+; CHECK-NEXT: %16 = select i1 %15, <4 x i32> %14, <4 x i32> %13 |
+; CHECK-NEXT: %17 = insertelement <4 x i32> %16, i32 %9, i32 2 |
+; CHECK-NEXT: %18 = icmp eq i32 2, %10 |
+; CHECK-NEXT: %19 = select i1 %18, <4 x i32> %17, <4 x i32> %16 |
+; CHECK-NEXT: %20 = insertelement <4 x i32> %19, i32 %9, i32 3 |
+; CHECK-NEXT: %21 = icmp eq i32 3, %10 |
+; CHECK-NEXT: %22 = select i1 %21, <4 x i32> %20, <4 x i32> %19 |
+; CHECK-NEXT: %23 = insertelement <4 x i32> %5, i32 %9, i32 0 |
+; CHECK-NEXT: %24 = icmp eq i32 4, %10 |
+; CHECK-NEXT: %25 = select i1 %24, <4 x i32> %23, <4 x i32> %5 |
+; CHECK-NEXT: %26 = insertelement <4 x i32> %25, i32 %9, i32 1 |
+; CHECK-NEXT: %27 = icmp eq i32 5, %10 |
+; CHECK-NEXT: %28 = select i1 %27, <4 x i32> %26, <4 x i32> %25 |
+; CHECK-NEXT: %29 = insertelement <4 x i32> %28, i32 %9, i32 2 |
+; CHECK-NEXT: %30 = icmp eq i32 6, %10 |
+; CHECK-NEXT: %31 = select i1 %30, <4 x i32> %29, <4 x i32> %28 |
+; CHECK-NEXT: %32 = insertelement <4 x i32> %31, i32 %9, i32 3 |
+; CHECK-NEXT: %33 = icmp eq i32 7, %10 |
+; CHECK-NEXT: %34 = select i1 %33, <4 x i32> %32, <4 x i32> %31 |
+; CHECK-NEXT: %35 = insertelement <4 x i32> %6, i32 %9, i32 0 |
+; CHECK-NEXT: %36 = icmp eq i32 8, %10 |
+; CHECK-NEXT: %37 = select i1 %36, <4 x i32> %35, <4 x i32> %6 |
+; CHECK-NEXT: %38 = insertelement <4 x i32> %37, i32 %9, i32 1 |
+; CHECK-NEXT: %39 = icmp eq i32 9, %10 |
+; CHECK-NEXT: %40 = select i1 %39, <4 x i32> %38, <4 x i32> %37 |
+; CHECK-NEXT: %41 = insertelement <4 x i32> %40, i32 %9, i32 2 |
+; CHECK-NEXT: %42 = icmp eq i32 10, %10 |
+; CHECK-NEXT: %43 = select i1 %42, <4 x i32> %41, <4 x i32> %40 |
+; CHECK-NEXT: %44 = insertelement <4 x i32> %43, i32 %9, i32 3 |
+; CHECK-NEXT: %45 = icmp eq i32 11, %10 |
+; CHECK-NEXT: %46 = select i1 %45, <4 x i32> %44, <4 x i32> %43 |
+; CHECK-NEXT: %47 = insertelement <4 x i32> %7, i32 %9, i32 0 |
+; CHECK-NEXT: %48 = icmp eq i32 12, %10 |
+; CHECK-NEXT: %49 = select i1 %48, <4 x i32> %47, <4 x i32> %7 |
+; CHECK-NEXT: %50 = insertelement <4 x i32> %49, i32 %9, i32 1 |
+; CHECK-NEXT: %51 = icmp eq i32 13, %10 |
+; CHECK-NEXT: %52 = select i1 %51, <4 x i32> %50, <4 x i32> %49 |
+; CHECK-NEXT: %53 = insertelement <4 x i32> %52, i32 %9, i32 2 |
+; CHECK-NEXT: %54 = icmp eq i32 14, %10 |
+; CHECK-NEXT: %55 = select i1 %54, <4 x i32> %53, <4 x i32> %52 |
+; CHECK-NEXT: %56 = insertelement <4 x i32> %55, i32 %9, i32 3 |
+; CHECK-NEXT: %57 = icmp eq i32 15, %10 |
+; CHECK-NEXT: %58 = select i1 %57, <4 x i32> %56, <4 x i32> %55 |
+; CHECK-NEXT: %59 = insertelement <4 x i32> %8, i32 %9, i32 0 |
+; CHECK-NEXT: %60 = icmp eq i32 16, %10 |
+; CHECK-NEXT: %61 = select i1 %60, <4 x i32> %59, <4 x i32> %8 |
+; CHECK-NEXT: %62 = insertelement <4 x i32> %61, i32 %9, i32 1 |
+; CHECK-NEXT: %63 = icmp eq i32 17, %10 |
+; CHECK-NEXT: %64 = select i1 %63, <4 x i32> %62, <4 x i32> %61 |
+; CHECK-NEXT: %65 = insertelement <4 x i32> %64, i32 %9, i32 2 |
+; CHECK-NEXT: %66 = icmp eq i32 18, %10 |
+; CHECK-NEXT: %67 = select i1 %66, <4 x i32> %65, <4 x i32> %64 |
+; CHECK-NEXT: %68 = insertelement <4 x i32> %67, i32 %9, i32 3 |
+; CHECK-NEXT: %69 = icmp eq i32 19, %10 |
+; CHECK-NEXT: %70 = select i1 %69, <4 x i32> %68, <4 x i32> %67 |
+; CHECK-NEXT: store <4 x i32> %34, <4 x i32>* %0, align 16 |
+; CHECK-NEXT: store <4 x i32> %46, <4 x i32>* %1, align 16 |
+; CHECK-NEXT: store <4 x i32> %58, <4 x i32>* %2, align 16 |
+; CHECK-NEXT: store <4 x i32> %70, <4 x i32>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i32> %22 |
+; CHECK-NEXT: } |
+ |
+define <20 x i64> @insert_20xi64_var_idx(<20 x i64>, i64, i32) { |
+entry: |
+ %3 = insertelement <20 x i64> %0, i64 %1, i32 %2 |
+ ret <20 x i64> %3 |
+} |
+; CHECK-LABEL: define <2 x i64> @insert_20xi64_var_idx(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %21 = insertelement <2 x i64> %9, i64 %19, i32 0 |
+; CHECK-NEXT: %22 = icmp eq i32 0, %20 |
+; CHECK-NEXT: %23 = select i1 %22, <2 x i64> %21, <2 x i64> %9 |
+; CHECK-NEXT: %24 = insertelement <2 x i64> %23, i64 %19, i32 1 |
+; CHECK-NEXT: %25 = icmp eq i32 1, %20 |
+; CHECK-NEXT: %26 = select i1 %25, <2 x i64> %24, <2 x i64> %23 |
+; CHECK-NEXT: %27 = insertelement <2 x i64> %10, i64 %19, i32 0 |
+; CHECK-NEXT: %28 = icmp eq i32 2, %20 |
+; CHECK-NEXT: %29 = select i1 %28, <2 x i64> %27, <2 x i64> %10 |
+; CHECK-NEXT: %30 = insertelement <2 x i64> %29, i64 %19, i32 1 |
+; CHECK-NEXT: %31 = icmp eq i32 3, %20 |
+; CHECK-NEXT: %32 = select i1 %31, <2 x i64> %30, <2 x i64> %29 |
+; CHECK-NEXT: %33 = insertelement <2 x i64> %11, i64 %19, i32 0 |
+; CHECK-NEXT: %34 = icmp eq i32 4, %20 |
+; CHECK-NEXT: %35 = select i1 %34, <2 x i64> %33, <2 x i64> %11 |
+; CHECK-NEXT: %36 = insertelement <2 x i64> %35, i64 %19, i32 1 |
+; CHECK-NEXT: %37 = icmp eq i32 5, %20 |
+; CHECK-NEXT: %38 = select i1 %37, <2 x i64> %36, <2 x i64> %35 |
+; CHECK-NEXT: %39 = insertelement <2 x i64> %12, i64 %19, i32 0 |
+; CHECK-NEXT: %40 = icmp eq i32 6, %20 |
+; CHECK-NEXT: %41 = select i1 %40, <2 x i64> %39, <2 x i64> %12 |
+; CHECK-NEXT: %42 = insertelement <2 x i64> %41, i64 %19, i32 1 |
+; CHECK-NEXT: %43 = icmp eq i32 7, %20 |
+; CHECK-NEXT: %44 = select i1 %43, <2 x i64> %42, <2 x i64> %41 |
+; CHECK-NEXT: %45 = insertelement <2 x i64> %13, i64 %19, i32 0 |
+; CHECK-NEXT: %46 = icmp eq i32 8, %20 |
+; CHECK-NEXT: %47 = select i1 %46, <2 x i64> %45, <2 x i64> %13 |
+; CHECK-NEXT: %48 = insertelement <2 x i64> %47, i64 %19, i32 1 |
+; CHECK-NEXT: %49 = icmp eq i32 9, %20 |
+; CHECK-NEXT: %50 = select i1 %49, <2 x i64> %48, <2 x i64> %47 |
+; CHECK-NEXT: %51 = insertelement <2 x i64> %14, i64 %19, i32 0 |
+; CHECK-NEXT: %52 = icmp eq i32 10, %20 |
+; CHECK-NEXT: %53 = select i1 %52, <2 x i64> %51, <2 x i64> %14 |
+; CHECK-NEXT: %54 = insertelement <2 x i64> %53, i64 %19, i32 1 |
+; CHECK-NEXT: %55 = icmp eq i32 11, %20 |
+; CHECK-NEXT: %56 = select i1 %55, <2 x i64> %54, <2 x i64> %53 |
+; CHECK-NEXT: %57 = insertelement <2 x i64> %15, i64 %19, i32 0 |
+; CHECK-NEXT: %58 = icmp eq i32 12, %20 |
+; CHECK-NEXT: %59 = select i1 %58, <2 x i64> %57, <2 x i64> %15 |
+; CHECK-NEXT: %60 = insertelement <2 x i64> %59, i64 %19, i32 1 |
+; CHECK-NEXT: %61 = icmp eq i32 13, %20 |
+; CHECK-NEXT: %62 = select i1 %61, <2 x i64> %60, <2 x i64> %59 |
+; CHECK-NEXT: %63 = insertelement <2 x i64> %16, i64 %19, i32 0 |
+; CHECK-NEXT: %64 = icmp eq i32 14, %20 |
+; CHECK-NEXT: %65 = select i1 %64, <2 x i64> %63, <2 x i64> %16 |
+; CHECK-NEXT: %66 = insertelement <2 x i64> %65, i64 %19, i32 1 |
+; CHECK-NEXT: %67 = icmp eq i32 15, %20 |
+; CHECK-NEXT: %68 = select i1 %67, <2 x i64> %66, <2 x i64> %65 |
+; CHECK-NEXT: %69 = insertelement <2 x i64> %17, i64 %19, i32 0 |
+; CHECK-NEXT: %70 = icmp eq i32 16, %20 |
+; CHECK-NEXT: %71 = select i1 %70, <2 x i64> %69, <2 x i64> %17 |
+; CHECK-NEXT: %72 = insertelement <2 x i64> %71, i64 %19, i32 1 |
+; CHECK-NEXT: %73 = icmp eq i32 17, %20 |
+; CHECK-NEXT: %74 = select i1 %73, <2 x i64> %72, <2 x i64> %71 |
+; CHECK-NEXT: %75 = insertelement <2 x i64> %18, i64 %19, i32 0 |
+; CHECK-NEXT: %76 = icmp eq i32 18, %20 |
+; CHECK-NEXT: %77 = select i1 %76, <2 x i64> %75, <2 x i64> %18 |
+; CHECK-NEXT: %78 = insertelement <2 x i64> %77, i64 %19, i32 1 |
+; CHECK-NEXT: %79 = icmp eq i32 19, %20 |
+; CHECK-NEXT: %80 = select i1 %79, <2 x i64> %78, <2 x i64> %77 |
+; CHECK-NEXT: store <2 x i64> %32, <2 x i64>* %0, align 16 |
+; CHECK-NEXT: store <2 x i64> %38, <2 x i64>* %1, align 16 |
+; CHECK-NEXT: store <2 x i64> %44, <2 x i64>* %2, align 16 |
+; CHECK-NEXT: store <2 x i64> %50, <2 x i64>* %3, align 16 |
+; CHECK-NEXT: store <2 x i64> %56, <2 x i64>* %4, align 16 |
+; CHECK-NEXT: store <2 x i64> %62, <2 x i64>* %5, align 16 |
+; CHECK-NEXT: store <2 x i64> %68, <2 x i64>* %6, align 16 |
+; CHECK-NEXT: store <2 x i64> %74, <2 x i64>* %7, align 16 |
+; CHECK-NEXT: store <2 x i64> %80, <2 x i64>* %8, align 16 |
+; CHECK-NEXT: ret <2 x i64> %26 |
+; CHECK-NEXT: } |
+ |
+define <20 x i8*> @insert_20xi8ptr_var_idx(<20 x i8*>, i8*, i32) { |
+entry: |
+ %3 = insertelement <20 x i8*> %0, i8* %1, i32 %2 |
+ ret <20 x i8*> %3 |
+} |
+; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_var_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %11 = insertelement <4 x i8*> %4, i8* %9, i32 0 |
+; CHECK-NEXT: %12 = icmp eq i32 0, %10 |
+; CHECK-NEXT: %13 = select i1 %12, <4 x i8*> %11, <4 x i8*> %4 |
+; CHECK-NEXT: %14 = insertelement <4 x i8*> %13, i8* %9, i32 1 |
+; CHECK-NEXT: %15 = icmp eq i32 1, %10 |
+; CHECK-NEXT: %16 = select i1 %15, <4 x i8*> %14, <4 x i8*> %13 |
+; CHECK-NEXT: %17 = insertelement <4 x i8*> %16, i8* %9, i32 2 |
+; CHECK-NEXT: %18 = icmp eq i32 2, %10 |
+; CHECK-NEXT: %19 = select i1 %18, <4 x i8*> %17, <4 x i8*> %16 |
+; CHECK-NEXT: %20 = insertelement <4 x i8*> %19, i8* %9, i32 3 |
+; CHECK-NEXT: %21 = icmp eq i32 3, %10 |
+; CHECK-NEXT: %22 = select i1 %21, <4 x i8*> %20, <4 x i8*> %19 |
+; CHECK-NEXT: %23 = insertelement <4 x i8*> %5, i8* %9, i32 0 |
+; CHECK-NEXT: %24 = icmp eq i32 4, %10 |
+; CHECK-NEXT: %25 = select i1 %24, <4 x i8*> %23, <4 x i8*> %5 |
+; CHECK-NEXT: %26 = insertelement <4 x i8*> %25, i8* %9, i32 1 |
+; CHECK-NEXT: %27 = icmp eq i32 5, %10 |
+; CHECK-NEXT: %28 = select i1 %27, <4 x i8*> %26, <4 x i8*> %25 |
+; CHECK-NEXT: %29 = insertelement <4 x i8*> %28, i8* %9, i32 2 |
+; CHECK-NEXT: %30 = icmp eq i32 6, %10 |
+; CHECK-NEXT: %31 = select i1 %30, <4 x i8*> %29, <4 x i8*> %28 |
+; CHECK-NEXT: %32 = insertelement <4 x i8*> %31, i8* %9, i32 3 |
+; CHECK-NEXT: %33 = icmp eq i32 7, %10 |
+; CHECK-NEXT: %34 = select i1 %33, <4 x i8*> %32, <4 x i8*> %31 |
+; CHECK-NEXT: %35 = insertelement <4 x i8*> %6, i8* %9, i32 0 |
+; CHECK-NEXT: %36 = icmp eq i32 8, %10 |
+; CHECK-NEXT: %37 = select i1 %36, <4 x i8*> %35, <4 x i8*> %6 |
+; CHECK-NEXT: %38 = insertelement <4 x i8*> %37, i8* %9, i32 1 |
+; CHECK-NEXT: %39 = icmp eq i32 9, %10 |
+; CHECK-NEXT: %40 = select i1 %39, <4 x i8*> %38, <4 x i8*> %37 |
+; CHECK-NEXT: %41 = insertelement <4 x i8*> %40, i8* %9, i32 2 |
+; CHECK-NEXT: %42 = icmp eq i32 10, %10 |
+; CHECK-NEXT: %43 = select i1 %42, <4 x i8*> %41, <4 x i8*> %40 |
+; CHECK-NEXT: %44 = insertelement <4 x i8*> %43, i8* %9, i32 3 |
+; CHECK-NEXT: %45 = icmp eq i32 11, %10 |
+; CHECK-NEXT: %46 = select i1 %45, <4 x i8*> %44, <4 x i8*> %43 |
+; CHECK-NEXT: %47 = insertelement <4 x i8*> %7, i8* %9, i32 0 |
+; CHECK-NEXT: %48 = icmp eq i32 12, %10 |
+; CHECK-NEXT: %49 = select i1 %48, <4 x i8*> %47, <4 x i8*> %7 |
+; CHECK-NEXT: %50 = insertelement <4 x i8*> %49, i8* %9, i32 1 |
+; CHECK-NEXT: %51 = icmp eq i32 13, %10 |
+; CHECK-NEXT: %52 = select i1 %51, <4 x i8*> %50, <4 x i8*> %49 |
+; CHECK-NEXT: %53 = insertelement <4 x i8*> %52, i8* %9, i32 2 |
+; CHECK-NEXT: %54 = icmp eq i32 14, %10 |
+; CHECK-NEXT: %55 = select i1 %54, <4 x i8*> %53, <4 x i8*> %52 |
+; CHECK-NEXT: %56 = insertelement <4 x i8*> %55, i8* %9, i32 3 |
+; CHECK-NEXT: %57 = icmp eq i32 15, %10 |
+; CHECK-NEXT: %58 = select i1 %57, <4 x i8*> %56, <4 x i8*> %55 |
+; CHECK-NEXT: %59 = insertelement <4 x i8*> %8, i8* %9, i32 0 |
+; CHECK-NEXT: %60 = icmp eq i32 16, %10 |
+; CHECK-NEXT: %61 = select i1 %60, <4 x i8*> %59, <4 x i8*> %8 |
+; CHECK-NEXT: %62 = insertelement <4 x i8*> %61, i8* %9, i32 1 |
+; CHECK-NEXT: %63 = icmp eq i32 17, %10 |
+; CHECK-NEXT: %64 = select i1 %63, <4 x i8*> %62, <4 x i8*> %61 |
+; CHECK-NEXT: %65 = insertelement <4 x i8*> %64, i8* %9, i32 2 |
+; CHECK-NEXT: %66 = icmp eq i32 18, %10 |
+; CHECK-NEXT: %67 = select i1 %66, <4 x i8*> %65, <4 x i8*> %64 |
+; CHECK-NEXT: %68 = insertelement <4 x i8*> %67, i8* %9, i32 3 |
+; CHECK-NEXT: %69 = icmp eq i32 19, %10 |
+; CHECK-NEXT: %70 = select i1 %69, <4 x i8*> %68, <4 x i8*> %67 |
+; CHECK-NEXT: store <4 x i8*> %34, <4 x i8*>* %0, align 16 |
+; CHECK-NEXT: store <4 x i8*> %46, <4 x i8*>* %1, align 16 |
+; CHECK-NEXT: store <4 x i8*> %58, <4 x i8*>* %2, align 16 |
+; CHECK-NEXT: store <4 x i8*> %70, <4 x i8*>* %3, align 16 |
+; CHECK-NEXT: ret <4 x i8*> %22 |
+; CHECK-NEXT: } |
+ |
+define <20 x float> @insert_20xfloat_var_idx(<20 x float>, float, i32) { |
+entry: |
+ %3 = insertelement <20 x float> %0, float %1, i32 %2 |
+ ret <20 x float> %3 |
+} |
+; CHECK-LABEL: define <4 x float> @insert_20xfloat_var_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %11 = insertelement <4 x float> %4, float %9, i32 0 |
+; CHECK-NEXT: %12 = icmp eq i32 0, %10 |
+; CHECK-NEXT: %13 = select i1 %12, <4 x float> %11, <4 x float> %4 |
+; CHECK-NEXT: %14 = insertelement <4 x float> %13, float %9, i32 1 |
+; CHECK-NEXT: %15 = icmp eq i32 1, %10 |
+; CHECK-NEXT: %16 = select i1 %15, <4 x float> %14, <4 x float> %13 |
+; CHECK-NEXT: %17 = insertelement <4 x float> %16, float %9, i32 2 |
+; CHECK-NEXT: %18 = icmp eq i32 2, %10 |
+; CHECK-NEXT: %19 = select i1 %18, <4 x float> %17, <4 x float> %16 |
+; CHECK-NEXT: %20 = insertelement <4 x float> %19, float %9, i32 3 |
+; CHECK-NEXT: %21 = icmp eq i32 3, %10 |
+; CHECK-NEXT: %22 = select i1 %21, <4 x float> %20, <4 x float> %19 |
+; CHECK-NEXT: %23 = insertelement <4 x float> %5, float %9, i32 0 |
+; CHECK-NEXT: %24 = icmp eq i32 4, %10 |
+; CHECK-NEXT: %25 = select i1 %24, <4 x float> %23, <4 x float> %5 |
+; CHECK-NEXT: %26 = insertelement <4 x float> %25, float %9, i32 1 |
+; CHECK-NEXT: %27 = icmp eq i32 5, %10 |
+; CHECK-NEXT: %28 = select i1 %27, <4 x float> %26, <4 x float> %25 |
+; CHECK-NEXT: %29 = insertelement <4 x float> %28, float %9, i32 2 |
+; CHECK-NEXT: %30 = icmp eq i32 6, %10 |
+; CHECK-NEXT: %31 = select i1 %30, <4 x float> %29, <4 x float> %28 |
+; CHECK-NEXT: %32 = insertelement <4 x float> %31, float %9, i32 3 |
+; CHECK-NEXT: %33 = icmp eq i32 7, %10 |
+; CHECK-NEXT: %34 = select i1 %33, <4 x float> %32, <4 x float> %31 |
+; CHECK-NEXT: %35 = insertelement <4 x float> %6, float %9, i32 0 |
+; CHECK-NEXT: %36 = icmp eq i32 8, %10 |
+; CHECK-NEXT: %37 = select i1 %36, <4 x float> %35, <4 x float> %6 |
+; CHECK-NEXT: %38 = insertelement <4 x float> %37, float %9, i32 1 |
+; CHECK-NEXT: %39 = icmp eq i32 9, %10 |
+; CHECK-NEXT: %40 = select i1 %39, <4 x float> %38, <4 x float> %37 |
+; CHECK-NEXT: %41 = insertelement <4 x float> %40, float %9, i32 2 |
+; CHECK-NEXT: %42 = icmp eq i32 10, %10 |
+; CHECK-NEXT: %43 = select i1 %42, <4 x float> %41, <4 x float> %40 |
+; CHECK-NEXT: %44 = insertelement <4 x float> %43, float %9, i32 3 |
+; CHECK-NEXT: %45 = icmp eq i32 11, %10 |
+; CHECK-NEXT: %46 = select i1 %45, <4 x float> %44, <4 x float> %43 |
+; CHECK-NEXT: %47 = insertelement <4 x float> %7, float %9, i32 0 |
+; CHECK-NEXT: %48 = icmp eq i32 12, %10 |
+; CHECK-NEXT: %49 = select i1 %48, <4 x float> %47, <4 x float> %7 |
+; CHECK-NEXT: %50 = insertelement <4 x float> %49, float %9, i32 1 |
+; CHECK-NEXT: %51 = icmp eq i32 13, %10 |
+; CHECK-NEXT: %52 = select i1 %51, <4 x float> %50, <4 x float> %49 |
+; CHECK-NEXT: %53 = insertelement <4 x float> %52, float %9, i32 2 |
+; CHECK-NEXT: %54 = icmp eq i32 14, %10 |
+; CHECK-NEXT: %55 = select i1 %54, <4 x float> %53, <4 x float> %52 |
+; CHECK-NEXT: %56 = insertelement <4 x float> %55, float %9, i32 3 |
+; CHECK-NEXT: %57 = icmp eq i32 15, %10 |
+; CHECK-NEXT: %58 = select i1 %57, <4 x float> %56, <4 x float> %55 |
+; CHECK-NEXT: %59 = insertelement <4 x float> %8, float %9, i32 0 |
+; CHECK-NEXT: %60 = icmp eq i32 16, %10 |
+; CHECK-NEXT: %61 = select i1 %60, <4 x float> %59, <4 x float> %8 |
+; CHECK-NEXT: %62 = insertelement <4 x float> %61, float %9, i32 1 |
+; CHECK-NEXT: %63 = icmp eq i32 17, %10 |
+; CHECK-NEXT: %64 = select i1 %63, <4 x float> %62, <4 x float> %61 |
+; CHECK-NEXT: %65 = insertelement <4 x float> %64, float %9, i32 2 |
+; CHECK-NEXT: %66 = icmp eq i32 18, %10 |
+; CHECK-NEXT: %67 = select i1 %66, <4 x float> %65, <4 x float> %64 |
+; CHECK-NEXT: %68 = insertelement <4 x float> %67, float %9, i32 3 |
+; CHECK-NEXT: %69 = icmp eq i32 19, %10 |
+; CHECK-NEXT: %70 = select i1 %69, <4 x float> %68, <4 x float> %67 |
+; CHECK-NEXT: store <4 x float> %34, <4 x float>* %0, align 16 |
+; CHECK-NEXT: store <4 x float> %46, <4 x float>* %1, align 16 |
+; CHECK-NEXT: store <4 x float> %58, <4 x float>* %2, align 16 |
+; CHECK-NEXT: store <4 x float> %70, <4 x float>* %3, align 16 |
+; CHECK-NEXT: ret <4 x float> %22 |
+; CHECK-NEXT: } |
+ |
+define <20 x double> @insert_20xdouble_var_idx(<20 x double>, double, i32) { |
+entry: |
+ %3 = insertelement <20 x double> %0, double %1, i32 %2 |
+ ret <20 x double> %3 |
+} |
+; CHECK-LABEL: define <2 x double> @insert_20xdouble_var_idx(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double, i32) { |
+; CHECK: entry: |
+; CHECK-NEXT: %21 = insertelement <2 x double> %9, double %19, i32 0 |
+; CHECK-NEXT: %22 = icmp eq i32 0, %20 |
+; CHECK-NEXT: %23 = select i1 %22, <2 x double> %21, <2 x double> %9 |
+; CHECK-NEXT: %24 = insertelement <2 x double> %23, double %19, i32 1 |
+; CHECK-NEXT: %25 = icmp eq i32 1, %20 |
+; CHECK-NEXT: %26 = select i1 %25, <2 x double> %24, <2 x double> %23 |
+; CHECK-NEXT: %27 = insertelement <2 x double> %10, double %19, i32 0 |
+; CHECK-NEXT: %28 = icmp eq i32 2, %20 |
+; CHECK-NEXT: %29 = select i1 %28, <2 x double> %27, <2 x double> %10 |
+; CHECK-NEXT: %30 = insertelement <2 x double> %29, double %19, i32 1 |
+; CHECK-NEXT: %31 = icmp eq i32 3, %20 |
+; CHECK-NEXT: %32 = select i1 %31, <2 x double> %30, <2 x double> %29 |
+; CHECK-NEXT: %33 = insertelement <2 x double> %11, double %19, i32 0 |
+; CHECK-NEXT: %34 = icmp eq i32 4, %20 |
+; CHECK-NEXT: %35 = select i1 %34, <2 x double> %33, <2 x double> %11 |
+; CHECK-NEXT: %36 = insertelement <2 x double> %35, double %19, i32 1 |
+; CHECK-NEXT: %37 = icmp eq i32 5, %20 |
+; CHECK-NEXT: %38 = select i1 %37, <2 x double> %36, <2 x double> %35 |
+; CHECK-NEXT: %39 = insertelement <2 x double> %12, double %19, i32 0 |
+; CHECK-NEXT: %40 = icmp eq i32 6, %20 |
+; CHECK-NEXT: %41 = select i1 %40, <2 x double> %39, <2 x double> %12 |
+; CHECK-NEXT: %42 = insertelement <2 x double> %41, double %19, i32 1 |
+; CHECK-NEXT: %43 = icmp eq i32 7, %20 |
+; CHECK-NEXT: %44 = select i1 %43, <2 x double> %42, <2 x double> %41 |
+; CHECK-NEXT: %45 = insertelement <2 x double> %13, double %19, i32 0 |
+; CHECK-NEXT: %46 = icmp eq i32 8, %20 |
+; CHECK-NEXT: %47 = select i1 %46, <2 x double> %45, <2 x double> %13 |
+; CHECK-NEXT: %48 = insertelement <2 x double> %47, double %19, i32 1 |
+; CHECK-NEXT: %49 = icmp eq i32 9, %20 |
+; CHECK-NEXT: %50 = select i1 %49, <2 x double> %48, <2 x double> %47 |
+; CHECK-NEXT: %51 = insertelement <2 x double> %14, double %19, i32 0 |
+; CHECK-NEXT: %52 = icmp eq i32 10, %20 |
+; CHECK-NEXT: %53 = select i1 %52, <2 x double> %51, <2 x double> %14 |
+; CHECK-NEXT: %54 = insertelement <2 x double> %53, double %19, i32 1 |
+; CHECK-NEXT: %55 = icmp eq i32 11, %20 |
+; CHECK-NEXT: %56 = select i1 %55, <2 x double> %54, <2 x double> %53 |
+; CHECK-NEXT: %57 = insertelement <2 x double> %15, double %19, i32 0 |
+; CHECK-NEXT: %58 = icmp eq i32 12, %20 |
+; CHECK-NEXT: %59 = select i1 %58, <2 x double> %57, <2 x double> %15 |
+; CHECK-NEXT: %60 = insertelement <2 x double> %59, double %19, i32 1 |
+; CHECK-NEXT: %61 = icmp eq i32 13, %20 |
+; CHECK-NEXT: %62 = select i1 %61, <2 x double> %60, <2 x double> %59 |
+; CHECK-NEXT: %63 = insertelement <2 x double> %16, double %19, i32 0 |
+; CHECK-NEXT: %64 = icmp eq i32 14, %20 |
+; CHECK-NEXT: %65 = select i1 %64, <2 x double> %63, <2 x double> %16 |
+; CHECK-NEXT: %66 = insertelement <2 x double> %65, double %19, i32 1 |
+; CHECK-NEXT: %67 = icmp eq i32 15, %20 |
+; CHECK-NEXT: %68 = select i1 %67, <2 x double> %66, <2 x double> %65 |
+; CHECK-NEXT: %69 = insertelement <2 x double> %17, double %19, i32 0 |
+; CHECK-NEXT: %70 = icmp eq i32 16, %20 |
+; CHECK-NEXT: %71 = select i1 %70, <2 x double> %69, <2 x double> %17 |
+; CHECK-NEXT: %72 = insertelement <2 x double> %71, double %19, i32 1 |
+; CHECK-NEXT: %73 = icmp eq i32 17, %20 |
+; CHECK-NEXT: %74 = select i1 %73, <2 x double> %72, <2 x double> %71 |
+; CHECK-NEXT: %75 = insertelement <2 x double> %18, double %19, i32 0 |
+; CHECK-NEXT: %76 = icmp eq i32 18, %20 |
+; CHECK-NEXT: %77 = select i1 %76, <2 x double> %75, <2 x double> %18 |
+; CHECK-NEXT: %78 = insertelement <2 x double> %77, double %19, i32 1 |
+; CHECK-NEXT: %79 = icmp eq i32 19, %20 |
+; CHECK-NEXT: %80 = select i1 %79, <2 x double> %78, <2 x double> %77 |
+; CHECK-NEXT: store <2 x double> %32, <2 x double>* %0, align 16 |
+; CHECK-NEXT: store <2 x double> %38, <2 x double>* %1, align 16 |
+; CHECK-NEXT: store <2 x double> %44, <2 x double>* %2, align 16 |
+; CHECK-NEXT: store <2 x double> %50, <2 x double>* %3, align 16 |
+; CHECK-NEXT: store <2 x double> %56, <2 x double>* %4, align 16 |
+; CHECK-NEXT: store <2 x double> %62, <2 x double>* %5, align 16 |
+; CHECK-NEXT: store <2 x double> %68, <2 x double>* %6, align 16 |
+; CHECK-NEXT: store <2 x double> %74, <2 x double>* %7, align 16 |
+; CHECK-NEXT: store <2 x double> %80, <2 x double>* %8, align 16 |
+; CHECK-NEXT: ret <2 x double> %26 |
+; CHECK-NEXT: } |
+ |