@@ -32,8 +32,7 @@ define <4 x double> @src_ins2_v4f64_ext0_v2f64(<4 x double> %a, <2 x double> %b)
3232; SSE-NEXT: ret <4 x double> [[INS]]
3333;
3434; AVX-LABEL: @src_ins2_v4f64_ext0_v2f64(
35- ; AVX-NEXT: [[TMP1:%.*]] = shufflevector <2 x double> [[B:%.*]], <2 x double> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
36- ; AVX-NEXT: [[INS:%.*]] = shufflevector <4 x double> [[TMP1]], <4 x double> poison, <4 x i32> <i32 poison, i32 poison, i32 0, i32 poison>
35+ ; AVX-NEXT: [[INS:%.*]] = shufflevector <2 x double> [[B:%.*]], <2 x double> poison, <4 x i32> <i32 poison, i32 poison, i32 0, i32 poison>
3736; AVX-NEXT: ret <4 x double> [[INS]]
3837;
3938 %ext = extractelement <2 x double > %b , i32 0
@@ -48,8 +47,7 @@ define <4 x double> @src_ins3_v4f64_ext0_v2f64(<4 x double> %a, <2 x double> %b)
4847; SSE-NEXT: ret <4 x double> [[INS]]
4948;
5049; AVX-LABEL: @src_ins3_v4f64_ext0_v2f64(
51- ; AVX-NEXT: [[TMP1:%.*]] = shufflevector <2 x double> [[B:%.*]], <2 x double> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
52- ; AVX-NEXT: [[INS:%.*]] = shufflevector <4 x double> [[TMP1]], <4 x double> poison, <4 x i32> <i32 poison, i32 poison, i32 poison, i32 0>
50+ ; AVX-NEXT: [[INS:%.*]] = shufflevector <2 x double> [[B:%.*]], <2 x double> poison, <4 x i32> <i32 poison, i32 poison, i32 poison, i32 0>
5351; AVX-NEXT: ret <4 x double> [[INS]]
5452;
5553 %ext = extractelement <2 x double > %b , i32 0
@@ -86,8 +84,7 @@ define <4 x double> @src_ins2_v4f64_ext1_v2f64(<4 x double> %a, <2 x double> %b)
8684; SSE-NEXT: ret <4 x double> [[INS]]
8785;
8886; AVX-LABEL: @src_ins2_v4f64_ext1_v2f64(
89- ; AVX-NEXT: [[TMP1:%.*]] = shufflevector <2 x double> [[B:%.*]], <2 x double> poison, <4 x i32> <i32 poison, i32 1, i32 poison, i32 poison>
90- ; AVX-NEXT: [[INS:%.*]] = shufflevector <4 x double> [[TMP1]], <4 x double> poison, <4 x i32> <i32 poison, i32 poison, i32 1, i32 poison>
87+ ; AVX-NEXT: [[INS:%.*]] = shufflevector <2 x double> [[B:%.*]], <2 x double> poison, <4 x i32> <i32 poison, i32 poison, i32 1, i32 poison>
9188; AVX-NEXT: ret <4 x double> [[INS]]
9289;
9390 %ext = extractelement <2 x double > %b , i32 1
@@ -96,10 +93,14 @@ define <4 x double> @src_ins2_v4f64_ext1_v2f64(<4 x double> %a, <2 x double> %b)
9693}
9794
9895define <4 x double > @src_ins3_v4f64_ext1_v2f64 (<4 x double > %a , <2 x double > %b ) #0 {
99- ; CHECK-LABEL: @src_ins3_v4f64_ext1_v2f64(
100- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <2 x double> [[B:%.*]], <2 x double> poison, <4 x i32> <i32 poison, i32 1, i32 poison, i32 poison>
101- ; CHECK-NEXT: [[INS:%.*]] = shufflevector <4 x double> [[TMP1]], <4 x double> poison, <4 x i32> <i32 poison, i32 poison, i32 poison, i32 1>
102- ; CHECK-NEXT: ret <4 x double> [[INS]]
96+ ; SSE-LABEL: @src_ins3_v4f64_ext1_v2f64(
97+ ; SSE-NEXT: [[TMP1:%.*]] = shufflevector <2 x double> [[B:%.*]], <2 x double> poison, <4 x i32> <i32 poison, i32 1, i32 poison, i32 poison>
98+ ; SSE-NEXT: [[INS:%.*]] = shufflevector <4 x double> [[TMP1]], <4 x double> poison, <4 x i32> <i32 poison, i32 poison, i32 poison, i32 1>
99+ ; SSE-NEXT: ret <4 x double> [[INS]]
100+ ;
101+ ; AVX-LABEL: @src_ins3_v4f64_ext1_v2f64(
102+ ; AVX-NEXT: [[INS:%.*]] = shufflevector <2 x double> [[B:%.*]], <2 x double> poison, <4 x i32> <i32 poison, i32 poison, i32 poison, i32 1>
103+ ; AVX-NEXT: ret <4 x double> [[INS]]
103104;
104105 %ext = extractelement <2 x double > %b , i32 1
105106 %ins = insertelement <4 x double > poison, double %ext , i32 3
@@ -119,8 +120,7 @@ define <2 x double> @src_ins0_v2f64_ext0_v4f64(<2 x double> %a, <4 x double> %b)
119120
120121define <2 x double > @src_ins0_v2f64_ext1_v4f64 (<2 x double > %a , <4 x double > %b ) {
121122; CHECK-LABEL: @src_ins0_v2f64_ext1_v4f64(
122- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> poison, <2 x i32> <i32 poison, i32 1>
123- ; CHECK-NEXT: [[INS:%.*]] = shufflevector <2 x double> [[TMP1]], <2 x double> poison, <2 x i32> <i32 1, i32 poison>
123+ ; CHECK-NEXT: [[INS:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> poison, <2 x i32> <i32 1, i32 poison>
124124; CHECK-NEXT: ret <2 x double> [[INS]]
125125;
126126 %ext = extractelement <4 x double > %b , i32 1
@@ -152,8 +152,7 @@ define <2 x double> @src_ins0_v2f64_ext3_v4f64(<2 x double> %a, <4 x double> %b)
152152
153153define <2 x double > @src_ins1_v2f64_ext0_v4f64 (<2 x double > %a , <4 x double > %b ) {
154154; CHECK-LABEL: @src_ins1_v2f64_ext0_v4f64(
155- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> poison, <2 x i32> <i32 0, i32 poison>
156- ; CHECK-NEXT: [[INS:%.*]] = shufflevector <2 x double> [[TMP1]], <2 x double> poison, <2 x i32> <i32 poison, i32 0>
155+ ; CHECK-NEXT: [[INS:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> poison, <2 x i32> <i32 poison, i32 0>
157156; CHECK-NEXT: ret <2 x double> [[INS]]
158157;
159158 %ext = extractelement <4 x double > %b , i32 0
@@ -164,8 +163,7 @@ define <2 x double> @src_ins1_v2f64_ext0_v4f64(<2 x double> %a, <4 x double> %b)
164163define <2 x double > @src_ins1_v2f64_ext1_v4f64 (<2 x double > %a , <4 x double > %b ) {
165164; CHECK-LABEL: @src_ins1_v2f64_ext1_v4f64(
166165; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> poison, <2 x i32> <i32 poison, i32 1>
167- ; CHECK-NEXT: [[INS:%.*]] = shufflevector <2 x double> [[TMP1]], <2 x double> poison, <2 x i32> <i32 poison, i32 1>
168- ; CHECK-NEXT: ret <2 x double> [[INS]]
166+ ; CHECK-NEXT: ret <2 x double> [[TMP1]]
169167;
170168 %ext = extractelement <4 x double > %b , i32 1
171169 %ins = insertelement <2 x double > poison, double %ext , i32 1
@@ -174,8 +172,7 @@ define <2 x double> @src_ins1_v2f64_ext1_v4f64(<2 x double> %a, <4 x double> %b)
174172
175173define <2 x double > @src_ins1_v2f64_ext2_v4f64 (<2 x double > %a , <4 x double > %b ) {
176174; SSE-LABEL: @src_ins1_v2f64_ext2_v4f64(
177- ; SSE-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> poison, <2 x i32> <i32 2, i32 poison>
178- ; SSE-NEXT: [[INS:%.*]] = shufflevector <2 x double> [[TMP1]], <2 x double> poison, <2 x i32> <i32 poison, i32 0>
175+ ; SSE-NEXT: [[INS:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> poison, <2 x i32> <i32 poison, i32 2>
179176; SSE-NEXT: ret <2 x double> [[INS]]
180177;
181178; AVX-LABEL: @src_ins1_v2f64_ext2_v4f64(
@@ -190,8 +187,7 @@ define <2 x double> @src_ins1_v2f64_ext2_v4f64(<2 x double> %a, <4 x double> %b)
190187
191188define <2 x double > @src_ins1_v2f64_ext3_v4f64 (<2 x double > %a , <4 x double > %b ) {
192189; CHECK-LABEL: @src_ins1_v2f64_ext3_v4f64(
193- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> poison, <2 x i32> <i32 3, i32 poison>
194- ; CHECK-NEXT: [[INS:%.*]] = shufflevector <2 x double> [[TMP1]], <2 x double> poison, <2 x i32> <i32 poison, i32 0>
190+ ; CHECK-NEXT: [[INS:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> poison, <2 x i32> <i32 poison, i32 3>
195191; CHECK-NEXT: ret <2 x double> [[INS]]
196192;
197193 %ext = extractelement <4 x double > %b , i32 3
0 commit comments