RE: [PATCH v3 7/7][X86] Add Sub-byte element extration and Symmetric-signed saturation narrow support.
"Sharma, Dipesh" <[email protected]>
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <MW5PR12MB56528F0049A6CA2EF5032B92F4A62@MW5PR12MB5652.namprd12.prod.outlook.com> |
AMD General Hi, > -----Original Message----- > From: Liu, Hongtao <[email protected]> > Sent: 14 August 2026 12:26 > To: Jiang, Haochen <[email protected]>; Sharma, Dipesh > <[email protected]>; [email protected] > Cc: [email protected]; [email protected]; Kumar, Venkataramanan > <[email protected]> > Subject: RE: [PATCH v3 7/7][X86] Add Sub-byte element extration and > Symmetric-signed saturation narrow support. > > Caution: This message originated from an External Source. Use proper > caution when opening attachments, clicking links, or responding. > > > > -----Original Message----- > > From: Jiang, Haochen <[email protected]> > > Sent: Friday, August 14, 2026 2:52 PM > > To: Dipesh Sharma <[email protected]>; [email protected] > > Cc: Liu, Hongtao <[email protected]>; [email protected]; > > [email protected]; Venkataramanan Kumar > > <[email protected]> > > Subject: RE: [PATCH v3 7/7][X86] Add Sub-byte element extration and > > Symmetric-signed saturation narrow support. > > > > > From: Dipesh Sharma <[email protected]> > > > Sent: Thursday, August 13, 2026 6:12 PM > > > > Patch LGTM with minor changes. > @Dipesh Sharma Ok for the trunk with those changes. We have committed. Thanks, Dipesh > > > > > > diff --git a/gcc/config/i386/i386-builtin.def > > > b/gcc/config/i386/i386- builtin.def index ad963e9011b..84f23239326 > > > 100644 > > > --- a/gcc/config/i386/i386-builtin.def > > > +++ b/gcc/config/i386/i386-builtin.def > > > @@ -523,6 +523,12 @@ BDESC (OPTION_MASK_ISA_64BIT, > > > OPTION_MASK_ISA2_MOVRS | OPTION_MASK_ISA2_AVX10_2, BDESC > > > (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_MOVRS | > > > OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vmovrsqv2di_mask, > > > "__builtin_ia32_vmovrsq128_mask", IX86_BUILTIN_VMOVRSQ_128, > > UNKNOWN, > > > (int) V2DI_FTYPE_PCV2DI_V2DI_UQI) BDESC (OPTION_MASK_ISA_64BIT, > > > OPTION_MASK_ISA2_MOVRS | OPTION_MASK_ISA2_AVX10_2, > > > CODE_FOR_avx10_2_vmovrswv8hi_mask, > > > "__builtin_ia32_vmovrsw128_mask", IX86_BUILTIN_VMOVRSW_128, > > UNKNOWN, > > > (int) V8HI_FTYPE_PCV8HI_V8HI_UQI) > > > > > > +/* AVX10V2AUX. */ > > > +BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_avx10v2aux_sym_truncatev4siv4qi2_mask_store_2, > > > "__builtin_ia32_vpmovssdb128mem_mask", > > > IX86_BUILTIN_VPMOVSSDB128_MEM, UNKNOWN, (int) > > > VOID_FTYPE_PUSI_V4SI_UQI) > > > +BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_avx10v2aux_sym_truncatev8siv8qi2_mask_store_2, > > > "__builtin_ia32_vpmovssdb256mem_mask", > > > IX86_BUILTIN_VPMOVSSDB256_MEM, UNKNOWN, (int) > > > VOID_FTYPE_PUDI_V8SI_UQI) > > > +BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_avx10v2aux_sym_truncatev16siv16qi2_mask_store, > > > "__builtin_ia32_vpmovssdb512mem_mask", > > > IX86_BUILTIN_VPMOVSSDB512_MEM, UNKNOWN, (int) > > > VOID_FTYPE_PV16QI_V16SI_UHI) > > > + > > > + > > > > Please do not add two blank lines here, just one and similar for ... > > > > > BDESC_END (SPECIAL_ARGS, PURE_ARGS) > > > > > > /* AVX */ > > > @@ -3427,6 +3433,13 @@ BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_vcvtbf62hf8v64qi_mask, "__builti BDESC (0, > > > OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_vcvthf62hf8v16qi_mask, > > > "__builtin_ia32_vcvthf62hf8128_mask", > > > IX86_BUILTIN_VCVTHF62HF8128_MASK, UNKNOWN, (int) > > > V16QI_FTYPE_V16QI_V16QI_UHI) > > > BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_vcvthf62hf8v32qi_mask, > > "__builtin_ia32_vcvthf62hf8256_mask", > > > IX86_BUILTIN_VCVTHF62HF8256_MASK, UNKNOWN, (int) > > > V32QI_FTYPE_V32QI_V32QI_USI) > > > BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_vcvthf62hf8v64qi_mask, > > "__builtin_ia32_vcvthf62hf8512_mask", > > > IX86_BUILTIN_VCVTHF62HF8512_MASK, UNKNOWN, (int) > > > V64QI_FTYPE_V64QI_V64QI_UDI) > > > +BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_vunpackbv16qi_mask, "__builtin_ia32_vunpackb128_mask", > > > IX86_BUILTIN_VUNPACKB128_MASK, UNKNOWN, (int) > > > V16QI_FTYPE_V16QI_INT_V16QI_UHI) > > > +BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_vunpackbv32qi_mask, "__builtin_ia32_vunpackb256_mask", > > > IX86_BUILTIN_VUNPACKB256_MASK, UNKNOWN, (int) > > > V32QI_FTYPE_V32QI_INT_V32QI_USI) > > > +BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_vunpackbv64qi_mask, "__builtin_ia32_vunpackb512_mask", > > > IX86_BUILTIN_VUNPACKB512_MASK, UNKNOWN, (int) > > > V64QI_FTYPE_V64QI_INT_V64QI_UDI) > > > +BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_avx10v2aux_sym_truncatev4siv4qi2_mask, > > > "__builtin_ia32_vpmovssdb128_mask", > > > IX86_BUILTIN_VPMOVSSDB128_MASK, UNKNOWN, (int) > > > V16QI_FTYPE_V4SI_V16QI_UQI) > > > +BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_avx10v2aux_sym_truncatev8siv8qi2_mask, > > > "__builtin_ia32_vpmovssdb256_mask", > > > IX86_BUILTIN_VPMOVSSDB256_MASK, UNKNOWN, (int) > > > V16QI_FTYPE_V8SI_V16QI_UQI) > > > +BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, > > > CODE_FOR_avx10v2aux_sym_truncatev16siv16qi2_mask, > > > "__builtin_ia32_vpmovssdb512_mask", > > > IX86_BUILTIN_VPMOVSSDB512_MASK, UNKNOWN, (int) > > > V16QI_FTYPE_V16SI_V16QI_UHI) > > > + > > > > ... here. > > > > > > > > /* Builtins with rounding support. */ BDESC_END (ARGS, > > > ROUND_ARGS) diff --git a/gcc/config/i386/i386-expand.cc > > > b/gcc/config/i386/i386-expand.cc index fb4224af0da..7971ddce080 > > > 100644 > > > --- a/gcc/config/i386/i386-expand.cc > > > +++ b/gcc/config/i386/i386-expand.cc > > > @@ -13322,6 +13322,9 @@ ix86_expand_args_builtin (const struct > > > builtin_description *d, > > > case V4DF_FTYPE_V8DF_INT_V4DF_UQI: > > > case V4SF_FTYPE_V16SF_INT_V4SF_UQI: > > > case V8DI_FTYPE_V8DI_INT_V8DI_UQI: > > > + case V16QI_FTYPE_V16QI_INT_V16QI_UHI: > > > + case V32QI_FTYPE_V32QI_INT_V32QI_USI: > > > + case V64QI_FTYPE_V64QI_INT_V64QI_UDI: > > > nargs = 4; > > > mask_pos = 2; > > > nargs_constant = 1; > > > @@ -13453,6 +13456,8 @@ ix86_expand_args_builtin (const struct > > > builtin_description *d, > > > else if ((mask_pos && (nargs - i - mask_pos) == nargs_constant) || > > > (!mask_pos && (nargs - i) <= nargs_constant)) > > > { > > > + > > > + > > > > And also here redundant blank lines. > > > > > if (!match) > > > switch (icode) > > > { > > > diff --git a/gcc/testsuite/g++.dg/other/i386-2.C > > > b/gcc/testsuite/g++.dg/other/i386-2.C > > > index aae565053dc..31775c203b9 100644 > > > --- a/gcc/testsuite/g++.dg/other/i386-2.C > > > +++ b/gcc/testsuite/g++.dg/other/i386-2.C > > > @@ -1,5 +1,5 @@ > > > /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ > > > -/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow > > > -mavx > > > - > > > mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi - > > > mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed > - > > > mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt > > > - mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig - > > > mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk > > > -mamx- tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma > > > - > > > mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi - > > > mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 - > > > mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs" } */ > > > +/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow > > > +-mavx > > > +- > > > mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi - > > > mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed > - > > > mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt > > > - mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig - > > > mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk > > > -mamx- tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma > > > - > > > mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi - > > > mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 - > > > mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs - > > mavx10v2aux" } > > > */ > > > /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! > > > hostedlib } } */ > > > > > > /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, > > > fma4intrin.h, @@ -7,7 +7,7 @@ > > > popcntintrin.h, fmaintrin.h, pkuintrin.h, avx512vpopcntdqintrin.h, > > > gfniintrin.h, avx512bitalgintrin.h, avx512vp2intersectintrin.h, > > > tsxldtrkintrin.h, amxtileintrin.h, amxint8intrin.h, amxbf16intrin.h, > > > - avx512vp2intersectvlintrin.h and mm_malloc.h.h are usable > > > + avx512vp2intersectvlintrin.h, avx10v2auxintrin.h and > > > + mm_malloc.h.h are > > > usable > > > > Please don't touch these lines. They are not adding new files anymore > > or the list will be extreme huge. Similar for other cases. > > > > Thx, > > Haochen