Compare commits

...

14 Commits

Author SHA1 Message Date
Tanya Lattner
4e82754ea5 Merging in from mainline
llvm-svn: 27866
2006-04-20 05:52:21 +00:00
Tanya Lattner
f3d5e9e2f9 Merging in from mainline
llvm-svn: 27864
2006-04-20 05:43:54 +00:00
Tanya Lattner
d04dd7889f Checking in updates from mainline for 1.7 release.
llvm-svn: 27862
2006-04-20 05:09:17 +00:00
Tanya Lattner
374f8b2450 Removing from release
llvm-svn: 27708
2006-04-14 19:48:14 +00:00
Tanya Lattner
00c8c0cee9 Removing from release.
llvm-svn: 27707
2006-04-14 19:47:30 +00:00
Tanya Lattner
a3752fc325 Merging in fix from mainline
llvm-svn: 27706
2006-04-14 19:34:11 +00:00
Tanya Lattner
783e14671d Removing unimplemented vector operations for the release docs.
llvm-svn: 27705
2006-04-14 19:31:07 +00:00
Reid Spencer
83a706d5d0 Include corrected documentation on class hierarchy of GlobalValue (derived
from constant).

llvm-svn: 27702
2006-04-14 14:19:55 +00:00
Reid Spencer
efc05037b9 Remove "cvs" suffix from 1.7 version number, on the release_17 branch.
llvm-svn: 27688
2006-04-14 03:03:21 +00:00
Reid Spencer
499ce81777 Remove the .cvsignore file so this directory gets pruned.
llvm-svn: 27681
2006-04-13 21:57:54 +00:00
Reid Spencer
a7d4bc14de Remove the .cvsignore file so the SparcV8 directory gets pruned with
the "cvs update -P" option.

llvm-svn: 27680
2006-04-13 21:57:08 +00:00
Reid Spencer
50e7b7772c Make sure we distribute the "tests" directory too.
llvm-svn: 27679
2006-04-13 21:46:41 +00:00
Reid Spencer
edf8d69a6e Merge head changes needed for release (correction of dg variable quoting)
llvm-svn: 27677
2006-04-13 21:17:40 +00:00
CVS to SVN Conversion
f6f34fb818 This commit was manufactured by cvs2svn to create branch 'release_17'.
llvm-svn: 27675
2006-04-13 19:50:07 +00:00
19 changed files with 301 additions and 326 deletions

View File

@ -13,7 +13,7 @@ Developed by:
University of Illinois at Urbana-Champaign
http://llvm.cs.uiuc.edu
http://llvm.org
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal with

View File

@ -31,7 +31,7 @@ dnl===
dnl===-----------------------------------------------------------------------===
dnl Initialize autoconf and define the package name, version number and
dnl email address for reporting bugs.
AC_INIT([[llvm]],[[1.7cvs]],[llvmbugs@cs.uiuc.edu])
AC_INIT([[llvm]],[[1.7]],[llvmbugs@cs.uiuc.edu])
dnl Provide a copyright substitution and ensure the copyright notice is included
dnl in the output of --version option of the generated configure script.

