[v850 patch?] num_sign_bit_copies1: sign_extending consts

DJ Delorie dj@redhat.com
Tue Nov 4 14:48:00 GMT 2003


> It shouldn't be modeless.  SImode at minimum.

Revised patch.


2003-11-04  DJ Delorie  <dj@redhat.com>

	* config/v850/v850.md (mulhisi3): Expand the const_int case
	separately to avoid trying to sign extend the const.

Index: config/v850/v850.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/v850/v850.md,v
retrieving revision 1.23
diff -p -2 -r1.23 v850.md
*** config/v850/v850.md	4 Apr 2003 10:38:50 -0000	1.23
--- config/v850/v850.md	4 Nov 2003 14:47:17 -0000
***************
*** 369,373 ****
  	  (sign_extend:SI (match_operand:HI 2 "nonmemory_operand" ""))))]
    ""
!   "")
  
  (define_insn "*mulhisi3_internal1"
--- 369,377 ----
  	  (sign_extend:SI (match_operand:HI 2 "nonmemory_operand" ""))))]
    ""
!   "if (GET_CODE (operands[2]) == CONST_INT)
!      {
!        emit_insn (gen_mulhisi3_internal2 (operands[0], operands[1], operands[2]));
!        DONE;
!      }")
  
  (define_insn "*mulhisi3_internal1"
***************
*** 384,392 ****
  ;; ??? Sign extending constants isn't valid.  Fix?
  
! (define_insn "*mulhisi3_internal2"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(mult:SI
  	  (sign_extend:SI (match_operand:HI 1 "register_operand" "%0,r"))
! 	  (sign_extend:SI (match_operand 2 "const_int_operand" "J,K"))))]
    ""
    "@
--- 388,396 ----
  ;; ??? Sign extending constants isn't valid.  Fix?
  
! (define_insn "mulhisi3_internal2"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(mult:SI
  	  (sign_extend:SI (match_operand:HI 1 "register_operand" "%0,r"))
! 	  (match_operand:SI 2 "const_int_operand" "J,K")))]
    ""
    "@



More information about the Gcc-patches mailing list