This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] BRIG frontend: request for a global review
- From: Pekka Jääskeläinen <pekka at parmance dot com>
- To: Thomas Schwinge <thomas at codesourcery dot com>, Pekka Jääskeläinen <pekka at parmance dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 16 Nov 2017 15:04:29 +0100
- Subject: Re: [PATCH] BRIG frontend: request for a global review
- Authentication-results: sourceware.org; auth=none
- References: <20170116090746.GM1867@tucnak> <CAJk11WBNMcsLKkzX+GbovsDHq7mDQ0Ehxi_dBVcn9FjUCGY9eg@mail.gmail.com> <CAFiYyc2czhyGBqH5cRLX8otgGkDuJin_-bKsUq9vWaX003mNag@mail.gmail.com> <CAJk11WBpEyWmnSA9Nk3N48gnqwEecNYnNixeaLBX9Az4Hj=AAw@mail.gmail.com> <CAFiYyc1coXT531VGZ7R=2T8NjcVSGGK2Q4w6fmD5Xbpy-B=brA@mail.gmail.com> <20170123120240.h6kannl7ygryurbj@virgil.suse.cz> <CAFiYyc3Erp84wu=GR5VCZ4PLVQN3DY48id4+PubmhL-13PPwFw@mail.gmail.com> <20170124125210.q4red46xdpzechx7@virgil.suse.cz> <1485289834.20340.190.camel@redhat.com> <878thd1q1d.fsf@euler.schwinge.homeip.net> <20170926125500.7a7xi2mv3xdmo4xi@virgil.suse.cz>
Hi,
I added some content to gccbrig.texi in r254820 as below. If you have something
that I could describe further there, please just let me know.
Index: gcc/brig/gccbrig.texi
===================================================================
--- gcc/brig/gccbrig.texi (revision 254819)
+++ gcc/brig/gccbrig.texi (revision 254820)
@@ -1,5 +1,153 @@
\input texinfo @c -*-texinfo-*-
@setfilename gccbrig.info
-@settitle The GNU BRIG Compiler
+@settitle The GNU BRIG (HSAIL) Compiler
+@set copyrights-brig 2017
+@c Merge the standard indexes into a single one.
+@syncodeindex fn cp
+@syncodeindex vr cp
+@syncodeindex ky cp
+@syncodeindex pg cp
+@syncodeindex tp cp
+
+@include gcc-common.texi
+
+@copying
+@c man begin COPYRIGHT
+Copyright @copyright{} @value{copyrights-brig} Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, the Front-Cover Texts being (a) (see below), and
+with the Back-Cover Texts being (b) (see below).
+A copy of the license is included in the
+@c man end
+section entitled ``GNU Free Documentation License''.
+@ignore
+@c man begin COPYRIGHT
+man page gfdl(7).
+@c man end
+@end ignore
+
+@c man begin COPYRIGHT
+
+(a) The FSF's Front-Cover Text is:
+
+ A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+ You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development.
+@c man end
+@end copying
+
+@ifinfo
+@format
+@dircategory Software development
+@direntry
+* Gccbrig: (gccbrig). A GCC-based compiler for BRIG/HSAIL
finalization
+@end direntry
+@end format
+
+@insertcopying
+@end ifinfo
+
+@titlepage
+@title The GNU BRIG (HSAIL) Compiler
+@versionsubtitle
+@author Pekka Jääskeläinen
+
+@page
+@vskip 0pt plus 1filll
+Published by the Free Software Foundation @*
+51 Franklin Street, Fifth Floor@*
+Boston, MA 02110-1301, USA@*
+@sp 1
+@insertcopying
+@end titlepage
+@contents
+@page
+
+@node Top
+@top Introduction
+
+This manual describes how to use @command{gccbrig}, the GNU compiler for
+the binary representation (BRIG) of the HSA Intermediate Language (HSAIL).
+For more information about the Heterogeneous System Architecture (HSA)
+Foundation's standards in general, see @uref{http://www.hsafoundation.com/}.
+
+@menu
+* Copying:: The GNU General Public License.
+* GNU Free Documentation License::
+ How you can share and copy this manual.
+* Using Gccbrig:: How to use Gccbrig.
+* Index:: Index.
+@end menu
+
+@include gpl_v3.texi
+
+@include fdl.texi
+
+
+@node Using Gccbrig
+@chapter Using Gccbrig
+
+@c man title gccbrig A GCC-based compiler for HSAIL
+
+@ignore
+@c man begin SYNOPSIS gccbrig
+gccbrig [@option{-c}|@option{-S}]
+ [@option{-O}@var{level}] [@option{-L}@var{dir}@dots{}]
+ [@option{-o} @var{outfile}] @var{infile}@dots{}
+
+Gccbrig is typically not invoked from the command line, but
+through an HSA finalizer implementation.
+@c man end
+@c man begin SEEALSO
+The Info entry for @file{gccbrig} and
+@uref{https://github.com/HSAFoundation/phsa}
+@c man end
+@end ignore
+
+@c man begin DESCRIPTION gccbrig
+
+The BRIG frontend (@command{gccbrig}) differs from the
+other frontends in GCC on how it's typically used. It's a translator
+for an intermediate language that is not meant to be written directly
+by programmers. Its input format BRIG is a binary representation of
+HSAIL, which is a textual assembly format for an imaginary machine
+of which instruction set is defined in HSA Programmer Reference Manual
+(PRM) Specification. Gccbrig currently implements the Base profile
+of the PRM version 1.0.
+
+HSA Runtime Specification defines an API which includes means
+to build and launch ``kernels'' from a host program running on a CPU
+to one or more heterogeneous ``kernel agents''. A kernel Agent
+is typically a GPU or a DSP device controlled by the CPU.
+The build phase is called ``finalization'', which means translation of
+one or more target-independent BRIG files describing the program that
+one wants to run in the Agent to the Agent's instruction set. Gccbrig
+implements the translation process by generating GENERIC, which is
+translated to the ISA of any supported GCC target by the GCC's backend
+framework, thus enabling potentially any GCC target to act as an HSA agent.
+
+As the kernel finalization process can be only launched from the host API,
+@command{gccbrig} is not typically used directly from the command line by
+the end user, but through an HSA runtime implementation that implements
+the finalizer API running on the host CPU. Gccbrig is
+designed to work with an open source HSA runtime implementation
+called ``phsa-runtime'', which can be installed from
+@uref{https://github.com/HSAFoundation/phsa-runtime}. Phsa-runtime
+has an example Agent driver that allows any GCC-supported CPU to act as
+a kernel Agent. The web page has further installation instructions for
+setting up it to work with a gccbrig binary installed with the GCC.
+
+@node Index
+@unnumbered Index
+
+@printindex cp
+
@bye
On Tue, Sep 26, 2017 at 2:55 PM, Martin Jambor <mjambor@suse.cz> wrote:
> Hi,
>
> On Sun, Sep 17, 2017 at 02:13:34PM +0200, Thomas Schwinge wrote:
>> Hi!
>>
>> On Tue, 24 Jan 2017 15:30:34 -0500, David Malcolm <dmalcolm@redhat.com> wrote:
>> > On Tue, 2017-01-24 at 13:52 +0100, Martin Jambor wrote:
>> > > [...] I have just
>> > > committed the BRIG FE as revision 244867.
>>
>> In a build with that enabled, I just happened to "make html" in "gcc/",
>> and ran into:
>>
>> [...]
>> makeinfo --split-size=5000000 --html -I [...]/source-gcc/gcc/doc -I [...]/source-gcc/gcc/doc/include \
>> -I [...]/source-gcc/gcc/brig -o [...]/build-gcc/gcc/HTML/gcc-8.0.0/brig
>> makeinfo: missing file argument.
>> Try `makeinfo --help' for more information.
>> [...]/source-gcc/gcc/brig/Make-lang.in:117: recipe for target '[...]/build-gcc/gcc/HTML/gcc-8.0.0/brig/index.html' failed
>> make: *** [[...]/build-gcc/gcc/HTML/gcc-8.0.0/brig/index.html] Error 255
>>
>> > A deps issue for the docs I noticed when glancing through the commit:
>> >
>> > diff --git a/gcc/brig/Make-lang.in b/gcc/brig/Make-lang.in
>> > new file mode 100644 (file)
>> > index 0000000..b85b1b0
>> > --- /dev/null
>> > +++ b/gcc/brig/Make-lang.in
>> >
>> > [...snip...]
>> >
>> > +# Documentation.
>> > +
>> > +GO_TEXI_FILES = \
>> > + brig/gccbrig.texi \
>> > + $(gcc_docdir)/include/fdl.texi \
>> > + $(gcc_docdir)/include/gpl_v3.texi \
>> > + $(gcc_docdir)/include/gcc-common.texi \
>> > + gcc-vers.texi
>> >
>> > Presumably this should be BRIG_TEXI_FILES, rather than GO_TEXI_FILES?
>> >
>> > +# doc/gccbrig.info: $(BRIG_TEXI_FILES)
>> > +# if test "x$(BUILD_INFO)" = xinfo; then \
>> > +# rm -f doc/gccbrig.info*; \
>> > +# $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \
>> > +# -I $(gcc_docdir)/include -o $@ $<; \
>> > +# else true; fi
>> > +
>> > +# doc/gccbrig.dvi: $(BRIG_TEXI_FILES)
>> > +# $(TEXI2DVI) -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<
>> > +
>> > +# doc/gccbrig.pdf: $(BRIG_TEXI_FILES)
>> > +# $(TEXI2PDF) -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<
>> > +
>> > +$(build_htmldir)/brig/index.html: $(BRIG_TEXI_FILES)
>> > + $(mkinstalldirs) $(@D)
>> > + rm -f $(@D)/*
>> > + $(TEXI2HTML) -I $(gcc_docdir) -I $(gcc_docdir)/include \
>> > + -I $(srcdir)/brig -o $(@D) $<
>> >
>> > ...for use in describing the deps of the above.
>>
>> ..., so that still needs to be fixed. Alas, that won't help: the
>> "gccbrig.texi" file doesn't actually exist. ;-)
>>
>
> I see, I always only check "make info" when verifying documentation
> changes and so missed this. Thanks for providing the interim fix, me
> and/or Pekka will add some basic content by the time next gcc 7 is
> released (IIRC, it is supposed to come out at the end of this or the
> beginning of next year).
>
> Martin