@@ -172,47 +172,39 @@ define <64 x i8> @var_funnnel_v64i8(<64 x i8> %x, <64 x i8> %amt) nounwind {
172
172
; AVX512VL-NEXT: vextracti64x4 $1, %zmm1, %ymm2
173
173
; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm3
174
174
; AVX512VL-NEXT: vpsrlw $4, %ymm3, %ymm4
175
- ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm5 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
176
- ; AVX512VL-NEXT: vpandn %ymm4, %ymm5, %ymm4
177
- ; AVX512VL-NEXT: vpsllw $4, %ymm3, %ymm6
178
- ; AVX512VL-NEXT: vpand %ymm5, %ymm6, %ymm6
179
- ; AVX512VL-NEXT: vpor %ymm4, %ymm6, %ymm4
180
- ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm6 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
181
- ; AVX512VL-NEXT: vpand %ymm6, %ymm2, %ymm2
175
+ ; AVX512VL-NEXT: vpsllw $4, %ymm3, %ymm5
176
+ ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm6 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
177
+ ; AVX512VL-NEXT: vpternlogq $226, %ymm4, %ymm6, %ymm5
178
+ ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm4 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
179
+ ; AVX512VL-NEXT: vpand %ymm4, %ymm2, %ymm2
182
180
; AVX512VL-NEXT: vpsllw $5, %ymm2, %ymm2
183
- ; AVX512VL-NEXT: vpblendvb %ymm2, %ymm4, %ymm3, %ymm3
184
- ; AVX512VL-NEXT: vpsrlw $6, %ymm3, %ymm4
185
- ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm7 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252]
186
- ; AVX512VL-NEXT: vpandn %ymm4, %ymm7, %ymm4
187
- ; AVX512VL-NEXT: vpsllw $2, %ymm3, %ymm8
188
- ; AVX512VL-NEXT: vpand %ymm7, %ymm8, %ymm8
189
- ; AVX512VL-NEXT: vpor %ymm4, %ymm8, %ymm4
181
+ ; AVX512VL-NEXT: vpblendvb %ymm2, %ymm5, %ymm3, %ymm3
182
+ ; AVX512VL-NEXT: vpsrlw $6, %ymm3, %ymm5
183
+ ; AVX512VL-NEXT: vpsllw $2, %ymm3, %ymm7
184
+ ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm8 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252]
185
+ ; AVX512VL-NEXT: vpternlogq $226, %ymm5, %ymm8, %ymm7
190
186
; AVX512VL-NEXT: vpaddb %ymm2, %ymm2, %ymm2
191
- ; AVX512VL-NEXT: vpblendvb %ymm2, %ymm4 , %ymm3, %ymm3
192
- ; AVX512VL-NEXT: vpsrlw $7, %ymm3, %ymm4
193
- ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm8 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
194
- ; AVX512VL-NEXT: vpand %ymm8 , %ymm4 , %ymm4
187
+ ; AVX512VL-NEXT: vpblendvb %ymm2, %ymm7 , %ymm3, %ymm3
188
+ ; AVX512VL-NEXT: vpsrlw $7, %ymm3, %ymm5
189
+ ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm7 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
190
+ ; AVX512VL-NEXT: vpand %ymm7 , %ymm5 , %ymm5
195
191
; AVX512VL-NEXT: vpaddb %ymm3, %ymm3, %ymm9
196
- ; AVX512VL-NEXT: vpor %ymm4 , %ymm9, %ymm4
192
+ ; AVX512VL-NEXT: vpor %ymm5 , %ymm9, %ymm5
197
193
; AVX512VL-NEXT: vpaddb %ymm2, %ymm2, %ymm2
198
- ; AVX512VL-NEXT: vpblendvb %ymm2, %ymm4 , %ymm3, %ymm2
194
+ ; AVX512VL-NEXT: vpblendvb %ymm2, %ymm5 , %ymm3, %ymm2
199
195
; AVX512VL-NEXT: vpsrlw $4, %ymm0, %ymm3
200
- ; AVX512VL-NEXT: vpandn %ymm3, %ymm5, %ymm3
201
- ; AVX512VL-NEXT: vpsllw $4, %ymm0, %ymm4
202
- ; AVX512VL-NEXT: vpand %ymm5, %ymm4, %ymm4
203
- ; AVX512VL-NEXT: vpor %ymm3, %ymm4, %ymm3
204
- ; AVX512VL-NEXT: vpand %ymm6, %ymm1, %ymm1
196
+ ; AVX512VL-NEXT: vpsllw $4, %ymm0, %ymm5
197
+ ; AVX512VL-NEXT: vpternlogq $226, %ymm3, %ymm6, %ymm5
198
+ ; AVX512VL-NEXT: vpand %ymm4, %ymm1, %ymm1
205
199
; AVX512VL-NEXT: vpsllw $5, %ymm1, %ymm1
206
- ; AVX512VL-NEXT: vpblendvb %ymm1, %ymm3 , %ymm0, %ymm0
200
+ ; AVX512VL-NEXT: vpblendvb %ymm1, %ymm5 , %ymm0, %ymm0
207
201
; AVX512VL-NEXT: vpsrlw $6, %ymm0, %ymm3
208
- ; AVX512VL-NEXT: vpandn %ymm3, %ymm7, %ymm3
209
202
; AVX512VL-NEXT: vpsllw $2, %ymm0, %ymm4
210
- ; AVX512VL-NEXT: vpand %ymm7, %ymm4, %ymm4
211
- ; AVX512VL-NEXT: vpor %ymm3, %ymm4, %ymm3
203
+ ; AVX512VL-NEXT: vpternlogq $226, %ymm3, %ymm8, %ymm4
212
204
; AVX512VL-NEXT: vpaddb %ymm1, %ymm1, %ymm1
213
- ; AVX512VL-NEXT: vpblendvb %ymm1, %ymm3 , %ymm0, %ymm0
205
+ ; AVX512VL-NEXT: vpblendvb %ymm1, %ymm4 , %ymm0, %ymm0
214
206
; AVX512VL-NEXT: vpsrlw $7, %ymm0, %ymm3
215
- ; AVX512VL-NEXT: vpand %ymm8 , %ymm3, %ymm3
207
+ ; AVX512VL-NEXT: vpand %ymm7 , %ymm3, %ymm3
216
208
; AVX512VL-NEXT: vpaddb %ymm0, %ymm0, %ymm4
217
209
; AVX512VL-NEXT: vpor %ymm3, %ymm4, %ymm3
218
210
; AVX512VL-NEXT: vpaddb %ymm1, %ymm1, %ymm1
@@ -826,16 +818,12 @@ define <64 x i8> @splatconstant_funnnel_v64i8(<64 x i8> %x) nounwind {
826
818
; AVX512VL: # %bb.0:
827
819
; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm1
828
820
; AVX512VL-NEXT: vpsrlw $4, %ymm1, %ymm2
829
- ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm3 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
830
- ; AVX512VL-NEXT: vpandn %ymm2, %ymm3, %ymm2
831
821
; AVX512VL-NEXT: vpsllw $4, %ymm1, %ymm1
832
- ; AVX512VL-NEXT: vpand % ymm3, %ymm1, %ymm1
833
- ; AVX512VL-NEXT: vpor %ymm2, %ymm1 , %ymm1
822
+ ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm3 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
823
+ ; AVX512VL-NEXT: vpternlogq $226, %ymm2, %ymm3 , %ymm1
834
824
; AVX512VL-NEXT: vpsrlw $4, %ymm0, %ymm2
835
- ; AVX512VL-NEXT: vpandn %ymm2, %ymm3, %ymm2
836
825
; AVX512VL-NEXT: vpsllw $4, %ymm0, %ymm0
837
- ; AVX512VL-NEXT: vpand %ymm3, %ymm0, %ymm0
838
- ; AVX512VL-NEXT: vpor %ymm2, %ymm0, %ymm0
826
+ ; AVX512VL-NEXT: vpternlogq $226, %ymm2, %ymm3, %ymm0
839
827
; AVX512VL-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
840
828
; AVX512VL-NEXT: retq
841
829
;
0 commit comments