This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: Macroize SSE add/sub patterns


H.J. Lu wrote:

Here is the updated patch.

H.J.
---
2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>

        * config/i386/i386.md (sat_plusminus): New.
        (plusminus_insn): Likewise.
        (plusminus_mnemonic): Likewise.
        (addsub): Removed.
        (*<addsub><mode>3_cc_overflow): Renamed to ...
        (*<plusminus_insn><mode>3_cc_overflow): This.
        (*<addsub>si3_zext_cc_overflow): Renamed to ...
        (*<plusminus_insn>si3_zext_cc_overflow): This.

* gcc/config/i386/sse.md (<addsub><mode>3): Renamed to ...
(<plusminus_insn><mode>3): This.
(*<addsub><mode>3): Renamed to ...
(*<plusminus_insn><mode>3): This.
(<sse>_vm<addsub><mode>3): Renamed to ...
(<sse>_vm<plusminus_insn><mode>3): This.
(sse3_h<addsub>v4sf3): Renamed to ...
(sse3_h<plusminus_insn>v4sf3): This.
(sse3_h<addsub>v2df3): Renamed to ...
(sse3_h<plusminus_insn>v2df3): This.
(<plusminus_insn><mode>3): New.
(*<plusminus_insn><mode>3): Likewise.
(sse2_<plusminus_insn><mode>3): Likewise.
(add<mode>): Removed.
(*add<mode>3): Likewise.
(sse2_ssadd<mode>3): Likewise.
(sse2_usadd<mode>3): Likewise.
(sub<mode>3): Likewise.
(*sub<mode>3): Likewise.
(sse2_sssub<mode>3): Likewise.
(sse2_ussub<mode>3): Likewise.

This is OK for mainline, just a small nit below.


+;; Base name for define_insn
+(define_code_attr plusminus_insn [(plus "add") (minus "sub")
+ (ss_plus "ssadd") (us_plus "usadd")
+ (ss_minus "sssub") (us_minus "ussub")])
+
+;; Base name for insn mnemonic.
+(define_code_attr plusminus_mnemonic [(plus "add") (minus "sub")
+ (ss_plus "adds") (us_plus "addus")
+ (ss_minus "subs") (us_minus "subus")])
;; Mark commutative operators as such in constraints.
-(define_code_attr comm [(plus "%") (minus "")])
+(define_code_attr comm [(plus "%") (minus "")
+ (ss_plus "%") (us_plus "%")
+ (ss_minus "") (us_minus "")])

IMO, we should put plus, ss_plus and us_plus in above definitions in the first column, and minuses in the second column to visually separate plus and minus operation, i.e.:


;; Base name for define_insn
(define_code_attr plusminus_insn [(plus "add") (minus "sub")
				  (ss_plus "ssadd") (ss_minus "sssub")
				  (us_plus "usadd") (us_minus "ussub")])


Thanks, Uros.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]