Add cmptf missed in patch.
authorDavid Edelsohn <edelsohn@gnu.org>
Wed, 21 Nov 2001 02:18:58 +0000 (02:18 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Wed, 21 Nov 2001 02:18:58 +0000 (21:18 -0500)
From-SVN: r47230

gcc/ChangeLog
gcc/config/rs6000/rs6000.md

index 417b2f9d6b2cc5a75628eb15bb70d090dbe0c57d..59dae4e7276e8ee10cdc2c1c6e8c95f183dec359 100644 (file)
@@ -97,7 +97,7 @@ Tue Nov 20 11:56:12 2001  Douglas B. Rupp  <rupp@gnat.com>
        * rs6000.h: ... to here.
        * rs6000.md (movtf, extenddftf2, extendsftf2, trunctfdf2,
        trunctfsf2, floatditf2, floatsitf2, fix_trunctfdi2,
-       fix_trunctfsi2, negtf2, abstf2, nabstf2): New patterns.
+       fix_trunctfsi2, negtf2, abstf2, nabstf2, cmptf): New patterns.
 
 Tue Nov 20 06:41:38 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
index 174d3e6c17072e02bc166f0c50fec2e594525db7..33c7d09f2ea447fcbcc97f744fff7e063fda8865 100644 (file)
   DONE;
 }")
 
+(define_expand "cmptf"
+  [(set (cc0) (compare (match_operand:DF 0 "gpc_reg_operand" "")
+                      (match_operand:DF 1 "gpc_reg_operand" "")))]
+
+  "DEFAULT_ABI == ABI_AIX && TARGET_HARD_FLOAT && TARGET_LONG_DOUBLE_128"
+  "
+{
+  rs6000_compare_op0 = operands[0];
+  rs6000_compare_op1 = operands[1];
+  rs6000_compare_fp_p = 1;
+  DONE;
+}")
+
 (define_expand "beq"
   [(use (match_operand 0 "" ""))]
   ""
   "TARGET_HARD_FLOAT"
   "fcmpu %0,%1,%2"
   [(set_attr "type" "fpcompare")])
+
+;; Only need to compare second words if first words equal
+(define_insn "*cmptf_internal1"
+  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
+       (compare:CCFP (match_operand:TF 1 "gpc_reg_operand" "f")
+                     (match_operand:TF 2 "gpc_reg_operand" "f")))]
+  "DEFAULT_ABI == ABI_AIX && TARGET_HARD_FLOAT && TARGET_LONG_DOUBLE_128"
+  "fcmpu %0,%1,%2\;bne %0,%$+4\;fcmpu %0,%L1,%L2"
+  [(set_attr "type" "fpcompare")
+   (set_attr "length" "12")])
 \f
 ;; Now we have the scc insns.  We can do some combinations because of the
 ;; way the machine works.