在 2026/6/4 10:07, Liu, Hongtao 写道: > > >> -----Original Message----- >> From: Kewen Lin <[email protected]> >> Sent: Thursday, June 4, 2026 10:00 AM >> To: Hongtao Liu <[email protected]> >> Cc: [email protected]; Qingkuan Lai <[email protected]>; >> Xiaomei Xue <[email protected]>; Uros Bizjak <[email protected]>; >> [email protected]; Liu, Hongtao <[email protected]>; Feng Xue >> <[email protected]> >> Subject: [PATCH v2] i386: Extend MOVNTDQ support to cover various packed >> integer types >> >> Hi Hongtao, >> >> 在 2026/6/2 10:15, Hongtao Liu 写道: >>> On Tue, Jun 2, 2026 at 9:16 AM Kewen Lin <[email protected]> wrote: >>>> >>>> CC maintainers for this. >>>> >>>> 在 2025/12/23 13:44, xuexiaomei 写道: >>>>> From: "[email protected]" <[email protected]> >>>>> >>>>> gcc/ChangeLog: >>>>> >>>>> * config/i386/sse.md >>>>> (define_mode_attr sse2): >>>>> Add V4SI/V8SI/V16SI/V8HI/V16HI/V32HI. >>>>> (<sse2>_movnt<mode>): Change operand mode from VI8 to >>>>> VI_AVX_AVX512F. >>>>> (define_mode_iterator STORENT_MODE): >>>>> Add V4SI/V8SI/V16SI/V8HI/V16HI/V32HI/V16QI/V32QI/V64QI. >>>>> >>>> >>>> Though patch 1/2 needs rework as Richi's review comments, IMHO this >>>> patch 2/2 is independent of patch 1/2. >>> Ok. >>> >> >> Thanks for the review! I tweaked the patch a bit as below, the main change >> is >> to guard mode V4SI/V8HI/V16QI in STORENT_MODE with TARGET_SSE2 to > Thanks for catching this. > >> align with <sse2>_movnt<mode> insn condition, along with some trivial >> formating adjustments. It's tested well as before. >> >> Is this v2 ok for trunk? > Ok.
Thanks again! Pushed as r17-1278-g41d7bf31278cc1. BR, Kewen > >> >> BR, >> Kewen >> ----- >> [PATCH] i386: Extend MOVNTDQ support to cover various packed integer >> types >> >> As the associated mode iterator VI8 shows, MOVNTDQ is only used for *QI >> and *DI packed integer modes, this patch extends it to cover *HI and *SI >> packed integer modes. >> >> gcc/ChangeLog: >> >> * config/i386/sse.md (define_mode_attr sse2): Add V4SI/V8SI/V16SI/ >> V8HI/V16HI/V32HI. >> (<sse2>_movnt<mode>): Change mode iterator from VI8 to >> VI_AVX_AVX512F. >> (define_mode_iterator STORENT_MODE): Add >> V4SI/V8SI/V16SI/V8HI/V16HI/ >> V32HI/V16QI/V32QI/V64QI. >> >> Signed-off-by: Xiaomei Xue <[email protected]> >> --- >> gcc/config/i386/sse.md | 16 +++++++++++----- >> 1 file changed, 11 insertions(+), 5 deletions(-) >> >> diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index >> 21773384973..a632e256e91 100644 >> --- a/gcc/config/i386/sse.md >> +++ b/gcc/config/i386/sse.md >> @@ -1024,6 +1024,8 @@ (define_mode_attr sse >> >> (define_mode_attr sse2 >> [(V16QI "sse2") (V32QI "avx") (V64QI "avx512f") >> + (V8HI "sse2") (V16HI "avx") (V32HI "avx512f") >> + (V4SI "sse2") (V8SI "avx") (V16SI "avx512f") >> (V2DI "sse2") (V4DI "avx") (V8DI "avx512f")]) >> >> (define_mode_attr sse3 >> @@ -2057,9 +2059,10 @@ (define_insn "<sse>_movnt<mode>" >> (set_attr "mode" "<MODE>")]) >> >> (define_insn "<sse2>_movnt<mode>" >> - [(set (match_operand:VI8 0 "memory_operand" "=m") >> - (unspec:VI8 [(match_operand:VI8 1 "register_operand" "v")] >> - UNSPEC_MOVNT))] >> + [(set (match_operand:VI_AVX_AVX512F 0 "memory_operand" "=m") >> + (unspec:VI_AVX_AVX512F >> + [(match_operand:VI_AVX_AVX512F 1 "register_operand" "v")] >> + UNSPEC_MOVNT))] >> "TARGET_SSE2" >> "%vmovntdq\t{%1, %0|%0, %1}" >> [(set_attr "type" "ssecvt") >> @@ -2080,9 +2083,12 @@ (define_insn "<sse2>_movnt<mode>" >> (define_mode_iterator STORENT_MODE >> [(DI "TARGET_SSE2 && TARGET_64BIT") (SI "TARGET_SSE2") >> (SF "TARGET_SSE4A") (DF "TARGET_SSE4A") >> - (V8DI "TARGET_AVX512F") (V4DI "TARGET_AVX") (V2DI "TARGET_SSE2") >> (V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF >> - (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX") (V2DF "TARGET_SSE2")]) >> + (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX") (V2DF "TARGET_SSE2") >> + (V8DI "TARGET_AVX512F") (V4DI "TARGET_AVX") (V2DI "TARGET_SSE2") >> + (V16SI "TARGET_AVX512F") (V8SI "TARGET_AVX") (V4SI "TARGET_SSE2") >> + (V32HI "TARGET_AVX512F") (V16HI "TARGET_AVX") (V8HI "TARGET_SSE2") >> + (V64QI "TARGET_AVX512F") (V32QI "TARGET_AVX") (V16QI >> + "TARGET_SSE2")]) >> >> (define_expand "storent<mode>" >> [(set (match_operand:STORENT_MODE 0 "memory_operand") >> -- >> 2.53.0 >
