This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[autovect] branch created





We (lno-branch developers) have decided to retire the lno branch - it has
served its purpose, and almost all relevant patches have been merged from
it. I created a new branch to continue the vectorizer work, and related
work that the vectorizer could use or benefit from (like dependence
analysis, loop opts). Here's the update to cvs.html and to the vectorizer
webpage to indicate the change of development branch.

Thanks to Zdenek and Sebastian for maintaining the lno branch

dorit


Index: cvs.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/cvs.html,v
retrieving revision 1.165
diff -c -3 -p -r1.165 cvs.html
*** cvs.html      7 Nov 2004 17:56:04 -0000     1.165
--- cvs.html      10 Nov 2004 20:39:22 -0000
*************** particular releases or snapshots or the
*** 177,185 ****
    Caroline Tice, Dale Johannesen, Kenneth Zadeck, Stuart Hastings,
    Mostafa Hagog.</dd>

!   <dt><a href="projects/tree-ssa/lno.html">lno-branch</a></dt>
!   <dd>This branch aims at implementing a loop nest optimizer at the
!   tree level.</dd>

    <dt><a href="projects/strees/index.html">stree-branch</a></dt>
    <dd>This branch is for improving compilation speed and reducing memory
--- 177,188 ----
    Caroline Tice, Dale Johannesen, Kenneth Zadeck, Stuart Hastings,
    Mostafa Hagog.</dd>

!   <dt>autovect-branch</dt>
!   <dd>This branch is the successor to the lno-branch.  The purpose of
this
!   branch is tree-level <a href="projects/tree-ssa/vectorization.html">
!   autovectorization</a> work, and related work that the autovectorizer
!   could use or benefit from (like data-dependence analysis,
!   <a href="projects/tree-ssa/lno.html">loop nest optimizations</a>).</dd>

    <dt><a href="projects/strees/index.html">stree-branch</a></dt>
    <dd>This branch is for improving compilation speed and reducing memory
*************** be prefixed with the initials of the dis
*** 438,443 ****
--- 441,452 ----
    necessary before OpenMP support can be easily implemented.  Thus,
    the branch is currently unmaintained.</dd>

+   <dt><a href="projects/tree-ssa/lno.html">lno-branch</a></dt>
+   <dd>A sub-branch of tree-ssa that aims at implementing a loop
+   nest optimizer at the tree level.  Was largely merged into mainline,
+   and is currently unmaintained.
+   This work now continues on the autovect-branch.</dd>
+
  </dl>

  <h2><a name="wwwdocs">Web pages</a></h2>


Index: vectorization.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/projects/tree-ssa/vectorization.html,v
retrieving revision 1.8
diff -c -3 -p -r1.8 vectorization.html
*** vectorization.html  31 Oct 2004 12:20:44 -0000    1.8
--- vectorization.html  10 Nov 2004 17:19:14 -0000
***************
*** 10,17 ****

      <p>The goal of this project is to develop a loop vectorizer in
      GCC, based on the <a href="./">tree-ssa</a> framework. This
!     work is taking place in the <a href=
!     "lno.html">lno-branch</a>.</p>

      <h2>Table of Contents</h2>

--- 10,16 ----

      <p>The goal of this project is to develop a loop vectorizer in
      GCC, based on the <a href="./">tree-ssa</a> framework. This
!     work is taking place in the autovect-branch.</p>

      <h2>Table of Contents</h2>

*************** vectorized 3 loops in function.
*** 118,125 ****
      <h2><a name="vectorizab">Vectorizable
      Loops</a></h2>

!     <p>Examples of loops that can currently be vectorized by
!     lno-branch (unless indicated otherwise). "feature" indicates
      the vectorization capabilities demonstrated by the
      example.</p><strong><a name="example1">example1:</a></strong>

--- 117,124 ----
      <h2><a name="vectorizab">Vectorizable
      Loops</a></h2>

!     <p>Examples of loops that can currently be vectorized by the
!     autovect-branch. "feature" indicates
      the vectorization capabilities demonstrated by the
      example.</p><strong><a name="example1">example1:</a></strong>

