@@ -32,8 +32,7 @@ define <4 x double> @src_ins2_v4f64_ext0_v2f64(<4 x double> %a, <2 x double> %b)
32
32
; SSE-NEXT: ret <4 x double> [[INS]]
33
33
;
34
34
; 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>
37
36
; AVX-NEXT: ret <4 x double> [[INS]]
38
37
;
39
38
%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)
48
47
; SSE-NEXT: ret <4 x double> [[INS]]
49
48
;
50
49
; 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>
53
51
; AVX-NEXT: ret <4 x double> [[INS]]
54
52
;
55
53
%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)
86
84
; SSE-NEXT: ret <4 x double> [[INS]]
87
85
;
88
86
; 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>
91
88
; AVX-NEXT: ret <4 x double> [[INS]]
92
89
;
93
90
%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)
96
93
}
97
94
98
95
define <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]]
103
104
;
104
105
%ext = extractelement <2 x double > %b , i32 1
105
106
%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)
119
120
120
121
define <2 x double > @src_ins0_v2f64_ext1_v4f64 (<2 x double > %a , <4 x double > %b ) {
121
122
; 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>
124
124
; CHECK-NEXT: ret <2 x double> [[INS]]
125
125
;
126
126
%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)
152
152
153
153
define <2 x double > @src_ins1_v2f64_ext0_v4f64 (<2 x double > %a , <4 x double > %b ) {
154
154
; 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>
157
156
; CHECK-NEXT: ret <2 x double> [[INS]]
158
157
;
159
158
%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)
164
163
define <2 x double > @src_ins1_v2f64_ext1_v4f64 (<2 x double > %a , <4 x double > %b ) {
165
164
; CHECK-LABEL: @src_ins1_v2f64_ext1_v4f64(
166
165
; 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]]
169
167
;
170
168
%ext = extractelement <4 x double > %b , i32 1
171
169
%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)
174
172
175
173
define <2 x double > @src_ins1_v2f64_ext2_v4f64 (<2 x double > %a , <4 x double > %b ) {
176
174
; 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>
179
176
; SSE-NEXT: ret <2 x double> [[INS]]
180
177
;
181
178
; 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)
190
187
191
188
define <2 x double > @src_ins1_v2f64_ext3_v4f64 (<2 x double > %a , <4 x double > %b ) {
192
189
; 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>
195
191
; CHECK-NEXT: ret <2 x double> [[INS]]
196
192
;
197
193
%ext = extractelement <4 x double > %b , i32 3
0 commit comments