mmx.md ("sse2_umulv1siv2di3"): Rename from "sse2_umulsidi3".
authorUros Bizjak <ubizjak@gmail.com>
Sat, 15 Mar 2008 11:17:05 +0000 (12:17 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Sat, 15 Mar 2008 11:17:05 +0000 (12:17 +0100)
        * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
        "sse2_umulsidi3".  Use V1DI mode for operand 0.
        ("mmx_psadbw"): Use V1DI mode for operand 0.
        * config/i386/i386-modes.def (V1SI): New vector mode.
        * config/i386/i386.c (struct builtin_description)
        [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
        (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
        (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
        (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
        v1di_ftype_v8qi_v8qi type.
        [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.

From-SVN: r133243

gcc/ChangeLog
gcc/config/i386/i386-modes.def
gcc/config/i386/i386.c
gcc/config/i386/mmx.md
gcc/doc/extend.texi

index e640f6cc4c49ddd8a788f093d9ea6bb41bd2d232..36867fc84edead96ac55c7c693bdfa8084684a12 100644 (file)
@@ -1,3 +1,20 @@
+2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
+       "sse2_umulsidi3".  Use V1DI mode for operand 0.
+       ("mmx_psadbw"): Use V1DI mode for operand 0.
+       * config/i386/i386-modes.def (V1SI): New vector mode.
+       * config/i386/i386.c (struct builtin_description)
+       [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
+       (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
+       (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
+       (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
+       v1di_ftype_v8qi_v8qi type.
+       [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
+
+       * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
+       __builtin_ia32_pmuludq]: Fix the mode of return value.
+
 2008-03-15  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/35595
index a23e8203ff383be6585808681a30de063d1871e4..d94b1b929c4a8da0e5ccdd51bd5e2efabc7d0c6f 100644 (file)
@@ -80,6 +80,7 @@ VECTOR_MODES (INT, 16);       /* V16QI V8HI V4SI V2DI */
 VECTOR_MODES (FLOAT, 8);      /*            V4HF V2SF */
 VECTOR_MODES (FLOAT, 16);     /*       V8HF V4SF V2DF */
 VECTOR_MODE (INT, DI, 1);     /*                 V1DI */
+VECTOR_MODE (INT, SI, 1);     /*                 V1SI */
 VECTOR_MODE (INT, QI, 2);     /*                 V2QI */
 VECTOR_MODE (INT, DI, 4);     /*                 V4DI */
 VECTOR_MODE (INT, SI, 8);     /*                 V8SI */
index 74b2be23d9be4b29b5cf95abed57701b48afc6d2..883f226b96839082aaf460eb9997d2a5c955b484 100644 (file)
@@ -18122,7 +18122,7 @@ static const struct builtin_description bdesc_2arg[] =
   { OPTION_MASK_ISA_SSE2, CODE_FOR_umulv8hi3_highpart, "__builtin_ia32_pmulhuw128", IX86_BUILTIN_PMULHUW128, UNKNOWN, 0 },
   { OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_psadbw, 0, IX86_BUILTIN_PSADBW128, UNKNOWN, 0 },
 
-  { OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_umulsidi3, 0, IX86_BUILTIN_PMULUDQ, UNKNOWN, 0 },
+  { OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_umulv1siv1di3, 0, IX86_BUILTIN_PMULUDQ, UNKNOWN, 0 },
   { OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_umulv2siv2di3, 0, IX86_BUILTIN_PMULUDQ128, UNKNOWN, 0 },
 
   { OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_pmaddwd, 0, IX86_BUILTIN_PMADDWD128, UNKNOWN, 0 },
@@ -18826,11 +18826,11 @@ ix86_init_mmx_sse_builtins (void)
   tree v4si_ftype_v8hi_v8hi
     = build_function_type_list (V4SI_type_node,
                                V8HI_type_node, V8HI_type_node, NULL_TREE);
-  tree di_ftype_v8qi_v8qi
-    = build_function_type_list (long_long_unsigned_type_node,
+  tree v1di_ftype_v8qi_v8qi
+    = build_function_type_list (V1DI_type_node,
                                V8QI_type_node, V8QI_type_node, NULL_TREE);
-  tree di_ftype_v2si_v2si
-    = build_function_type_list (long_long_unsigned_type_node,
+  tree v1di_ftype_v2si_v2si
+    = build_function_type_list (V1DI_type_node,
                                V2SI_type_node, V2SI_type_node, NULL_TREE);
   tree v2di_ftype_v16qi_v16qi
     = build_function_type_list (V2DI_type_node,
@@ -19318,7 +19318,7 @@ ix86_init_mmx_sse_builtins (void)
 
   def_builtin (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, "__builtin_ia32_sfence", void_ftype_void, IX86_BUILTIN_SFENCE);
 
-  def_builtin_const (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, "__builtin_ia32_psadbw", di_ftype_v8qi_v8qi, IX86_BUILTIN_PSADBW);
+  def_builtin_const (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, "__builtin_ia32_psadbw", v1di_ftype_v8qi_v8qi, IX86_BUILTIN_PSADBW);
 
   def_builtin_const (OPTION_MASK_ISA_SSE, "__builtin_ia32_rcpps", v4sf_ftype_v4sf, IX86_BUILTIN_RCPPS);
   def_builtin_const (OPTION_MASK_ISA_SSE, "__builtin_ia32_rcpss", v4sf_ftype_v4sf, IX86_BUILTIN_RCPSS);
@@ -19422,7 +19422,7 @@ ix86_init_mmx_sse_builtins (void)
   def_builtin (OPTION_MASK_ISA_SSE2, "__builtin_ia32_loaddqu", v16qi_ftype_pcchar, IX86_BUILTIN_LOADDQU);
   def_builtin (OPTION_MASK_ISA_SSE2, "__builtin_ia32_storedqu", void_ftype_pchar_v16qi, IX86_BUILTIN_STOREDQU);
 
-  def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_pmuludq", di_ftype_v2si_v2si, IX86_BUILTIN_PMULUDQ);
+  def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_pmuludq", v1di_ftype_v2si_v2si, IX86_BUILTIN_PMULUDQ);
   def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_pmuludq128", v2di_ftype_v4si_v4si, IX86_BUILTIN_PMULUDQ128);
 
   def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_pslldqi128", v2di_ftype_v2di_int, IX86_BUILTIN_PSLLDQI128);
index 1d2a41dd114725d93ebe9ce4cad34b5aa5756f63..2238a3ffd14000a6e9ba1b4c9499ee51207afcd3 100644 (file)
   [(set_attr "type" "mmxmul")
    (set_attr "mode" "DI")])
 
-(define_insn "sse2_umulsidi3"
-  [(set (match_operand:DI 0 "register_operand" "=y")
-        (mult:DI
-         (zero_extend:DI
-           (vec_select:SI
+(define_insn "sse2_umulv1siv1di3"
+  [(set (match_operand:V1DI 0 "register_operand" "=y")
+        (mult:V1DI
+         (zero_extend:V1DI
+           (vec_select:V1SI
              (match_operand:V2SI 1 "nonimmediate_operand" "%0")
              (parallel [(const_int 0)])))
-         (zero_extend:DI
-           (vec_select:SI
+         (zero_extend:V1DI
+           (vec_select:V1SI
              (match_operand:V2SI 2 "nonimmediate_operand" "ym")
              (parallel [(const_int 0)])))))]
   "TARGET_SSE2 && ix86_binary_operator_ok (MULT, V2SImode, operands)"
    (set_attr "mode" "DI")])
 
 (define_insn "mmx_psadbw"
-  [(set (match_operand:DI 0 "register_operand" "=y")
-        (unspec:DI [(match_operand:V8QI 1 "register_operand" "0")
-                   (match_operand:V8QI 2 "nonimmediate_operand" "ym")]
-                  UNSPEC_PSADBW))]
+  [(set (match_operand:V1DI 0 "register_operand" "=y")
+        (unspec:V1DI [(match_operand:V8QI 1 "register_operand" "0")
+                     (match_operand:V8QI 2 "nonimmediate_operand" "ym")]
+                    UNSPEC_PSADBW))]
   "TARGET_SSE || TARGET_3DNOW_A"
   "psadbw\t{%2, %0|%0, %2}"
   [(set_attr "type" "mmxshft")
index 53ec6efa6177e866412ce7d3b00d7da12e85271f..26a8e70b7fa7a2c2568067087735d0a41edfd52e 100644 (file)
@@ -7505,7 +7505,7 @@ instruction that is part of the name.
 v4hi __builtin_ia32_pmulhuw (v4hi, v4hi)
 v8qi __builtin_ia32_pavgb (v8qi, v8qi)
 v4hi __builtin_ia32_pavgw (v4hi, v4hi)
-v4hi __builtin_ia32_psadbw (v8qi, v8qi)
+v1di __builtin_ia32_psadbw (v8qi, v8qi)
 v8qi __builtin_ia32_pmaxub (v8qi, v8qi)
 v4hi __builtin_ia32_pmaxsw (v4hi, v4hi)
 v8qi __builtin_ia32_pminub (v8qi, v8qi)
@@ -7753,7 +7753,7 @@ void __builtin_ia32_lfence (void)
 void __builtin_ia32_mfence (void)
 v16qi __builtin_ia32_loaddqu (const char *)
 void __builtin_ia32_storedqu (char *, v16qi)
-unsigned long long __builtin_ia32_pmuludq (v2si, v2si)
+v1di __builtin_ia32_pmuludq (v2si, v2si)
 v2di __builtin_ia32_pmuludq128 (v4si, v4si)
 v8hi __builtin_ia32_psllw128 (v8hi, v8hi)
 v4si __builtin_ia32_pslld128 (v4si, v4si)