\input texinfo @c -*-texinfo-*- @setfilename gccbrig.info @settitle The GNU BRIG (HSAIL) Compiler @set copyrights-brig 2017-2019 @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