Don't assert unaligned 256bit load/store.
authorH.J. Lu <hongjiu.lu@intel.com>
Mon, 28 Mar 2011 02:49:34 +0000 (02:49 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Mon, 28 Mar 2011 02:49:34 +0000 (19:49 -0700)
2011-03-27  H.J. Lu  <hongjiu.lu@intel.com>

* config/i386/sse.md (*avx_mov<mode>_internal): Don't assert
unaligned 256bit load/store.
(*avx_movu<ssemodesuffix><avxmodesuffix>): Likewise.
(*avx_movdqu<avxmodesuffix>): Likewise.

From-SVN: r171590

gcc/ChangeLog
gcc/config/i386/sse.md

index d8bf12e4d349c9d8bf92359b331883fc7d782ba9..e9166cf4e935a3a0569f5677c80dbc602466e1e7 100644 (file)
@@ -1,3 +1,10 @@
+2011-03-27  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/sse.md (*avx_mov<mode>_internal): Don't assert
+       unaligned 256bit load/store.
+       (*avx_movu<ssemodesuffix><avxmodesuffix>): Likewise.
+       (*avx_movdqu<avxmodesuffix>): Likewise.
+
 2011-03-27  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR bootstrap/48307
index de11f7362ec7f47521273d3930a8094e370aa98f..4c22bc5df68ea3ea4b600983aa6a2eeee7c7235f 100644 (file)
       return standard_sse_constant_opcode (insn, operands[1]);
     case 1:
     case 2:
-      if (GET_MODE_ALIGNMENT (<MODE>mode) == 256
-         && ((TARGET_AVX256_SPLIT_UNALIGNED_STORE
-              && misaligned_operand (operands[0], <MODE>mode))
-             || (TARGET_AVX256_SPLIT_UNALIGNED_LOAD
-                 && misaligned_operand (operands[1], <MODE>mode))))
-       gcc_unreachable ();
       switch (get_attr_mode (insn))
         {
        case MODE_V8SF:
          UNSPEC_MOVU))]
   "AVX_VEC_FLOAT_MODE_P (<MODE>mode)
    && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
-{
-  if (GET_MODE_ALIGNMENT (<MODE>mode) == 256
-      && ((TARGET_AVX256_SPLIT_UNALIGNED_STORE
-          && misaligned_operand (operands[0], <MODE>mode))
-         || (TARGET_AVX256_SPLIT_UNALIGNED_LOAD
-             && misaligned_operand (operands[1], <MODE>mode))))
-    gcc_unreachable ();
-  return "vmovu<ssemodesuffix>\t{%1, %0|%0, %1}";
-}
+  "vmovu<ssemodesuffix>\t{%1, %0|%0, %1}"
   [(set_attr "type" "ssemov")
    (set_attr "movu" "1")
    (set_attr "prefix" "vex")
          [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "xm,x")]
          UNSPEC_MOVU))]
   "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
-{
-  if (GET_MODE_ALIGNMENT (<MODE>mode) == 256
-      && ((TARGET_AVX256_SPLIT_UNALIGNED_STORE
-          && misaligned_operand (operands[0], <MODE>mode))
-         || (TARGET_AVX256_SPLIT_UNALIGNED_LOAD
-             && misaligned_operand (operands[1], <MODE>mode))))
-    gcc_unreachable ();
-  return "vmovdqu\t{%1, %0|%0, %1}";
-}
+  "vmovdqu\t{%1, %0|%0, %1}"
   [(set_attr "type" "ssemov")
    (set_attr "movu" "1")
    (set_attr "prefix" "vex")