OLD | NEW |
1 ============================== | 1 ============================== |
2 PNaCl Bitcode Reference Manual | 2 PNaCl Bitcode Reference Manual |
3 ============================== | 3 ============================== |
4 | 4 |
5 .. contents:: | 5 .. contents:: |
6 :local: | 6 :local: |
7 :backlinks: none | 7 :backlinks: none |
8 :depth: 3 | 8 :depth: 3 |
9 | 9 |
10 Introduction | 10 Introduction |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 * ``bitcast`` | 361 * ``bitcast`` |
362 | 362 |
363 The pointer argument of a ``bitcast`` instruction must be a *inherent* pointer | 363 The pointer argument of a ``bitcast`` instruction must be a *inherent* pointer |
364 (see :ref:`pointer types <bitcode_pointertypes>`). | 364 (see :ref:`pointer types <bitcode_pointertypes>`). |
365 | 365 |
366 * ``icmp`` | 366 * ``icmp`` |
367 * ``fcmp`` | 367 * ``fcmp`` |
368 * ``phi`` | 368 * ``phi`` |
369 * ``select`` | 369 * ``select`` |
370 * ``call`` | 370 * ``call`` |
| 371 * ``unreachable`` |
371 | 372 |
372 .. _bitcode_allocainst: | 373 .. _bitcode_allocainst: |
373 | 374 |
374 ``alloca`` | 375 ``alloca`` |
375 ---------- | 376 ---------- |
376 | 377 |
377 The only allowed type for ``alloca`` instructions in PNaCl bitcode is i8. The | 378 The only allowed type for ``alloca`` instructions in PNaCl bitcode is i8. The |
378 size argument must be an i32. For example: | 379 size argument must be an i32. For example: |
379 | 380 |
380 .. naclcode:: | 381 .. naclcode:: |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 | 546 |
546 declare i1 @llvm.nacl.atomic.is.lock.free(i32 <byte_size>, i8* <address>) | 547 declare i1 @llvm.nacl.atomic.is.lock.free(i32 <byte_size>, i8* <address>) |
547 | 548 |
548 The ``llvm.nacl.atomic.is.lock.free`` intrinsic is designed to | 549 The ``llvm.nacl.atomic.is.lock.free`` intrinsic is designed to |
549 determine at translation time whether atomic operations of a certain | 550 determine at translation time whether atomic operations of a certain |
550 ``byte_size`` (a compile-time constant), at a particular ``address``, | 551 ``byte_size`` (a compile-time constant), at a particular ``address``, |
551 are lock-free or not. This reflects the C11 ``atomic_is_lock_free`` | 552 are lock-free or not. This reflects the C11 ``atomic_is_lock_free`` |
552 function from header ``<stdatomic.h>`` and the C++11 ``is_lock_free`` | 553 function from header ``<stdatomic.h>`` and the C++11 ``is_lock_free`` |
553 member function in header ``<atomic>``. It can be used through the | 554 member function in header ``<atomic>``. It can be used through the |
554 ``__nacl_atomic_is_lock_free`` builtin. | 555 ``__nacl_atomic_is_lock_free`` builtin. |
OLD | NEW |