Skip to content

Commit f2d7400

Browse files
authored
[LegalizeVectorOps][X86] Add ISD::ABDS/ABSDU to the list of opcodes handled by LegalizeVectorOps. (llvm#92332)
The expand code is present, but we were missing the type query code so the nodes would be ignored until LegalizeDAG.
1 parent 245b7b6 commit f2d7400

File tree

3 files changed

+34
-32
lines changed

3 files changed

+34
-32
lines changed

llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,8 @@ SDValue VectorLegalizer::LegalizeOp(SDValue Op) {
367367
case ISD::ROTL:
368368
case ISD::ROTR:
369369
case ISD::ABS:
370+
case ISD::ABDS:
371+
case ISD::ABDU:
370372
case ISD::BSWAP:
371373
case ISD::BITREVERSE:
372374
case ISD::CTLZ:

llvm/test/CodeGen/X86/midpoint-int-vec-128.ll

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1991,14 +1991,14 @@ define <8 x i16> @vec128_i16_unsigned_reg_reg(<8 x i16> %a1, <8 x i16> %a2) noun
19911991
;
19921992
; AVX512VL-FALLBACK-LABEL: vec128_i16_unsigned_reg_reg:
19931993
; AVX512VL-FALLBACK: # %bb.0:
1994-
; AVX512VL-FALLBACK-NEXT: vpmaxuw %xmm1, %xmm0, %xmm2
1995-
; AVX512VL-FALLBACK-NEXT: vpminuw %xmm1, %xmm0, %xmm1
1996-
; AVX512VL-FALLBACK-NEXT: vpsubw %xmm1, %xmm2, %xmm2
1997-
; AVX512VL-FALLBACK-NEXT: vpsrlw $1, %xmm2, %xmm2
1998-
; AVX512VL-FALLBACK-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm1
1999-
; AVX512VL-FALLBACK-NEXT: vpternlogq $15, %xmm1, %xmm1, %xmm1
2000-
; AVX512VL-FALLBACK-NEXT: vpxor %xmm1, %xmm2, %xmm2
2001-
; AVX512VL-FALLBACK-NEXT: vpsubw %xmm1, %xmm2, %xmm1
1994+
; AVX512VL-FALLBACK-NEXT: vpminuw %xmm1, %xmm0, %xmm2
1995+
; AVX512VL-FALLBACK-NEXT: vpmaxuw %xmm1, %xmm0, %xmm1
1996+
; AVX512VL-FALLBACK-NEXT: vpsubw %xmm2, %xmm1, %xmm1
1997+
; AVX512VL-FALLBACK-NEXT: vpsrlw $1, %xmm1, %xmm1
1998+
; AVX512VL-FALLBACK-NEXT: vpcmpeqw %xmm2, %xmm0, %xmm2
1999+
; AVX512VL-FALLBACK-NEXT: vpternlogq $15, %xmm2, %xmm2, %xmm2
2000+
; AVX512VL-FALLBACK-NEXT: vpxor %xmm2, %xmm1, %xmm1
2001+
; AVX512VL-FALLBACK-NEXT: vpsubw %xmm2, %xmm1, %xmm1
20022002
; AVX512VL-FALLBACK-NEXT: vpaddw %xmm0, %xmm1, %xmm0
20032003
; AVX512VL-FALLBACK-NEXT: retq
20042004
;
@@ -2784,14 +2784,14 @@ define <16 x i8> @vec128_i8_unsigned_reg_reg(<16 x i8> %a1, <16 x i8> %a2) nounw
27842784
;
27852785
; AVX512VL-FALLBACK-LABEL: vec128_i8_unsigned_reg_reg:
27862786
; AVX512VL-FALLBACK: # %bb.0:
2787-
; AVX512VL-FALLBACK-NEXT: vpmaxub %xmm1, %xmm0, %xmm2
2788-
; AVX512VL-FALLBACK-NEXT: vpminub %xmm1, %xmm0, %xmm1
2789-
; AVX512VL-FALLBACK-NEXT: vpsubb %xmm1, %xmm2, %xmm2
2790-
; AVX512VL-FALLBACK-NEXT: vpsrlw $1, %xmm2, %xmm2
2791-
; AVX512VL-FALLBACK-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm1
2792-
; AVX512VL-FALLBACK-NEXT: vpternlogq $15, %xmm1, %xmm1, %xmm1
2793-
; AVX512VL-FALLBACK-NEXT: vpternlogd $108, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm1, %xmm2
2794-
; AVX512VL-FALLBACK-NEXT: vpsubb %xmm1, %xmm2, %xmm1
2787+
; AVX512VL-FALLBACK-NEXT: vpminub %xmm1, %xmm0, %xmm2
2788+
; AVX512VL-FALLBACK-NEXT: vpmaxub %xmm1, %xmm0, %xmm1
2789+
; AVX512VL-FALLBACK-NEXT: vpsubb %xmm2, %xmm1, %xmm1
2790+
; AVX512VL-FALLBACK-NEXT: vpsrlw $1, %xmm1, %xmm1
2791+
; AVX512VL-FALLBACK-NEXT: vpcmpeqb %xmm2, %xmm0, %xmm2
2792+
; AVX512VL-FALLBACK-NEXT: vpternlogq $15, %xmm2, %xmm2, %xmm2
2793+
; AVX512VL-FALLBACK-NEXT: vpternlogd $108, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm2, %xmm1
2794+
; AVX512VL-FALLBACK-NEXT: vpsubb %xmm2, %xmm1, %xmm1
27952795
; AVX512VL-FALLBACK-NEXT: vpaddb %xmm0, %xmm1, %xmm0
27962796
; AVX512VL-FALLBACK-NEXT: retq
27972797
;

llvm/test/CodeGen/X86/midpoint-int-vec-256.ll

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1445,14 +1445,14 @@ define <16 x i16> @vec256_i16_unsigned_reg_reg(<16 x i16> %a1, <16 x i16> %a2) n
14451445
;
14461446
; AVX512VL-FALLBACK-LABEL: vec256_i16_unsigned_reg_reg:
14471447
; AVX512VL-FALLBACK: # %bb.0:
1448-
; AVX512VL-FALLBACK-NEXT: vpmaxuw %ymm1, %ymm0, %ymm2
1449-
; AVX512VL-FALLBACK-NEXT: vpminuw %ymm1, %ymm0, %ymm1
1450-
; AVX512VL-FALLBACK-NEXT: vpsubw %ymm1, %ymm2, %ymm2
1451-
; AVX512VL-FALLBACK-NEXT: vpsrlw $1, %ymm2, %ymm2
1452-
; AVX512VL-FALLBACK-NEXT: vpcmpeqw %ymm1, %ymm0, %ymm1
1453-
; AVX512VL-FALLBACK-NEXT: vpternlogq $15, %ymm1, %ymm1, %ymm1
1454-
; AVX512VL-FALLBACK-NEXT: vpxor %ymm1, %ymm2, %ymm2
1455-
; AVX512VL-FALLBACK-NEXT: vpsubw %ymm1, %ymm2, %ymm1
1448+
; AVX512VL-FALLBACK-NEXT: vpminuw %ymm1, %ymm0, %ymm2
1449+
; AVX512VL-FALLBACK-NEXT: vpmaxuw %ymm1, %ymm0, %ymm1
1450+
; AVX512VL-FALLBACK-NEXT: vpsubw %ymm2, %ymm1, %ymm1
1451+
; AVX512VL-FALLBACK-NEXT: vpsrlw $1, %ymm1, %ymm1
1452+
; AVX512VL-FALLBACK-NEXT: vpcmpeqw %ymm2, %ymm0, %ymm2
1453+
; AVX512VL-FALLBACK-NEXT: vpternlogq $15, %ymm2, %ymm2, %ymm2
1454+
; AVX512VL-FALLBACK-NEXT: vpxor %ymm2, %ymm1, %ymm1
1455+
; AVX512VL-FALLBACK-NEXT: vpsubw %ymm2, %ymm1, %ymm1
14561456
; AVX512VL-FALLBACK-NEXT: vpaddw %ymm0, %ymm1, %ymm0
14571457
; AVX512VL-FALLBACK-NEXT: retq
14581458
;
@@ -2210,14 +2210,14 @@ define <32 x i8> @vec256_i8_unsigned_reg_reg(<32 x i8> %a1, <32 x i8> %a2) nounw
22102210
;
22112211
; AVX512VL-FALLBACK-LABEL: vec256_i8_unsigned_reg_reg:
22122212
; AVX512VL-FALLBACK: # %bb.0:
2213-
; AVX512VL-FALLBACK-NEXT: vpmaxub %ymm1, %ymm0, %ymm2
2214-
; AVX512VL-FALLBACK-NEXT: vpminub %ymm1, %ymm0, %ymm1
2215-
; AVX512VL-FALLBACK-NEXT: vpsubb %ymm1, %ymm2, %ymm2
2216-
; AVX512VL-FALLBACK-NEXT: vpsrlw $1, %ymm2, %ymm2
2217-
; AVX512VL-FALLBACK-NEXT: vpcmpeqb %ymm1, %ymm0, %ymm1
2218-
; AVX512VL-FALLBACK-NEXT: vpternlogq $15, %ymm1, %ymm1, %ymm1
2219-
; AVX512VL-FALLBACK-NEXT: vpternlogd $108, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm1, %ymm2
2220-
; AVX512VL-FALLBACK-NEXT: vpsubb %ymm1, %ymm2, %ymm1
2213+
; AVX512VL-FALLBACK-NEXT: vpminub %ymm1, %ymm0, %ymm2
2214+
; AVX512VL-FALLBACK-NEXT: vpmaxub %ymm1, %ymm0, %ymm1
2215+
; AVX512VL-FALLBACK-NEXT: vpsubb %ymm2, %ymm1, %ymm1
2216+
; AVX512VL-FALLBACK-NEXT: vpsrlw $1, %ymm1, %ymm1
2217+
; AVX512VL-FALLBACK-NEXT: vpcmpeqb %ymm2, %ymm0, %ymm2
2218+
; AVX512VL-FALLBACK-NEXT: vpternlogq $15, %ymm2, %ymm2, %ymm2
2219+
; AVX512VL-FALLBACK-NEXT: vpternlogd $108, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm2, %ymm1
2220+
; AVX512VL-FALLBACK-NEXT: vpsubb %ymm2, %ymm1, %ymm1
22212221
; AVX512VL-FALLBACK-NEXT: vpaddb %ymm0, %ymm1, %ymm0
22222222
; AVX512VL-FALLBACK-NEXT: retq
22232223
;

0 commit comments

Comments
 (0)