aboutsummaryrefslogtreecommitdiff
path: root/gcc/target.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-08-26 00:24:37 +0000
committerRichard Henderson <rth@redhat.com>2004-08-26 00:24:37 +0000
commit769c3a19b31ee9021a467aef4ad01c57d8535d04 (patch)
tree16040afedbe7456a6d5be99edc239c4efcbd88c1 /gcc/target.h
parent4ef6fd9e71fd4c4305efe76a8ab5d45f793ecdee (diff)
* target-def.h (TARGET_SCALAR_MODE_SUPPORTED_P): New.
* target.h (struct gcc_target): Add scalar_mode_supported_p. * targhooks.c (default_scalar_mode_supported_p): New. * targhooks.h (default_scalar_mode_supported_p): Declare. * doc/tm.texi (TARGET_SCALAR_MODE_SUPPORTED_P): Document. * c-common.c (handle_mode_attribute): Query scalar_mode_supported_p before attempting to create types. Tidy. * expr.c (vector_mode_valid_p): Use scalar_mode_supported_p. * config/alpha/alpha.c (alpha_scalar_mode_supported_p): New. (TARGET_SCALAR_MODE_SUPPORTED_P): New. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@86593 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/target.h')
-rw-r--r--gcc/target.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/target.h b/gcc/target.h
index 2c3798eaa5d..27e4086129e 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -381,7 +381,14 @@ struct gcc_target
/* True if MODE is valid for a pointer in __attribute__((mode("MODE"))). */
bool (* valid_pointer_mode) (enum machine_mode mode);
- /* True if MODE is valid for a vector. */
+ /* True if MODE is valid for the target. By "valid", we mean able to
+ be manipulated in non-trivial ways. In particular, this means all
+ the arithmetic is supported. */
+ bool (* scalar_mode_supported_p) (enum machine_mode mode);
+
+ /* Similarly for vector modes. "Supported" here is less strict. At
+ least some operations are supported; need to check optabs or builtins
+ for further details. */
bool (* vector_mode_supported_p) (enum machine_mode mode);
/* True if a vector is opaque. */