aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/sparc/sparc.h
diff options
context:
space:
mode:
authorJames A. Morrison <phython@gcc.gnu.org>2004-11-09 17:06:03 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2004-11-09 17:06:03 +0000
commitc75d6010b052d367dbd4b53c7615e09cf4f1bf5a (patch)
tree674046a0364c024f7b74eb9076fb8b241aec8ad0 /gcc/config/sparc/sparc.h
parent26a8930190b8a1e9f7afb866870e85ec48c7b9be (diff)
downloadgcc-c75d6010b052d367dbd4b53c7615e09cf4f1bf5a.zip
gcc-c75d6010b052d367dbd4b53c7615e09cf4f1bf5a.tar.gz
gcc-c75d6010b052d367dbd4b53c7615e09cf4f1bf5a.tar.bz2
re PR target/18230 (SPARC VIS instructions are not generated by GCC)
PR target/18230 * doc/md.texi (SPARC constraints): Document 'Y' constraint. * config/sparc/sparc-modes.def: Add vector modes of 4 and 8 bytes. * config/sparc/sparc.c (sparc_vector_mode_supported_p): New function. (TARGET_VECTOR_MODE_SUPPORTED_P): Set to sparc_vector_mode_supported_p. (fp_zero_operand): Accept MODE_VECTOR_INT modes. (input_operand): Accept CONST_VECTOR with MODE_VECTOR_INT modes. (sparc_cannot_force_const_mem): Return false for CONST_VECTOR. (sparc_init_modes): Set sparc_mode_class to SF_MODE or DF_MODE for MODE_VECTOR_INT modes. (sparc_extra_constraint_check): Add new constraint 'Y'. * config/sparc/sparc.h: Define UNITS_PER_SIMD_WORD to 8 for TARGET_VIS. * config/sparc/sparc.md (V32): New mode macro for 32-bit modes. (V64): New mode macro for 64-bit modes. (movsf): Use V32 for mode instead of SF. (movsf_insn_vis): Use V32 for mode instead of SF. Add 'Y' constraint alongside 'G' constraint. (movdf): Use V64 for mode instead of DF. (movdf_insn_v9only_vis, modf_insn_sp64_vis): Use V64 for mode instead of DF. Add 'Y' constraint alongside 'G' constraint. (multi-isn and misaligned mems DFmode splitters): Use V64 for mode instead of DF. Co-Authored-By: Eric Botcazou <ebotcazou@libertysurf.fr> From-SVN: r90348
Diffstat (limited to 'gcc/config/sparc/sparc.h')
-rw-r--r--gcc/config/sparc/sparc.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index d1b93ec..37f1905 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -769,6 +769,8 @@ extern struct sparc_cpu_select sparc_select[];
#define MIN_UNITS_PER_WORD 4
#endif
+#define UNITS_PER_SIMD_WORD (TARGET_VIS ? 8 : 0)
+
/* Now define the sizes of the C data types. */
#define SHORT_TYPE_SIZE 16
@@ -2042,7 +2044,9 @@ do { \
integer register, needed for ldd/std instructions.
'W' handles the memory operand when moving operands in/out
- of 'e' constraint floating point registers. */
+ of 'e' constraint floating point registers.
+
+ 'Y' handles the zero vector constant. */
#ifndef REG_OK_STRICT