On Mon, 28 Feb 2022, Tobias Burnus wrote:

> Ping**3
> 
> On 23.02.22 09:42, Tobias Burnus wrote:
> > PING**2 for the ME review or at least comments to that patch,
> > which fixes a build issue/ICE with nvptx
> >
> > Patch:
> > https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590139.html
> > (for gcc/cfgexpand.cc + gcc/expr.cc)
> >
> > (There is some discussion by Tom and Roger about the BE in the patch
> > thread, which only not relate to the ME patch. But there is no
> > ME-patch comment so far.)
> The related BE patch has been already committed, but to be effective, it
> needs the ME patch.

I'm not sure I'm qualified to review this - maybe Richard is.

Richard.

> >
> > Thanks,
> >
> > Tobias
> >
> > On 17.02.22 15:35, Tobias Burnus wrote:
> >> PING for this cfgexpand.cc + expr.cc change by Roger.
> >>
> >> This is a pre-requisite for Roger's nvptx patch to avoid an ICE
> >> during bootstrap:
> >>
> >> * https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590250.html
> >>   "[PATCH] nvptx: Back-end portion of a fix for PR target/104489."
> >>   (see patch for additional reasoning for this patch)
> >> * See also https://gcc.gnu.org/PR104489
> >>    nvptx, sm_53: internal compiler error: in gen_rtx_SUBREG, at
> >> emit-rtl.cc:1022
> >>
> >> Thanks,
> >>
> >> Tobias
> >>
> >> On 09.02.22 21:12, Roger Sayle wrote:
> >>> This patch adds middle-end support for target ABIs that pass/return
> >>> floating point values in integer registers with precision wider than
> >>> the original FP mode.  An example, is the nvptx backend where 16-bit
> >>> HFmode registers are passed/returned as (promoted to) SImode registers.
> >>> Unfortunately, this currently falls foul of the various (recent?)
> >>> sanity
> >>> checks that (very sensibly) prevent creating paradoxical SUBREGs of
> >>> floating point registers.  The approach below is to explicitly
> >>> perform the
> >>> conversion/promotion in two steps, via an integer mode of same
> >>> precision
> >>> as the floating point value.  So on nvptx, 16-bit HFmode is initially
> >>> converted to 16-bit HImode (using SUBREG), then zero-extended to
> >>> SImode,
> >>> and likewise when going the other way, parameters truncated to HImode
> >>> then converted to HFmode (using SUBREG).  These changes are localized
> >>> to expand_value_return and expanding DECL_RTL to support strange ABIs,
> >>> rather than inside convert_modes or gen_lowpart, as mismatched
> >>> precision integer/FP conversions should be explicit in the RTL,
> >>> and these semantics not generally visible/implicit in user code.
> >>>
> >>> This patch has been tested on x86_64-pc-linux-gnu with make bootstrap
> >>> and make -k check with no new failures, and on nvptx-none, where it is
> >>> the middle-end portion of a pair of patches to allow the default ISA to
> >>> be advanced.  Ok for mainline?
> >>>
> >>>
> >>> 2022-02-09  Roger Sayle  <ro...@nextmovesoftware.com>
> >>>
> >>> gcc/ChangeLog
> >>>         * cfgexpand.cc (expand_value_return): Allow backends to promote
> >>>         a scalar floating point return value to a wider integer mode.
> >>>         * expr.cc (expand_expr_real_1) [expand_decl_rtl]: Likewise,
> >>> allow
> >>>         backends to promote scalar FP PARM_DECLs to wider integer
> >>> modes.
> >>>
> >>>
> >>> Thanks in advance,
> >>> Roger
> >>> --
> >>>
> -----------------
> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634
> München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas
> Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht
> München, HRB 106955
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Ivo Totev; HRB 36809 (AG Nuernberg)

Reply via email to