On Thu, Aug 3, 2023 at 4:17 PM Jan Beulich via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > The attribute defaults to 1 for TI-mode insns of type sselog, sselog1, > sseiadd, sseimul, and sseishft. > > In *<code>v8hi3 [smaxmin] and *<code>v16qi3 [umaxmin] also drop the > similarly stray "prefix_extra" at this occasion. These two max/min > flavors are encoded in 0f space. Ok. > > gcc/ > > * config/i386/mmx.md (*mmx_pinsrd): Drop "prefix_data16". > (*mmx_pinsrb): Likewise. > (*mmx_pextrb): Likewise. > (*mmx_pextrb_zext): Likewise. > (mmx_pshufbv8qi3): Likewise. > (mmx_pshufbv4qi3): Likewise. > (mmx_pswapdv2si2): Likewise. > (*pinsrb): Likewise. > (*pextrb): Likewise. > (*pextrb_zext): Likewise. > * config/i386/sse.md (*sse4_1_mulv2siv2di3<mask_name>): Likewise. > (*sse2_eq<mode>3): Likewise. > (*sse2_gt<mode>3): Likewise. > (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise. > (*vec_extract<mode>): Likewise. > (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise. > (*vec_extractv16qi_zext): Likewise. > (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise. > (ssse3_pmaddubsw128): Likewise. > (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise. > (<ssse3_avx2>_pshufb<mode>3<mask_name>): Likewise. > (<ssse3_avx2>_psign<mode>3): Likewise. > (<ssse3_avx2>_palignr<mode>): Likewise. > (*abs<mode>2): Likewise. > (sse4_2_pcmpestr): Likewise. > (sse4_2_pcmpestri): Likewise. > (sse4_2_pcmpestrm): Likewise. > (sse4_2_pcmpestr_cconly): Likewise. > (sse4_2_pcmpistr): Likewise. > (sse4_2_pcmpistri): Likewise. > (sse4_2_pcmpistrm): Likewise. > (sse4_2_pcmpistr_cconly): Likewise. > (vgf2p8affineinvqb_<mode><mask_name>): Likewise. > (vgf2p8affineqb_<mode><mask_name>): Likewise. > (vgf2p8mulb_<mode><mask_name>): Likewise. > (*<code>v8hi3 [smaxmin]): Drop "prefix_data16" and > "prefix_extra". > (*<code>v16qi3 [umaxmin]): Likewise. > > --- a/gcc/config/i386/mmx.md > +++ b/gcc/config/i386/mmx.md > @@ -3863,7 +3863,6 @@ > } > } > [(set_attr "isa" "noavx,avx") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "type" "sselog") > (set_attr "length_immediate" "1") > @@ -3950,7 +3949,6 @@ > } > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sselog") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "prefix" "orig,vex") > @@ -4002,7 +4000,6 @@ > %vpextrb\t{%2, %1, %k0|%k0, %1, %2} > %vpextrb\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "prefix" "maybe_vex") > @@ -4017,7 +4014,6 @@ > "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE" > "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}" > [(set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "prefix" "maybe_vex") > @@ -4035,7 +4031,6 @@ > vpshufb\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "orig,maybe_evex") > (set_attr "btver2_decode" "vector") > @@ -4053,7 +4048,6 @@ > vpshufb\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "orig,maybe_evex") > (set_attr "btver2_decode" "vector") > @@ -4191,7 +4185,6 @@ > (set_attr "mmx_isa" "native,*") > (set_attr "type" "mmxcvt,sselog1") > (set_attr "prefix_extra" "1,*") > - (set_attr "prefix_data16" "*,1") > (set_attr "length_immediate" "*,1") > (set_attr "mode" "DI,TI")]) > > @@ -4531,7 +4524,6 @@ > } > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sselog") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "prefix" "orig,vex") > @@ -4575,7 +4567,6 @@ > %vpextrb\t{%2, %1, %k0|%k0, %1, %2} > %vpextrb\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "prefix" "maybe_vex") > @@ -4590,7 +4581,6 @@ > "TARGET_SSE4_1" > "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}" > [(set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "prefix" "maybe_vex") > --- a/gcc/config/i386/sse.md > +++ b/gcc/config/i386/sse.md > @@ -15614,7 +15614,6 @@ > vpmuldq\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}" > [(set_attr "isa" "noavx,noavx,avx") > (set_attr "type" "sseimul") > - (set_attr "prefix_data16" "1,1,*") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "orig,orig,vex") > (set_attr "mode" "TI")]) > @@ -16688,8 +16687,6 @@ > vp<maxmin_int>w\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sseiadd") > - (set_attr "prefix_data16" "1,*") > - (set_attr "prefix_extra" "*,1") > (set_attr "prefix" "orig,vex") > (set_attr "mode" "TI")]) > > @@ -16772,8 +16769,6 @@ > vp<maxmin_int>b\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sseiadd") > - (set_attr "prefix_data16" "1,*") > - (set_attr "prefix_extra" "*,1") > (set_attr "prefix" "orig,vex") > (set_attr "mode" "TI")]) > > @@ -17001,7 +16996,6 @@ > vpcmpeq<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "isa" "noavx,avx") > (set_attr "type" "ssecmp") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix" "orig,vex") > (set_attr "mode" "TI")]) > > @@ -17063,7 +17057,6 @@ > vpcmpgt<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "isa" "noavx,avx") > (set_attr "type" "ssecmp") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix" "orig,vex") > (set_attr "mode" "TI")]) > > @@ -18819,12 +18812,6 @@ > (match_test "GET_MODE_NUNITS (<MODE>mode) == 2")) > (const_string "1") > (const_string "*"))) > - (set (attr "prefix_data16") > - (if_then_else > - (and (not (match_test "TARGET_AVX")) > - (match_test "GET_MODE_NUNITS (<MODE>mode) == 8")) > - (const_string "1") > - (const_string "*"))) > (set (attr "prefix_extra") > (if_then_else > (ior (eq_attr "prefix" "evex") > @@ -19985,7 +19972,6 @@ > %vpextr<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "isa" "*,sse4") > (set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1") > (set (attr "prefix_extra") > (if_then_else > (eq (const_string "<MODE>mode") (const_string "V8HImode")) > @@ -20006,7 +19992,6 @@ > "TARGET_SSE2" > "%vpextr<PEXTR_MODE12:ssemodesuffix>\t{%2, %1, %k0|%k0, %1, %2}" > [(set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1") > (set (attr "prefix_extra") > (if_then_else > (eq (const_string "<PEXTR_MODE12:MODE>mode") (const_string > "V8HImode")) > @@ -20026,7 +20011,6 @@ > "TARGET_SSE4_1" > "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}" > [(set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "prefix" "maybe_vex") > @@ -21240,7 +21224,6 @@ > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sseiadd") > (set_attr "atom_unit" "complex") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "orig,vex") > (set_attr "mode" "TI")]) > @@ -21511,7 +21494,6 @@ > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sseiadd") > (set_attr "atom_unit" "simul") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "orig,vex") > (set_attr "mode" "TI")]) > @@ -21639,7 +21621,6 @@ > vpmulhrsw\t{%2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2}" > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sseimul") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "orig,maybe_evex") > (set_attr "mode" "<sseinsnmode>")]) > @@ -21763,7 +21744,6 @@ > vpshufb\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}" > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "orig,maybe_evex") > (set_attr "btver2_decode" "vector") > @@ -21830,7 +21810,6 @@ > vpsign<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "orig,vex") > (set_attr "mode" "<sseinsnmode>")]) > @@ -21898,7 +21877,6 @@ > [(set_attr "isa" "noavx,avx") > (set_attr "type" "sseishft") > (set_attr "atom_unit" "sishuf") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "prefix" "orig,vex") > @@ -21992,7 +21970,6 @@ > "TARGET_SSSE3" > "%vpabs<ssemodesuffix>\t{%1, %0|%0, %1}" > [(set_attr "type" "sselog1") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "maybe_vex") > (set_attr "mode" "<sseinsnmode>")]) > @@ -24244,7 +24221,6 @@ > DONE; > } > [(set_attr "type" "sselog") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "memory" "none,load") > @@ -24270,7 +24246,6 @@ > "TARGET_SSE4_2" > "%vpcmpestri\t{%5, %3, %1|%1, %3, %5}" > [(set_attr "type" "sselog") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "maybe_vex") > (set_attr "length_immediate" "1") > @@ -24298,7 +24273,6 @@ > "TARGET_SSE4_2" > "%vpcmpestrm\t{%5, %3, %1|%1, %3, %5}" > [(set_attr "type" "sselog") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "prefix" "maybe_vex") > @@ -24324,7 +24298,6 @@ > %vpcmpestri\t{%6, %4, %2|%2, %4, %6} > %vpcmpestri\t{%6, %4, %2|%2, %4, %6}" > [(set_attr "type" "sselog") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "memory" "none,load,none,load") > @@ -24379,7 +24352,6 @@ > DONE; > } > [(set_attr "type" "sselog") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "memory" "none,load") > @@ -24401,7 +24373,6 @@ > "TARGET_SSE4_2" > "%vpcmpistri\t{%3, %2, %1|%1, %2, %3}" > [(set_attr "type" "sselog") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "prefix" "maybe_vex") > @@ -24425,7 +24396,6 @@ > "TARGET_SSE4_2" > "%vpcmpistrm\t{%3, %2, %1|%1, %2, %3}" > [(set_attr "type" "sselog") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "prefix" "maybe_vex") > @@ -24449,7 +24419,6 @@ > %vpcmpistri\t{%4, %3, %2|%2, %3, %4} > %vpcmpistri\t{%4, %3, %2|%2, %3, %4}" > [(set_attr "type" "sselog") > - (set_attr "prefix_data16" "1") > (set_attr "prefix_extra" "1") > (set_attr "length_immediate" "1") > (set_attr "memory" "none,load,none,load") > @@ -29268,7 +29237,6 @@ > gf2p8affineinvqb\t{%3, %2, %0| %0, %2, %3} > vgf2p8affineinvqb\t{%3, %2, %1, %0<mask_operand4>| %0<mask_operand4>, %1, > %2, %3}" > [(set_attr "isa" "noavx,avx") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "orig,maybe_evex") > (set_attr "mode" "<sseinsnmode>")]) > @@ -29285,7 +29253,6 @@ > gf2p8affineqb\t{%3, %2, %0| %0, %2, %3} > vgf2p8affineqb\t{%3, %2, %1, %0<mask_operand4>| %0<mask_operand4>, %1, > %2, %3}" > [(set_attr "isa" "noavx,avx") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "orig,maybe_evex") > (set_attr "mode" "<sseinsnmode>")]) > @@ -29301,7 +29268,6 @@ > gf2p8mulb\t{%2, %0| %0, %2} > vgf2p8mulb\t{%2, %1, %0<mask_operand3>| %0<mask_operand3>, %1, %2}" > [(set_attr "isa" "noavx,avx") > - (set_attr "prefix_data16" "1,*") > (set_attr "prefix_extra" "1") > (set_attr "prefix" "orig,maybe_evex") > (set_attr "mode" "<sseinsnmode>")]) >
-- BR, Hongtao