MMX patterns fix (head/branch)

Jan Hubicka jh@suse.cz
Wed Feb 21 08:34:00 GMT 2001


Hi
The shift patterns don't have unspec guard around, as other MMX arithmetics
does.  This forces gcc to mysteriously use MMX registers when CSE or combine
manages to produce this insn from something.


Wed Feb 21 17:26:26 CET 2001  Jan Hubicka  <jh@suse.cz>
	* i386.md (mmx_lshrdi3, mmx_ashldi3): Guard by unspec.

Index: gcc/gcc/config/i386/i386.md
===================================================================
RCS file: /home/cvs/Repository/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.34
diff -c -3 -p -r1.34 i386.md
*** gcc/gcc/config/i386/i386.md	2001/02/20 15:45:33	1.34
--- gcc/gcc/config/i386/i386.md	2001/02/21 16:22:12
***************
*** 17872,17879 ****
  ;; See logical MMX insns.
  (define_insn "mmx_lshrdi3"
    [(set (match_operand:DI 0 "register_operand" "=y")
!         (lshiftrt:DI (match_operand:DI 1 "register_operand" "0")
! 		     (match_operand:DI 2 "nonmemory_operand" "yi")))]
    "TARGET_MMX"
    "psrlq\\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmx")])
--- 17874,17882 ----
  ;; See logical MMX insns.
  (define_insn "mmx_lshrdi3"
    [(set (match_operand:DI 0 "register_operand" "=y")
!         (unspec:DI
! 	  [(lshiftrt:DI (match_operand:DI 1 "register_operand" "0")
! 		       (match_operand:DI 2 "nonmemory_operand" "yi"))] 45))]
    "TARGET_MMX"
    "psrlq\\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmx")])
***************
*** 17897,17904 ****
  ;; See logical MMX insns.
  (define_insn "mmx_ashldi3"
    [(set (match_operand:DI 0 "register_operand" "=y")
!         (ashift:DI (match_operand:DI 1 "register_operand" "0")
! 		   (match_operand:DI 2 "nonmemory_operand" "yi")))]
    "TARGET_MMX"
    "psllq\\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmx")])
--- 17900,17908 ----
  ;; See logical MMX insns.
  (define_insn "mmx_ashldi3"
    [(set (match_operand:DI 0 "register_operand" "=y")
!         (unspec:DI
! 	 [(ashift:DI (match_operand:DI 1 "register_operand" "0")
! 		     (match_operand:DI 2 "nonmemory_operand" "yi"))] 45))]
    "TARGET_MMX"
    "psllq\\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmx")])



More information about the Gcc-patches mailing list