small alphaev4 tweak

Richard Henderson rth@twiddle.net
Mon Dec 10 14:23:00 GMT 2001


Noticed while debugging another problem that we generated

	(subreg:DI (reg:DI X) 0)


r~


        * config/alpha/alpha.md (unaligned_extendhidi): Call gen_lowpart
        instead of hardcoding subregs into the _be and _le patterns.

Index: alpha.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/alpha/alpha.md,v
retrieving revision 1.163
diff -c -p -d -r1.163 alpha.md
*** alpha.md	2001/12/09 20:13:05	1.163
--- alpha.md	2001/12/10 22:06:26
*************** fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi
*** 1806,1815 ****
     (use (match_operand:DI 1 "address_operand" ""))]
    ""
  {
!   if (WORDS_BIG_ENDIAN)
!     emit_insn (gen_unaligned_extendhidi_be (operands[0], operands[1]));
!   else
!     emit_insn (gen_unaligned_extendhidi_le (operands[0], operands[1]));
    DONE;
  })
  
--- 1806,1815 ----
     (use (match_operand:DI 1 "address_operand" ""))]
    ""
  {
!   operands[0] = gen_lowpart (DImode, operands[0]);
!   emit_insn ((WORDS_BIG_ENDIAN
! 	      ? gen_unaligned_extendhidi_be
! 	      : gen_unaligned_extendhidi_le) (operands[0], operands[1]));
    DONE;
  })
  
*************** fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi
*** 1824,1830 ****
  			     (ashift:DI
  			      (and:DI (match_dup 2) (const_int 7))
  			      (const_int 3)))))
!    (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
  	(ashiftrt:DI (match_dup 4) (const_int 48)))]
    "! WORDS_BIG_ENDIAN"
  {
--- 1824,1830 ----
  			     (ashift:DI
  			      (and:DI (match_dup 2) (const_int 7))
  			      (const_int 3)))))
!    (set (match_operand:DI 0 "register_operand" "")
  	(ashiftrt:DI (match_dup 4) (const_int 48)))]
    "! WORDS_BIG_ENDIAN"
  {
*************** fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi
*** 1847,1853 ****
  		       (plus:DI (match_dup 5) (const_int 1))
  		       (const_int 7))
  		     (const_int 3))))
!    (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
  	(ashiftrt:DI (match_dup 6) (const_int 48)))]
    "WORDS_BIG_ENDIAN"
  {
--- 1847,1853 ----
  		       (plus:DI (match_dup 5) (const_int 1))
  		       (const_int 7))
  		     (const_int 3))))
!    (set (match_operand:DI 0 "register_operand" "")
  	(ashiftrt:DI (match_dup 6) (const_int 48)))]
    "WORDS_BIG_ENDIAN"
  {



More information about the Gcc-patches mailing list