Bug 39119 - Update classification of aggregates with __m256
Summary: Update classification of aggregates with __m256
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.4.0
: P1 critical
Target Milestone: 4.4.0
Assignee: H.J. Lu
URL: http://gcc.gnu.org/ml/gcc-patches/200...
Keywords:
Depends on:
Blocks:
 
Reported: 2009-02-06 15:11 UTC by H.J. Lu
Modified: 2009-02-10 14:38 UTC (History)
3 users (show)

See Also:
Host:
Target: x86-64-unknown-linux-gnu
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2009-02-06 15:11:40 UTC
We want to pass aggregates of 32 bytes with single __m256 field
in AVX registers, instead of memory. The proposed psABI change is
at

http://gcc.gnu.org/ml/gcc/2009-02/msg00058.html
Comment 1 H.J. Lu 2009-02-06 15:13:15 UTC
The gcc patch is posted at

http://gcc.gnu.org/ml/gcc-patches/2009-02/msg00209.html
Comment 2 hjl@gcc.gnu.org 2009-02-08 18:04:10 UTC
Subject: Bug 39119

Author: hjl
Date: Sun Feb  8 18:03:58 2009
New Revision: 144017

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=144017
Log:
gcc/

2009-02-08  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/39119
	* config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
	(x86_64_reg_class_name): Removed.
	(classify_argument): Return 0 if bytes > 32.  Return 0 if the
	first one isn't X86_64_SSE_CLASS or any other ones aren't
	X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
	X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
	is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
	and 3 X86_64_SSEUP_CLASS.
	(construct_container): Remove X86_64_AVX_CLASS.  Handle 4
	registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.

gcc/testsuite/

2009-02-08  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/39119
	* gcc.target/x86_64/abi/avx/abi-avx.exp: New.
	* gcc.target/x86_64/abi/avx/args.h: Likewise.
	* gcc.target/x86_64/abi/avx/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx/avx-check.h: Likewise.
	* gcc.target/x86_64/abi/avx/test_m256_returning.c: Likewise.
	* gcc.target/x86_64/abi/avx/test_passing_m256.c: Likewise.
	* gcc.target/x86_64/abi/avx/test_passing_structs.c: Likewise.
	* gcc.target/x86_64/abi/avx/test_passing_unions.c: Likewise.

Added:
    branches/ix86/avx/gcc/testsuite/gcc.target/x86_64/abi/avx/
    branches/ix86/avx/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
    branches/ix86/avx/gcc/testsuite/gcc.target/x86_64/abi/avx/args.h
    branches/ix86/avx/gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support.S
    branches/ix86/avx/gcc/testsuite/gcc.target/x86_64/abi/avx/avx-check.h
    branches/ix86/avx/gcc/testsuite/gcc.target/x86_64/abi/avx/test_m256_returning.c
    branches/ix86/avx/gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_m256.c
    branches/ix86/avx/gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_structs.c
    branches/ix86/avx/gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_unions.c
Modified:
    branches/ix86/avx/gcc/ChangeLog.avx
    branches/ix86/avx/gcc/config/i386/i386.c
    branches/ix86/avx/gcc/testsuite/ChangeLog.avx

Comment 3 hjl@gcc.gnu.org 2009-02-10 14:01:00 UTC
Subject: Bug 39119

Author: hjl
Date: Tue Feb 10 14:00:46 2009
New Revision: 144058

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=144058
Log:
gcc/

2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/39119
	* config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
	(x86_64_reg_class_name): Removed.
	(classify_argument): Return 0 if bytes > 32.  Return 0 if the
	first one isn't X86_64_SSE_CLASS or any other ones aren't
	X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
	X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
	is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
	and 3 X86_64_SSEUP_CLASS.
	(construct_container): Remove X86_64_AVX_CLASS.  Handle 4
	registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.

gcc/testsuite/

2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/39119
	* gcc.target/x86_64/abi/avx/abi-avx.exp: New.
	* gcc.target/x86_64/abi/avx/args.h: Likewise.
	* gcc.target/x86_64/abi/avx/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx/avx-check.h: Likewise.
	* gcc.target/x86_64/abi/avx/test_m256_returning.c: Likewise.
	* gcc.target/x86_64/abi/avx/test_passing_m256.c: Likewise.
	* gcc.target/x86_64/abi/avx/test_passing_structs.c: Likewise.
	* gcc.target/x86_64/abi/avx/test_passing_unions.c: Likewise.

Added:
    trunk/gcc/testsuite/gcc.target/x86_64/abi/avx/
    trunk/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
    trunk/gcc/testsuite/gcc.target/x86_64/abi/avx/args.h
    trunk/gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support.S
    trunk/gcc/testsuite/gcc.target/x86_64/abi/avx/avx-check.h
    trunk/gcc/testsuite/gcc.target/x86_64/abi/avx/test_m256_returning.c
    trunk/gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_m256.c
    trunk/gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_structs.c
    trunk/gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_unions.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.c
    trunk/gcc/testsuite/ChangeLog

Comment 4 H.J. Lu 2009-02-10 14:38:09 UTC
Fixed.
Comment 5 H.J. Lu 2009-02-10 14:38:23 UTC
Fixed.