From 08993ffb5277066fcdb082fdb9a03bdbabd766a6 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Fri, 5 Oct 2018 19:07:17 +0200 Subject: [PATCH] i386.md (*cmpxf_i387): Change operand 2 predicate to reg_or_0_operand. * config/i386/i386.md (*cmpxf_i387): Change operand 2 predicate to reg_or_0_operand. Add "C" constraint. (*cmpxf_cc_i387): Ditto. (*cmp_i387): Change operand 2 predicate to nonimm_or_0_operand. Add "C" constraint. (*cmp_cc_i387): Ditto. (*cmp_0_i387): Remove insn pattern. (*cmp_0_cc_i387): Ditto. From-SVN: r264879 --- gcc/ChangeLog | 11 +++++++++++ gcc/config/i386/i386.md | 42 ++++------------------------------------- 2 files changed, 15 insertions(+), 38 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ad39b839694..3451e7bae25 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2018-10-05 Uros Bizjak + + * config/i386/i386.md (*cmpxf_i387): Change operand 2 predicate + to reg_or_0_operand. Add "C" constraint. + (*cmpxf_cc_i387): Ditto. + (*cmp_i387): Change operand 2 predicate + to nonimm_or_0_operand. Add "C" constraint. + (*cmp_cc_i387): Ditto. + (*cmp_0_i387): Remove insn pattern. + (*cmp_0_cc_i387): Ditto. + 2018-10-05 Uros Bizjak * config/i386/constraints.md ("C"): Do not depend on TARGET_SSE. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index b8d4589bd0c..d7afb6a0bda 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1461,52 +1461,18 @@ DONE; }) - ;; FP compares, step 1: ;; Set the FP condition codes and move fpsr to ax. ;; We may not use "#" to split and emit these ;; due to reg-stack pops killing fpsr. -(define_insn "*cmp_0_i387" - [(set (match_operand:HI 0 "register_operand" "=a") - (unspec:HI - [(compare:CCFP - (match_operand:X87MODEF 1 "register_operand" "f") - (match_operand:X87MODEF 2 "const0_operand"))] - UNSPEC_FNSTSW))] - "TARGET_80387" - "* return output_fp_compare (insn, operands, false, false);" - [(set_attr "type" "multi") - (set_attr "unit" "i387") - (set_attr "mode" "")]) - -(define_insn_and_split "*cmp_0_cc_i387" - [(set (reg:CCFP FLAGS_REG) - (compare:CCFP - (match_operand:X87MODEF 1 "register_operand" "f") - (match_operand:X87MODEF 2 "const0_operand"))) - (clobber (match_operand:HI 0 "register_operand" "=a"))] - "TARGET_80387 && TARGET_SAHF && !TARGET_CMOVE" - "#" - "&& reload_completed" - [(set (match_dup 0) - (unspec:HI - [(compare:CCFP (match_dup 1)(match_dup 2))] - UNSPEC_FNSTSW)) - (set (reg:CC FLAGS_REG) - (unspec:CC [(match_dup 0)] UNSPEC_SAHF))] - "" - [(set_attr "type" "multi") - (set_attr "unit" "i387") - (set_attr "mode" "")]) - (define_insn "*cmpxf_i387" [(set (match_operand:HI 0 "register_operand" "=a") (unspec:HI [(compare:CCFP (match_operand:XF 1 "register_operand" "f") - (match_operand:XF 2 "register_operand" "f"))] + (match_operand:XF 2 "reg_or_0_operand" "fC"))] UNSPEC_FNSTSW))] "TARGET_80387" "* return output_fp_compare (insn, operands, false, false);" @@ -1518,7 +1484,7 @@ [(set (reg:CCFP FLAGS_REG) (compare:CCFP (match_operand:XF 1 "register_operand" "f") - (match_operand:XF 2 "register_operand" "f"))) + (match_operand:XF 2 "reg_or_0_operand" "fC"))) (clobber (match_operand:HI 0 "register_operand" "=a"))] "TARGET_80387 && TARGET_SAHF && !TARGET_CMOVE" "#" @@ -1539,7 +1505,7 @@ (unspec:HI [(compare:CCFP (match_operand:MODEF 1 "register_operand" "f") - (match_operand:MODEF 2 "nonimmediate_operand" "fm"))] + (match_operand:MODEF 2 "nonimm_or_0_operand" "fmC"))] UNSPEC_FNSTSW))] "TARGET_80387" "* return output_fp_compare (insn, operands, false, false);" @@ -1551,7 +1517,7 @@ [(set (reg:CCFP FLAGS_REG) (compare:CCFP (match_operand:MODEF 1 "register_operand" "f") - (match_operand:MODEF 2 "nonimmediate_operand" "fm"))) + (match_operand:MODEF 2 "nonimm_or_0_operand" "fmC"))) (clobber (match_operand:HI 0 "register_operand" "=a"))] "TARGET_80387 && TARGET_SAHF && !TARGET_CMOVE" "#" -- 2.30.2