Re: Is there a way to adjust alignment of DImode and DFmode?

2015-05-21 Thread H.J. Lu
On Thu, May 21, 2015 at 1:56 PM, Jim Wilson jim.wil...@linaro.org wrote:
 On 05/20/2015 10:00 AM, H.J. Lu wrote:
 By default, alignment of DImode and DFmode is set to 8 bytes.
 Intel MCU psABI specifies alignment of DImode and DFmode
 to be 4 bytes. I'd like to make get_mode_alignment to return
 32 bits for DImode and DFmode.   Is there a way to adjust alignment
 of DImode and DFmode via ADJUST_ALIGNMENT?

 I see that i386-modes.def already uses ADJUST_ALIGNMENT to change the
 alignment of XFmode to 4 for ilp32 code.  ADJUST_ALIGNMENT should work
 the same for DImode and DFmode.  Did you run into a problem when you
 tried it?

It seems to work.  I don't know why it failed for me last time.


-- 
H.J.


Re: Is there a way to adjust alignment of DImode and DFmode?

2015-05-21 Thread H.J. Lu
On Thu, May 21, 2015 at 2:40 PM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, May 21, 2015 at 2:25 PM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, May 21, 2015 at 2:08 PM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, May 21, 2015 at 1:56 PM, Jim Wilson jim.wil...@linaro.org wrote:
 On 05/20/2015 10:00 AM, H.J. Lu wrote:
 By default, alignment of DImode and DFmode is set to 8 bytes.
 Intel MCU psABI specifies alignment of DImode and DFmode
 to be 4 bytes. I'd like to make get_mode_alignment to return
 32 bits for DImode and DFmode.   Is there a way to adjust alignment
 of DImode and DFmode via ADJUST_ALIGNMENT?

 I see that i386-modes.def already uses ADJUST_ALIGNMENT to change the
 alignment of XFmode to 4 for ilp32 code.  ADJUST_ALIGNMENT should work
 the same for DImode and DFmode.  Did you run into a problem when you
 tried it?

 It seems to work.  I don't know why it failed for me last time.


 Now I remembered.  It doesn't work for complex and decimal
 floating point modes:

 build/genmodes: config/i386/i386-modes.def:41: no mode DD
 build/genmodes: config/i386/i386-modes.def:42: no mode TD


 machmode.def has

 /* Allow the target to specify additional modes of various kinds.  */
 #if HAVE_EXTRA_MODES
 # include EXTRA_MODES_FILE
 #endif

 /* Complex modes.  */
 COMPLEX_MODES (INT);
 COMPLEX_MODES (FLOAT);

 /* Decimal floating point modes.  */
 DECIMAL_FLOAT_MODE (SD, 4, decimal_single_format);
 DECIMAL_FLOAT_MODE (DD, 8, decimal_double_format);
 DECIMAL_FLOAT_MODE (TD, 16, decimal_quad_format);

 We can't adjust any modes in i386-modes.def since they
 aren't available yet.  But we need to include i386-modes.def
 before

 COMPLEX_MODES (FLOAT);

 to get XCmode.

 Should we add an EXTRA_ALIGNMENTS_FILE and include it
 after all modes are created?

I opened:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66250

-- 
H.J.


Re: Is there a way to adjust alignment of DImode and DFmode?

2015-05-21 Thread H.J. Lu
On Thu, May 21, 2015 at 2:25 PM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, May 21, 2015 at 2:08 PM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, May 21, 2015 at 1:56 PM, Jim Wilson jim.wil...@linaro.org wrote:
 On 05/20/2015 10:00 AM, H.J. Lu wrote:
 By default, alignment of DImode and DFmode is set to 8 bytes.
 Intel MCU psABI specifies alignment of DImode and DFmode
 to be 4 bytes. I'd like to make get_mode_alignment to return
 32 bits for DImode and DFmode.   Is there a way to adjust alignment
 of DImode and DFmode via ADJUST_ALIGNMENT?

 I see that i386-modes.def already uses ADJUST_ALIGNMENT to change the
 alignment of XFmode to 4 for ilp32 code.  ADJUST_ALIGNMENT should work
 the same for DImode and DFmode.  Did you run into a problem when you
 tried it?

 It seems to work.  I don't know why it failed for me last time.


 Now I remembered.  It doesn't work for complex and decimal
 floating point modes:

 build/genmodes: config/i386/i386-modes.def:41: no mode DD
 build/genmodes: config/i386/i386-modes.def:42: no mode TD


machmode.def has

/* Allow the target to specify additional modes of various kinds.  */
#if HAVE_EXTRA_MODES
# include EXTRA_MODES_FILE
#endif

/* Complex modes.  */
COMPLEX_MODES (INT);
COMPLEX_MODES (FLOAT);

