summaryrefslogtreecommitdiff
path: root/gcc/config/arm/vfp.md
diff options
context:
space:
mode:
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-07 11:24:11 +0000
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-07 11:24:11 +0000
commitd51f92df9d93481509f4e372ab0f38eaba94af4b (patch)
tree8588996f87869b15eb7ed84df12df651ae3e5086 /gcc/config/arm/vfp.md
parent8fa4ef5a79d145889399fe868366f69e390b0d5f (diff)
downloadgcc-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.md11
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 ();
}