> -----Original Message----- > From: Jakub Jelinek <ja...@redhat.com> > Sent: Tuesday, October 11, 2022 9:59 PM > To: Liu, Hongtao <hongtao....@intel.com> > Cc: gcc-patches@gcc.gnu.org > Subject: Re: [PATCH] [x86] Add define_insn_and_split to support general > version of "kxnor". > > On Tue, Oct 11, 2022 at 04:03:16PM +0800, liuhongt via Gcc-patches wrote: > > gcc/ChangeLog: > > > > * config/i386/i386.md (*notxor<mode>_1): New post_reload > > define_insn_and_split. > > (*notxorqi_1): Ditto. > > > --- a/gcc/config/i386/i386.md > > +++ b/gcc/config/i386/i386.md > > @@ -10826,6 +10826,39 @@ (define_insn "*<code><mode>_1" > > (set_attr "type" "alu, alu, msklog") > > (set_attr "mode" "<MODE>")]) > > > > +(define_insn_and_split "*notxor<mode>_1" > > + [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,r,?k") > > + (not:SWI248 > > + (xor:SWI248 > > + (match_operand:SWI248 1 "nonimmediate_operand" "%0,0,k") > > + (match_operand:SWI248 2 "<general_operand>" "r<i>,<m>,k")))) > > + (clobber (reg:CC FLAGS_REG))] > > + "ix86_binary_operator_ok (XOR, <MODE>mode, operands)" > > + "#" > > + "&& reload_completed" > > + [(parallel > > + [(set (match_dup 0) > > + (xor:SWI248 (match_dup 1) (match_dup 2))) > > + (clobber (reg:CC FLAGS_REG))]) > > + (set (match_dup 0) > > + (not:SWI248 (match_dup 1)))] > > +{ > > + if (MASK_REGNO_P (REGNO (operands[0]))) > > This causes --enable-checking=yes,rtl,extra regression on > gcc.dg/store_merging_13.c test on x86_64-linux: > .../gcc/testsuite/gcc.dg/store_merging_13.c: In function 'f13': > .../gcc/testsuite/gcc.dg/store_merging_13.c:189:1: internal compiler error: > RTL > check: expected code 'reg', have 'mem' in rhs_regno, at rtl.h:1932 0x7b0c8f > rtl_check_failed_code1(rtx_def const*, rtx_code, char const*, int, char > const*) > ../../gcc/rtl.cc:916 > 0x8e74be rhs_regno > ../../gcc/rtl.h:1932 > 0x9785fd rhs_regno > ./genrtl.h:120 > 0x9785fd gen_split_260(rtx_insn*, rtx_def**) > ../../gcc/config/i386/i386.md:10846 > 0x23596dc split_insns(rtx_def*, rtx_insn*) > ../../gcc/config/i386/i386.md:16392 > 0xfccd5a try_split(rtx_def*, rtx_insn*, int) > ../../gcc/emit-rtl.cc:3799 > 0x132e9d8 split_insn > ../../gcc/recog.cc:3384 > 0x13359d5 split_all_insns() > ../../gcc/recog.cc:3488 > 0x1335ae8 execute > ../../gcc/recog.cc:4412 > Please submit a full bug report, with preprocessed source (by using -freport- > bug). > Please include the complete backtrace with any bug report. > See <https://gcc.gnu.org/bugs/> for instructions. > > Fixed thusly, tested on x86_64-linux, committed to trunk as obvious. Thanks. > > 2022-10-11 Jakub Jelinek <ja...@redhat.com> > > PR target/107185 > * config/i386/i386.md (*notxor<mode>_1): Use MASK_REG_P (x) > instead of > MASK_REGNO_P (REGNO (x)). > > --- gcc/config/i386/i386.md.jj 2022-10-11 12:10:42.188891134 +0200 > +++ gcc/config/i386/i386.md 2022-10-11 15:47:45.531449089 +0200 > @@ -10843,7 +10843,7 @@ (define_insn_and_split "*notxor<mode>_1" > (set (match_dup 0) > (not:SWI248 (match_dup 0)))] > { > - if (MASK_REGNO_P (REGNO (operands[0]))) > + if (MASK_REG_P (operands[0])) > { > emit_insn (gen_kxnor<mode> (operands[0], operands[1], operands[2])); > DONE; > > > Jakub
RE: [PATCH] [x86] Add define_insn_and_split to support general version of "kxnor".
Liu, Hongtao via Gcc-patches Tue, 11 Oct 2022 17:57:01 -0700
- [PATCH] [x86] Add define_insn_and_split to s... liuhongt via Gcc-patches
- Re: [PATCH] [x86] Add define_insn_and_s... Uros Bizjak via Gcc-patches
- Re: [PATCH] [x86] Add define_insn_and_s... Jakub Jelinek via Gcc-patches
- RE: [PATCH] [x86] Add define_insn_a... Liu, Hongtao via Gcc-patches