Re: [4.8, PATCH 26/26] Backport Power8 and LE support: Missing support

2014-04-03 Thread David Edelsohn
On Wed, Mar 19, 2014 at 3:35 PM, Bill Schmidt
 wrote:
> Hi,
>
> This patch (diff-trunk-missing) backports some LE pieces that were found
> not to have been backported from trunk to the IBM 4.8 branch until
> relatively recently.
>
> Thanks,
> Bill
>
>
> 2014-03-19  Bill Schmidt  
>
> Back port from trunk
> 2013-04-25  Alan Modra  
>
> PR target/57052
> * config/rs6000/rs6000.md (rotlsi3_internal7): Rename to
> rotlsi3_internal7le and condition on !BYTES_BIG_ENDIAN.
> (rotlsi3_internal8be): New BYTES_BIG_ENDIAN insn.
> Repeat for many other rotate/shift and mask patterns using subregs.
> Name lshiftrt insns.
> (ashrdisi3_noppc64): Rename to ashrdisi3_noppc64be and condition
> on WORDS_BIG_ENDIAN.
>
> 2013-06-07  Alan Modra  
>
> * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
> override user -mfp-in-toc.
> (offsettable_ok_by_alignment): Consider just the current access
> rather than the whole object, unless BLKmode.  Handle
> CONSTANT_POOL_ADDRESS_P constants that lack a decl too.
> (use_toc_relative_ref): Allow CONSTANT_POOL_ADDRESS_P constants
> for -mcmodel=medium.
> * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Don't
> override user -mfp-in-toc or -msum-in-toc.  Default to
> -mno-fp-in-toc for -mcmodel=medium.
>
> 2013-06-18  Alan Modra  
>
> * config/rs6000/rs6000.h (enum data_align): New.
> (LOCAL_ALIGNMENT, DATA_ALIGNMENT): Use rs6000_data_alignment.
> (DATA_ABI_ALIGNMENT): Define.
> (CONSTANT_ALIGNMENT): Correct comment.
> * config/rs6000/rs6000-protos.h (rs6000_data_alignment): Declare.
> * config/rs6000/rs6000.c (rs6000_data_alignment): New function.
>
> 2013-07-11  Ulrich Weigand  
>
> * config/rs6000/rs6000.md (""*tls_gd_low"):
> Require GOT register as additional operand in UNSPEC.
> ("*tls_ld_low"): Likewise.
> ("*tls_got_dtprel_low"): Likewise.
> ("*tls_got_tprel_low"): Likewise.
> ("*tls_gd"): Update splitter.
> ("*tls_ld"): Likewise.
> ("tls_got_dtprel_"): Likewise.
> ("tls_got_tprel_"): Likewise.
>
> 2014-01-23  Pat Haugen  
>
> * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
> force flag_ira_loop_pressure if set via command line.
>
> 2014-02-06  Alan Modra  
>
> PR target/60032
> * config/rs6000/rs6000.c (rs6000_secondary_memory_needed_mode): Only
> change SDmode to DDmode when lra_in_progress.

Okay.

Thanks, David


[4.8, PATCH 26/26] Backport Power8 and LE support: Missing support

2014-03-19 Thread Bill Schmidt
Hi,

This patch (diff-trunk-missing) backports some LE pieces that were found
not to have been backported from trunk to the IBM 4.8 branch until
relatively recently.

Thanks,
Bill


2014-03-19  Bill Schmidt  

Back port from trunk
2013-04-25  Alan Modra  

PR target/57052
* config/rs6000/rs6000.md (rotlsi3_internal7): Rename to
rotlsi3_internal7le and condition on !BYTES_BIG_ENDIAN.
(rotlsi3_internal8be): New BYTES_BIG_ENDIAN insn.
Repeat for many other rotate/shift and mask patterns using subregs.
Name lshiftrt insns.
(ashrdisi3_noppc64): Rename to ashrdisi3_noppc64be and condition
on WORDS_BIG_ENDIAN.

2013-06-07  Alan Modra  

* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
override user -mfp-in-toc.
(offsettable_ok_by_alignment): Consider just the current access
rather than the whole object, unless BLKmode.  Handle
CONSTANT_POOL_ADDRESS_P constants that lack a decl too.
(use_toc_relative_ref): Allow CONSTANT_POOL_ADDRESS_P constants
for -mcmodel=medium.
* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Don't
override user -mfp-in-toc or -msum-in-toc.  Default to
-mno-fp-in-toc for -mcmodel=medium.

2013-06-18  Alan Modra  

* config/rs6000/rs6000.h (enum data_align): New.
(LOCAL_ALIGNMENT, DATA_ALIGNMENT): Use rs6000_data_alignment.
(DATA_ABI_ALIGNMENT): Define.
(CONSTANT_ALIGNMENT): Correct comment.
* config/rs6000/rs6000-protos.h (rs6000_data_alignment): Declare.
* config/rs6000/rs6000.c (rs6000_data_alignment): New function.

2013-07-11  Ulrich Weigand  

* config/rs6000/rs6000.md (""*tls_gd_low"):
Require GOT register as additional operand in UNSPEC.
("*tls_ld_low"): Likewise.
("*tls_got_dtprel_low"): Likewise.
("*tls_got_tprel_low"): Likewise.
("*tls_gd"): Update splitter.
("*tls_ld"): Likewise.
("tls_got_dtprel_"): Likewise.
("tls_got_tprel_"): Likewise.

2014-01-23  Pat Haugen  

* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
force flag_ira_loop_pressure if set via command line.

2014-02-06  Alan Modra  

PR target/60032
* config/rs6000/rs6000.c (rs6000_secondary_memory_needed_mode): Only
change SDmode to DDmode when lra_in_progress.


Index: gcc-4_8-test/gcc/config/rs6000/linux64.h
===
--- gcc-4_8-test.orig/gcc/config/rs6000/linux64.h
+++ gcc-4_8-test/gcc/config/rs6000/linux64.h
@@ -149,8 +149,11 @@ extern int dot_symbols;
SET_CMODEL (CMODEL_MEDIUM); \
  if (rs6000_current_cmodel != CMODEL_SMALL)\
{   \
- TARGET_NO_FP_IN_TOC = 0;  \
- TARGET_NO_SUM_IN_TOC = 0; \
+ if (!global_options_set.x_TARGET_NO_FP_IN_TOC) \
+   TARGET_NO_FP_IN_TOC \
+ = rs6000_current_cmodel == CMODEL_MEDIUM; \
+ if (!global_options_set.x_TARGET_NO_SUM_IN_TOC) \
+   TARGET_NO_SUM_IN_TOC = 0;   \
}   \
}   \
}   \
Index: gcc-4_8-test/gcc/config/rs6000/rs6000-protos.h
===
--- gcc-4_8-test.orig/gcc/config/rs6000/rs6000-protos.h
+++ gcc-4_8-test/gcc/config/rs6000/rs6000-protos.h
@@ -152,6 +152,7 @@ extern void rs6000_split_logical (rtx []
 #endif /* RTX_CODE */
 
 #ifdef TREE_CODE
+extern unsigned int rs6000_data_alignment (tree, unsigned int, enum 
data_align);
 extern unsigned int rs6000_special_round_type_align (tree, unsigned int,
 unsigned int);
 extern unsigned int darwin_rs6000_special_round_type_align (tree, unsigned int,
Index: gcc-4_8-test/gcc/config/rs6000/rs6000.c
===
--- gcc-4_8-test.orig/gcc/config/rs6000/rs6000.c
+++ gcc-4_8-test/gcc/config/rs6000/rs6000.c
@@ -3031,7 +3031,8 @@ rs6000_option_override_internal (bool gl
  calculation works better for RTL loop invariant motion on targets
  with enough (>= 32) registers.  It is an expensive optimization.
  So it is on only for peak performance.  */
-  if (optimize >= 3 && global_init_p)
+  if (optimize >= 3 && global_init_p
+  && !global_options_set.x_flag_ira_loop_pressure)
 flag_ira_loop_pressure = 1;
 
   /* Set the pointer size.  */
@@ -3520,7 +3521,8 @@ rs6000_option_override_internal (bool gl
 
   /* Place FP constants i