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]

PATCH: PR target/39261: _mm256_set_epi64x failed on 32bit


V4DI AVX insns are only available in 64bit mode. We shouldn't
use them in 32bit.  OK for trunk?

Thanks.


H.J.
----
2008-02-21  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/39261
	* config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
	ix86_expand_vector_set for V4DImode in 64bit mode only.
	(ix86_expand_vector_init_one_var): Likewise.

--- gcc/config/i386/i386.c.m256	2009-02-21 09:12:56.000000000 -0800
+++ gcc/config/i386/i386.c	2009-02-21 10:53:08.000000000 -0800
@@ -27143,10 +27143,13 @@ ix86_expand_vector_init_one_nonzero (boo
     case V16HImode:
     case V8SImode:
     case V8SFmode:
-    case V4DImode:
     case V4DFmode:
       use_vector_set = TARGET_AVX;
       break;
+    case V4DImode:
+      /* Use ix86_expand_vector_set in 64bit mode only.  */
+      use_vector_set = TARGET_AVX && TARGET_64BIT;
+      break;
     default:
       break;
     }
@@ -27285,8 +27288,11 @@ ix86_expand_vector_init_one_var (bool mm
 	 the general case.  */
       return false;
 
-    case V4DFmode:
     case V4DImode:
+      /* Use ix86_expand_vector_set in 64bit mode only.  */
+      if (!TARGET_64BIT)
+	return false;
+    case V4DFmode:
     case V8SFmode:
     case V8SImode:
     case V16HImode:


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