18
llvm/configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.59 for llvm 1.7cvs.
# Generated by GNU Autoconf 2.59 for llvm 1.7.
#
# Report bugs to <llvmbugs@cs.uiuc.edu>.
#
@ -425,8 +425,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='llvm'
PACKAGE_TARNAME='-llvm-'
PACKAGE_VERSION='1.7cvs'
PACKAGE_STRING='llvm 1.7cvs'
PACKAGE_VERSION='1.7'
PACKAGE_STRING='llvm 1.7'
PACKAGE_BUGREPORT='llvmbugs@cs.uiuc.edu'
ac_unique_file="lib/VMCore/Module.cpp"
@ -965,7 +965,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures llvm 1.7cvs to adapt to many kinds of systems.
\`configure' configures llvm 1.7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1027,7 +1027,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of llvm 1.7cvs:";;
short | recursive ) echo "Configuration of llvm 1.7:";;
esac
cat <<\_ACEOF
@ -1176,7 +1176,7 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
llvm configure 1.7cvs
llvm configure 1.7
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@ -1192,7 +1192,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by llvm $as_me 1.7cvs, which was
It was created by llvm $as_me 1.7, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@ -31240,7 +31240,7 @@ _ASBOX
} >&5
cat >&5 <<_CSEOF
This file was extended by llvm $as_me 1.7cvs, which was
This file was extended by llvm $as_me 1.7, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -31303,7 +31303,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
llvm config.status 1.7cvs
llvm config.status 1.7
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"

View File

@ -742,7 +742,7 @@ describes the latest version, 1.3):</p>
<li>#2: LLVM 1.2.5 (not released)</li>
<li>#3: LLVM 1.3</li>
<li>#4: LLVM 1.3.x (not released)</li>
<li>#5: LLVM 1.4, 1.5, 1.6</li>
<li>#5: LLVM 1.4 and newer</li>
</li>
</ul>
<p>Note that we plan to eventually expand the target description

View File

@ -231,6 +231,12 @@ software you will need.</p>
<td>PowerPC</td>
<td>GCC</td>
</tr>
<tr>
<td>MacOS X<sup><a href="#pf_2">2</a></sup></td>
<td>x86</td>
<td>GCC</td>
</tr>
<tr>
<td>Cygwin/Win32</td>
<td>x86<sup><a href="#pf_1">1</a></sup></td>
@ -617,18 +623,18 @@ compressed with the gzip program.
<dt><tt>cfrontend-x.y.source.tar.gz</tt></dt>
<dd>Source release of the GCC front end.<br/></dd>
<dt><tt>cfrontend-x.y.sparc-sun-solaris2.8.tar.gz</tt></dt>
<dd>Binary release of the GCC front end for Solaris/Sparc.
<br/></dd>
<dt><tt>cfrontend-x.y.i686-redhat-linux-gnu.tar.gz</tt></dt>
<dd>Binary release of the GCC front end for Linux/x86.<br/></dd>
<dt><tt>cfrontend-x.y.i386-unknown-freebsd5.1.tar.gz</tt></dt>
<dd>Binary release of the GCC front end for FreeBSD/x86.<br/></dd>
<dt><tt>llvm-gcc4-x.y.source.tar.gz</tt></dt>
<dd>Source release of the llvm-gcc4 front end. See README.LLVM in the root
directory for build instructions.<br/></dd>
<dt><tt>cfrontend-x.y.powerpc-apple-darwin7.8.0.tar.gz</tt></dt>
<dd>Binary release of the GCC front end for MacOS X/PPC.<br/></dd>
<dt><tt>llvm-gcc4-x.y.powerpc-apple-darwin8.6.0.tar.gz</tt></dt>
<dd>Binary release of the llvm-gcc4 front end for MacOS X/PowerPC.<br/></dd>
<dt><tt>llvm-gcc4-x.y.i686-apple-darwin8.6.1.tar.gz</tt></dt>
<dd>Binary release of the llvm-gcc4 front end for MacOS X/X86.<br/></dd>
</dl>
</div>
@ -661,6 +667,7 @@ revision), you can specify a label. The following releases have the following
labels:</p>
<ul>
<li>Release 1.7: <b>RELEASE_17</b></li>
<li>Release 1.6: <b>RELEASE_16</b></li>
<li>Release 1.5: <b>RELEASE_15</b></li>
<li>Release 1.4: <b>RELEASE_14</b></li>
@ -680,8 +687,7 @@ you get it from the CVS repository:</p>
configured by the LLVM configure script as well as automatically updated when
you run <tt>cvs update</tt>.</p>
<p>If you would like to get the GCC front end source code, you can also get it
from the CVS repository:</p>
<p>If you would like to get the GCC 3.4 front end source code, you can also get it from the CVS repository:</p>
<pre>
cvs -z3 -d :pserver:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm co llvm-gcc
@ -692,22 +698,6 @@ instructions</a> to successfully build the LLVM GCC front-end.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<a name="mirrors">LLVM CVS Mirrors</a>
</div>
<div class="doc_text">
<p>If the main CVS server is overloaded or inaccessible, you can try one of
these user-hosted mirrors:</p>
<ul>
<li><a href="http://llvm.x10sys.com/">Mirror hosted by eXtensible Systems
Inc.</a></li>
</ul>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<a name="installcf">Install the GCC Front End</a>

View File

@ -99,7 +99,7 @@
<li><tt>cd llvm</tt></li>
</ol></li>
<li>With anonymous CVS access (or use a <a href="#mirror">mirror</a>):
<li>With anonymous CVS access:
<ol>
<li><tt>cd <i>where-you-want-llvm-to-live</i></tt></li>
<li><tt>cvs -d

View File

@ -96,9 +96,6 @@
<li><a href="#i_extractelement">'<tt>extractelement</tt>' Instruction</a></li>
<li><a href="#i_insertelement">'<tt>insertelement</tt>' Instruction</a></li>
<li><a href="#i_shufflevector">'<tt>shufflevector</tt>' Instruction</a></li>
<li><a href="#i_vsetint">'<tt>vsetint</tt>' Instruction</a></li>
<li><a href="#i_vsetfp">'<tt>vsetfp</tt>' Instruction</a></li>
<li><a href="#i_vselect">'<tt>vselect</tt>' Instruction</a></li>
</ol>
</li>
<li><a href="#memoryops">Memory Access Operations</a>
@ -2060,194 +2057,6 @@ operand may be undef if performing a shuffle from only one vector.
</pre>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"> <a name="i_vsetint">'<tt>vsetint</tt>'
Instruction</a> </div>
<div class="doc_text">
<h5>Syntax:</h5>
<pre>&lt;result&gt; = vsetint &lt;op&gt;, &lt;n x &lt;ty&gt;&gt; &lt;var1&gt;, &lt;var2&gt; <i>; yields &lt;n x bool&gt;</i>
</pre>
<h5>Overview:</h5>
<p>The '<tt>vsetint</tt>' instruction takes two integer vectors and
returns a vector of boolean values representing, at each position, the
result of the comparison between the values at that position in the
two operands.</p>
<h5>Arguments:</h5>
<p>The arguments to a '<tt>vsetint</tt>' instruction are a comparison
operation and two value arguments. The value arguments must be of <a
href="#t_integral">integral</a> <a href="#t_packed">packed</a> type,
and they must have identical types. The operation argument must be
one of <tt>eq</tt>, <tt>ne</tt>, <tt>slt</tt>, <tt>sgt</tt>,
<tt>sle</tt>, <tt>sge</tt>, <tt>ult</tt>, <tt>ugt</tt>, <tt>ule</tt>,
<tt>uge</tt>, <tt>true</tt>, and <tt>false</tt>. The result is a
packed <tt>bool</tt> value with the same length as each operand.</p>
<h5>Semantics:</h5>
<p>The following table shows the semantics of '<tt>vsetint</tt>'. For
each position of the result, the comparison is done on the
corresponding positions of the two value arguments. Note that the
signedness of the comparison depends on the comparison opcode and
<i>not</i> on the signedness of the value operands. E.g., <tt>vsetint
slt <4 x unsigned> %x, %y</tt> does an elementwise <i>signed</i>
comparison of <tt>%x</tt> and <tt>%y</tt>.</p>
<table border="1" cellspacing="0" cellpadding="4">
<tbody>
<tr><th>Operation</th><th>Result is true iff</th><th>Comparison is</th></tr>
<tr><td><tt>eq</tt></td><td>var1 == var2</td><td>--</td></tr>
<tr><td><tt>ne</tt></td><td>var1 != var2</td><td>--</td></tr>
<tr><td><tt>slt</tt></td><td>var1 &lt; var2</td><td>signed</td></tr>
<tr><td><tt>sgt</tt></td><td>var1 &gt; var2</td><td>signed</td></tr>
<tr><td><tt>sle</tt></td><td>var1 &lt;= var2</td><td>signed</td></tr>
<tr><td><tt>sge</tt></td><td>var1 &gt;= var2</td><td>signed</td></tr>
<tr><td><tt>ult</tt></td><td>var1 &lt; var2</td><td>unsigned</td></tr>
<tr><td><tt>ugt</tt></td><td>var1 &gt; var2</td><td>unsigned</td></tr>
<tr><td><tt>ule</tt></td><td>var1 &lt;= var2</td><td>unsigned</td></tr>
<tr><td><tt>uge</tt></td><td>var1 &gt;= var2</td><td>unsigned</td></tr>
<tr><td><tt>true</tt></td><td>always</td><td>--</td></tr>
<tr><td><tt>false</tt></td><td>never</td><td>--</td></tr>
</tbody>
</table>
<h5>Example:</h5>
<pre> &lt;result&gt; = vsetint eq &lt;2 x int&gt; &lt;int 0, int 1&gt;, &lt;int 1, int 0&gt; <i>; yields {&lt;2 x bool&gt;}:result = false, false</i>
&lt;result&gt; = vsetint ne &lt;2 x int&gt; &lt;int 0, int 1&gt;, &lt;int 1, int 0&gt; <i>; yields {&lt;2 x bool&gt;}:result = true, true</i>
&lt;result&gt; = vsetint slt &lt;2 x int&gt; &lt;int 0, int 1&gt;, &lt;int 1, int 0&gt; <i>; yields {&lt;2 x bool&gt;}:result = true, false</i>
&lt;result&gt; = vsetint sgt &lt;2 x int&gt; &lt;int 0, int 1&gt;, &lt;int 1, int 0&gt; <i>; yields {&lt;2 x bool&gt;}:result = false, true</i>
&lt;result&gt; = vsetint sle &lt;2 x int&gt; &lt;int 0, int 1&gt;, &lt;int 1, int 0&gt; <i>; yields {&lt;2 x bool&gt;}:result = true, false</i>
&lt;result&gt; = vsetint sge &lt;2 x int&gt; &lt;int 0, int 1&gt;, &lt;int 1, int 0&gt; <i>; yields {&lt;2 x bool&gt;}:result = false, true</i>
</pre>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"> <a name="i_vsetfp">'<tt>vsetfp</tt>'
Instruction</a> </div>
<div class="doc_text">
<h5>Syntax:</h5>
<pre>&lt;result&gt; = vsetfp &lt;op&gt;, &lt;n x &lt;ty&gt;&gt; &lt;var1&gt;, &lt;var2&gt; <i>; yields &lt;n x bool&gt;</i>
</pre>
<h5>Overview:</h5>
<p>The '<tt>vsetfp</tt>' instruction takes two floating point vector
arguments and returns a vector of boolean values representing, at each
position, the result of the comparison between the values at that
position in the two operands.</p>
<h5>Arguments:</h5>
<p>The arguments to a '<tt>vsetfp</tt>' instruction are a comparison
operation and two value arguments. The value arguments must be of <a
href="t_floating">floating point</a> <a href="#t_packed">packed</a>
type, and they must have identical types. The operation argument must
be one of <tt>eq</tt>, <tt>ne</tt>, <tt>lt</tt>, <tt>gt</tt>,
<tt>le</tt>, <tt>ge</tt>, <tt>oeq</tt>, <tt>one</tt>, <tt>olt</tt>,
<tt>ogt</tt>, <tt>ole</tt>, <tt>oge</tt>, <tt>ueq</tt>, <tt>une</tt>,
<tt>ult</tt>, <tt>ugt</tt>, <tt>ule</tt>, <tt>uge</tt>, <tt>o</tt>,
<tt>u</tt>, <tt>true</tt>, and <tt>false</tt>. The result is a packed
<tt>bool</tt> value with the same length as each operand.</p>
<h5>Semantics:</h5>
<p>The following table shows the semantics of '<tt>vsetfp</tt>' for
floating point types. If either operand is a floating point Not a
Number (NaN) value, the operation is unordered, and the value in the
first column below is produced at that position. Otherwise, the
operation is ordered, and the value in the second column is
produced.</p>
<table border="1" cellspacing="0" cellpadding="4">
<tbody>
<tr><th>Operation</th><th>If unordered<th>Otherwise true iff</th></tr>
<tr><td><tt>eq</tt></td><td>undefined</td><td>var1 == var2</td></tr>
<tr><td><tt>ne</tt></td><td>undefined</td><td>var1 != var2</td></tr>
<tr><td><tt>lt</tt></td><td>undefined</td><td>var1 &lt; var2</td></tr>
<tr><td><tt>gt</tt></td><td>undefined</td><td>var1 &gt; var2</td></tr>
<tr><td><tt>le</tt></td><td>undefined</td><td>var1 &lt;= var2</td></tr>
<tr><td><tt>ge</tt></td><td>undefined</td><td>var1 &gt;= var2</td></tr>
<tr><td><tt>oeq</tt></td><td>false</td><td>var1 == var2</td></tr>
<tr><td><tt>one</tt></td><td>false</td><td>var1 != var2</td></tr>
<tr><td><tt>olt</tt></td><td>false</td><td>var1 &lt; var2</td></tr>
<tr><td><tt>ogt</tt></td><td>false</td><td>var1 &gt; var2</td></tr>
<tr><td><tt>ole</tt></td><td>false</td><td>var1 &lt;= var2</td></tr>
<tr><td><tt>oge</tt></td><td>false</td><td>var1 &gt;= var2</td></tr>
<tr><td><tt>ueq</tt></td><td>true</td><td>var1 == var2</td></tr>
<tr><td><tt>une</tt></td><td>true</td><td>var1 != var2</td></tr>
<tr><td><tt>ult</tt></td><td>true</td><td>var1 &lt; var2</td></tr>
<tr><td><tt>ugt</tt></td><td>true</td><td>var1 &gt; var2</td></tr>
<tr><td><tt>ule</tt></td><td>true</td><td>var1 &lt;= var2</td></tr>
<tr><td><tt>uge</tt></td><td>true</td><td>var1 &gt;= var2</td></tr>
<tr><td><tt>o</tt></td><td>false</td><td>always</td></tr>
<tr><td><tt>u</tt></td><td>true</td><td>never</td></tr>
<tr><td><tt>true</tt></td><td>true</td><td>always</td></tr>
<tr><td><tt>false</tt></td><td>false</td><td>never</td></tr>
</tbody>
</table>
<h5>Example:</h5>
<pre> &lt;result&gt; = vsetfp eq &lt;2 x float&gt; &lt;float 0.0, float 1.0&gt;, &lt;float 1.0, float 0.0&gt; <i>; yields {&lt;2 x bool&gt;}:result = false, false</i>
&lt;result&gt; = vsetfp ne &lt;2 x float&gt; &lt;float 0.0, float 1.0&gt;, &lt;float 1.0, float 0.0&gt; <i>; yields {&lt;2 x bool&gt;}:result = true, true</i>
&lt;result&gt; = vsetfp lt &lt;2 x float&gt; &lt;float 0.0, float 1.0&gt;, &lt;float 1.0, float 0.0&gt; <i>; yields {&lt;2 x bool&gt;}:result = true, false</i>
&lt;result&gt; = vsetfp gt &lt;2 x float&gt; &lt;float 0.0, float 1.0&gt;, &lt;float 1.0, float 0.0&gt; <i>; yields {&lt;2 x bool&gt;}:result = false, true</i>
&lt;result&gt; = vsetfp le &lt;2 x float&gt; &lt;float 0.0, float 1.0&gt;, &lt;float 1.0, float 0.0&gt; <i>; yields {&lt;2 x bool&gt;}:result = true, false</i>
&lt;result&gt; = vsetfp ge &lt;2 x float&gt; &lt;float 0.0, float 1.0&gt;, &lt;float 1.0, float 0.0&gt; <i>; yields {&lt;2 x bool&gt;}:result = false, true</i>
</pre>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="i_vselect">'<tt>vselect</tt>' Instruction</a>
</div>
<div class="doc_text">
<h5>Syntax:</h5>
<pre>
&lt;result&gt; = vselect &lt;n x bool&gt; &lt;cond&gt;, &lt;n x &lt;ty&gt;&gt; &lt;val1&gt;, &lt;n x &lt;ty&gt;&gt; &lt;val2&gt; <i>; yields &lt;n x &lt;ty&gt;&gt;</i>
</pre>
<h5>Overview:</h5>
<p>
The '<tt>vselect</tt>' instruction chooses one value at each position
of a vector based on a condition.
</p>
<h5>Arguments:</h5>
<p>
The '<tt>vselect</tt>' instruction requires a <a
href="#t_packed">packed</a> <tt>bool</tt> value indicating the
condition at each vector position, and two values of the same packed
type. All three operands must have the same length. The type of the
result is the same as the type of the two value operands.</p>
<h5>Semantics:</h5>
<p>
At each position where the <tt>bool</tt> vector is true, that position
of the result gets its value from the first value argument; otherwise,
it gets its value from the second value argument.
</p>
<h5>Example:</h5>
<pre>
%X = vselect bool &lt;2 x bool&gt; &lt;bool true, bool false&gt;, &lt;2 x ubyte&gt; &lt;ubyte 17, ubyte 17&gt;,
&lt;2 x ubyte&gt; &lt;ubyte 42, ubyte 42&gt; <i>; yields &lt;2 x ubyte&gt;:17, 42</i>
</pre>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<a name="memoryops">Memory Access Operations</a>

View File

@ -1710,8 +1710,8 @@ returned.</p></li>
href="/doxygen/GlobalValue_8h-source.html">llvm/GlobalValue.h</a>"</tt><br>
doxygen info: <a href="/doxygen/classllvm_1_1GlobalValue.html">GlobalValue
Class</a><br>
Superclasses: <a href="#User"><tt>User</tt></a>, <a
href="#Value"><tt>Value</tt></a></p>
Superclasses: <a href="#Constant"><tt>Constant</tt></a>,
<a href="#User"><tt>User</tt></a>, <a href="#Value"><tt>Value</tt></a></p>
<p>Global values (<a href="#GlobalVariable"><tt>GlobalVariable</tt></a>s or <a
href="#Function"><tt>Function</tt></a>s) are the only LLVM values that are
@ -1778,15 +1778,17 @@ GlobalValue is currently embedded into.</p></li>
<p><tt>#include "<a
href="/doxygen/Function_8h-source.html">llvm/Function.h</a>"</tt><br> doxygen
info: <a href="/doxygen/classllvm_1_1Function.html">Function Class</a><br>
Superclasses: <a href="#GlobalValue"><tt>GlobalValue</tt></a>, <a
href="#User"><tt>User</tt></a>, <a href="#Value"><tt>Value</tt></a></p>
Superclasses: <a href="#GlobalValue"><tt>GlobalValue</tt></a>,
<a href="#Constant"><tt>Constant</tt></a>,
<a href="#User"><tt>User</tt></a>,
<a href="#Value"><tt>Value</tt></a></p>
<p>The <tt>Function</tt> class represents a single procedure in LLVM. It is
actually one of the more complex classes in the LLVM heirarchy because it must
keep track of a large amount of data. The <tt>Function</tt> class keeps track
of a list of <a href="#BasicBlock"><tt>BasicBlock</tt></a>s, a list of formal <a
href="#Argument"><tt>Argument</tt></a>s, and a <a
href="#SymbolTable"><tt>SymbolTable</tt></a>.</p>
of a list of <a href="#BasicBlock"><tt>BasicBlock</tt></a>s, a list of formal
<a href="#Argument"><tt>Argument</tt></a>s, and a
<a href="#SymbolTable"><tt>SymbolTable</tt></a>.</p>
<p>The list of <a href="#BasicBlock"><tt>BasicBlock</tt></a>s is the most
commonly used part of <tt>Function</tt> objects. The list imposes an implicit
@ -1915,20 +1917,22 @@ iterator<br>
href="/doxygen/GlobalVariable_8h-source.html">llvm/GlobalVariable.h</a>"</tt>
<br>
doxygen info: <a href="/doxygen/classllvm_1_1GlobalVariable.html">GlobalVariable
Class</a><br> Superclasses: <a href="#GlobalValue"><tt>GlobalValue</tt></a>, <a
href="#User"><tt>User</tt></a>, <a href="#Value"><tt>Value</tt></a></p>
Class</a><br>
Superclasses: <a href="#GlobalValue"><tt>GlobalValue</tt></a>,
<a href="#Constant"><tt>Constant</tt></a>,
<a href="#User"><tt>User</tt></a>,
<a href="#Value"><tt>Value</tt></a></p>
<p>Global variables are represented with the (suprise suprise)
<tt>GlobalVariable</tt> class. Like functions, <tt>GlobalVariable</tt>s are also
subclasses of <a href="#GlobalValue"><tt>GlobalValue</tt></a>, and as such are
always referenced by their address (global values must live in memory, so their
"name" refers to their address). See <a
href="#GlobalValue"><tt>GlobalValue</tt></a> for more on this. Global variables
may have an initial value (which must be a <a
href="#Constant"><tt>Constant</tt></a>), and if they have an initializer, they
may be marked as "constant" themselves (indicating that their contents never
change at runtime).</p>
"name" refers to their constant address). See
<a href="#GlobalValue"><tt>GlobalValue</tt></a> for more on this. Global
variables may have an initial value (which must be a
<a href="#Constant"><tt>Constant</tt></a>), and if they have an initializer,
they may be marked as "constant" themselves (indicating that their contents
never change at runtime).</p>
</div>
<!-- _______________________________________________________________________ -->

View File

@ -4,7 +4,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="llvm.css" type="text/css">
<title>LLVM 1.7cvs Release Notes</title>
<title>LLVM 1.7 Release Notes</title>
</head>
<body>
@ -60,38 +60,218 @@ href="http://llvm.org/releases/">releases page</a>.</p>
<div class="doc_text">
<p>This is the seventh public release of the LLVM Compiler Infrastructure. This
release incorporates a large number of enhancements and additions (primarily in
the code generator), which combine to improve the quality of the code generated
by LLVM by up to 30% in some cases. This release is also the first release to
have first-class support for Mac OS X: all of the major bugs have been shaken
out and it is now as well supported as Linux on X86.</p>
<p>This is the eighth public release of the LLVM Compiler Infrastructure. This
release incorporates a large number of enhancements and new features,
including vector support (Intel SSE and Altivec), a new GCC4.0-based
C/C++ front-end, Objective C/C++ support, inline assembly support, and many
other big features.
</p>
</div>
<!--=========================================================================-->
<div class="doc_subsection">
<a name="newfeatures">New Features in LLVM 1.7cvs</a>
<a name="newfeatures">New Features in LLVM 1.7</a>
</div>
<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="llvmgcc4">GCC4.0-based llvm-gcc
front-end</a></div>
<div class="doc_text">
<p>LLVM 1.7 includes a brand new llvm-gcc, based on GCC 4.0.1. This version
of llvm-gcc solves many serious long-standing problems with llvm-gcc, including
all of those blocked by the <a href="http://llvm.org/PR498">llvm-gcc 4 meta
bug</a>. In addition, llvm-gcc4 implements support for many new features,
including GCC inline assembly, generic vector support, SSE and Altivec
intrinsics, and several new GCC attributes. Finally, llvm-gcc4 is
significantly faster than llvm-gcc3, respects -O options, its -c/-S options
correspond to GCC's (they emit native code), supports Objective C/C++, and
it has debugging support well underway.</p>
<p>If you can use it, llvm-gcc4 offers significant new functionality, and we
hope that it will replace llvm-gcc3 completely in a future release.
Unfortunately, it does not currently support C++ exception handling at all, and
it only works on Apple Mac OS/X machines with X86 or PowerPC processors.
</p>
</div>
<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="inlineasm">Inline Assembly
Support</a></div>
<div class="doc_text">
<p>The LLVM IR and llvm-gcc4 front-end now fully support arbitrary GCC <a
href="LangRef.html#inlineasm">inline assembly</a>. The LLVM X86 and PowerPC
code generators have initial support for it,
being able to compile basic statements, but are missing some features. Please
report any inline asm statements that crash the compiler or that are miscompiled
as bugs.</p>
</div>
<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="newsparc">New SPARC backend</a></div>
<div class="doc_text">
<p>LLVM 1.7 includes a new, fully functional, SPARC backend built in the
target-independent code generator. This SPARC backend includes support for
SPARC V8 and SPARC V9 subtargets (controlling whether V9 features can be used),
and targets the 32-bit SPARC ABI.</p>
<p>The LLVM 1.7 release is the last release that will include the LLVM "SparcV9"
backend, which was the very first LLVM native code generator. It will
be removed in LLVM 1.8, being replaced with the new SPARC backend.</p>
</div>
<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="genvector">Generic Vector Support
</a></div>
<div class="doc_text">
<p>LLVM now includes significantly extended support for SIMD vectors in its
core instruction set. It now includes three new instructions for manipulating
vectors: <a href="LangRef.html#i_extractelement"><tt>extractelement</tt></a>,
<a href="LangRef.html#i_insertelement"><tt>insertelement</tt></a>, and
<a href="LangRef.html#i_shufflevector"><tt>shufflevector</tt></a>. Further,
many bugs in vector handling have been fixed, and vectors are now supported by
the target-independent code generator. For example, if a vector operation is
not supported by a particular target, it will be correctly broken down and
executed as scalar operations.</p>
<p>Because llvm-gcc3 does not support GCC generic vectors or vector intrinsics,
llvm-gcc4 must be used.</p>
</div>
<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="ssealtivec">Intel SSE and PowerPC
Altivec support
</a></div>
<div class="doc_text">
<p>The LLVM X86 backend now supports Intel SSE 1, 2, and 3, and now uses scalar
SSE operations to implement scalar floating point math when the target supports
SSE1 (for floats) or SSE2 (for doubles). Vector SSE instructions are generated
by llvm-gcc4 when the generic vector mechanism or specific SSE intrinsics are
used.
</p>
<p>The LLVM PowerPC backend now supports the Altivec instruction set, including
both GCC -maltivec and -faltivec modes. Altivec instructions are generated
by llvm-gcc4 when the generic vector mechanism or specific Altivec intrinsics
are used.
</p>
</div>
<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="optimizernew">Optimizer
Improvements</a></div>
<div class="doc_text">
<ul>
<li>New C front-end.</li>
<li>New SPARC backend.</li>
<li>Inline assembly support.</li>
<li>The Loop Unswitching pass (<tt>-loop-unswitch</tt>) has had several bugs
fixed, has several new features, and is enabled by default in llvmgcc3
now.</li>
<li>The Loop Strength Reduction pass (<tt>-loop-reduce</tt>) is now enabled for
the X86 and Alpha backends.</li>
<li>The Instruction Combining pass (<tt>-instcombine</tt>) now includes a
framework and implementation for simplifying code based on whether computed
bits are demanded or not.</li>
<li>The Scalar Replacement of Aggregates pass (<tt>-scalarrepl</tt>) can now
promote simple unions to registers.</li>
<li>The Reassociation pass (<tt>-reassociate</tt>) can now
factor expressions, e.g. turning "A*A+A*B" into "A*(A+B)".</li>
<li>Several LLVM passes are <a href="http://llvm.org/PR681">significantly
faster</a>.</li>
</ul>
</div>
<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="codgennew">Code Generator
Improvements</a></div>
<div class="doc_text">
<ul>
<li>LLVM has a new prepass (before register allocation) list scheduler, which
supports bottom-up and top-down scheduling, pluggable priority functions and
pluggable hazard recognizers. The X86 backend uses this to reduce register
pressure and RISC targets schedule based on operation latency.</li>
<li>The tblgen-based target description framework introduced in LLVM 1.6 has
several new features, useful for targets that can fold loads and stores into
operations, and features that make the .td files more expressive.</li>
<li>The instruction selector is significantly faster in 1.7 than in 1.6.</li>
<li>The X86, Alpha and Itanium backends use new DAG-DAG instruction selectors,
making them easier to maintain and generate slightly better code.</li>
<li>The X86 backend now supports generation of Scalar SSE code for scalar FP
expressions. LLVM provides significantly better performance with Scalar SSE
instructions than it does with the Intel floating point stack
instructions.</li>
<li>The Itanium backend now has a bundling pass, which improves performance
by ~10% and reduces code size (previously it unconditionally inserted a stop
bit after every instruction).</li>
</ul>
</div>
<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="othernew">Other New Features</a></div>
<div class="doc_text">
<ul>
<li>The Mac OS/X PowerPC and X86 backends now have initial support for
Darwin DWARF
debugging information, however, debug info generation has been disabled for
the 1.7 release in llvmgcc4.</li>
<li>LLVM includes the new <a href="docs/CommandGuide/html/llvm-config.html">
llvm-config</a> utility, which makes it easier to build and link programs
against the LLVM libraries when not using the LLVM makefiles.</li>
<li>LLVM now supports first class global ctor/dtor initialization lists, no
longer forcing targets to use "__main".</li>
<li>LLVM supports assigning globals and functions to a particular section
in the result executable using the GCC section attribute.</li>
<li><a href="ExtendingLLVM.html">Adding intrinsics to LLVM</a> is now
significantly easier.</li>
<li>llvmgcc4 now fully supports C99 Variable Length Arrays, including dynamic
stack deallocation.</li>
</ul>
</div>
<!--=========================================================================-->
<div class="doc_subsection">
<a name="changes">Significant changes in LLVM 1.7cvs</a>
<a name="changes">Significant Changes in LLVM 1.7</a>
</div>
<div class="doc_text">
<ul>
<li>Removed the llvm.readport/llvm.writeport/llvm.readio/llvm.writeio
intrinsics.</li>
<li>Separated the other intrinsics based on type.</li>
<li>The official LLVM URL is now <a href="http://llvm.org/">
http://llvm.org/</a>.</li>
<li>The LLVM intrinsics used to be overloaded based on type: for example,
<a href="LangRef.html#int_ctpop"><tt>llvm.ctpop</tt></a> could work with any
integer datatype. They are now separated into different intrinsics with
suffixes to denote their argument type (e.g. <tt>llvm.ctpop.i32</tt>)). Old
LLVM .ll and .bc files that use these intrinsics will continue to work with
new LLVM versions (they are transparently upgraded by the parsers), but will
cause a warning to be emitted.</li>
<li>The <tt>llvm.readport</tt>, <tt>llvm.writeport</tt>, <tt>llvm.readio</tt>,
and <tt>llvm.writeio</tt> intrinsics have been removed. The first two
were ever only supported by the X86 backend, the last two were never
correctly supported by any target, and none were accessible through the
C front-end. Inline assembly support can now be used to
implement these operations.</li>
<li>The <tt>llvm-db</tt> tool had basic support for stepping through code, which
used the JIT. This code has been removed, and DWARF emission support added
instead. <tt>llvm-db</tt> still exists in CVS if someone wanted to write a
<tt>ptrace</tt> backend for it.</li>
</ul>
</div>
@ -155,12 +335,12 @@ useful to some people. In particular, if you would like to work on one of these
components, please contact us on the llvmdev list.</p>
<ul>
<li>The following passes are incomplete or buggy, and may be removed in future
releases: <tt>-cee</tt></li>
<li>The <tt>llvm-db</tt> tool is in a very early stage of development, but can
be used to step through programs and inspect the stack.</li>
<li>The <tt>-cee</tt> pass is known to be buggy, and may be removed in in a
future release.</li>
<li>The IA64 code generator is experimental.</li>
<li>The Alpha JIT is experimental.</li>
<li>"<tt>-filetype=asm</tt>" (the default) is the only supported value for the
<tt>-filetype</tt> llc option.</li>
</ul>
</div>
@ -173,7 +353,7 @@ components, please contact us on the llvmdev list.</p>
<div class="doc_text">
<ul>
<li>The <a href="http://llvm.org/PR656">configure script sometimes fails on Solaris/Sparc</a>. A work around is documented in <a href="http://llvm.org/PR656">PR656.</a></li>
<li>none yet</li>
</ul>
</div>
@ -201,11 +381,14 @@ components, please contact us on the llvmdev list.</p>
<div class="doc_text">
These bugs are known for the old front-end. The new GCC-4-based C front-end
suffers from none of these.
<p>
llvm-gcc3 has many significant problems that are fixed by llvm-gcc4. See
those blocked on the <a href="http://llvm.org/PR498">llvm-gcc4 meta bug</a>.
Two major ones include:</p>
<ul>
<li>C99 Variable sized arrays do not release stack memory when they go out of
<li>With llvm-gcc3,
C99 variable sized arrays do not release stack memory when they go out of
scope. Thus, the following program may run out of stack space:
<pre>
for (i = 0; i != 1000000; ++i) {
@ -214,7 +397,7 @@ suffers from none of these.
}
</pre></li>
<li>Initialization of global union variables can only be done <a
<li>With llvm-gcc3, Initialization of global union variables can only be done <a
href="http://llvm.org/PR162">with the largest union member</a>.</li>
</ul>
@ -398,11 +581,6 @@ itself.</p>
<ul>
<li>The C++ front-end is based on a pre-release of the GCC 3.4 C++ parser. This
parser is significantly more standards compliant (and picky) than prior GCC
versions. For more information, see the C++ section of the <a
href="http://gcc.gnu.org/gcc-3.4/changes.html">GCC 3.4 release notes</a>.</li>
<li>Destructors for local objects are not always run when a <tt>longjmp</tt> is
performed. In particular, destructors for objects in the <tt>longjmp</tt>ing
function and in the <tt>setjmp</tt> receiver function may not be run.
@ -442,6 +620,12 @@ problem probably cannot be fixed.</li>
supported</a>. This should not affect LLVM produced by the C or C++
frontends.</li>
<li>The C backend does not correctly implement the <a
href="LangRef.html#i_stacksave"><tt>llvm.stacksave</tt></a> or
<a href="LangRef.html#i_stackrestore"><tt>llvm.stackrestore</tt></a>
intrinsics. This means that some code compiled by it can run out of stack
space if they depend on these (e.g. C99 varargs).</li>
</ul>
</div>
@ -454,7 +638,8 @@ frontends.</li>
<div class="doc_text">
<ul>
<li>None yet</li>
<li><a href="http://llvm.org/PR736">Indirect calls crash JIT on
Darwin/x86</a>.</li>
</ul>
</div>
@ -467,21 +652,8 @@ frontends.</li>
<div class="doc_text">
<ul>
<li>None yet</li>
</ul>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<a name="sparcv9-be">Known problems with the SparcV9 back-end</a>
</div>
<div class="doc_text">
<ul>
<li><a href="http://llvm.org/PR60">[sparcv9] SparcV9 backend miscompiles
several programs in the LLVM test suite</a></li>
<li><a href="http://llvm.org/PR642">PowerPC backend does not correctly
implement ordered FP comparisons</a>.</li>
</ul>
</div>
@ -534,14 +706,33 @@ programs.</li>
<!-- ======================================================================= -->
<div class="doc_subsection">
<a name="sparc">Known problems with the SPARC back-end</a>
<a name="sparc-be">Known problems with the SPARC back-end</a>
</div>
<div class="doc_text">
<ul>
<li>None yet.</li>
<li>The SPARC backend only supports the 32-bit SPARC ABI (-m32), it does not
support the 64-bit SPARC ABI (-m64).</li>
</ul>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<a name="sparcv9-be">Known problems with the SparcV9 back-end</a>
</div>
<div class="doc_text">
<ul>
<li><a href="http://llvm.org/PR60">[sparcv9] SparcV9 backend miscompiles
several programs in the LLVM test suite</a></li>
<li>The SparcV9 backend is slated to be removed before the LLVM 1.8
release.</li>
</ul>
</div>
<!-- *********************************************************************** -->

View File

@ -23,6 +23,8 @@
<p>Written by <a href="mailto:rspencer@x10sys.com">Reid Spencer</a></p>
</div>
<p class="doc_warning">Warning: This document is out of date, please see <a href="CommandGuide/html/llvm-config.html">llvm-config</a> for more information.</p>
<!-- ======================================================================= -->
<div class="doc_section"><a name="abstract">Abstract</a></div>
<div class="doc_text">

View File

@ -10,4 +10,5 @@
LEVEL = ../..
TOOLNAME = BFtoLLVM
EXAMPLE_TOOL = 1
EXTRA_DIST = tests
include $(LEVEL)/Makefile.common

View File

@ -1,2 +0,0 @@
.cvsignore
*.inc

View File

@ -1 +0,0 @@
*.inc

View File

@ -40,11 +40,11 @@ site.exp: Makefile $(LLVM_OBJ_ROOT)/Makefile.config
@echo '## these variables are automatically generated by make ##' >site.tmp
@echo '# Do not edit here. If you wish to override these values' >>site.tmp
@echo '# edit the last section' >>site.tmp
@echo "set target_triplet $(TARGET_TRIPLE)" >> site.tmp
@echo "set llvmgcc_version $(LLVMGCC_VERSION)" >> site.tmp
@echo 'set target_triplet "$(TARGET_TRIPLE)"' >> site.tmp
@echo 'set llvmgcc_version "$(LLVMGCC_VERSION)"' >> site.tmp
@echo 'set prcontext "$(TCLSH) $(LLVM_SRC_ROOT)/test/Scripts/prcontext.tcl"' >> site.tmp
@echo 'set srcdir $(LLVM_SRC_ROOT)/test' >>site.tmp
@echo "set objdir $(LLVM_OBJ_ROOT)/test" >>site.tmp
@echo 'set srcdir "$(LLVM_SRC_ROOT)/test"' >>site.tmp
@echo 'set objdir "$(LLVM_OBJ_ROOT)/test"' >>site.tmp
@echo 'set llvmgcc "PATH=\"$(LLVMToolDir):$(PATH)\" \"$(LLVMGCC)\""' >> site.tmp
@echo 'set llvmgxx "PATH=\"$(LLVMToolDir):$(PATH)\" \"$(LLVMGCC)\""' >> site.tmp
@echo 'set llvmgccmajvers "$(LLVMGCC_MAJVERS)"' >> site.tmp

View File

@ -1,13 +0,0 @@
// RUN: not %llvmgcc -xc %s -S -o -
// This is a malformed program that is not caught by llvmgcc3.
// XFAIL: llvmgcc3
int one (int a) {
two (a, 5);
return 0;
}
static int two (int a, int b) {
}

View File

@ -1,7 +1,6 @@
// RUN: %llvmgcc %s -S -g -o - | grep 'llvm.dbg.stoppoint.*uint 14'
// PR664: ensure that line #'s are emitted for declarations
// XFAIL: llvmgcc4
short test(short br_data_0,
short br_data_1,
@ -21,3 +20,6 @@ short s1625 = sm16 + sm25;
return s0734 + s1625;
}
// FIXME: PR735
// XFAIL: llvmgcc4

View File

@ -1,12 +0,0 @@
; RUN: llvm-as < %s | llc
; The vload was getting memoized to the previous scalar load!
void %VertexProgram2() {
%xFloat0.688 = load float* null ; <float> [#uses=0]
%loadVector37.712 = load <4 x float>* null ; <<4 x float>> [#uses=1]
%inFloat3.713 = insertelement <4 x float> %loadVector37.712, float 0.000000e+00, uint 3 ; <<4 x float>> [#uses=1]
store <4 x float> %inFloat3.713, <4 x float>* null
unreachable
}

View File

@ -216,6 +216,9 @@ int main(int argc, char **argv) {
sys::RemoveFileOnSignal(sys::Path(OutputFilename));
}
}
if (FileType != TargetMachine::AssemblyFile)
std::cerr << "WARNING: only -filetype=asm is currently supported.\n";
// Ask the target to add backend passes as necessary.
if (Target.addPassesToEmitFile(Passes, *Out, FileType, Fast)) {

View File

@ -50,6 +50,7 @@ namespace {
// main Driver function
//
int main(int argc, char **argv, char * const *envp) {
std::cout << "NOTE: llvm-db is known useless right now.\n";
try {
cl::ParseCommandLineOptions(argc, argv,
" llvm source-level debugger\n");