ia64.c (ia64_scalar_mode_supported_p): New.
authorSteve Ellcey <sje@cup.hp.com>
Mon, 13 Sep 2004 20:34:55 +0000 (20:34 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Mon, 13 Sep 2004 20:34:55 +0000 (20:34 +0000)
* config/ia64/ia64.c (ia64_scalar_mode_supported_p): New.
(TARGET_SCALAR_MODE_SUPPORTED_P): New.

From-SVN: r87448

gcc/ChangeLog
gcc/config/ia64/ia64.c

index fa5832f1038f38ec36c929b1c6ef9fa8f48690e0..31e7739384f4f2b5795cf4775b97696bfcc5a93d 100644 (file)
@@ -1,3 +1,8 @@
+2004-09-13  Steve Ellcey  <sje@cup.hp.com>
+
+       * config/ia64/ia64.c (ia64_scalar_mode_supported_p): New.
+       (TARGET_SCALAR_MODE_SUPPORTED_P): New.
+
 2004-09-13  Richard Henderson  <rth@redhat.com>
 
        PR 17436
index df4487ab513368f85e6ea9c16cb3664be0e62492..b85e1c2be117865c98c894759a12afdbaa3af950 100644 (file)
@@ -276,6 +276,7 @@ static tree ia64_handle_model_attribute (tree *, tree, tree, int, bool *);
 static void ia64_encode_section_info (tree, rtx, int);
 static rtx ia64_struct_value_rtx (tree, int);
 static tree ia64_gimplify_va_arg (tree, tree, tree *, tree *);
+static bool ia64_scalar_mode_supported_p (enum machine_mode mode);
 
 \f
 /* Table of valid machine attributes.  */
@@ -416,6 +417,9 @@ static const struct attribute_spec ia64_attribute_table[] =
 #undef TARGET_UNWIND_EMIT
 #define TARGET_UNWIND_EMIT process_for_unwind_directive
 
+#undef TARGET_SCALAR_MODE_SUPPORTED_P
+#define TARGET_SCALAR_MODE_SUPPORTED_P ia64_scalar_mode_supported_p
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 \f
 typedef enum
@@ -8478,4 +8482,29 @@ ia64_struct_value_rtx (tree fntype,
   return gen_rtx_REG (Pmode, GR_REG (8));
 }
 
+static bool
+ia64_scalar_mode_supported_p (enum machine_mode mode)
+{
+  switch (mode)
+    {
+    case QImode:
+    case HImode:
+    case SImode:
+    case DImode:
+    case TImode:
+      return true;
+
+    case SFmode:
+    case DFmode:
+    case XFmode:
+      return true;
+
+    case TFmode:
+      return TARGET_HPUX;
+
+    default:
+      return false;
+    }
+}
+
 #include "gt-ia64.h"