On Wed, Aug 26, 2020 at 10:46:37PM -0400, Michael Meissner wrote: > diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md > index 2709e46f7e5..60b45601e9b 100644 > --- a/gcc/config/rs6000/predicates.md > +++ b/gcc/config/rs6000/predicates.md > @@ -1225,6 +1225,11 @@ (define_predicate "fpmask_comparison_operator" > (define_predicate "invert_fpmask_comparison_operator" > (match_code "ne,unlt,unle")) > > +;; Return 1 if OP is either a fpmask_comparison_operator or > +;; invert_fpmask_comparsion_operator. > +(define_predicate "fpmask_normal_or_invert_operator" > + (match_code "eq,gt,ge,ne,unlt,unle"))
Keep "comparison" in the name? Maybe "any_fpmask_comparison_operator", we have other things named in that scheme already. > --- a/gcc/config/rs6000/rs6000.c > +++ b/gcc/config/rs6000/rs6000.c > @@ -15177,6 +15177,10 @@ have_compare_and_set_mask (machine_mode mode) > case DFmode: > return TARGET_P9_MINMAX; > > + case KFmode: > + case TFmode: > + return FLOAT128_IEEE_MINMAX_P (mode); That needs the E_ stuff as well. > +;; Secondary iterator for scalar binary floating point operations. This is > +;; used for the conditional moves when we have a compare and set mask > +;; instruction. Using this instruction allows us to do a conditional move > +;; where the comparison type might be different from the values being moved. > +(define_mode_iterator FSCALAR2 [SF > + DF > + (KF "FLOAT128_IEEE_MINMAX_P (KFmode)") > + (TF "FLOAT128_IEEE_MINMAX_P (TFmode)")]) Needs a name change just like FSCALAR. Maybe BFP? Or better, just FP, and rename the current FP to something else (it is only used for cstore and cbranch, it should use a much less generic name there). Please cut down the comment. See GPR/GPR2 for example: ; This mode iterator allows :GPR to be used to indicate the allowable size ; of whole values in GPRs. (define_mode_iterator GPR [SI (DI "TARGET_POWERPC64")]) ; And again, for patterns that need two (potentially) different integer modes. (define_mode_iterator GPR2 [SI (DI "TARGET_POWERPC64")]) It should not talk about an example where it is used: it can much easier say something much more generic! (And then send a patch first doing FP just as SFDF and replacing it where we want it; and then a later patch adding KF. That way, your patch might be readable!) Thanks, Segher