diff options
author | rearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-07 11:24:11 +0000 |
---|---|---|
committer | rearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-07 11:24:11 +0000 |
commit | d51f92df9d93481509f4e372ab0f38eaba94af4b (patch) | |
tree | 8588996f87869b15eb7ed84df12df651ae3e5086 /gcc/config/arm/vfp.md | |
parent | 8fa4ef5a79d145889399fe868366f69e390b0d5f (diff) | |
download | gcc-d51f92df9d93481509f4e372ab0f38eaba94af4b.tar.gz |
* arm.c (arm_const_double_inline_cost): Handle any constant by
using gen_lowpart and gen_highpart_mode.
(note_invalid_constants): All constants in an RTX with a constraint
that permits memory are now pushed to the constant pool.
(output_move_double): Delete code to handle reg to reg and
constant to reg moves.
(const_double_needs_minipool, output_mov_immediate): Delete.
* arm.h (EXTRA_CONSTRAINT_STR_ARM): All 'D' variants now handle
CONST_INT and CONST_VECTOR.
* arm.md (ANY64): New mode macro.
(arm_movdi): Split reg-reg and const-reg moves. Simplify constraints.
(movdf_soft_insn): Split reg-reg and const-reg moves.
(split patterns for 64-bit constant and register moves): New.
* cirrus.md (cirrus_arm_movdi): Split reg-reg and const-reg moves.
(cirrus_movdf_hard_insn): Likewise.
* fpa.md (movdf_fpa): Likewise.
* iwmmxt.md (iwmmxt_arm_movdi): Likewise.
(movv8qi_internal, movv4hi_internal, movv2si_internal): Fix
constraints.
(movv2si_internal_2): Likewise.
* vfp.md (arm_movdi_vfp): Split reg-reg and const-reg moves.
(movdf_vfp): Likewise.
* arm-protos.h (output_mov_immediate): Delete prototype.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97778 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm/vfp.md')
-rw-r--r-- | gcc/config/arm/vfp.md | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index fb20dd19760..4086a5c6643 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -142,8 +142,11 @@ "* switch (which_alternative) { - case 0: case 1: case 2: - return (output_move_double (operands)); + case 0: + return \"#\"; + case 1: + case 2: + return output_move_double (operands); case 3: return \"fmdrr%?\\t%P0, %1\\t%@ int\"; case 4: @@ -203,7 +206,7 @@ return \"fmdrr%?\\t%P0, %Q1, %R1\"; case 1: return \"fmrrd%?\\t%Q0, %R0, %P1\"; - case 2: case 3: case 7: + case 2: case 3: return output_move_double (operands); case 4: return \"fldd%?\\t%P0, %1\"; @@ -211,6 +214,8 @@ return \"fstd%?\\t%P1, %0\"; case 6: return \"fcpyd%?\\t%P0, %P1\"; + case 7: + return \"#\"; default: abort (); } |