Hi, On 2/6/2022 上午 5:01, Segher Boessenkool wrote: > Hi! > > Some more nitpicking... > > On Wed, May 18, 2022 at 04:52:26PM +0800, HAO CHEN GUI wrote: >> const double __builtin_vsx_xsmaxdp (double, double); >> - XSMAXDP smaxdf3 {} >> + XSMAXDP fmaxdf3 {} >> >> const double __builtin_vsx_xsmindp (double, double); >> - XSMINDP smindf3 {} >> + XSMINDP fmindf3 {} > > Are s{min,max}df3 still used after this?
Expands reduc_s[min|max]_scal are still using s[min|max]df3. OPTAB_D (reduc_smax_scal_optab, "reduc_smax_scal_$a") OPTAB_D (reduc_smin_scal_optab, "reduc_smin_scal_$a") Also we could implement reduc_f[min|max]_scal after committing this patch. Thanks. Gui Haochen > >> + UNSPEC_FMAX >> + UNSPEC_FMIN > > Pity we have to do this as an unspec still, this should be handled by > some generic code, with some new operator (fmin/fmax would be obvious > names :-) ) > >> +(define_insn "f<minmax_op><mode>3" >> + [(set (match_operand:SFDF 0 "vsx_register_operand" "=wa") >> + (unspec:SFDF [(match_operand:SFDF 1 "vsx_register_operand" "wa") >> + (match_operand:SFDF 2 "vsx_register_operand" "wa")] >> + FMINMAX))] >> +"TARGET_VSX" >> +"xs<minmax_op>dp %x0,%x1,%x2" >> +[(set_attr "type" "fp")] >> +) > > Indentation is broken here, correct is > > (define_insn "f<minmax_op><mode>3" > [(set (match_operand:SFDF 0 "vsx_register_operand" "=wa") > (unspec:SFDF [(match_operand:SFDF 1 "vsx_register_operand" "wa") > (match_operand:SFDF 2 "vsx_register_operand" "wa")] > FMINMAX))] > "TARGET_VSX" > "xs<minmax_op>dp %x0,%x1,%x2" > [(set_attr "type" "fp")]) > > (FMINMAX has the same indent as the preceding [, its sibling; > "TARGET_VSX" and the next two lines are indented like the same thing > before it at the same level (the "[(set"); the finishing ) does never > start a new line). > > > Segher