@@ -391,12 +391,12 @@ define <32 x i8> @var_rotate_v32i8(<32 x i8> %a, <32 x i8> %b) nounwind {
391
391
; AVX512F: # %bb.0:
392
392
; AVX512F-NEXT: vpsllw $4, %ymm0, %ymm2
393
393
; AVX512F-NEXT: vpsrlw $4, %ymm0, %ymm3
394
- ; AVX512F-NEXT: vpternlogd $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm2, % zmm3
394
+ ; AVX512F-NEXT: vpternlogd {{.*#+}} zmm3 = zmm3 ^ (mem & ( zmm3 ^ zmm2))
395
395
; AVX512F-NEXT: vpsllw $5, %ymm1, %ymm1
396
396
; AVX512F-NEXT: vpblendvb %ymm1, %ymm3, %ymm0, %ymm0
397
397
; AVX512F-NEXT: vpsllw $2, %ymm0, %ymm2
398
398
; AVX512F-NEXT: vpsrlw $6, %ymm0, %ymm3
399
- ; AVX512F-NEXT: vpternlogd $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm2, % zmm3
399
+ ; AVX512F-NEXT: vpternlogd {{.*#+}} zmm3 = zmm3 ^ (mem & ( zmm3 ^ zmm2))
400
400
; AVX512F-NEXT: vpaddb %ymm1, %ymm1, %ymm1
401
401
; AVX512F-NEXT: vpblendvb %ymm1, %ymm3, %ymm0, %ymm0
402
402
; AVX512F-NEXT: vpsrlw $7, %ymm0, %ymm2
@@ -411,17 +411,17 @@ define <32 x i8> @var_rotate_v32i8(<32 x i8> %a, <32 x i8> %b) nounwind {
411
411
; AVX512VL: # %bb.0:
412
412
; AVX512VL-NEXT: vpsllw $4, %ymm0, %ymm2
413
413
; AVX512VL-NEXT: vpsrlw $4, %ymm0, %ymm3
414
- ; AVX512VL-NEXT: vpternlogd $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm2, % ymm3
414
+ ; AVX512VL-NEXT: vpternlogd {{.*#+}} ymm3 = ymm3 ^ (mem & ( ymm3 ^ ymm2))
415
415
; AVX512VL-NEXT: vpsllw $5, %ymm1, %ymm1
416
416
; AVX512VL-NEXT: vpblendvb %ymm1, %ymm3, %ymm0, %ymm0
417
417
; AVX512VL-NEXT: vpsllw $2, %ymm0, %ymm2
418
418
; AVX512VL-NEXT: vpsrlw $6, %ymm0, %ymm3
419
- ; AVX512VL-NEXT: vpternlogd $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm2, % ymm3
419
+ ; AVX512VL-NEXT: vpternlogd {{.*#+}} ymm3 = ymm3 ^ (mem & ( ymm3 ^ ymm2))
420
420
; AVX512VL-NEXT: vpaddb %ymm1, %ymm1, %ymm1
421
421
; AVX512VL-NEXT: vpblendvb %ymm1, %ymm3, %ymm0, %ymm0
422
422
; AVX512VL-NEXT: vpsrlw $7, %ymm0, %ymm2
423
423
; AVX512VL-NEXT: vpaddb %ymm0, %ymm0, %ymm3
424
- ; AVX512VL-NEXT: vpternlogd $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm2, % ymm3
424
+ ; AVX512VL-NEXT: vpternlogd {{.*#+}} ymm3 = ymm3 | (ymm2 & mem)
425
425
; AVX512VL-NEXT: vpaddb %ymm1, %ymm1, %ymm1
426
426
; AVX512VL-NEXT: vpblendvb %ymm1, %ymm3, %ymm0, %ymm0
427
427
; AVX512VL-NEXT: retq
@@ -1402,15 +1402,15 @@ define <32 x i8> @splatconstant_rotate_v32i8(<32 x i8> %a) nounwind {
1402
1402
; AVX512NOVLX: # %bb.0:
1403
1403
; AVX512NOVLX-NEXT: vpsllw $4, %ymm0, %ymm1
1404
1404
; AVX512NOVLX-NEXT: vpsrlw $4, %ymm0, %ymm0
1405
- ; AVX512NOVLX-NEXT: vpternlogd $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm1, % zmm0
1405
+ ; AVX512NOVLX-NEXT: vpternlogd {{.*#+}} zmm0 = zmm0 ^ (mem & ( zmm0 ^ zmm1))
1406
1406
; AVX512NOVLX-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
1407
1407
; AVX512NOVLX-NEXT: retq
1408
1408
;
1409
1409
; AVX512VLX-LABEL: splatconstant_rotate_v32i8:
1410
1410
; AVX512VLX: # %bb.0:
1411
1411
; AVX512VLX-NEXT: vpsllw $4, %ymm0, %ymm1
1412
1412
; AVX512VLX-NEXT: vpsrlw $4, %ymm0, %ymm0
1413
- ; AVX512VLX-NEXT: vpternlogd $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm1, % ymm0
1413
+ ; AVX512VLX-NEXT: vpternlogd {{.*#+}} ymm0 = ymm0 ^ (mem & ( ymm0 ^ ymm1))
1414
1414
; AVX512VLX-NEXT: retq
1415
1415
;
1416
1416
; XOPAVX1-LABEL: splatconstant_rotate_v32i8:
@@ -1576,7 +1576,7 @@ define <16 x i16> @splatconstant_rotate_mask_v16i16(<16 x i16> %a) nounwind {
1576
1576
; AVX512VL: # %bb.0:
1577
1577
; AVX512VL-NEXT: vpsllw $5, %ymm0, %ymm1
1578
1578
; AVX512VL-NEXT: vpsrlw $11, %ymm0, %ymm0
1579
- ; AVX512VL-NEXT: vpternlogd $168, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm1, % ymm0
1579
+ ; AVX512VL-NEXT: vpternlogd {{.*#+}} ymm0 = mem & ( ymm0 | ymm1)
1580
1580
; AVX512VL-NEXT: retq
1581
1581
;
1582
1582
; AVX512BW-LABEL: splatconstant_rotate_mask_v16i16:
@@ -1591,7 +1591,7 @@ define <16 x i16> @splatconstant_rotate_mask_v16i16(<16 x i16> %a) nounwind {
1591
1591
; AVX512VLBW: # %bb.0:
1592
1592
; AVX512VLBW-NEXT: vpsllw $5, %ymm0, %ymm1
1593
1593
; AVX512VLBW-NEXT: vpsrlw $11, %ymm0, %ymm0
1594
- ; AVX512VLBW-NEXT: vpternlogd $168, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm1, % ymm0
1594
+ ; AVX512VLBW-NEXT: vpternlogd {{.*#+}} ymm0 = mem & ( ymm0 | ymm1)
1595
1595
; AVX512VLBW-NEXT: retq
1596
1596
;
1597
1597
; AVX512VBMI2-LABEL: splatconstant_rotate_mask_v16i16:
@@ -1665,15 +1665,15 @@ define <32 x i8> @splatconstant_rotate_mask_v32i8(<32 x i8> %a) nounwind {
1665
1665
; AVX512NOVLX: # %bb.0:
1666
1666
; AVX512NOVLX-NEXT: vpsllw $4, %ymm0, %ymm1
1667
1667
; AVX512NOVLX-NEXT: vpsrlw $4, %ymm0, %ymm0
1668
- ; AVX512NOVLX-NEXT: vpternlogd $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm1, % zmm0
1668
+ ; AVX512NOVLX-NEXT: vpternlogd {{.*#+}} zmm0 = zmm0 ^ (mem & ( zmm0 ^ zmm1))
1669
1669
; AVX512NOVLX-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
1670
1670
; AVX512NOVLX-NEXT: retq
1671
1671
;
1672
1672
; AVX512VLX-LABEL: splatconstant_rotate_mask_v32i8:
1673
1673
; AVX512VLX: # %bb.0:
1674
1674
; AVX512VLX-NEXT: vpsllw $4, %ymm0, %ymm1
1675
1675
; AVX512VLX-NEXT: vpsrlw $4, %ymm0, %ymm0
1676
- ; AVX512VLX-NEXT: vpternlogd $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm1, % ymm0
1676
+ ; AVX512VLX-NEXT: vpternlogd {{.*#+}} ymm0 = ymm0 ^ (mem & ( ymm0 ^ ymm1))
1677
1677
; AVX512VLX-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0
1678
1678
; AVX512VLX-NEXT: retq
1679
1679
;
0 commit comments