*************** foo (int n, int x) {
*** 154,173 ****
  typedef int aint __attribute__ ((__aligned__(16)));
  foo (int n, aint * __restricted__ p, aint * __restricted q) {

!    /* feature: support for pointer accesses.  */
     while (n--){
        *p++ = *q++;
     }
  }
! </pre><strong><a name="example4">example4</a></strong>
! (on apple-ppc-branch only):

  <pre>
  typedef int aint __attribute__ ((__aligned__(16)));
  int a[256], b[256], c[256];
  foo (int n, aint * __restricted__ p, aint * __restricted__ q) {

!    /* features: support for pointer accesses and constants  */
     while (n--){
        *p++ = *q++ + 5;
     }
--- 153,172 ----
  typedef int aint __attribute__ ((__aligned__(16)));
  foo (int n, aint * __restricted__ p, aint * __restricted q) {

!    /* feature: support for (aligned) pointer accesses.  */
     while (n--){
        *p++ = *q++;
     }
  }
! </pre><strong><a name="example4">example4</a></strong>:

  <pre>
  typedef int aint __attribute__ ((__aligned__(16)));
  int a[256], b[256], c[256];
  foo (int n, aint * __restricted__ p, aint * __restricted__ q) {

!    /* feature: support for (aligned) pointer accesses  */
!    /* feature: support for constants  */
     while (n--){
        *p++ = *q++ + 5;
     }
*************** foo (int n, aint * __restricted__ p, ain
*** 177,183 ****
        a[i] = b[i+1] + c[i+3];
     }

!    /* feature: support for if-conversion  */
     for (i=0; i&lt;n; i++){
        j = a[i];
        b[i] = (j &gt; MAX ? MAX : 0);
--- 176,182 ----
        a[i] = b[i+1] + c[i+3];
     }

!    /* feature: support for if-conversion (yet to be committed)  */
     for (i=0; i&lt;n; i++){
        j = a[i];
        b[i] = (j &gt; MAX ? MAX : 0);
*************** struct a {
*** 191,197 ****
  } s;
  for (i = 0; i &lt; N; i++)
    {
!     /* feature: alignable struct access  */
      s.ca[i] = 5;
    }
  </pre><a name="example6"><strong>example6</strong>
--- 190,196 ----
  } s;
  for (i = 0; i &lt; N; i++)
    {
!     /* feature: support for alignable struct access  */
      s.ca[i] = 5;
    }
  </pre><a name="example6"><strong>example6</strong>
*************** READ*, X, Y
*** 203,210 ****
  A = LOG(X); B = LOG(Y); C = A + B
  PRINT*, C(500000)
  END
! </pre><strong><a name="example7">example7</a></strong>
! (on apple-ppc-branch only):

  <pre>
  int a[256], b[256];
--- 202,208 ----
  A = LOG(X); B = LOG(Y); C = A + B
  PRINT*, C(500000)
  END
! </pre><strong><a name="example7">example7</a></strong>:

  <pre>
  int a[256], b[256];
*************** foo (int x) {
*** 215,251 ****
        a[i] = b[i+x];
     }
  }
! </pre><strong><a name="example8">example8</a></strong>
! (on apple-ppc-branch only):
!
! <pre>
! typedef unsigned char auchar __attribute__ ((__aligned__(16)));
! foo (auchar * __restricted__ srcA,
!      auchar * __restricted__ srcB,
!      auchar * __restricted__ dest, unsigned char alpha){
!   unsigned char not_alpha = 255 - alpha;
!
!   /* feature: pattern recognition  */
!   for (i = 0; i &lt; N; i++){
!      unsigned short a1 = srcA[i] * alpha;
!      unsigned short a2 = srcB[i] * not_alpha;
!      unsigned char b1 = a1 &gt;&gt; 8;
!      unsigned char b2 = a2 &gt;&gt; 8;
!      dest[i] = b1 + b2;
!   }
! }
! </pre><a name="example9"><strong>example9</strong>:</a>
!
! <pre>
! typedef int aint __attribute__ ((__aligned__(16)));
! foo (aint * __restricted__ p, aint * __restricted q) {
!
!    /* features: pointer accesses to aligned data. known loop bound. */
!    for (i=0; i&lt;256; i++) {
!       *p++ = *q++;
!    }
! }
! </pre><a name="example10"><strong>example10</strong>:</a>

  <pre>
  int a[M][N];
--- 213,219 ----
        a[i] = b[i+x];
     }
  }
