@@ -1162,6 +1162,7 @@ define void @indices_convert() {
1162
1162
; XOP: # %bb.0: # %bb
1163
1163
; XOP-NEXT: vpshufd {{.*#+}} xmm0 = mem[2,3,2,3]
1164
1164
; XOP-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
1165
+ ; XOP-NEXT: vpmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero
1165
1166
; XOP-NEXT: vmovapd (%rax), %xmm1
1166
1167
; XOP-NEXT: vpaddq %xmm0, %xmm0, %xmm0
1167
1168
; XOP-NEXT: vpermil2pd $0, %xmm0, %xmm1, %xmm1, %xmm0
@@ -1172,6 +1173,7 @@ define void @indices_convert() {
1172
1173
; AVX1: # %bb.0: # %bb
1173
1174
; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = mem[2,3,2,3]
1174
1175
; AVX1-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
1176
+ ; AVX1-NEXT: vpmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero
1175
1177
; AVX1-NEXT: vmovapd (%rax), %xmm1
1176
1178
; AVX1-NEXT: vpaddq %xmm0, %xmm0, %xmm0
1177
1179
; AVX1-NEXT: vpermilpd %xmm0, %xmm1, %xmm0
@@ -1183,6 +1185,7 @@ define void @indices_convert() {
1183
1185
; AVX2-NEXT: vpbroadcastq (%rax), %xmm0
1184
1186
; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [7,7,7,7]
1185
1187
; AVX2-NEXT: vpand %xmm1, %xmm0, %xmm0
1188
+ ; AVX2-NEXT: vpmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero
1186
1189
; AVX2-NEXT: vpaddq %xmm0, %xmm0, %xmm0
1187
1190
; AVX2-NEXT: vmovapd (%rax), %xmm1
1188
1191
; AVX2-NEXT: vpermilpd %xmm0, %xmm1, %xmm0
@@ -1191,19 +1194,21 @@ define void @indices_convert() {
1191
1194
;
1192
1195
; AVX512-LABEL: indices_convert:
1193
1196
; AVX512: # %bb.0: # %bb
1194
- ; AVX512-NEXT: vmovaps (%rax), %ymm0
1195
- ; AVX512-NEXT: vmovddup {{.*#+}} xmm1 = mem[0,0]
1196
- ; AVX512-NEXT: vbroadcastss {{.*#+}} xmm2 = [7,7,7,7]
1197
- ; AVX512-NEXT: vandps %xmm2, %xmm1, %xmm1
1198
- ; AVX512-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1199
- ; AVX512-NEXT: vmovups %xmm0, (%rax)
1197
+ ; AVX512-NEXT: vmovdqa (%rax), %ymm0
1198
+ ; AVX512-NEXT: vpbroadcastq (%rax), %xmm1
1199
+ ; AVX512-NEXT: vpbroadcastd {{.*#+}} xmm2 = [7,7,7,7]
1200
+ ; AVX512-NEXT: vpand %xmm2, %xmm1, %xmm1
1201
+ ; AVX512-NEXT: vpmovzxdq {{.*#+}} xmm1 = xmm1[0],zero,xmm1[1],zero
1202
+ ; AVX512-NEXT: vpermq %zmm0, %zmm1, %zmm0
1203
+ ; AVX512-NEXT: vmovdqu %xmm0, (%rax)
1200
1204
; AVX512-NEXT: vzeroupper
1201
1205
; AVX512-NEXT: retq
1202
1206
;
1203
1207
; AVX512VL-LABEL: indices_convert:
1204
1208
; AVX512VL: # %bb.0: # %bb
1205
1209
; AVX512VL-NEXT: vpbroadcastq (%rax), %xmm0
1206
1210
; AVX512VL-NEXT: vpandd {{.*}}(%rip){1to4}, %xmm0, %xmm0
1211
+ ; AVX512VL-NEXT: vpmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero
1207
1212
; AVX512VL-NEXT: vpermq (%rax), %ymm0, %ymm0
1208
1213
; AVX512VL-NEXT: vmovdqu %xmm0, (%rax)
1209
1214
; AVX512VL-NEXT: vzeroupper
0 commit comments