Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Side by Side Diff: native_client_sdk/doc_generated/reference/pnacl-bitcode-abi.html

Issue 265163004: NaCl documentation: update vector documentation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Clarify vector width. Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 {{+bindTo:partials.standard_nacl_article}} 1 {{+bindTo:partials.standard_nacl_article}}
2 2
3 <section id="pnacl-bitcode-reference-manual"> 3 <section id="pnacl-bitcode-reference-manual">
4 <h1 id="pnacl-bitcode-reference-manual">PNaCl Bitcode Reference Manual</h1> 4 <h1 id="pnacl-bitcode-reference-manual">PNaCl Bitcode Reference Manual</h1>
5 <div class="contents local" id="contents" style="display: none"> 5 <div class="contents local" id="contents" style="display: none">
6 <ul class="small-gap"> 6 <ul class="small-gap">
7 <li><a class="reference internal" href="#introduction" id="id1">Introduction</a> </li> 7 <li><a class="reference internal" href="#introduction" id="id1">Introduction</a> </li>
8 <li><p class="first"><a class="reference internal" href="#high-level-structure" id="id2">High Level Structure</a></p> 8 <li><p class="first"><a class="reference internal" href="#high-level-structure" id="id2">High Level Structure</a></p>
9 <ul class="small-gap"> 9 <ul class="small-gap">
10 <li><a class="reference internal" href="#data-model" id="id3">Data Model</a></li > 10 <li><a class="reference internal" href="#data-model" id="id3">Data Model</a></li >
11 <li><a class="reference internal" href="#linkage-types" id="id4">Linkage Types</ a></li> 11 <li><a class="reference internal" href="#linkage-types" id="id4">Linkage Types</ a></li>
12 <li><a class="reference internal" href="#calling-conventions" id="id5">Calling C onventions</a></li> 12 <li><a class="reference internal" href="#calling-conventions" id="id5">Calling C onventions</a></li>
13 <li><a class="reference internal" href="#visibility-styles" id="id6">Visibility Styles</a></li> 13 <li><a class="reference internal" href="#visibility-styles" id="id6">Visibility Styles</a></li>
14 <li><a class="reference internal" href="#global-variables" id="id7">Global Varia bles</a></li> 14 <li><a class="reference internal" href="#global-variables" id="id7">Global Varia bles</a></li>
15 <li><a class="reference internal" href="#functions" id="id8">Functions</a></li> 15 <li><a class="reference internal" href="#functions" id="id8">Functions</a></li>
16 <li><a class="reference internal" href="#aliases" id="id9">Aliases</a></li> 16 <li><a class="reference internal" href="#aliases" id="id9">Aliases</a></li>
17 <li><a class="reference internal" href="#named-metadata" id="id10">Named Metadat a</a></li> 17 <li><a class="reference internal" href="#named-metadata" id="id10">Named Metadat a</a></li>
18 <li><a class="reference internal" href="#module-level-inline-assembly" id="id11" >Module-Level Inline Assembly</a></li> 18 <li><a class="reference internal" href="#module-level-inline-assembly" id="id11" >Module-Level Inline Assembly</a></li>
19 <li><a class="reference internal" href="#volatile-memory-accesses" id="id12">Vol atile Memory Accesses</a></li> 19 <li><a class="reference internal" href="#volatile-memory-accesses" id="id12">Vol atile Memory Accesses</a></li>
20 <li><a class="reference internal" href="#memory-model-for-concurrent-operations" id="id13">Memory Model for Concurrent Operations</a></li> 20 <li><a class="reference internal" href="#memory-model-for-concurrent-operations" id="id13">Memory Model for Concurrent Operations</a></li>
21 <li><a class="reference internal" href="#fast-math-flags" id="id14">Fast-Math Fl ags</a></li> 21 <li><a class="reference internal" href="#fast-math-flags" id="id14">Fast-Math Fl ags</a></li>
22 </ul> 22 </ul>
23 </li> 23 </li>
24 <li><p class="first"><a class="reference internal" href="#type-system" id="id15" >Type System</a></p> 24 <li><p class="first"><a class="reference internal" href="#type-system" id="id15" >Type System</a></p>
25 <ul class="small-gap"> 25 <ul class="small-gap">
26 <li><a class="reference internal" href="#scalar-types" id="id16">Scalar types</a ></li> 26 <li><a class="reference internal" href="#scalar-types" id="id16">Scalar types</a ></li>
27 <li><a class="reference internal" href="#array-and-struct-types" id="id17">Array and struct types</a></li> 27 <li><a class="reference internal" href="#vector-types" id="id17">Vector types</a ></li>
28 <li><a class="reference internal" href="#pointer-types" id="id18">Pointer types< /a></li> 28 <li><a class="reference internal" href="#array-and-struct-types" id="id18">Array and struct types</a></li>
29 <li><a class="reference internal" href="#undefined-values" id="id19">Undefined V alues</a></li> 29 <li><a class="reference internal" href="#pointer-types" id="id19">Pointer types< /a></li>
30 <li><a class="reference internal" href="#constant-expressions" id="id20">Constan t Expressions</a></li> 30 <li><a class="reference internal" href="#undefined-values" id="id20">Undefined V alues</a></li>
31 <li><a class="reference internal" href="#constant-expressions" id="id21">Constan t Expressions</a></li>
31 </ul> 32 </ul>
32 </li> 33 </li>
33 <li><p class="first"><a class="reference internal" href="#other-values" id="id21 ">Other Values</a></p> 34 <li><p class="first"><a class="reference internal" href="#other-values" id="id22 ">Other Values</a></p>
34 <ul class="small-gap"> 35 <ul class="small-gap">
35 <li><a class="reference internal" href="#metadata-nodes-and-metadata-strings" id ="id22">Metadata Nodes and Metadata Strings</a></li> 36 <li><a class="reference internal" href="#metadata-nodes-and-metadata-strings" id ="id23">Metadata Nodes and Metadata Strings</a></li>
36 </ul> 37 </ul>
37 </li> 38 </li>
38 <li><a class="reference internal" href="#intrinsic-global-variables" id="id23">I ntrinsic Global Variables</a></li> 39 <li><a class="reference internal" href="#intrinsic-global-variables" id="id24">I ntrinsic Global Variables</a></li>
39 <li><a class="reference internal" href="#errno-and-errors-in-arithmetic-instruct ions" id="id24">Errno and errors in arithmetic instructions</a></li> 40 <li><a class="reference internal" href="#errno-and-errors-in-arithmetic-instruct ions" id="id25">Errno and errors in arithmetic instructions</a></li>
40 <li><p class="first"><a class="reference internal" href="#instruction-reference" id="id25">Instruction Reference</a></p> 41 <li><p class="first"><a class="reference internal" href="#instruction-reference" id="id26">Instruction Reference</a></p>
41 <ul class="small-gap"> 42 <ul class="small-gap">
42 <li><a class="reference internal" href="#list-of-allowed-instructions" id="id26" >List of allowed instructions</a></li> 43 <li><a class="reference internal" href="#list-of-allowed-instructions" id="id27" >List of allowed instructions</a></li>
43 <li><a class="reference internal" href="#alloca" id="id27"><code>alloca</code></ a></li> 44 <li><a class="reference internal" href="#alloca" id="id28"><code>alloca</code></ a></li>
44 </ul> 45 </ul>
45 </li> 46 </li>
46 <li><p class="first"><a class="reference internal" href="#intrinsic-functions" i d="id28">Intrinsic Functions</a></p> 47 <li><p class="first"><a class="reference internal" href="#intrinsic-functions" i d="id29">Intrinsic Functions</a></p>
47 <ul class="small-gap"> 48 <ul class="small-gap">
48 <li><a class="reference internal" href="#list-of-allowed-intrinsics" id="id29">L ist of allowed intrinsics</a></li> 49 <li><a class="reference internal" href="#list-of-allowed-intrinsics" id="id30">L ist of allowed intrinsics</a></li>
49 <li><a class="reference internal" href="#thread-pointer-related-intrinsics" id=" id30">Thread pointer related intrinsics</a></li> 50 <li><a class="reference internal" href="#thread-pointer-related-intrinsics" id=" id31">Thread pointer related intrinsics</a></li>
50 <li><a class="reference internal" href="#setjmp-and-longjmp" id="id31">Setjmp an d Longjmp</a></li> 51 <li><a class="reference internal" href="#setjmp-and-longjmp" id="id32">Setjmp an d Longjmp</a></li>
51 <li><a class="reference internal" href="#atomic-intrinsics" id="id32">Atomic int rinsics</a></li> 52 <li><a class="reference internal" href="#atomic-intrinsics" id="id33">Atomic int rinsics</a></li>
52 </ul> 53 </ul>
53 </li> 54 </li>
54 </ul> 55 </ul>
55 56
56 </div><section id="introduction"> 57 </div><section id="introduction">
57 <h2 id="introduction">Introduction</h2> 58 <h2 id="introduction">Introduction</h2>
58 <p>This document is a reference manual for the PNaCl bitcode format. It describe s 59 <p>This document is a reference manual for the PNaCl bitcode format. It describe s
59 the bitcode on a <em>semantic</em> level; the physical encoding level will be de scribed 60 the bitcode on a <em>semantic</em> level; the physical encoding level will be de scribed
60 elsewhere. For the purpose of this document, the textual form of LLVM IR is 61 elsewhere. For the purpose of this document, the textual form of LLVM IR is
61 used to describe instructions and other bitcode constructs.</p> 62 used to describe instructions and other bitcode constructs.</p>
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 <ul class="small-gap"> 176 <ul class="small-gap">
176 <li><p class="first">The only scalar types allowed are integer, float (32-bit fl oating point), 177 <li><p class="first">The only scalar types allowed are integer, float (32-bit fl oating point),
177 double (64-bit floating point) and void.</p> 178 double (64-bit floating point) and void.</p>
178 <ul class="small-gap"> 179 <ul class="small-gap">
179 <li>The only integer sizes allowed are i1, i8, i16, i32 and i64.</li> 180 <li>The only integer sizes allowed are i1, i8, i16, i32 and i64.</li>
180 <li>The only integer sizes allowed for function arguments and function return 181 <li>The only integer sizes allowed for function arguments and function return
181 values are i32 and i64.</li> 182 values are i32 and i64.</li>
182 </ul> 183 </ul>
183 </li> 184 </li>
184 </ul> 185 </ul>
186 </section><section id="vector-types">
187 <h3 id="vector-types">Vector types</h3>
188 <p>The only vector types allowed are:</p>
189 <ul class="small-gap">
190 <li>128-bit vectors integers of elements size i8, i16, i32.</li>
191 <li>128-bit vectors of float elements.</li>
192 <li>Vectors of i1 type with element counts corresponding to the allowed
193 element counts listed previously (their width is therefore not
194 128-bits).</li>
195 </ul>
185 </section><section id="array-and-struct-types"> 196 </section><section id="array-and-struct-types">
186 <h3 id="array-and-struct-types">Array and struct types</h3> 197 <h3 id="array-and-struct-types">Array and struct types</h3>
187 <p>Array and struct types are only allowed in 198 <p>Array and struct types are only allowed in
188 <a class="reference internal" href="#bitcode-globalvariables"><em>global variabl e initializers</em></a>.</p> 199 <a class="reference internal" href="#bitcode-globalvariables"><em>global variabl e initializers</em></a>.</p>
189 </section><section id="pointer-types"> 200 </section><section id="pointer-types">
190 <span id="bitcode-pointertypes"></span><h3 id="pointer-types"><span id="bitcode- pointertypes"></span>Pointer types</h3> 201 <span id="bitcode-pointertypes"></span><h3 id="pointer-types"><span id="bitcode- pointertypes"></span>Pointer types</h3>
191 <p>Only the following pointer types are allowed:</p> 202 <p>Only the following pointer types are allowed:</p>
192 <ul class="small-gap"> 203 <ul class="small-gap">
193 <li>Pointers to valid PNaCl bitcode scalar types, as specified above.</li> 204 <li>Pointers to valid PNaCl bitcode scalar types, as specified above.</li>
194 <li>Pointers to functions.</li> 205 <li>Pointers to functions.</li>
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 <li><p class="first"><code>bitcast</code></p> 312 <li><p class="first"><code>bitcast</code></p>
302 <p>The pointer argument of a <code>bitcast</code> instruction must be a <em>inhe rent</em> pointer 313 <p>The pointer argument of a <code>bitcast</code> instruction must be a <em>inhe rent</em> pointer
303 (see <a class="reference internal" href="#bitcode-pointertypes"><em>pointer type s</em></a>).</p> 314 (see <a class="reference internal" href="#bitcode-pointertypes"><em>pointer type s</em></a>).</p>
304 </li> 315 </li>
305 <li><code>icmp</code></li> 316 <li><code>icmp</code></li>
306 <li><code>fcmp</code></li> 317 <li><code>fcmp</code></li>
307 <li><code>phi</code></li> 318 <li><code>phi</code></li>
308 <li><code>select</code></li> 319 <li><code>select</code></li>
309 <li><code>call</code></li> 320 <li><code>call</code></li>
310 <li><code>unreachable</code></li> 321 <li><code>unreachable</code></li>
322 <li><code>insertelement</code></li>
323 <li><code>extractelement</code></li>
311 </ul> 324 </ul>
312 </section><section id="alloca"> 325 </section><section id="alloca">
313 <span id="bitcode-allocainst"></span><h3 id="alloca"><span id="bitcode-allocains t"></span><code>alloca</code></h3> 326 <span id="bitcode-allocainst"></span><h3 id="alloca"><span id="bitcode-allocains t"></span><code>alloca</code></h3>
314 <p>The only allowed type for <code>alloca</code> instructions in PNaCl bitcode i s i8. The 327 <p>The only allowed type for <code>alloca</code> instructions in PNaCl bitcode i s i8. The
315 size argument must be an i32. For example:</p> 328 size argument must be an i32. For example:</p>
316 <pre> 329 <pre>
317 %buf = alloca i8, i32 8, align 4 330 %buf = alloca i8, i32 8, align 4
318 </pre> 331 </pre>
319 </section></section><section id="intrinsic-functions"> 332 </section></section><section id="intrinsic-functions">
320 <h2 id="intrinsic-functions">Intrinsic Functions</h2> 333 <h2 id="intrinsic-functions">Intrinsic Functions</h2>
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 <p>The <code>llvm.nacl.atomic.is.lock.free</code> intrinsic is designed to 460 <p>The <code>llvm.nacl.atomic.is.lock.free</code> intrinsic is designed to
448 determine at translation time whether atomic operations of a certain 461 determine at translation time whether atomic operations of a certain
449 <code>byte_size</code> (a compile-time constant), at a particular <code>address< /code>, 462 <code>byte_size</code> (a compile-time constant), at a particular <code>address< /code>,
450 are lock-free or not. This reflects the C11 <code>atomic_is_lock_free</code> 463 are lock-free or not. This reflects the C11 <code>atomic_is_lock_free</code>
451 function from header <code>&lt;stdatomic.h&gt;</code> and the C++11 <code>is_loc k_free</code> 464 function from header <code>&lt;stdatomic.h&gt;</code> and the C++11 <code>is_loc k_free</code>
452 member function in header <code>&lt;atomic&gt;</code>. It can be used through th e 465 member function in header <code>&lt;atomic&gt;</code>. It can be used through th e
453 <code>__nacl_atomic_is_lock_free</code> builtin.</p> 466 <code>__nacl_atomic_is_lock_free</code> builtin.</p>
454 </section></section></section> 467 </section></section></section>
455 468
456 {{/partials.standard_nacl_article}} 469 {{/partials.standard_nacl_article}}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698