! </pre><a name="example8"><strong>example8</strong>:</a>

  <pre>
  int a[M][N];
*************** for (i = 0; i &lt; N; i++) {
*** 314,325 ****
      <h2><a name="status">Status</a></h2>

      <dl>
!         <dt>The main development branch for the vectorizer is the
!         lno-branch. In some cases, a certain functionality is first
!         implemented in apple-ppc-branch, as a preliminary step
!         before committing it to lno-branch in a more generic form.
!         Vectorization functionality from lno-branch is in the final stages
!         of being merged into mainline.</dt>
      </dl>

      <dl>
--- 282,290 ----
      <h2><a name="status">Status</a></h2>

      <dl>
!         <dt>The main development branch for the vectorizer is currently the
!         autovect-branch. Previous development on other branches has been
!     largely merged into mainline.</dt>
      </dl>

      <dl>
*************** for (i = 0; i &lt; N; i++) {
*** 605,612 ****
              </ol>

              <p>Examples of vectorizable loops: <a href=
!             "#example1">loop</a>, <a href="#example5">loop</a>,
!             <a href="#example9">loop</a></p>
          </dd>
      </dl>

--- 570,576 ----
              </ol>

              <p>Examples of vectorizable loops: <a href=
!             "#example1">loop</a>, <a href="#example5">loop</a></p>
          </dd>
      </dl>

*************** for (i = 0; i &lt; N; i++) {
*** 654,660 ****
              </ol>

              <p>Examples of newly vectorizable loops: <a href=
!             "#example10">loop</a></p>

              <p>New testcases:</p>

--- 618,624 ----
              </ol>

              <p>Examples of newly vectorizable loops: <a href=
!             "#example8">loop</a></p>

              <p>New testcases:</p>

*************** for (i = 0; i &lt; N; i++) {
*** 833,839 ****
              </ol>

              <p>Examples of newly vectorizable loops: <a href=
!             "#example7">loop,</a> <a href="#example8">loop</a></p>
          </dd>
      </dl>

--- 797,803 ----
              </ol>

              <p>Examples of newly vectorizable loops: <a href=
!             "#example7">loop</a></p>
          </dd>
      </dl>

*************** for (i = 0; i &lt; N; i++) {
*** 1234,1240 ****

      <h2><a name="vec_todo">Contributing</a></h2>

!     <p>Current contributors to this project include Olga Golovanevsky,
      Devang Patel, Ira Rosen, Keith Besaw and Dorit Naishlos. This web page
      is managed by <a href="mailto:dorit@il.ibm.com";>Dorit Naishlos&lt;dorit@il.ibm.com&gt;</a>.
      Currently in the works:</p>
--- 1198,1204 ----

      <h2><a name="vec_todo">Contributing</a></h2>

!     <p>Current contributors to this project include
      Devang Patel, Ira Rosen, Keith Besaw and Dorit Naishlos. This web page
      is managed by <a href="mailto:dorit@il.ibm.com";>Dorit Naishlos&lt;dorit@il.ibm.com&gt;</a>.
      Currently in the works:</p>
*************** for (i = 0; i &lt; N; i++) {
*** 1242,1249 ****
          <li>Merge the vectorizer from lno-branch to mainline -
          in progress.</li>

!         <li>Support unaligned accesses (using loop-versioning, loop peeling,
!         and directly generating code to support misaligned accesses).</li>

          <li>Support for conditional execution.</li>

--- 1206,1212 ----
          <li>Merge the vectorizer from lno-branch to mainline -
          in progress.</li>

!         <li>Support runtime aliasing/dependence testing using loop versioning.</li>

          <li>Support for conditional execution.</li>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]