/* Decimal floating point modes.  */
DECIMAL_FLOAT_MODE (SD, 4, decimal_single_format);
DECIMAL_FLOAT_MODE (DD, 8, decimal_double_format);
DECIMAL_FLOAT_MODE (TD, 16, decimal_quad_format);

We can't adjust any modes in i386-modes.def since they
aren't available yet.  But we need to include i386-modes.def
before

COMPLEX_MODES (FLOAT);

to get XCmode.

Should we add an EXTRA_ALIGNMENTS_FILE and include it
after all modes are created?


-- 
H.J.


Re: Is there a way to adjust alignment of DImode and DFmode?

2015-05-21 Thread H.J. Lu
On Thu, May 21, 2015 at 2:08 PM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, May 21, 2015 at 1:56 PM, Jim Wilson jim.wil...@linaro.org wrote:
 On 05/20/2015 10:00 AM, H.J. Lu wrote:
 By default, alignment of DImode and DFmode is set to 8 bytes.
 Intel MCU psABI specifies alignment of DImode and DFmode
 to be 4 bytes. I'd like to make get_mode_alignment to return
 32 bits for DImode and DFmode.   Is there a way to adjust alignment
 of DImode and DFmode via ADJUST_ALIGNMENT?

 I see that i386-modes.def already uses ADJUST_ALIGNMENT to change the
 alignment of XFmode to 4 for ilp32 code.  ADJUST_ALIGNMENT should work
 the same for DImode and DFmode.  Did you run into a problem when you
 tried it?

 It seems to work.  I don't know why it failed for me last time.


Now I remembered.  It doesn't work for complex and decimal
floating point modes:

build/genmodes: config/i386/i386-modes.def:41: no mode DD
build/genmodes: config/i386/i386-modes.def:42: no mode TD



-- 
H.J.


Re: Is there a way to adjust alignment of DImode and DFmode?

2015-05-21 Thread Jim Wilson
On 05/20/2015 10:00 AM, H.J. Lu wrote:
 By default, alignment of DImode and DFmode is set to 8 bytes.
 Intel MCU psABI specifies alignment of DImode and DFmode
 to be 4 bytes. I'd like to make get_mode_alignment to return
 32 bits for DImode and DFmode.   Is there a way to adjust alignment
 of DImode and DFmode via ADJUST_ALIGNMENT?

I see that i386-modes.def already uses ADJUST_ALIGNMENT to change the
alignment of XFmode to 4 for ilp32 code.  ADJUST_ALIGNMENT should work
the same for DImode and DFmode.  Did you run into a problem when you
tried it?

Jim



Is there a way to adjust alignment of DImode and DFmode?

2015-05-20 Thread H.J. Lu
By default, alignment of DImode and DFmode is set to 8 bytes.
Intel MCU psABI specifies alignment of DImode and DFmode
to be 4 bytes. I'd like to make get_mode_alignment to return
32 bits for DImode and DFmode.   Is there a way to adjust alignment
of DImode and DFmode via ADJUST_ALIGNMENT?

-- 
H.J.


Re: Is there a way to adjust alignment of DImode and DFmode?

2015-05-20 Thread Paul_Koning

 On May 20, 2015, at 1:00 PM, H.J. Lu hjl.to...@gmail.com wrote:
 
 By default, alignment of DImode and DFmode is set to 8 bytes.

When did that change?  I know it was 4 in the past, unless you specifically 
passed a compile switch to make it 8.

paul



Re: Is there a way to adjust alignment of DImode and DFmode?

2015-05-20 Thread Paul_Koning

 On May 20, 2015, at 1:22 PM, Jakub Jelinek ja...@redhat.com wrote:
 
 On Wed, May 20, 2015 at 05:19:28PM +, paul_kon...@dell.com wrote:
 
 On May 20, 2015, at 1:00 PM, H.J. Lu hjl.to...@gmail.com wrote:
 
 By default, alignment of DImode and DFmode is set to 8 bytes.
 
 When did that change?  I know it was 4 in the past, unless you specifically 
 passed a compile switch to make it 8.
 
 For i?86 that is only field alignment (i.e. inside of structs).

I missed that.  Thanks.

paul



Re: Is there a way to adjust alignment of DImode and DFmode?

2015-05-20 Thread Jakub Jelinek
On Wed, May 20, 2015 at 05:19:28PM +, paul_kon...@dell.com wrote:
 
  On May 20, 2015, at 1:00 PM, H.J. Lu hjl.to...@gmail.com wrote:
  
  By default, alignment of DImode and DFmode is set to 8 bytes.
 
 When did that change?  I know it was 4 in the past, unless you specifically 
 passed a compile switch to make it 8.

For i?86 that is only field alignment (i.e. inside of structs).

Jakub