Enable autoinlining for size at O2

Jan Hubicka jh@suse.cz
Wed Sep 5 15:49:00 GMT 2007


> 
> This patch [1] introduces new testsuite failures on i686-pc-linux-gnu
> (sse3 capable CPU is needed for these runtime tests, that is the
> reason you didn't get these failures in your testing):
> 
> Running /home/uros/gcc-svn/trunk/gcc/testsuite/gcc.target/i386/i386.exp ...
> FAIL: gcc.target/i386/sse3-addsubpd.c execution test
> FAIL: gcc.target/i386/sse3-haddpd.c execution test
> FAIL: gcc.target/i386/sse3-hsubpd.c execution test
> 
> [1] http://gcc.gnu.org/ml/gcc-cvs/2007-09/msg00086.html

The problem does not reproduce for me (my notebook is SSE3 but for some
reason the testcase works just fine in both 32bit and 64bit.  One place
that strikes wrong is the aligned access.  Can you please check if the
attached patch fix the problem for you and if not how the testcase is
failing?

Honza

Index: testsuite/gcc.target/i386/sse3-hsubpd.c
===================================================================
*** testsuite/gcc.target/i386/sse3-hsubpd.c	(revision 128125)
--- testsuite/gcc.target/i386/sse3-hsubpd.c	(working copy)
*************** sse3_test_hsubpd (double *i1, double *i2
*** 19,26 ****
  static void
  sse3_test_hsubpd_subsume (double *i1, double *i2, double *r)
  {
!   __m128d t1 = _mm_load_pd (i1);
!   __m128d t2 = _mm_load_pd (i2);
  
    t1 = _mm_hsub_pd (t1, t2);
  
--- 19,26 ----
  static void
  sse3_test_hsubpd_subsume (double *i1, double *i2, double *r)
  {
!   __m128d t1 = _mm_loadu_pd (i1);
!   __m128d t2 = _mm_loadu_pd (i2);
  
    t1 = _mm_hsub_pd (t1, t2);
  
Index: testsuite/gcc.target/i386/sse3-haddpd.c
===================================================================
*** testsuite/gcc.target/i386/sse3-haddpd.c	(revision 128125)
--- testsuite/gcc.target/i386/sse3-haddpd.c	(working copy)
*************** sse3_test_haddpd (double *i1, double *i2
*** 19,26 ****
  static void
  sse3_test_haddpd_subsume (double *i1, double *i2, double *r)
  {
!   __m128d t1 = _mm_load_pd (i1);
!   __m128d t2 = _mm_load_pd (i2);
  
    t1 = _mm_hadd_pd (t1, t2);
  
--- 19,26 ----
  static void
  sse3_test_haddpd_subsume (double *i1, double *i2, double *r)
  {
!   __m128d t1 = _mm_loadu_pd (i1);
!   __m128d t2 = _mm_loadu_pd (i2);
  
    t1 = _mm_hadd_pd (t1, t2);
  
Index: testsuite/gcc.target/i386/sse3-addsubpd.c
===================================================================
*** testsuite/gcc.target/i386/sse3-addsubpd.c	(revision 128125)
--- testsuite/gcc.target/i386/sse3-addsubpd.c	(working copy)
*************** sse3_test_addsubpd (double *i1, double *
*** 19,26 ****
  static void
  sse3_test_addsubpd_subsume (double *i1, double *i2, double *r)
  {
!   __m128d t1 = _mm_load_pd (i1);
!   __m128d t2 = _mm_load_pd (i2);
  
    t1 = _mm_addsub_pd (t1, t2);
  
--- 19,26 ----
  static void
  sse3_test_addsubpd_subsume (double *i1, double *i2, double *r)
  {
!   __m128d t1 = _mm_loadu_pd (i1);
!   __m128d t2 = _mm_loadu_pd (i2);
  
    t1 = _mm_addsub_pd (t1, t2);
  



More information about the Gcc-patches mailing list