RFA: Switching LRA on for s390

Andreas Krebbel krebbel@linux.vnet.ibm.com
Fri Jun 7 14:57:00 GMT 2013


On Fri, May 31, 2013 at 02:11:38PM -0400, Vladimir Makarov wrote:
>   The following patch switches LRA on for s390.  The patch introduces
> a new option -mlra to use LRA instead of reload.  I did not document
> the option as I'd like to delete it for gcc4.9.  By default, LRA will
> be used for s390 instead of reload for better testing LRA for s390.
> 
>   Changes in s390.md are because of define_splits for the last
> alternative *movmem_short, *clrmem_short, *cmpmem_short have guard
> TARGET_CPU_ZARCH.
> 
>   The patch was successfully bootstrapped and tested on s390x.
> 
>   Any comments?
>   Is it ok to commit the patch into trunk?
> 
>   Thanks.
> 
> 
> 2013-05-31  Vladimir Makarov  <vmakarov@redhat.com>
> 
>     * config/s390/s390.opt (mlra): New option.
>     * config/s390/s390.c (s390_decompose_address): Check displacement
>     for all registers for LRA.
>     (s390_secondary_reload): Don't used secondary reloads for LRA.
>     (s390_lra_p): New function.
>     (TARGET_LRA_P): Define.
>     * config/s390/s390.md (*movmem_short, *clrmem_short): Change value
>     of attribute cpu_facility to zarch for the last alternative.
>     (*cmpmem_short): Ditto.

I've applied the attached patch. This helps me getting a little
further when bootstrapping with lra and --with-arch=zEC12.

2013-06-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/s390.md (cpu_facility): Add cpu_zarch.
	("*movmem_short", "*clrmem_short", "*cmpmem_short): Use cpu_zarch
	for last alternative in the cpu_facility attribute.

---
 gcc/config/s390/s390.md |   13 ++++!!!!!!!!!
 1 file changed, 4 insertions(+), 9 modifications(!)

Index: gcc/config/s390/s390.md
===================================================================
*** gcc/config/s390/s390.md.orig
--- gcc/config/s390/s390.md
***************
*** 277,283 ****
  (define_attr "cpu" "g5,g6,z900,z990,z9_109,z9_ec,z10,z196,zEC12"
    (const (symbol_ref "s390_tune_attr")))
  
! (define_attr "cpu_facility" "standard,ieee,zarch,longdisp,extimm,dfp,z10,z196,zEC12"
    (const_string "standard"))
  
  (define_attr "enabled" ""
--- 277,284 ----
  (define_attr "cpu" "g5,g6,z900,z990,z9_109,z9_ec,z10,z196,zEC12"
    (const (symbol_ref "s390_tune_attr")))
  
! (define_attr "cpu_facility"
!   "standard,ieee,zarch,cpu_zarch,longdisp,extimm,dfp,z10,z196,zEC12"
    (const_string "standard"))
  
  (define_attr "enabled" ""
***************
*** 304,309 ****
--- 305,314 ----
  	      (match_test "TARGET_DFP"))
  	 (const_int 1)
  
+          (and (eq_attr "cpu_facility" "cpu_zarch")
+               (match_test "TARGET_CPU_ZARCH"))
+ 	 (const_int 1)
+ 
           (and (eq_attr "cpu_facility" "z10")
                (match_test "TARGET_Z10"))
  	 (const_int 1)
***************
*** 2690,2696 ****
    "(GET_MODE (operands[2]) == Pmode || GET_MODE (operands[2]) == VOIDmode)"
    "#"
    [(set_attr "type"         "cs")
!    (set_attr "cpu_facility" "*,*,z10,zarch")])
  
  (define_split
    [(set (match_operand:BLK 0 "memory_operand" "")
--- 2695,2701 ----
    "(GET_MODE (operands[2]) == Pmode || GET_MODE (operands[2]) == VOIDmode)"
    "#"
    [(set_attr "type"         "cs")
!    (set_attr "cpu_facility" "*,*,z10,cpu_zarch")])
  
  (define_split
    [(set (match_operand:BLK 0 "memory_operand" "")
***************
*** 2899,2905 ****
    "(GET_MODE (operands[1]) == Pmode || GET_MODE (operands[1]) == VOIDmode)"
    "#"
    [(set_attr "type" "cs")
!    (set_attr "cpu_facility" "*,*,z10,zarch")])
  
  (define_split
    [(set (match_operand:BLK 0 "memory_operand" "")
--- 2904,2910 ----
    "(GET_MODE (operands[1]) == Pmode || GET_MODE (operands[1]) == VOIDmode)"
    "#"
    [(set_attr "type" "cs")
!    (set_attr "cpu_facility" "*,*,z10,cpu_zarch")])
  
  (define_split
    [(set (match_operand:BLK 0 "memory_operand" "")
***************
*** 3075,3081 ****
    "(GET_MODE (operands[2]) == Pmode || GET_MODE (operands[2]) == VOIDmode)"
    "#"
    [(set_attr "type" "cs")
!    (set_attr "cpu_facility" "*,*,z10,zarch")])
  
  (define_split
    [(set (reg:CCU CC_REGNUM)
--- 3080,3086 ----
    "(GET_MODE (operands[2]) == Pmode || GET_MODE (operands[2]) == VOIDmode)"
    "#"
    [(set_attr "type" "cs")
!    (set_attr "cpu_facility" "*,*,z10,cpu_zarch")])
  
  (define_split
    [(set (reg:CCU CC_REGNUM)



More information about the Gcc-patches mailing list