OLD | NEW |
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
> |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 <li><p class="first"><code>llvm.memset</code></p> | 320 <li><p class="first"><code>llvm.memset</code></p> |
321 <p>These intrinsics are only supported with an i32 <code>len</code> argument.</p
> | 321 <p>These intrinsics are only supported with an i32 <code>len</code> argument.</p
> |
322 </li> | 322 </li> |
323 <li><p class="first"><code>llvm.bswap</code></p> | 323 <li><p class="first"><code>llvm.bswap</code></p> |
324 <p>The overloaded <code>llvm.bswap</code> intrinsic is only supported with the f
ollowing | 324 <p>The overloaded <code>llvm.bswap</code> intrinsic is only supported with the f
ollowing |
325 argument types: i16, i32, i64 (the types supported by C-style GCC builtins).</p> | 325 argument types: i16, i32, i64 (the types supported by C-style GCC builtins).</p> |
326 </li> | 326 </li> |
327 <li><code>llvm.ctlz</code></li> | 327 <li><code>llvm.ctlz</code></li> |
328 <li><code>llvm.cttz</code></li> | 328 <li><code>llvm.cttz</code></li> |
329 <li><p class="first"><code>llvm.ctpop</code></p> | 329 <li><p class="first"><code>llvm.ctpop</code></p> |
330 <p>The overloaded llvm.ctlz, llvm.cttz, and llvm.ctpop intrinsics are only | 330 <p>The overloaded <code>llvm.ctlz</code>, <code>llvm.cttz</code>, and <code>llvm
.ctpop</code> intrinsics |
331 supported with the i32 and i64 argument types (the types supported by | 331 are only supported with the i32 and i64 argument types (the types |
332 C-style GCC builtins).</p> | 332 supported by C-style GCC builtins).</p> |
| 333 </li> |
| 334 <li><p class="first"><code>llvm.fabs</code></p> |
| 335 <p>The overloaded <code>llvm.fabs</code> intrinsic is supported for float, doubl
e and |
| 336 <code><4 x float></code> argument types. It returns the absolute value of |
| 337 the argument. Some notable points: it returns <code>+0.0</code> when given <code
>-0.0</code>, |
| 338 <code>+inf</code> when given <code>-inf</code>, and a positive <code>NaN</code>
when given any |
| 339 signed <code>NaN</code>.</p> |
| 340 <p>NOTE: This intrinsic was introduced in the pepper_42 SDK.</p> |
333 </li> | 341 </li> |
334 <li><p class="first"><code>llvm.sqrt</code></p> | 342 <li><p class="first"><code>llvm.sqrt</code></p> |
335 <p>The overloaded <code>llvm.sqrt</code> intrinsic is only supported for float | 343 <p>The overloaded <code>llvm.sqrt</code> intrinsic is only supported for float |
336 and double arguments types. This has the same semantics as the libc | 344 and double arguments types. This has the same semantics as the libc |
337 sqrt function, returning NaN for values less than -0.0. However, this | 345 sqrt function, returning <code>NaN</code> for values less than <code>-0.0</code>
. |
338 does not set <code>errno</code> when the result is NaN (see the | 346 However, this does not set <code>errno</code> when the result is NaN (see the |
339 <a class="reference internal" href="#ir-and-errno"><em>instructions and errno</e
m></a> section).</p> | 347 <a class="reference internal" href="#ir-and-errno"><em>instructions and errno</e
m></a> section).</p> |
340 </li> | 348 </li> |
341 <li><code>llvm.stacksave</code></li> | 349 <li><code>llvm.stacksave</code></li> |
342 <li><p class="first"><code>llvm.stackrestore</code></p> | 350 <li><p class="first"><code>llvm.stackrestore</code></p> |
343 <p>These intrinsics are used to implement language features like scoped automati
c | 351 <p>These intrinsics are used to implement language features like scoped automati
c |
344 variable sized arrays in C99. <code>llvm.stacksave</code> returns a value that | 352 variable sized arrays in C99. <code>llvm.stacksave</code> returns a value that |
345 represents the current state of the stack. This value may only be used as the | 353 represents the current state of the stack. This value may only be used as the |
346 argument to <code>llvm.stackrestore</code>, which restores the stack to the give
n | 354 argument to <code>llvm.stackrestore</code>, which restores the stack to the give
n |
347 state.</p> | 355 state.</p> |
348 </li> | 356 </li> |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 <p>The <code>llvm.nacl.atomic.is.lock.free</code> intrinsic is designed to | 444 <p>The <code>llvm.nacl.atomic.is.lock.free</code> intrinsic is designed to |
437 determine at translation time whether atomic operations of a certain | 445 determine at translation time whether atomic operations of a certain |
438 <code>byte_size</code> (a compile-time constant), at a particular <code>address<
/code>, | 446 <code>byte_size</code> (a compile-time constant), at a particular <code>address<
/code>, |
439 are lock-free or not. This reflects the C11 <code>atomic_is_lock_free</code> | 447 are lock-free or not. This reflects the C11 <code>atomic_is_lock_free</code> |
440 function from header <code><stdatomic.h></code> and the C++11 <code>is_loc
k_free</code> | 448 function from header <code><stdatomic.h></code> and the C++11 <code>is_loc
k_free</code> |
441 member function in header <code><atomic></code>. It can be used through th
e | 449 member function in header <code><atomic></code>. It can be used through th
e |
442 <code>__nacl_atomic_is_lock_free</code> builtin.</p> | 450 <code>__nacl_atomic_is_lock_free</code> builtin.</p> |
443 </section> | 451 </section> |
444 | 452 |
445 {{/partials.standard_nacl_article}} | 453 {{/partials.standard_nacl_article}} |
OLD | NEW |