--- gcc/config/i386/i386.c.jj	2011-11-07 08:32:09.000000000 -1100
+++ gcc/config/i386/i386.c	2011-11-07 19:19:57.000000000 -1100
@@ -37881,9 +37881,9 @@ ix86_preferred_simd_mode (enum machine_m
     case HImode:
       return TARGET_AVX2 ? V16HImode : V8HImode;
     case SImode:
-      return TARGET_AVX2 ? V8SImode : V4SImode;
+      return (TARGET_AVX && !TARGET_PREFER_AVX128) ? V8SImode : V4SImode;
     case DImode:
-      return TARGET_AVX2 ? V4DImode : V2DImode;
+      return (TARGET_AVX && !TARGET_PREFER_AVX128) ? V4DImode : V2DImode;
 
     case SFmode:
       if (TARGET_AVX && !TARGET_PREFER_AVX128)
