aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1994-02-20 13:47:37 -0800
committerJim Wilson <wilson@gcc.gnu.org>1994-02-20 13:47:37 -0800
commit64d8baf943c81f686041e379447431eab3f0a2b1 (patch)
treecb17d3109a62f1acc5e920186e544c01375260b3
parent3005527fb157e5f2f3cf075f9d0a03424011485d (diff)
downloadgcc-64d8baf943c81f686041e379447431eab3f0a2b1.zip
gcc-64d8baf943c81f686041e379447431eab3f0a2b1.tar.gz
gcc-64d8baf943c81f686041e379447431eab3f0a2b1.tar.bz2
(movdf_internal1): Disable if TARGET_FLOAT64 != TARGET_64BIT.
(movdf_internal1a): New pattern. From-SVN: r6595
-rw-r--r--gcc/config/mips/mips.md17
1 files changed, 16 insertions, 1 deletions
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 60a4caa..f313eb2 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -2983,7 +2983,7 @@ move\\t%0,%z4\\n\\
(define_insn "movdf_internal1"
[(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,f,R,o,f,*f,*d,*d,*d,*d,*R,*o")
(match_operand:DF 1 "general_operand" "f,R,o,fG,fG,F,*d,*f,*d*G,*R,*o*F,*d,*d"))]
- "TARGET_HARD_FLOAT
+ "TARGET_HARD_FLOAT && !(TARGET_FLOAT64 && !TARGET_64BIT)
&& (register_operand (operands[0], DFmode)
|| register_operand (operands[1], DFmode)
|| (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0)
@@ -2993,6 +2993,21 @@ move\\t%0,%z4\\n\\
(set_attr "mode" "DF")
(set_attr "length" "1,2,4,2,4,4,2,2,2,2,4,2,4")])
+(define_insn "movdf_internal1a"
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,R,R,o,o,f,*d,*d,*d,*o,*R")
+ (match_operand:DF 1 "general_operand" " f,o,f,G,f,G,F,*F,*o,*R,*d,*d"))]
+ "TARGET_HARD_FLOAT && (TARGET_FLOAT64 && !TARGET_64BIT)
+ && (register_operand (operands[0], DFmode)
+ || register_operand (operands[1], DFmode))
+ || (GET_CODE (operands [0]) == MEM
+ && ((GET_CODE (operands[1]) == CONST_INT
+ && INTVAL (operands[1]) == 0)
+ || operands[1] == CONST0_RTX (DFmode)))"
+ "* return mips_move_2words (operands, insn); "
+ [(set_attr "type" "move,load,store,store,store,store,load,load,load,load,store,store")
+ (set_attr "mode" "DF")
+ (set_attr "length" "1,2,1,1,2,2,2,2,2,1,2,1")])
+
(define_insn "movdf_internal2"
[(set (match_operand:DF 0 "nonimmediate_operand" "=d,d,d,R,o")
(match_operand:DF 1 "general_operand" "dG,R,oF,d,d"))]