This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: Switching LRA on for s390


On 13-06-07 10:57 AM, Andreas Krebbel wrote:
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)

Thanks, Andreas. I am not a specialist in 390 architecture. You are the expert. I'll check the bootstrap with this option too on a machine available for me. I've checked the bootstrap without any -with-arch option before submitting the patch for approval. If I find some problems, I'll work on them too. I'll work on PR57599 you just reported too.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]