From d6f99ca42171413fc61e68495c7c55041969347a Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Wed, 21 Nov 2001 02:18:58 +0000 Subject: [PATCH] Add cmptf missed in patch. From-SVN: r47230 --- gcc/ChangeLog | 2 +- gcc/config/rs6000/rs6000.md | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 417b2f9d6b2..59dae4e7276 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -97,7 +97,7 @@ Tue Nov 20 11:56:12 2001 Douglas B. Rupp * 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 diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 174d3e6c170..33c7d09f2ea 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -9917,6 +9917,19 @@ 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 "" ""))] "" @@ -10226,6 +10239,16 @@ "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")]) ;; Now we have the scc insns. We can do some combinations because of the ;; way the machine works. -- 2.30.2