trivial x86_64 shift pattern fix commited

Jan Hubicka jh@suse.cz
Sat Apr 14 07:20:00 GMT 2001


Hi
Two trivial fixes I found while debugging other problems.
Gcc believed that it is unuable to do constant shift left.
I am installing as obvious to the mainline too.

Honza

So dub 14 16:27:36 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (ashldi3_1_rex64): Add 'J' to the constraints
	(ashrdi3_1_rex64): Change 'n' constraint to 'J'.

*** i386.md.old	Wed Apr  4 14:33:19 2001
--- i386.md	Sat Apr 14 15:52:53 2001
***************
*** 10001,10007 ****
  (define_insn "*ashldi3_1_rex64"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=rm,r")
  	(ashift:DI (match_operand:DI 1 "nonimmediate_operand" "0,r")
! 		   (match_operand:QI 2 "nonmemory_operand" "c,M")))
     (clobber (reg:CC 17))]
    "TARGET_64BIT && ix86_binary_operator_ok (ASHIFT, DImode, operands)"
    "*
--- 10169,10175 ----
  (define_insn "*ashldi3_1_rex64"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=rm,r")
  	(ashift:DI (match_operand:DI 1 "nonimmediate_operand" "0,r")
! 		   (match_operand:QI 2 "nonmemory_operand" "cJ,M")))
     (clobber (reg:CC 17))]
    "TARGET_64BIT && ix86_binary_operator_ok (ASHIFT, DImode, operands)"
    "*
***************
*** 10762,10768 ****
  (define_insn "*ashrdi3_1_rex64"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=rm,rm")
  	(ashiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "0,0")
! 		     (match_operand:QI 2 "nonmemory_operand" "n,c")))
     (clobber (reg:CC 17))]
    "TARGET_64BIT && ix86_binary_operator_ok (ASHIFTRT, DImode, operands)"
    "@
--- 10933,10939 ----
  (define_insn "*ashrdi3_1_rex64"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=rm,rm")
  	(ashiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "0,0")
! 		     (match_operand:QI 2 "nonmemory_operand" "J,c")))
     (clobber (reg:CC 17))]
    "TARGET_64BIT && ix86_binary_operator_ok (ASHIFTRT, DImode, operands)"
    "@



More information about the Gcc-patches mailing list