Add a new attribute called 'jumptable' that creates jump-instruction tables for funct...
[oota-llvm.git] / docs / LangRef.rst
1 ==============================
2 LLVM Language Reference Manual
3 ==============================
4
5 .. contents::
6    :local:
7    :depth: 4
8
9 Abstract
10 ========
11
12 This document is a reference manual for the LLVM assembly language. LLVM
13 is a Static Single Assignment (SSA) based representation that provides
14 type safety, low-level operations, flexibility, and the capability of
15 representing 'all' high-level languages cleanly. It is the common code
16 representation used throughout all phases of the LLVM compilation
17 strategy.
18
19 Introduction
20 ============
21
22 The LLVM code representation is designed to be used in three different
23 forms: as an in-memory compiler IR, as an on-disk bitcode representation
24 (suitable for fast loading by a Just-In-Time compiler), and as a human
25 readable assembly language representation. This allows LLVM to provide a
26 powerful intermediate representation for efficient compiler
27 transformations and analysis, while providing a natural means to debug
28 and visualize the transformations. The three different forms of LLVM are
29 all equivalent. This document describes the human readable
30 representation and notation.
31
32 The LLVM representation aims to be light-weight and low-level while
33 being expressive, typed, and extensible at the same time. It aims to be
34 a "universal IR" of sorts, by being at a low enough level that
35 high-level ideas may be cleanly mapped to it (similar to how
36 microprocessors are "universal IR's", allowing many source languages to
37 be mapped to them). By providing type information, LLVM can be used as
38 the target of optimizations: for example, through pointer analysis, it
39 can be proven that a C automatic variable is never accessed outside of
40 the current function, allowing it to be promoted to a simple SSA value
41 instead of a memory location.
42
43 .. _wellformed:
44
45 Well-Formedness
46 ---------------
47
48 It is important to note that this document describes 'well formed' LLVM
49 assembly language. There is a difference between what the parser accepts
50 and what is considered 'well formed'. For example, the following
51 instruction is syntactically okay, but not well formed:
52
53 .. code-block:: llvm
54
55     %x = add i32 1, %x
56
57 because the definition of ``%x`` does not dominate all of its uses. The
58 LLVM infrastructure provides a verification pass that may be used to
59 verify that an LLVM module is well formed. This pass is automatically
60 run by the parser after parsing input assembly and by the optimizer
61 before it outputs bitcode. The violations pointed out by the verifier
62 pass indicate bugs in transformation passes or input to the parser.
63
64 .. _identifiers:
65
66 Identifiers
67 ===========
68
69 LLVM identifiers come in two basic types: global and local. Global
70 identifiers (functions, global variables) begin with the ``'@'``
71 character. Local identifiers (register names, types) begin with the
72 ``'%'`` character. Additionally, there are three different formats for
73 identifiers, for different purposes:
74
75 #. Named values are represented as a string of characters with their
76    prefix. For example, ``%foo``, ``@DivisionByZero``,
77    ``%a.really.long.identifier``. The actual regular expression used is
78    '``[%@][a-zA-Z$._][a-zA-Z$._0-9]*``'. Identifiers which require other
79    characters in their names can be surrounded with quotes. Special
80    characters may be escaped using ``"\xx"`` where ``xx`` is the ASCII
81    code for the character in hexadecimal. In this way, any character can
82    be used in a name value, even quotes themselves.
83 #. Unnamed values are represented as an unsigned numeric value with
84    their prefix. For example, ``%12``, ``@2``, ``%44``.
85 #. Constants, which are described in the section  Constants_ below.
86
87 LLVM requires that values start with a prefix for two reasons: Compilers
88 don't need to worry about name clashes with reserved words, and the set
89 of reserved words may be expanded in the future without penalty.
90 Additionally, unnamed identifiers allow a compiler to quickly come up
91 with a temporary variable without having to avoid symbol table
92 conflicts.
93
94 Reserved words in LLVM are very similar to reserved words in other
95 languages. There are keywords for different opcodes ('``add``',
96 '``bitcast``', '``ret``', etc...), for primitive type names ('``void``',
97 '``i32``', etc...), and others. These reserved words cannot conflict
98 with variable names, because none of them start with a prefix character
99 (``'%'`` or ``'@'``).
100
101 Here is an example of LLVM code to multiply the integer variable
102 '``%X``' by 8:
103
104 The easy way:
105
106 .. code-block:: llvm
107
108     %result = mul i32 %X, 8
109
110 After strength reduction:
111
112 .. code-block:: llvm
113
114     %result = shl i32 %X, 3
115
116 And the hard way:
117
118 .. code-block:: llvm
119
120     %0 = add i32 %X, %X           ; yields {i32}:%0
121     %1 = add i32 %0, %0           ; yields {i32}:%1
122     %result = add i32 %1, %1
123
124 This last way of multiplying ``%X`` by 8 illustrates several important
125 lexical features of LLVM:
126
127 #. Comments are delimited with a '``;``' and go until the end of line.
128 #. Unnamed temporaries are created when the result of a computation is
129    not assigned to a named value.
130 #. Unnamed temporaries are numbered sequentially (using a per-function
131    incrementing counter, starting with 0). Note that basic blocks are
132    included in this numbering. For example, if the entry basic block is not
133    given a label name, then it will get number 0.
134
135 It also shows a convention that we follow in this document. When
136 demonstrating instructions, we will follow an instruction with a comment
137 that defines the type and name of value produced.
138
139 High Level Structure
140 ====================
141
142 Module Structure
143 ----------------
144
145 LLVM programs are composed of ``Module``'s, each of which is a
146 translation unit of the input programs. Each module consists of
147 functions, global variables, and symbol table entries. Modules may be
148 combined together with the LLVM linker, which merges function (and
149 global variable) definitions, resolves forward declarations, and merges
150 symbol table entries. Here is an example of the "hello world" module:
151
152 .. code-block:: llvm
153
154     ; Declare the string constant as a global constant.
155     @.str = private unnamed_addr constant [13 x i8] c"hello world\0A\00"
156
157     ; External declaration of the puts function
158     declare i32 @puts(i8* nocapture) nounwind
159
160     ; Definition of main function
161     define i32 @main() {   ; i32()*
162       ; Convert [13 x i8]* to i8  *...
163       %cast210 = getelementptr [13 x i8]* @.str, i64 0, i64 0
164
165       ; Call puts function to write out the string to stdout.
166       call i32 @puts(i8* %cast210)
167       ret i32 0
168     }
169
170     ; Named metadata
171     !1 = metadata !{i32 42}
172     !foo = !{!1, null}
173
174 This example is made up of a :ref:`global variable <globalvars>` named
175 "``.str``", an external declaration of the "``puts``" function, a
176 :ref:`function definition <functionstructure>` for "``main``" and
177 :ref:`named metadata <namedmetadatastructure>` "``foo``".
178
179 In general, a module is made up of a list of global values (where both
180 functions and global variables are global values). Global values are
181 represented by a pointer to a memory location (in this case, a pointer
182 to an array of char, and a pointer to a function), and have one of the
183 following :ref:`linkage types <linkage>`.
184
185 .. _linkage:
186
187 Linkage Types
188 -------------
189
190 All Global Variables and Functions have one of the following types of
191 linkage:
192
193 ``private``
194     Global values with "``private``" linkage are only directly
195     accessible by objects in the current module. In particular, linking
196     code into a module with an private global value may cause the
197     private to be renamed as necessary to avoid collisions. Because the
198     symbol is private to the module, all references can be updated. This
199     doesn't show up in any symbol table in the object file.
200 ``internal``
201     Similar to private, but the value shows as a local symbol
202     (``STB_LOCAL`` in the case of ELF) in the object file. This
203     corresponds to the notion of the '``static``' keyword in C.
204 ``available_externally``
205     Globals with "``available_externally``" linkage are never emitted
206     into the object file corresponding to the LLVM module. They exist to
207     allow inlining and other optimizations to take place given knowledge
208     of the definition of the global, which is known to be somewhere
209     outside the module. Globals with ``available_externally`` linkage
210     are allowed to be discarded at will, and are otherwise the same as
211     ``linkonce_odr``. This linkage type is only allowed on definitions,
212     not declarations.
213 ``linkonce``
214     Globals with "``linkonce``" linkage are merged with other globals of
215     the same name when linkage occurs. This can be used to implement
216     some forms of inline functions, templates, or other code which must
217     be generated in each translation unit that uses it, but where the
218     body may be overridden with a more definitive definition later.
219     Unreferenced ``linkonce`` globals are allowed to be discarded. Note
220     that ``linkonce`` linkage does not actually allow the optimizer to
221     inline the body of this function into callers because it doesn't
222     know if this definition of the function is the definitive definition
223     within the program or whether it will be overridden by a stronger
224     definition. To enable inlining and other optimizations, use
225     "``linkonce_odr``" linkage.
226 ``weak``
227     "``weak``" linkage has the same merging semantics as ``linkonce``
228     linkage, except that unreferenced globals with ``weak`` linkage may
229     not be discarded. This is used for globals that are declared "weak"
230     in C source code.
231 ``common``
232     "``common``" linkage is most similar to "``weak``" linkage, but they
233     are used for tentative definitions in C, such as "``int X;``" at
234     global scope. Symbols with "``common``" linkage are merged in the
235     same way as ``weak symbols``, and they may not be deleted if
236     unreferenced. ``common`` symbols may not have an explicit section,
237     must have a zero initializer, and may not be marked
238     ':ref:`constant <globalvars>`'. Functions and aliases may not have
239     common linkage.
240
241 .. _linkage_appending:
242
243 ``appending``
244     "``appending``" linkage may only be applied to global variables of
245     pointer to array type. When two global variables with appending
246     linkage are linked together, the two global arrays are appended
247     together. This is the LLVM, typesafe, equivalent of having the
248     system linker append together "sections" with identical names when
249     .o files are linked.
250 ``extern_weak``
251     The semantics of this linkage follow the ELF object file model: the
252     symbol is weak until linked, if not linked, the symbol becomes null
253     instead of being an undefined reference.
254 ``linkonce_odr``, ``weak_odr``
255     Some languages allow differing globals to be merged, such as two
256     functions with different semantics. Other languages, such as
257     ``C++``, ensure that only equivalent globals are ever merged (the
258     "one definition rule" --- "ODR").  Such languages can use the
259     ``linkonce_odr`` and ``weak_odr`` linkage types to indicate that the
260     global will only be merged with equivalent globals. These linkage
261     types are otherwise the same as their non-``odr`` versions.
262 ``external``
263     If none of the above identifiers are used, the global is externally
264     visible, meaning that it participates in linkage and can be used to
265     resolve external symbol references.
266
267 It is illegal for a function *declaration* to have any linkage type
268 other than ``external`` or ``extern_weak``.
269
270 .. _callingconv:
271
272 Calling Conventions
273 -------------------
274
275 LLVM :ref:`functions <functionstructure>`, :ref:`calls <i_call>` and
276 :ref:`invokes <i_invoke>` can all have an optional calling convention
277 specified for the call. The calling convention of any pair of dynamic
278 caller/callee must match, or the behavior of the program is undefined.
279 The following calling conventions are supported by LLVM, and more may be
280 added in the future:
281
282 "``ccc``" - The C calling convention
283     This calling convention (the default if no other calling convention
284     is specified) matches the target C calling conventions. This calling
285     convention supports varargs function calls and tolerates some
286     mismatch in the declared prototype and implemented declaration of
287     the function (as does normal C).
288 "``fastcc``" - The fast calling convention
289     This calling convention attempts to make calls as fast as possible
290     (e.g. by passing things in registers). This calling convention
291     allows the target to use whatever tricks it wants to produce fast
292     code for the target, without having to conform to an externally
293     specified ABI (Application Binary Interface). `Tail calls can only
294     be optimized when this, the GHC or the HiPE convention is
295     used. <CodeGenerator.html#id80>`_ This calling convention does not
296     support varargs and requires the prototype of all callees to exactly
297     match the prototype of the function definition.
298 "``coldcc``" - The cold calling convention
299     This calling convention attempts to make code in the caller as
300     efficient as possible under the assumption that the call is not
301     commonly executed. As such, these calls often preserve all registers
302     so that the call does not break any live ranges in the caller side.
303     This calling convention does not support varargs and requires the
304     prototype of all callees to exactly match the prototype of the
305     function definition. Furthermore the inliner doesn't consider such function
306     calls for inlining.
307 "``cc 10``" - GHC convention
308     This calling convention has been implemented specifically for use by
309     the `Glasgow Haskell Compiler (GHC) <http://www.haskell.org/ghc>`_.
310     It passes everything in registers, going to extremes to achieve this
311     by disabling callee save registers. This calling convention should
312     not be used lightly but only for specific situations such as an
313     alternative to the *register pinning* performance technique often
314     used when implementing functional programming languages. At the
315     moment only X86 supports this convention and it has the following
316     limitations:
317
318     -  On *X86-32* only supports up to 4 bit type parameters. No
319        floating point types are supported.
320     -  On *X86-64* only supports up to 10 bit type parameters and 6
321        floating point parameters.
322
323     This calling convention supports `tail call
324     optimization <CodeGenerator.html#id80>`_ but requires both the
325     caller and callee are using it.
326 "``cc 11``" - The HiPE calling convention
327     This calling convention has been implemented specifically for use by
328     the `High-Performance Erlang
329     (HiPE) <http://www.it.uu.se/research/group/hipe/>`_ compiler, *the*
330     native code compiler of the `Ericsson's Open Source Erlang/OTP
331     system <http://www.erlang.org/download.shtml>`_. It uses more
332     registers for argument passing than the ordinary C calling
333     convention and defines no callee-saved registers. The calling
334     convention properly supports `tail call
335     optimization <CodeGenerator.html#id80>`_ but requires that both the
336     caller and the callee use it. It uses a *register pinning*
337     mechanism, similar to GHC's convention, for keeping frequently
338     accessed runtime components pinned to specific hardware registers.
339     At the moment only X86 supports this convention (both 32 and 64
340     bit).
341 "``webkit_jscc``" - WebKit's JavaScript calling convention
342     This calling convention has been implemented for `WebKit FTL JIT
343     <https://trac.webkit.org/wiki/FTLJIT>`_. It passes arguments on the
344     stack right to left (as cdecl does), and returns a value in the
345     platform's customary return register.
346 "``anyregcc``" - Dynamic calling convention for code patching
347     This is a special convention that supports patching an arbitrary code
348     sequence in place of a call site. This convention forces the call
349     arguments into registers but allows them to be dynamcially
350     allocated. This can currently only be used with calls to
351     llvm.experimental.patchpoint because only this intrinsic records
352     the location of its arguments in a side table. See :doc:`StackMaps`.
353 "``preserve_mostcc``" - The `PreserveMost` calling convention
354     This calling convention attempts to make the code in the caller as little
355     intrusive as possible. This calling convention behaves identical to the `C`
356     calling convention on how arguments and return values are passed, but it
357     uses a different set of caller/callee-saved registers. This alleviates the
358     burden of saving and recovering a large register set before and after the
359     call in the caller. If the arguments are passed in callee-saved registers,
360     then they will be preserved by the callee across the call. This doesn't
361     apply for values returned in callee-saved registers.
362
363     - On X86-64 the callee preserves all general purpose registers, except for
364       R11. R11 can be used as a scratch register. Floating-point registers
365       (XMMs/YMMs) are not preserved and need to be saved by the caller.
366
367     The idea behind this convention is to support calls to runtime functions
368     that have a hot path and a cold path. The hot path is usually a small piece
369     of code that doesn't many registers. The cold path might need to call out to
370     another function and therefore only needs to preserve the caller-saved
371     registers, which haven't already been saved by the caller. The
372     `PreserveMost` calling convention is very similar to the `cold` calling
373     convention in terms of caller/callee-saved registers, but they are used for
374     different types of function calls. `coldcc` is for function calls that are
375     rarely executed, whereas `preserve_mostcc` function calls are intended to be
376     on the hot path and definitely executed a lot. Furthermore `preserve_mostcc`
377     doesn't prevent the inliner from inlining the function call.
378
379     This calling convention will be used by a future version of the ObjectiveC
380     runtime and should therefore still be considered experimental at this time.
381     Although this convention was created to optimize certain runtime calls to
382     the ObjectiveC runtime, it is not limited to this runtime and might be used
383     by other runtimes in the future too. The current implementation only
384     supports X86-64, but the intention is to support more architectures in the
385     future.
386 "``preserve_allcc``" - The `PreserveAll` calling convention
387     This calling convention attempts to make the code in the caller even less
388     intrusive than the `PreserveMost` calling convention. This calling
389     convention also behaves identical to the `C` calling convention on how
390     arguments and return values are passed, but it uses a different set of
391     caller/callee-saved registers. This removes the burden of saving and
392     recovering a large register set before and after the call in the caller. If
393     the arguments are passed in callee-saved registers, then they will be
394     preserved by the callee across the call. This doesn't apply for values
395     returned in callee-saved registers.
396
397     - On X86-64 the callee preserves all general purpose registers, except for
398       R11. R11 can be used as a scratch register. Furthermore it also preserves
399       all floating-point registers (XMMs/YMMs).
400
401     The idea behind this convention is to support calls to runtime functions
402     that don't need to call out to any other functions.
403
404     This calling convention, like the `PreserveMost` calling convention, will be
405     used by a future version of the ObjectiveC runtime and should be considered
406     experimental at this time.
407 "``cc <n>``" - Numbered convention
408     Any calling convention may be specified by number, allowing
409     target-specific calling conventions to be used. Target specific
410     calling conventions start at 64.
411
412 More calling conventions can be added/defined on an as-needed basis, to
413 support Pascal conventions or any other well-known target-independent
414 convention.
415
416 .. _visibilitystyles:
417
418 Visibility Styles
419 -----------------
420
421 All Global Variables and Functions have one of the following visibility
422 styles:
423
424 "``default``" - Default style
425     On targets that use the ELF object file format, default visibility
426     means that the declaration is visible to other modules and, in
427     shared libraries, means that the declared entity may be overridden.
428     On Darwin, default visibility means that the declaration is visible
429     to other modules. Default visibility corresponds to "external
430     linkage" in the language.
431 "``hidden``" - Hidden style
432     Two declarations of an object with hidden visibility refer to the
433     same object if they are in the same shared object. Usually, hidden
434     visibility indicates that the symbol will not be placed into the
435     dynamic symbol table, so no other module (executable or shared
436     library) can reference it directly.
437 "``protected``" - Protected style
438     On ELF, protected visibility indicates that the symbol will be
439     placed in the dynamic symbol table, but that references within the
440     defining module will bind to the local symbol. That is, the symbol
441     cannot be overridden by another module.
442
443 A symbol with ``internal`` or ``private`` linkage must have ``default``
444 visibility.
445
446 .. _dllstorageclass:
447
448 DLL Storage Classes
449 -------------------
450
451 All Global Variables, Functions and Aliases can have one of the following
452 DLL storage class:
453
454 ``dllimport``
455     "``dllimport``" causes the compiler to reference a function or variable via
456     a global pointer to a pointer that is set up by the DLL exporting the
457     symbol. On Microsoft Windows targets, the pointer name is formed by
458     combining ``__imp_`` and the function or variable name.
459 ``dllexport``
460     "``dllexport``" causes the compiler to provide a global pointer to a pointer
461     in a DLL, so that it can be referenced with the ``dllimport`` attribute. On
462     Microsoft Windows targets, the pointer name is formed by combining
463     ``__imp_`` and the function or variable name. Since this storage class
464     exists for defining a dll interface, the compiler, assembler and linker know
465     it is externally referenced and must refrain from deleting the symbol.
466
467 .. _tls_model:
468
469 Thread Local Storage Models
470 ---------------------------
471
472 A variable may be defined as ``thread_local``, which means that it will
473 not be shared by threads (each thread will have a separated copy of the
474 variable). Not all targets support thread-local variables. Optionally, a
475 TLS model may be specified:
476
477 ``localdynamic``
478     For variables that are only used within the current shared library.
479 ``initialexec``
480     For variables in modules that will not be loaded dynamically.
481 ``localexec``
482     For variables defined in the executable and only used within it.
483
484 If no explicit model is given, the "general dynamic" model is used.
485
486 The models correspond to the ELF TLS models; see `ELF Handling For
487 Thread-Local Storage <http://people.redhat.com/drepper/tls.pdf>`_ for
488 more information on under which circumstances the different models may
489 be used. The target may choose a different TLS model if the specified
490 model is not supported, or if a better choice of model can be made.
491
492 A model can also be specified in a alias, but then it only governs how
493 the alias is accessed. It will not have any effect in the aliasee.
494
495 .. _namedtypes:
496
497 Structure Types
498 ---------------
499
500 LLVM IR allows you to specify both "identified" and "literal" :ref:`structure
501 types <t_struct>`.  Literal types are uniqued structurally, but identified types
502 are never uniqued.  An :ref:`opaque structural type <t_opaque>` can also be used
503 to forward declare a type which is not yet available.
504
505 An example of a identified structure specification is:
506
507 .. code-block:: llvm
508
509     %mytype = type { %mytype*, i32 }
510
511 Prior to the LLVM 3.0 release, identified types were structurally uniqued.  Only
512 literal types are uniqued in recent versions of LLVM.
513
514 .. _globalvars:
515
516 Global Variables
517 ----------------
518
519 Global variables define regions of memory allocated at compilation time
520 instead of run-time.
521
522 Global variables definitions must be initialized, may have an explicit section
523 to be placed in, and may have an optional explicit alignment specified.
524
525 Global variables in other translation units can also be declared, in which
526 case they don't have an initializer.
527
528 A variable may be defined as a global ``constant``, which indicates that
529 the contents of the variable will **never** be modified (enabling better
530 optimization, allowing the global data to be placed in the read-only
531 section of an executable, etc). Note that variables that need runtime
532 initialization cannot be marked ``constant`` as there is a store to the
533 variable.
534
535 LLVM explicitly allows *declarations* of global variables to be marked
536 constant, even if the final definition of the global is not. This
537 capability can be used to enable slightly better optimization of the
538 program, but requires the language definition to guarantee that
539 optimizations based on the 'constantness' are valid for the translation
540 units that do not include the definition.
541
542 As SSA values, global variables define pointer values that are in scope
543 (i.e. they dominate) all basic blocks in the program. Global variables
544 always define a pointer to their "content" type because they describe a
545 region of memory, and all memory objects in LLVM are accessed through
546 pointers.
547
548 Global variables can be marked with ``unnamed_addr`` which indicates
549 that the address is not significant, only the content. Constants marked
550 like this can be merged with other constants if they have the same
551 initializer. Note that a constant with significant address *can* be
552 merged with a ``unnamed_addr`` constant, the result being a constant
553 whose address is significant.
554
555 A global variable may be declared to reside in a target-specific
556 numbered address space. For targets that support them, address spaces
557 may affect how optimizations are performed and/or what target
558 instructions are used to access the variable. The default address space
559 is zero. The address space qualifier must precede any other attributes.
560
561 LLVM allows an explicit section to be specified for globals. If the
562 target supports it, it will emit globals to the section specified.
563
564 By default, global initializers are optimized by assuming that global
565 variables defined within the module are not modified from their
566 initial values before the start of the global initializer.  This is
567 true even for variables potentially accessible from outside the
568 module, including those with external linkage or appearing in
569 ``@llvm.used`` or dllexported variables. This assumption may be suppressed
570 by marking the variable with ``externally_initialized``.
571
572 An explicit alignment may be specified for a global, which must be a
573 power of 2. If not present, or if the alignment is set to zero, the
574 alignment of the global is set by the target to whatever it feels
575 convenient. If an explicit alignment is specified, the global is forced
576 to have exactly that alignment. Targets and optimizers are not allowed
577 to over-align the global if the global has an assigned section. In this
578 case, the extra alignment could be observable: for example, code could
579 assume that the globals are densely packed in their section and try to
580 iterate over them as an array, alignment padding would break this
581 iteration.
582
583 Globals can also have a :ref:`DLL storage class <dllstorageclass>`.
584
585 Variables and aliasaes can have a
586 :ref:`Thread Local Storage Model <tls_model>`.
587
588 Syntax::
589
590     [@<GlobalVarName> =] [Linkage] [Visibility] [DLLStorageClass] [ThreadLocal]
591                          [AddrSpace] [unnamed_addr] [ExternallyInitialized]
592                          <global | constant> <Type>
593                          [, section "name"] [, align <Alignment>]
594
595 For example, the following defines a global in a numbered address space
596 with an initializer, section, and alignment:
597
598 .. code-block:: llvm
599
600     @G = addrspace(5) constant float 1.0, section "foo", align 4
601
602 The following example just declares a global variable
603
604 .. code-block:: llvm
605
606    @G = external global i32
607
608 The following example defines a thread-local global with the
609 ``initialexec`` TLS model:
610
611 .. code-block:: llvm
612
613     @G = thread_local(initialexec) global i32 0, align 4
614
615 .. _functionstructure:
616
617 Functions
618 ---------
619
620 LLVM function definitions consist of the "``define``" keyword, an
621 optional :ref:`linkage type <linkage>`, an optional :ref:`visibility
622 style <visibility>`, an optional :ref:`DLL storage class <dllstorageclass>`,
623 an optional :ref:`calling convention <callingconv>`,
624 an optional ``unnamed_addr`` attribute, a return type, an optional
625 :ref:`parameter attribute <paramattrs>` for the return type, a function
626 name, a (possibly empty) argument list (each with optional :ref:`parameter
627 attributes <paramattrs>`), optional :ref:`function attributes <fnattrs>`,
628 an optional section, an optional alignment, an optional :ref:`garbage
629 collector name <gc>`, an optional :ref:`prefix <prefixdata>`, an opening
630 curly brace, a list of basic blocks, and a closing curly brace.
631
632 LLVM function declarations consist of the "``declare``" keyword, an
633 optional :ref:`linkage type <linkage>`, an optional :ref:`visibility
634 style <visibility>`, an optional :ref:`DLL storage class <dllstorageclass>`,
635 an optional :ref:`calling convention <callingconv>`,
636 an optional ``unnamed_addr`` attribute, a return type, an optional
637 :ref:`parameter attribute <paramattrs>` for the return type, a function
638 name, a possibly empty list of arguments, an optional alignment, an optional
639 :ref:`garbage collector name <gc>` and an optional :ref:`prefix <prefixdata>`.
640
641 A function definition contains a list of basic blocks, forming the CFG (Control
642 Flow Graph) for the function. Each basic block may optionally start with a label
643 (giving the basic block a symbol table entry), contains a list of instructions,
644 and ends with a :ref:`terminator <terminators>` instruction (such as a branch or
645 function return). If an explicit label is not provided, a block is assigned an
646 implicit numbered label, using the next value from the same counter as used for
647 unnamed temporaries (:ref:`see above<identifiers>`). For example, if a function
648 entry block does not have an explicit label, it will be assigned label "%0",
649 then the first unnamed temporary in that block will be "%1", etc.
650
651 The first basic block in a function is special in two ways: it is
652 immediately executed on entrance to the function, and it is not allowed
653 to have predecessor basic blocks (i.e. there can not be any branches to
654 the entry block of a function). Because the block can have no
655 predecessors, it also cannot have any :ref:`PHI nodes <i_phi>`.
656
657 LLVM allows an explicit section to be specified for functions. If the
658 target supports it, it will emit functions to the section specified.
659
660 An explicit alignment may be specified for a function. If not present,
661 or if the alignment is set to zero, the alignment of the function is set
662 by the target to whatever it feels convenient. If an explicit alignment
663 is specified, the function is forced to have at least that much
664 alignment. All alignments must be a power of 2.
665
666 If the ``unnamed_addr`` attribute is given, the address is know to not
667 be significant and two identical functions can be merged.
668
669 Syntax::
670
671     define [linkage] [visibility] [DLLStorageClass]
672            [cconv] [ret attrs]
673            <ResultType> @<FunctionName> ([argument list])
674            [unnamed_addr] [fn Attrs] [section "name"] [align N]
675            [gc] [prefix Constant] { ... }
676
677 .. _langref_aliases:
678
679 Aliases
680 -------
681
682 Aliases, unlike function or variables, don't create any new data. They
683 are just a new symbol and metadata for an existing position.
684
685 Aliases have a name and an aliasee that is either a global value or a
686 constant expression.
687
688 Aliases may have an optional :ref:`linkage type <linkage>`, an optional
689 :ref:`visibility style <visibility>`, an optional :ref:`DLL storage class
690 <dllstorageclass>` and an optional :ref:`tls model <tls_model>`.
691
692 Syntax::
693
694     @<Name> = [Visibility] [DLLStorageClass] [ThreadLocal] alias [Linkage] <AliaseeTy> @<Aliasee>
695
696 The linkage must be one of ``private``, ``internal``, ``linkonce``, ``weak``,
697 ``linkonce_odr``, ``weak_odr``, ``external``. Note that some system linkers
698 might not correctly handle dropping a weak symbol that is aliased.
699
700 Alias that are not ``unnamed_addr`` are guaranteed to have the same address as
701 the aliasee.
702
703 Since aliases are only a second name, some restrictions apply, of which
704 some can only be checked when producing an object file:
705
706 * The expression defining the aliasee must be computable at assembly
707   time. Since it is just a name, no relocations can be used.
708
709 * No alias in the expression can be weak as the possibility of the
710   intermediate alias being overridden cannot be represented in an
711   object file.
712
713 * No global value in the expression can be a declaration, since that
714   would require a relocation, which is not possible.
715
716 .. _namedmetadatastructure:
717
718 Named Metadata
719 --------------
720
721 Named metadata is a collection of metadata. :ref:`Metadata
722 nodes <metadata>` (but not metadata strings) are the only valid
723 operands for a named metadata.
724
725 Syntax::
726
727     ; Some unnamed metadata nodes, which are referenced by the named metadata.
728     !0 = metadata !{metadata !"zero"}
729     !1 = metadata !{metadata !"one"}
730     !2 = metadata !{metadata !"two"}
731     ; A named metadata.
732     !name = !{!0, !1, !2}
733
734 .. _paramattrs:
735
736 Parameter Attributes
737 --------------------
738
739 The return type and each parameter of a function type may have a set of
740 *parameter attributes* associated with them. Parameter attributes are
741 used to communicate additional information about the result or
742 parameters of a function. Parameter attributes are considered to be part
743 of the function, not of the function type, so functions with different
744 parameter attributes can have the same function type.
745
746 Parameter attributes are simple keywords that follow the type specified.
747 If multiple parameter attributes are needed, they are space separated.
748 For example:
749
750 .. code-block:: llvm
751
752     declare i32 @printf(i8* noalias nocapture, ...)
753     declare i32 @atoi(i8 zeroext)
754     declare signext i8 @returns_signed_char()
755
756 Note that any attributes for the function result (``nounwind``,
757 ``readonly``) come immediately after the argument list.
758
759 Currently, only the following parameter attributes are defined:
760
761 ``zeroext``
762     This indicates to the code generator that the parameter or return
763     value should be zero-extended to the extent required by the target's
764     ABI (which is usually 32-bits, but is 8-bits for a i1 on x86-64) by
765     the caller (for a parameter) or the callee (for a return value).
766 ``signext``
767     This indicates to the code generator that the parameter or return
768     value should be sign-extended to the extent required by the target's
769     ABI (which is usually 32-bits) by the caller (for a parameter) or
770     the callee (for a return value).
771 ``inreg``
772     This indicates that this parameter or return value should be treated
773     in a special target-dependent fashion during while emitting code for
774     a function call or return (usually, by putting it in a register as
775     opposed to memory, though some targets use it to distinguish between
776     two different kinds of registers). Use of this attribute is
777     target-specific.
778 ``byval``
779     This indicates that the pointer parameter should really be passed by
780     value to the function. The attribute implies that a hidden copy of
781     the pointee is made between the caller and the callee, so the callee
782     is unable to modify the value in the caller. This attribute is only
783     valid on LLVM pointer arguments. It is generally used to pass
784     structs and arrays by value, but is also valid on pointers to
785     scalars. The copy is considered to belong to the caller not the
786     callee (for example, ``readonly`` functions should not write to
787     ``byval`` parameters). This is not a valid attribute for return
788     values.
789
790     The byval attribute also supports specifying an alignment with the
791     align attribute. It indicates the alignment of the stack slot to
792     form and the known alignment of the pointer specified to the call
793     site. If the alignment is not specified, then the code generator
794     makes a target-specific assumption.
795
796 .. _attr_inalloca:
797
798 ``inalloca``
799
800     The ``inalloca`` argument attribute allows the caller to take the
801     address of outgoing stack arguments.  An ``inalloca`` argument must
802     be a pointer to stack memory produced by an ``alloca`` instruction.
803     The alloca, or argument allocation, must also be tagged with the
804     inalloca keyword.  Only the past argument may have the ``inalloca``
805     attribute, and that argument is guaranteed to be passed in memory.
806
807     An argument allocation may be used by a call at most once because
808     the call may deallocate it.  The ``inalloca`` attribute cannot be
809     used in conjunction with other attributes that affect argument
810     storage, like ``inreg``, ``nest``, ``sret``, or ``byval``.  The
811     ``inalloca`` attribute also disables LLVM's implicit lowering of
812     large aggregate return values, which means that frontend authors
813     must lower them with ``sret`` pointers.
814
815     When the call site is reached, the argument allocation must have
816     been the most recent stack allocation that is still live, or the
817     results are undefined.  It is possible to allocate additional stack
818     space after an argument allocation and before its call site, but it
819     must be cleared off with :ref:`llvm.stackrestore
820     <int_stackrestore>`.
821
822     See :doc:`InAlloca` for more information on how to use this
823     attribute.
824
825 ``sret``
826     This indicates that the pointer parameter specifies the address of a
827     structure that is the return value of the function in the source
828     program. This pointer must be guaranteed by the caller to be valid:
829     loads and stores to the structure may be assumed by the callee
830     not to trap and to be properly aligned. This may only be applied to
831     the first parameter. This is not a valid attribute for return
832     values.
833
834 .. _noalias:
835
836 ``noalias``
837     This indicates that pointer values :ref:`based <pointeraliasing>` on
838     the argument or return value do not alias pointer values which are
839     not *based* on it, ignoring certain "irrelevant" dependencies. For a
840     call to the parent function, dependencies between memory references
841     from before or after the call and from those during the call are
842     "irrelevant" to the ``noalias`` keyword for the arguments and return
843     value used in that call. The caller shares the responsibility with
844     the callee for ensuring that these requirements are met. For further
845     details, please see the discussion of the NoAlias response in :ref:`alias
846     analysis <Must, May, or No>`.
847
848     Note that this definition of ``noalias`` is intentionally similar
849     to the definition of ``restrict`` in C99 for function arguments,
850     though it is slightly weaker.
851
852     For function return values, C99's ``restrict`` is not meaningful,
853     while LLVM's ``noalias`` is.
854 ``nocapture``
855     This indicates that the callee does not make any copies of the
856     pointer that outlive the callee itself. This is not a valid
857     attribute for return values.
858
859 .. _nest:
860
861 ``nest``
862     This indicates that the pointer parameter can be excised using the
863     :ref:`trampoline intrinsics <int_trampoline>`. This is not a valid
864     attribute for return values and can only be applied to one parameter.
865
866 ``returned``
867     This indicates that the function always returns the argument as its return
868     value. This is an optimization hint to the code generator when generating
869     the caller, allowing tail call optimization and omission of register saves
870     and restores in some cases; it is not checked or enforced when generating
871     the callee. The parameter and the function return type must be valid
872     operands for the :ref:`bitcast instruction <i_bitcast>`. This is not a
873     valid attribute for return values and can only be applied to one parameter.
874
875 ``nonnull``
876     This indicates that the parameter or return pointer is not null. This
877     attribute may only be applied to pointer typed parameters. This is not
878     checked or enforced by LLVM, the caller must ensure that the pointer
879     passed in is non-null, or the callee must ensure that the returned pointer 
880     is non-null.
881
882 .. _gc:
883
884 Garbage Collector Names
885 -----------------------
886
887 Each function may specify a garbage collector name, which is simply a
888 string:
889
890 .. code-block:: llvm
891
892     define void @f() gc "name" { ... }
893
894 The compiler declares the supported values of *name*. Specifying a
895 collector which will cause the compiler to alter its output in order to
896 support the named garbage collection algorithm.
897
898 .. _prefixdata:
899
900 Prefix Data
901 -----------
902
903 Prefix data is data associated with a function which the code generator
904 will emit immediately before the function body.  The purpose of this feature
905 is to allow frontends to associate language-specific runtime metadata with
906 specific functions and make it available through the function pointer while
907 still allowing the function pointer to be called.  To access the data for a
908 given function, a program may bitcast the function pointer to a pointer to
909 the constant's type.  This implies that the IR symbol points to the start
910 of the prefix data.
911
912 To maintain the semantics of ordinary function calls, the prefix data must
913 have a particular format.  Specifically, it must begin with a sequence of
914 bytes which decode to a sequence of machine instructions, valid for the
915 module's target, which transfer control to the point immediately succeeding
916 the prefix data, without performing any other visible action.  This allows
917 the inliner and other passes to reason about the semantics of the function
918 definition without needing to reason about the prefix data.  Obviously this
919 makes the format of the prefix data highly target dependent.
920
921 Prefix data is laid out as if it were an initializer for a global variable
922 of the prefix data's type.  No padding is automatically placed between the
923 prefix data and the function body.  If padding is required, it must be part
924 of the prefix data.
925
926 A trivial example of valid prefix data for the x86 architecture is ``i8 144``,
927 which encodes the ``nop`` instruction:
928
929 .. code-block:: llvm
930
931     define void @f() prefix i8 144 { ... }
932
933 Generally prefix data can be formed by encoding a relative branch instruction
934 which skips the metadata, as in this example of valid prefix data for the
935 x86_64 architecture, where the first two bytes encode ``jmp .+10``:
936
937 .. code-block:: llvm
938
939     %0 = type <{ i8, i8, i8* }>
940
941     define void @f() prefix %0 <{ i8 235, i8 8, i8* @md}> { ... }
942
943 A function may have prefix data but no body.  This has similar semantics
944 to the ``available_externally`` linkage in that the data may be used by the
945 optimizers but will not be emitted in the object file.
946
947 .. _attrgrp:
948
949 Attribute Groups
950 ----------------
951
952 Attribute groups are groups of attributes that are referenced by objects within
953 the IR. They are important for keeping ``.ll`` files readable, because a lot of
954 functions will use the same set of attributes. In the degenerative case of a
955 ``.ll`` file that corresponds to a single ``.c`` file, the single attribute
956 group will capture the important command line flags used to build that file.
957
958 An attribute group is a module-level object. To use an attribute group, an
959 object references the attribute group's ID (e.g. ``#37``). An object may refer
960 to more than one attribute group. In that situation, the attributes from the
961 different groups are merged.
962
963 Here is an example of attribute groups for a function that should always be
964 inlined, has a stack alignment of 4, and which shouldn't use SSE instructions:
965
966 .. code-block:: llvm
967
968    ; Target-independent attributes:
969    attributes #0 = { alwaysinline alignstack=4 }
970
971    ; Target-dependent attributes:
972    attributes #1 = { "no-sse" }
973
974    ; Function @f has attributes: alwaysinline, alignstack=4, and "no-sse".
975    define void @f() #0 #1 { ... }
976
977 .. _fnattrs:
978
979 Function Attributes
980 -------------------
981
982 Function attributes are set to communicate additional information about
983 a function. Function attributes are considered to be part of the
984 function, not of the function type, so functions with different function
985 attributes can have the same function type.
986
987 Function attributes are simple keywords that follow the type specified.
988 If multiple attributes are needed, they are space separated. For
989 example:
990
991 .. code-block:: llvm
992
993     define void @f() noinline { ... }
994     define void @f() alwaysinline { ... }
995     define void @f() alwaysinline optsize { ... }
996     define void @f() optsize { ... }
997
998 ``alignstack(<n>)``
999     This attribute indicates that, when emitting the prologue and
1000     epilogue, the backend should forcibly align the stack pointer.
1001     Specify the desired alignment, which must be a power of two, in
1002     parentheses.
1003 ``alwaysinline``
1004     This attribute indicates that the inliner should attempt to inline
1005     this function into callers whenever possible, ignoring any active
1006     inlining size threshold for this caller.
1007 ``builtin``
1008     This indicates that the callee function at a call site should be
1009     recognized as a built-in function, even though the function's declaration
1010     uses the ``nobuiltin`` attribute. This is only valid at call sites for
1011     direct calls to functions which are declared with the ``nobuiltin``
1012     attribute.
1013 ``cold``
1014     This attribute indicates that this function is rarely called. When
1015     computing edge weights, basic blocks post-dominated by a cold
1016     function call are also considered to be cold; and, thus, given low
1017     weight.
1018 ``inlinehint``
1019     This attribute indicates that the source code contained a hint that
1020     inlining this function is desirable (such as the "inline" keyword in
1021     C/C++). It is just a hint; it imposes no requirements on the
1022     inliner.
1023 ``jumptable``
1024     This attribute indicates that the function should be added to a
1025     jump-instruction table at code-generation time, and that all address-taken
1026     references to this function should be replaced with a reference to the
1027     appropriate jump-instruction-table function pointer. Note that this creates
1028     a new pointer for the original function, which means that code that depends
1029     on function-pointer identity can break. So, any function annotated with
1030     ``jumptable`` must also be ``unnamed_addr``.
1031 ``minsize``
1032     This attribute suggests that optimization passes and code generator
1033     passes make choices that keep the code size of this function as small
1034     as possible and perform optimizations that may sacrifice runtime
1035     performance in order to minimize the size of the generated code.
1036 ``naked``
1037     This attribute disables prologue / epilogue emission for the
1038     function. This can have very system-specific consequences.
1039 ``nobuiltin``
1040     This indicates that the callee function at a call site is not recognized as
1041     a built-in function. LLVM will retain the original call and not replace it
1042     with equivalent code based on the semantics of the built-in function, unless
1043     the call site uses the ``builtin`` attribute. This is valid at call sites
1044     and on function declarations and definitions.
1045 ``noduplicate``
1046     This attribute indicates that calls to the function cannot be
1047     duplicated. A call to a ``noduplicate`` function may be moved
1048     within its parent function, but may not be duplicated within
1049     its parent function.
1050
1051     A function containing a ``noduplicate`` call may still
1052     be an inlining candidate, provided that the call is not
1053     duplicated by inlining. That implies that the function has
1054     internal linkage and only has one call site, so the original
1055     call is dead after inlining.
1056 ``noimplicitfloat``
1057     This attributes disables implicit floating point instructions.
1058 ``noinline``
1059     This attribute indicates that the inliner should never inline this
1060     function in any situation. This attribute may not be used together
1061     with the ``alwaysinline`` attribute.
1062 ``nonlazybind``
1063     This attribute suppresses lazy symbol binding for the function. This
1064     may make calls to the function faster, at the cost of extra program
1065     startup time if the function is not called during program startup.
1066 ``noredzone``
1067     This attribute indicates that the code generator should not use a
1068     red zone, even if the target-specific ABI normally permits it.
1069 ``noreturn``
1070     This function attribute indicates that the function never returns
1071     normally. This produces undefined behavior at runtime if the
1072     function ever does dynamically return.
1073 ``nounwind``
1074     This function attribute indicates that the function never returns
1075     with an unwind or exceptional control flow. If the function does
1076     unwind, its runtime behavior is undefined.
1077 ``optnone``
1078     This function attribute indicates that the function is not optimized
1079     by any optimization or code generator passes with the
1080     exception of interprocedural optimization passes.
1081     This attribute cannot be used together with the ``alwaysinline``
1082     attribute; this attribute is also incompatible
1083     with the ``minsize`` attribute and the ``optsize`` attribute.
1084
1085     This attribute requires the ``noinline`` attribute to be specified on
1086     the function as well, so the function is never inlined into any caller.
1087     Only functions with the ``alwaysinline`` attribute are valid
1088     candidates for inlining into the body of this function.
1089 ``optsize``
1090     This attribute suggests that optimization passes and code generator
1091     passes make choices that keep the code size of this function low,
1092     and otherwise do optimizations specifically to reduce code size as
1093     long as they do not significantly impact runtime performance.
1094 ``readnone``
1095     On a function, this attribute indicates that the function computes its
1096     result (or decides to unwind an exception) based strictly on its arguments,
1097     without dereferencing any pointer arguments or otherwise accessing
1098     any mutable state (e.g. memory, control registers, etc) visible to
1099     caller functions. It does not write through any pointer arguments
1100     (including ``byval`` arguments) and never changes any state visible
1101     to callers. This means that it cannot unwind exceptions by calling
1102     the ``C++`` exception throwing methods.
1103
1104     On an argument, this attribute indicates that the function does not
1105     dereference that pointer argument, even though it may read or write the
1106     memory that the pointer points to if accessed through other pointers.
1107 ``readonly``
1108     On a function, this attribute indicates that the function does not write
1109     through any pointer arguments (including ``byval`` arguments) or otherwise
1110     modify any state (e.g. memory, control registers, etc) visible to
1111     caller functions. It may dereference pointer arguments and read
1112     state that may be set in the caller. A readonly function always
1113     returns the same value (or unwinds an exception identically) when
1114     called with the same set of arguments and global state. It cannot
1115     unwind an exception by calling the ``C++`` exception throwing
1116     methods.
1117
1118     On an argument, this attribute indicates that the function does not write
1119     through this pointer argument, even though it may write to the memory that
1120     the pointer points to.
1121 ``returns_twice``
1122     This attribute indicates that this function can return twice. The C
1123     ``setjmp`` is an example of such a function. The compiler disables
1124     some optimizations (like tail calls) in the caller of these
1125     functions.
1126 ``sanitize_address``
1127     This attribute indicates that AddressSanitizer checks
1128     (dynamic address safety analysis) are enabled for this function.
1129 ``sanitize_memory``
1130     This attribute indicates that MemorySanitizer checks (dynamic detection
1131     of accesses to uninitialized memory) are enabled for this function.
1132 ``sanitize_thread``
1133     This attribute indicates that ThreadSanitizer checks
1134     (dynamic thread safety analysis) are enabled for this function.
1135 ``ssp``
1136     This attribute indicates that the function should emit a stack
1137     smashing protector. It is in the form of a "canary" --- a random value
1138     placed on the stack before the local variables that's checked upon
1139     return from the function to see if it has been overwritten. A
1140     heuristic is used to determine if a function needs stack protectors
1141     or not. The heuristic used will enable protectors for functions with:
1142
1143     - Character arrays larger than ``ssp-buffer-size`` (default 8).
1144     - Aggregates containing character arrays larger than ``ssp-buffer-size``.
1145     - Calls to alloca() with variable sizes or constant sizes greater than
1146       ``ssp-buffer-size``.
1147
1148     Variables that are identified as requiring a protector will be arranged
1149     on the stack such that they are adjacent to the stack protector guard.
1150
1151     If a function that has an ``ssp`` attribute is inlined into a
1152     function that doesn't have an ``ssp`` attribute, then the resulting
1153     function will have an ``ssp`` attribute.
1154 ``sspreq``
1155     This attribute indicates that the function should *always* emit a
1156     stack smashing protector. This overrides the ``ssp`` function
1157     attribute.
1158
1159     Variables that are identified as requiring a protector will be arranged
1160     on the stack such that they are adjacent to the stack protector guard.
1161     The specific layout rules are:
1162
1163     #. Large arrays and structures containing large arrays
1164        (``>= ssp-buffer-size``) are closest to the stack protector.
1165     #. Small arrays and structures containing small arrays
1166        (``< ssp-buffer-size``) are 2nd closest to the protector.
1167     #. Variables that have had their address taken are 3rd closest to the
1168        protector.
1169
1170     If a function that has an ``sspreq`` attribute is inlined into a
1171     function that doesn't have an ``sspreq`` attribute or which has an
1172     ``ssp`` or ``sspstrong`` attribute, then the resulting function will have
1173     an ``sspreq`` attribute.
1174 ``sspstrong``
1175     This attribute indicates that the function should emit a stack smashing
1176     protector. This attribute causes a strong heuristic to be used when
1177     determining if a function needs stack protectors.  The strong heuristic
1178     will enable protectors for functions with:
1179
1180     - Arrays of any size and type
1181     - Aggregates containing an array of any size and type.
1182     - Calls to alloca().
1183     - Local variables that have had their address taken.
1184
1185     Variables that are identified as requiring a protector will be arranged
1186     on the stack such that they are adjacent to the stack protector guard.
1187     The specific layout rules are:
1188
1189     #. Large arrays and structures containing large arrays
1190        (``>= ssp-buffer-size``) are closest to the stack protector.
1191     #. Small arrays and structures containing small arrays
1192        (``< ssp-buffer-size``) are 2nd closest to the protector.
1193     #. Variables that have had their address taken are 3rd closest to the
1194        protector.
1195
1196     This overrides the ``ssp`` function attribute.
1197
1198     If a function that has an ``sspstrong`` attribute is inlined into a
1199     function that doesn't have an ``sspstrong`` attribute, then the
1200     resulting function will have an ``sspstrong`` attribute.
1201 ``uwtable``
1202     This attribute indicates that the ABI being targeted requires that
1203     an unwind table entry be produce for this function even if we can
1204     show that no exceptions passes by it. This is normally the case for
1205     the ELF x86-64 abi, but it can be disabled for some compilation
1206     units.
1207
1208 .. _moduleasm:
1209
1210 Module-Level Inline Assembly
1211 ----------------------------
1212
1213 Modules may contain "module-level inline asm" blocks, which corresponds
1214 to the GCC "file scope inline asm" blocks. These blocks are internally
1215 concatenated by LLVM and treated as a single unit, but may be separated
1216 in the ``.ll`` file if desired. The syntax is very simple:
1217
1218 .. code-block:: llvm
1219
1220     module asm "inline asm code goes here"
1221     module asm "more can go here"
1222
1223 The strings can contain any character by escaping non-printable
1224 characters. The escape sequence used is simply "\\xx" where "xx" is the
1225 two digit hex code for the number.
1226
1227 The inline asm code is simply printed to the machine code .s file when
1228 assembly code is generated.
1229
1230 .. _langref_datalayout:
1231
1232 Data Layout
1233 -----------
1234
1235 A module may specify a target specific data layout string that specifies
1236 how data is to be laid out in memory. The syntax for the data layout is
1237 simply:
1238
1239 .. code-block:: llvm
1240
1241     target datalayout = "layout specification"
1242
1243 The *layout specification* consists of a list of specifications
1244 separated by the minus sign character ('-'). Each specification starts
1245 with a letter and may include other information after the letter to
1246 define some aspect of the data layout. The specifications accepted are
1247 as follows:
1248
1249 ``E``
1250     Specifies that the target lays out data in big-endian form. That is,
1251     the bits with the most significance have the lowest address
1252     location.
1253 ``e``
1254     Specifies that the target lays out data in little-endian form. That
1255     is, the bits with the least significance have the lowest address
1256     location.
1257 ``S<size>``
1258     Specifies the natural alignment of the stack in bits. Alignment
1259     promotion of stack variables is limited to the natural stack
1260     alignment to avoid dynamic stack realignment. The stack alignment
1261     must be a multiple of 8-bits. If omitted, the natural stack
1262     alignment defaults to "unspecified", which does not prevent any
1263     alignment promotions.
1264 ``p[n]:<size>:<abi>:<pref>``
1265     This specifies the *size* of a pointer and its ``<abi>`` and
1266     ``<pref>``\erred alignments for address space ``n``. All sizes are in
1267     bits. The address space, ``n`` is optional, and if not specified,
1268     denotes the default address space 0.  The value of ``n`` must be
1269     in the range [1,2^23).
1270 ``i<size>:<abi>:<pref>``
1271     This specifies the alignment for an integer type of a given bit
1272     ``<size>``. The value of ``<size>`` must be in the range [1,2^23).
1273 ``v<size>:<abi>:<pref>``
1274     This specifies the alignment for a vector type of a given bit
1275     ``<size>``.
1276 ``f<size>:<abi>:<pref>``
1277     This specifies the alignment for a floating point type of a given bit
1278     ``<size>``. Only values of ``<size>`` that are supported by the target
1279     will work. 32 (float) and 64 (double) are supported on all targets; 80
1280     or 128 (different flavors of long double) are also supported on some
1281     targets.
1282 ``a:<abi>:<pref>``
1283     This specifies the alignment for an object of aggregate type.
1284 ``m:<mangling>``
1285     If present, specifies that llvm names are mangled in the output. The
1286     options are
1287
1288     * ``e``: ELF mangling: Private symbols get a ``.L`` prefix.
1289     * ``m``: Mips mangling: Private symbols get a ``$`` prefix.
1290     * ``o``: Mach-O mangling: Private symbols get ``L`` prefix. Other
1291       symbols get a ``_`` prefix.
1292     * ``w``: Windows COFF prefix:  Similar to Mach-O, but stdcall and fastcall
1293       functions also get a suffix based on the frame size.
1294 ``n<size1>:<size2>:<size3>...``
1295     This specifies a set of native integer widths for the target CPU in
1296     bits. For example, it might contain ``n32`` for 32-bit PowerPC,
1297     ``n32:64`` for PowerPC 64, or ``n8:16:32:64`` for X86-64. Elements of
1298     this set are considered to support most general arithmetic operations
1299     efficiently.
1300
1301 On every specification that takes a ``<abi>:<pref>``, specifying the
1302 ``<pref>`` alignment is optional. If omitted, the preceding ``:``
1303 should be omitted too and ``<pref>`` will be equal to ``<abi>``.
1304
1305 When constructing the data layout for a given target, LLVM starts with a
1306 default set of specifications which are then (possibly) overridden by
1307 the specifications in the ``datalayout`` keyword. The default
1308 specifications are given in this list:
1309
1310 -  ``E`` - big endian
1311 -  ``p:64:64:64`` - 64-bit pointers with 64-bit alignment.
1312 -  ``p[n]:64:64:64`` - Other address spaces are assumed to be the
1313    same as the default address space.
1314 -  ``S0`` - natural stack alignment is unspecified
1315 -  ``i1:8:8`` - i1 is 8-bit (byte) aligned
1316 -  ``i8:8:8`` - i8 is 8-bit (byte) aligned
1317 -  ``i16:16:16`` - i16 is 16-bit aligned
1318 -  ``i32:32:32`` - i32 is 32-bit aligned
1319 -  ``i64:32:64`` - i64 has ABI alignment of 32-bits but preferred
1320    alignment of 64-bits
1321 -  ``f16:16:16`` - half is 16-bit aligned
1322 -  ``f32:32:32`` - float is 32-bit aligned
1323 -  ``f64:64:64`` - double is 64-bit aligned
1324 -  ``f128:128:128`` - quad is 128-bit aligned
1325 -  ``v64:64:64`` - 64-bit vector is 64-bit aligned
1326 -  ``v128:128:128`` - 128-bit vector is 128-bit aligned
1327 -  ``a:0:64`` - aggregates are 64-bit aligned
1328
1329 When LLVM is determining the alignment for a given type, it uses the
1330 following rules:
1331
1332 #. If the type sought is an exact match for one of the specifications,
1333    that specification is used.
1334 #. If no match is found, and the type sought is an integer type, then
1335    the smallest integer type that is larger than the bitwidth of the
1336    sought type is used. If none of the specifications are larger than
1337    the bitwidth then the largest integer type is used. For example,
1338    given the default specifications above, the i7 type will use the
1339    alignment of i8 (next largest) while both i65 and i256 will use the
1340    alignment of i64 (largest specified).
1341 #. If no match is found, and the type sought is a vector type, then the
1342    largest vector type that is smaller than the sought vector type will
1343    be used as a fall back. This happens because <128 x double> can be
1344    implemented in terms of 64 <2 x double>, for example.
1345
1346 The function of the data layout string may not be what you expect.
1347 Notably, this is not a specification from the frontend of what alignment
1348 the code generator should use.
1349
1350 Instead, if specified, the target data layout is required to match what
1351 the ultimate *code generator* expects. This string is used by the
1352 mid-level optimizers to improve code, and this only works if it matches
1353 what the ultimate code generator uses. If you would like to generate IR
1354 that does not embed this target-specific detail into the IR, then you
1355 don't have to specify the string. This will disable some optimizations
1356 that require precise layout information, but this also prevents those
1357 optimizations from introducing target specificity into the IR.
1358
1359 .. _langref_triple:
1360
1361 Target Triple
1362 -------------
1363
1364 A module may specify a target triple string that describes the target
1365 host. The syntax for the target triple is simply:
1366
1367 .. code-block:: llvm
1368
1369     target triple = "x86_64-apple-macosx10.7.0"
1370
1371 The *target triple* string consists of a series of identifiers delimited
1372 by the minus sign character ('-'). The canonical forms are:
1373
1374 ::
1375
1376     ARCHITECTURE-VENDOR-OPERATING_SYSTEM
1377     ARCHITECTURE-VENDOR-OPERATING_SYSTEM-ENVIRONMENT
1378
1379 This information is passed along to the backend so that it generates
1380 code for the proper architecture. It's possible to override this on the
1381 command line with the ``-mtriple`` command line option.
1382
1383 .. _pointeraliasing:
1384
1385 Pointer Aliasing Rules
1386 ----------------------
1387
1388 Any memory access must be done through a pointer value associated with
1389 an address range of the memory access, otherwise the behavior is
1390 undefined. Pointer values are associated with address ranges according
1391 to the following rules:
1392
1393 -  A pointer value is associated with the addresses associated with any
1394    value it is *based* on.
1395 -  An address of a global variable is associated with the address range
1396    of the variable's storage.
1397 -  The result value of an allocation instruction is associated with the
1398    address range of the allocated storage.
1399 -  A null pointer in the default address-space is associated with no
1400    address.
1401 -  An integer constant other than zero or a pointer value returned from
1402    a function not defined within LLVM may be associated with address
1403    ranges allocated through mechanisms other than those provided by
1404    LLVM. Such ranges shall not overlap with any ranges of addresses
1405    allocated by mechanisms provided by LLVM.
1406
1407 A pointer value is *based* on another pointer value according to the
1408 following rules:
1409
1410 -  A pointer value formed from a ``getelementptr`` operation is *based*
1411    on the first operand of the ``getelementptr``.
1412 -  The result value of a ``bitcast`` is *based* on the operand of the
1413    ``bitcast``.
1414 -  A pointer value formed by an ``inttoptr`` is *based* on all pointer
1415    values that contribute (directly or indirectly) to the computation of
1416    the pointer's value.
1417 -  The "*based* on" relationship is transitive.
1418
1419 Note that this definition of *"based"* is intentionally similar to the
1420 definition of *"based"* in C99, though it is slightly weaker.
1421
1422 LLVM IR does not associate types with memory. The result type of a
1423 ``load`` merely indicates the size and alignment of the memory from
1424 which to load, as well as the interpretation of the value. The first
1425 operand type of a ``store`` similarly only indicates the size and
1426 alignment of the store.
1427
1428 Consequently, type-based alias analysis, aka TBAA, aka
1429 ``-fstrict-aliasing``, is not applicable to general unadorned LLVM IR.
1430 :ref:`Metadata <metadata>` may be used to encode additional information
1431 which specialized optimization passes may use to implement type-based
1432 alias analysis.
1433
1434 .. _volatile:
1435
1436 Volatile Memory Accesses
1437 ------------------------
1438
1439 Certain memory accesses, such as :ref:`load <i_load>`'s,
1440 :ref:`store <i_store>`'s, and :ref:`llvm.memcpy <int_memcpy>`'s may be
1441 marked ``volatile``. The optimizers must not change the number of
1442 volatile operations or change their order of execution relative to other
1443 volatile operations. The optimizers *may* change the order of volatile
1444 operations relative to non-volatile operations. This is not Java's
1445 "volatile" and has no cross-thread synchronization behavior.
1446
1447 IR-level volatile loads and stores cannot safely be optimized into
1448 llvm.memcpy or llvm.memmove intrinsics even when those intrinsics are
1449 flagged volatile. Likewise, the backend should never split or merge
1450 target-legal volatile load/store instructions.
1451
1452 .. admonition:: Rationale
1453
1454  Platforms may rely on volatile loads and stores of natively supported
1455  data width to be executed as single instruction. For example, in C
1456  this holds for an l-value of volatile primitive type with native
1457  hardware support, but not necessarily for aggregate types. The
1458  frontend upholds these expectations, which are intentionally
1459  unspecified in the IR. The rules above ensure that IR transformation
1460  do not violate the frontend's contract with the language.
1461
1462 .. _memmodel:
1463
1464 Memory Model for Concurrent Operations
1465 --------------------------------------
1466
1467 The LLVM IR does not define any way to start parallel threads of
1468 execution or to register signal handlers. Nonetheless, there are
1469 platform-specific ways to create them, and we define LLVM IR's behavior
1470 in their presence. This model is inspired by the C++0x memory model.
1471
1472 For a more informal introduction to this model, see the :doc:`Atomics`.
1473
1474 We define a *happens-before* partial order as the least partial order
1475 that
1476
1477 -  Is a superset of single-thread program order, and
1478 -  When a *synchronizes-with* ``b``, includes an edge from ``a`` to
1479    ``b``. *Synchronizes-with* pairs are introduced by platform-specific
1480    techniques, like pthread locks, thread creation, thread joining,
1481    etc., and by atomic instructions. (See also :ref:`Atomic Memory Ordering
1482    Constraints <ordering>`).
1483
1484 Note that program order does not introduce *happens-before* edges
1485 between a thread and signals executing inside that thread.
1486
1487 Every (defined) read operation (load instructions, memcpy, atomic
1488 loads/read-modify-writes, etc.) R reads a series of bytes written by
1489 (defined) write operations (store instructions, atomic
1490 stores/read-modify-writes, memcpy, etc.). For the purposes of this
1491 section, initialized globals are considered to have a write of the
1492 initializer which is atomic and happens before any other read or write
1493 of the memory in question. For each byte of a read R, R\ :sub:`byte`
1494 may see any write to the same byte, except:
1495
1496 -  If write\ :sub:`1`  happens before write\ :sub:`2`, and
1497    write\ :sub:`2` happens before R\ :sub:`byte`, then
1498    R\ :sub:`byte` does not see write\ :sub:`1`.
1499 -  If R\ :sub:`byte` happens before write\ :sub:`3`, then
1500    R\ :sub:`byte` does not see write\ :sub:`3`.
1501
1502 Given that definition, R\ :sub:`byte` is defined as follows:
1503
1504 -  If R is volatile, the result is target-dependent. (Volatile is
1505    supposed to give guarantees which can support ``sig_atomic_t`` in
1506    C/C++, and may be used for accesses to addresses which do not behave
1507    like normal memory. It does not generally provide cross-thread
1508    synchronization.)
1509 -  Otherwise, if there is no write to the same byte that happens before
1510    R\ :sub:`byte`, R\ :sub:`byte` returns ``undef`` for that byte.
1511 -  Otherwise, if R\ :sub:`byte` may see exactly one write,
1512    R\ :sub:`byte` returns the value written by that write.
1513 -  Otherwise, if R is atomic, and all the writes R\ :sub:`byte` may
1514    see are atomic, it chooses one of the values written. See the :ref:`Atomic
1515    Memory Ordering Constraints <ordering>` section for additional
1516    constraints on how the choice is made.
1517 -  Otherwise R\ :sub:`byte` returns ``undef``.
1518
1519 R returns the value composed of the series of bytes it read. This
1520 implies that some bytes within the value may be ``undef`` **without**
1521 the entire value being ``undef``. Note that this only defines the
1522 semantics of the operation; it doesn't mean that targets will emit more
1523 than one instruction to read the series of bytes.
1524
1525 Note that in cases where none of the atomic intrinsics are used, this
1526 model places only one restriction on IR transformations on top of what
1527 is required for single-threaded execution: introducing a store to a byte
1528 which might not otherwise be stored is not allowed in general.
1529 (Specifically, in the case where another thread might write to and read
1530 from an address, introducing a store can change a load that may see
1531 exactly one write into a load that may see multiple writes.)
1532
1533 .. _ordering:
1534
1535 Atomic Memory Ordering Constraints
1536 ----------------------------------
1537
1538 Atomic instructions (:ref:`cmpxchg <i_cmpxchg>`,
1539 :ref:`atomicrmw <i_atomicrmw>`, :ref:`fence <i_fence>`,
1540 :ref:`atomic load <i_load>`, and :ref:`atomic store <i_store>`) take
1541 ordering parameters that determine which other atomic instructions on
1542 the same address they *synchronize with*. These semantics are borrowed
1543 from Java and C++0x, but are somewhat more colloquial. If these
1544 descriptions aren't precise enough, check those specs (see spec
1545 references in the :doc:`atomics guide <Atomics>`).
1546 :ref:`fence <i_fence>` instructions treat these orderings somewhat
1547 differently since they don't take an address. See that instruction's
1548 documentation for details.
1549
1550 For a simpler introduction to the ordering constraints, see the
1551 :doc:`Atomics`.
1552
1553 ``unordered``
1554     The set of values that can be read is governed by the happens-before
1555     partial order. A value cannot be read unless some operation wrote
1556     it. This is intended to provide a guarantee strong enough to model
1557     Java's non-volatile shared variables. This ordering cannot be
1558     specified for read-modify-write operations; it is not strong enough
1559     to make them atomic in any interesting way.
1560 ``monotonic``
1561     In addition to the guarantees of ``unordered``, there is a single
1562     total order for modifications by ``monotonic`` operations on each
1563     address. All modification orders must be compatible with the
1564     happens-before order. There is no guarantee that the modification
1565     orders can be combined to a global total order for the whole program
1566     (and this often will not be possible). The read in an atomic
1567     read-modify-write operation (:ref:`cmpxchg <i_cmpxchg>` and
1568     :ref:`atomicrmw <i_atomicrmw>`) reads the value in the modification
1569     order immediately before the value it writes. If one atomic read
1570     happens before another atomic read of the same address, the later
1571     read must see the same value or a later value in the address's
1572     modification order. This disallows reordering of ``monotonic`` (or
1573     stronger) operations on the same address. If an address is written
1574     ``monotonic``-ally by one thread, and other threads ``monotonic``-ally
1575     read that address repeatedly, the other threads must eventually see
1576     the write. This corresponds to the C++0x/C1x
1577     ``memory_order_relaxed``.
1578 ``acquire``
1579     In addition to the guarantees of ``monotonic``, a
1580     *synchronizes-with* edge may be formed with a ``release`` operation.
1581     This is intended to model C++'s ``memory_order_acquire``.
1582 ``release``
1583     In addition to the guarantees of ``monotonic``, if this operation
1584     writes a value which is subsequently read by an ``acquire``
1585     operation, it *synchronizes-with* that operation. (This isn't a
1586     complete description; see the C++0x definition of a release
1587     sequence.) This corresponds to the C++0x/C1x
1588     ``memory_order_release``.
1589 ``acq_rel`` (acquire+release)
1590     Acts as both an ``acquire`` and ``release`` operation on its
1591     address. This corresponds to the C++0x/C1x ``memory_order_acq_rel``.
1592 ``seq_cst`` (sequentially consistent)
1593     In addition to the guarantees of ``acq_rel`` (``acquire`` for an
1594     operation which only reads, ``release`` for an operation which only
1595     writes), there is a global total order on all
1596     sequentially-consistent operations on all addresses, which is
1597     consistent with the *happens-before* partial order and with the
1598     modification orders of all the affected addresses. Each
1599     sequentially-consistent read sees the last preceding write to the
1600     same address in this global order. This corresponds to the C++0x/C1x
1601     ``memory_order_seq_cst`` and Java volatile.
1602
1603 .. _singlethread:
1604
1605 If an atomic operation is marked ``singlethread``, it only *synchronizes
1606 with* or participates in modification and seq\_cst total orderings with
1607 other operations running in the same thread (for example, in signal
1608 handlers).
1609
1610 .. _fastmath:
1611
1612 Fast-Math Flags
1613 ---------------
1614
1615 LLVM IR floating-point binary ops (:ref:`fadd <i_fadd>`,
1616 :ref:`fsub <i_fsub>`, :ref:`fmul <i_fmul>`, :ref:`fdiv <i_fdiv>`,
1617 :ref:`frem <i_frem>`) have the following flags that can set to enable
1618 otherwise unsafe floating point operations
1619
1620 ``nnan``
1621    No NaNs - Allow optimizations to assume the arguments and result are not
1622    NaN. Such optimizations are required to retain defined behavior over
1623    NaNs, but the value of the result is undefined.
1624
1625 ``ninf``
1626    No Infs - Allow optimizations to assume the arguments and result are not
1627    +/-Inf. Such optimizations are required to retain defined behavior over
1628    +/-Inf, but the value of the result is undefined.
1629
1630 ``nsz``
1631    No Signed Zeros - Allow optimizations to treat the sign of a zero
1632    argument or result as insignificant.
1633
1634 ``arcp``
1635    Allow Reciprocal - Allow optimizations to use the reciprocal of an
1636    argument rather than perform division.
1637
1638 ``fast``
1639    Fast - Allow algebraically equivalent transformations that may
1640    dramatically change results in floating point (e.g. reassociate). This
1641    flag implies all the others.
1642
1643 .. _typesystem:
1644
1645 Type System
1646 ===========
1647
1648 The LLVM type system is one of the most important features of the
1649 intermediate representation. Being typed enables a number of
1650 optimizations to be performed on the intermediate representation
1651 directly, without having to do extra analyses on the side before the
1652 transformation. A strong type system makes it easier to read the
1653 generated code and enables novel analyses and transformations that are
1654 not feasible to perform on normal three address code representations.
1655
1656 .. _t_void:
1657
1658 Void Type
1659 ---------
1660
1661 :Overview:
1662
1663
1664 The void type does not represent any value and has no size.
1665
1666 :Syntax:
1667
1668
1669 ::
1670
1671       void
1672
1673
1674 .. _t_function:
1675
1676 Function Type
1677 -------------
1678
1679 :Overview:
1680
1681
1682 The function type can be thought of as a function signature. It consists of a
1683 return type and a list of formal parameter types. The return type of a function
1684 type is a void type or first class type --- except for :ref:`label <t_label>`
1685 and :ref:`metadata <t_metadata>` types.
1686
1687 :Syntax:
1688
1689 ::
1690
1691       <returntype> (<parameter list>)
1692
1693 ...where '``<parameter list>``' is a comma-separated list of type
1694 specifiers. Optionally, the parameter list may include a type ``...``, which
1695 indicates that the function takes a variable number of arguments.  Variable
1696 argument functions can access their arguments with the :ref:`variable argument
1697 handling intrinsic <int_varargs>` functions.  '``<returntype>``' is any type
1698 except :ref:`label <t_label>` and :ref:`metadata <t_metadata>`.
1699
1700 :Examples:
1701
1702 +---------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1703 | ``i32 (i32)``                   | function taking an ``i32``, returning an ``i32``                                                                                                                    |
1704 +---------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1705 | ``float (i16, i32 *) *``        | :ref:`Pointer <t_pointer>` to a function that takes an ``i16`` and a :ref:`pointer <t_pointer>` to ``i32``, returning ``float``.                                    |
1706 +---------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1707 | ``i32 (i8*, ...)``              | A vararg function that takes at least one :ref:`pointer <t_pointer>` to ``i8`` (char in C), which returns an integer. This is the signature for ``printf`` in LLVM. |
1708 +---------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1709 | ``{i32, i32} (i32)``            | A function taking an ``i32``, returning a :ref:`structure <t_struct>` containing two ``i32`` values                                                                 |
1710 +---------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1711
1712 .. _t_firstclass:
1713
1714 First Class Types
1715 -----------------
1716
1717 The :ref:`first class <t_firstclass>` types are perhaps the most important.
1718 Values of these types are the only ones which can be produced by
1719 instructions.
1720
1721 .. _t_single_value:
1722
1723 Single Value Types
1724 ^^^^^^^^^^^^^^^^^^
1725
1726 These are the types that are valid in registers from CodeGen's perspective.
1727
1728 .. _t_integer:
1729
1730 Integer Type
1731 """"""""""""
1732
1733 :Overview:
1734
1735 The integer type is a very simple type that simply specifies an
1736 arbitrary bit width for the integer type desired. Any bit width from 1
1737 bit to 2\ :sup:`23`\ -1 (about 8 million) can be specified.
1738
1739 :Syntax:
1740
1741 ::
1742
1743       iN
1744
1745 The number of bits the integer will occupy is specified by the ``N``
1746 value.
1747
1748 Examples:
1749 *********
1750
1751 +----------------+------------------------------------------------+
1752 | ``i1``         | a single-bit integer.                          |
1753 +----------------+------------------------------------------------+
1754 | ``i32``        | a 32-bit integer.                              |
1755 +----------------+------------------------------------------------+
1756 | ``i1942652``   | a really big integer of over 1 million bits.   |
1757 +----------------+------------------------------------------------+
1758
1759 .. _t_floating:
1760
1761 Floating Point Types
1762 """"""""""""""""""""
1763
1764 .. list-table::
1765    :header-rows: 1
1766
1767    * - Type
1768      - Description
1769
1770    * - ``half``
1771      - 16-bit floating point value
1772
1773    * - ``float``
1774      - 32-bit floating point value
1775
1776    * - ``double``
1777      - 64-bit floating point value
1778
1779    * - ``fp128``
1780      - 128-bit floating point value (112-bit mantissa)
1781
1782    * - ``x86_fp80``
1783      -  80-bit floating point value (X87)
1784
1785    * - ``ppc_fp128``
1786      - 128-bit floating point value (two 64-bits)
1787
1788 X86_mmx Type
1789 """"""""""""
1790
1791 :Overview:
1792
1793 The x86_mmx type represents a value held in an MMX register on an x86
1794 machine. The operations allowed on it are quite limited: parameters and
1795 return values, load and store, and bitcast. User-specified MMX
1796 instructions are represented as intrinsic or asm calls with arguments
1797 and/or results of this type. There are no arrays, vectors or constants
1798 of this type.
1799
1800 :Syntax:
1801
1802 ::
1803
1804       x86_mmx
1805
1806
1807 .. _t_pointer:
1808
1809 Pointer Type
1810 """"""""""""
1811
1812 :Overview:
1813
1814 The pointer type is used to specify memory locations. Pointers are
1815 commonly used to reference objects in memory.
1816
1817 Pointer types may have an optional address space attribute defining the
1818 numbered address space where the pointed-to object resides. The default
1819 address space is number zero. The semantics of non-zero address spaces
1820 are target-specific.
1821
1822 Note that LLVM does not permit pointers to void (``void*``) nor does it
1823 permit pointers to labels (``label*``). Use ``i8*`` instead.
1824
1825 :Syntax:
1826
1827 ::
1828
1829       <type> *
1830
1831 :Examples:
1832
1833 +-------------------------+--------------------------------------------------------------------------------------------------------------+
1834 | ``[4 x i32]*``          | A :ref:`pointer <t_pointer>` to :ref:`array <t_array>` of four ``i32`` values.                               |
1835 +-------------------------+--------------------------------------------------------------------------------------------------------------+
1836 | ``i32 (i32*) *``        | A :ref:`pointer <t_pointer>` to a :ref:`function <t_function>` that takes an ``i32*``, returning an ``i32``. |
1837 +-------------------------+--------------------------------------------------------------------------------------------------------------+
1838 | ``i32 addrspace(5)*``   | A :ref:`pointer <t_pointer>` to an ``i32`` value that resides in address space #5.                           |
1839 +-------------------------+--------------------------------------------------------------------------------------------------------------+
1840
1841 .. _t_vector:
1842
1843 Vector Type
1844 """""""""""
1845
1846 :Overview:
1847
1848 A vector type is a simple derived type that represents a vector of
1849 elements. Vector types are used when multiple primitive data are
1850 operated in parallel using a single instruction (SIMD). A vector type
1851 requires a size (number of elements) and an underlying primitive data
1852 type. Vector types are considered :ref:`first class <t_firstclass>`.
1853
1854 :Syntax:
1855
1856 ::
1857
1858       < <# elements> x <elementtype> >
1859
1860 The number of elements is a constant integer value larger than 0;
1861 elementtype may be any integer or floating point type, or a pointer to
1862 these types. Vectors of size zero are not allowed.
1863
1864 :Examples:
1865
1866 +-------------------+--------------------------------------------------+
1867 | ``<4 x i32>``     | Vector of 4 32-bit integer values.               |
1868 +-------------------+--------------------------------------------------+
1869 | ``<8 x float>``   | Vector of 8 32-bit floating-point values.        |
1870 +-------------------+--------------------------------------------------+
1871 | ``<2 x i64>``     | Vector of 2 64-bit integer values.               |
1872 +-------------------+--------------------------------------------------+
1873 | ``<4 x i64*>``    | Vector of 4 pointers to 64-bit integer values.   |
1874 +-------------------+--------------------------------------------------+
1875
1876 .. _t_label:
1877
1878 Label Type
1879 ^^^^^^^^^^
1880
1881 :Overview:
1882
1883 The label type represents code labels.
1884
1885 :Syntax:
1886
1887 ::
1888
1889       label
1890
1891 .. _t_metadata:
1892
1893 Metadata Type
1894 ^^^^^^^^^^^^^
1895
1896 :Overview:
1897
1898 The metadata type represents embedded metadata. No derived types may be
1899 created from metadata except for :ref:`function <t_function>` arguments.
1900
1901 :Syntax:
1902
1903 ::
1904
1905       metadata
1906
1907 .. _t_aggregate:
1908
1909 Aggregate Types
1910 ^^^^^^^^^^^^^^^
1911
1912 Aggregate Types are a subset of derived types that can contain multiple
1913 member types. :ref:`Arrays <t_array>` and :ref:`structs <t_struct>` are
1914 aggregate types. :ref:`Vectors <t_vector>` are not considered to be
1915 aggregate types.
1916
1917 .. _t_array:
1918
1919 Array Type
1920 """"""""""
1921
1922 :Overview:
1923
1924 The array type is a very simple derived type that arranges elements
1925 sequentially in memory. The array type requires a size (number of
1926 elements) and an underlying data type.
1927
1928 :Syntax:
1929
1930 ::
1931
1932       [<# elements> x <elementtype>]
1933
1934 The number of elements is a constant integer value; ``elementtype`` may
1935 be any type with a size.
1936
1937 :Examples:
1938
1939 +------------------+--------------------------------------+
1940 | ``[40 x i32]``   | Array of 40 32-bit integer values.   |
1941 +------------------+--------------------------------------+
1942 | ``[41 x i32]``   | Array of 41 32-bit integer values.   |
1943 +------------------+--------------------------------------+
1944 | ``[4 x i8]``     | Array of 4 8-bit integer values.     |
1945 +------------------+--------------------------------------+
1946
1947 Here are some examples of multidimensional arrays:
1948
1949 +-----------------------------+----------------------------------------------------------+
1950 | ``[3 x [4 x i32]]``         | 3x4 array of 32-bit integer values.                      |
1951 +-----------------------------+----------------------------------------------------------+
1952 | ``[12 x [10 x float]]``     | 12x10 array of single precision floating point values.   |
1953 +-----------------------------+----------------------------------------------------------+
1954 | ``[2 x [3 x [4 x i16]]]``   | 2x3x4 array of 16-bit integer values.                    |
1955 +-----------------------------+----------------------------------------------------------+
1956
1957 There is no restriction on indexing beyond the end of the array implied
1958 by a static type (though there are restrictions on indexing beyond the
1959 bounds of an allocated object in some cases). This means that
1960 single-dimension 'variable sized array' addressing can be implemented in
1961 LLVM with a zero length array type. An implementation of 'pascal style
1962 arrays' in LLVM could use the type "``{ i32, [0 x float]}``", for
1963 example.
1964
1965 .. _t_struct:
1966
1967 Structure Type
1968 """"""""""""""
1969
1970 :Overview:
1971
1972 The structure type is used to represent a collection of data members
1973 together in memory. The elements of a structure may be any type that has
1974 a size.
1975
1976 Structures in memory are accessed using '``load``' and '``store``' by
1977 getting a pointer to a field with the '``getelementptr``' instruction.
1978 Structures in registers are accessed using the '``extractvalue``' and
1979 '``insertvalue``' instructions.
1980
1981 Structures may optionally be "packed" structures, which indicate that
1982 the alignment of the struct is one byte, and that there is no padding
1983 between the elements. In non-packed structs, padding between field types
1984 is inserted as defined by the DataLayout string in the module, which is
1985 required to match what the underlying code generator expects.
1986
1987 Structures can either be "literal" or "identified". A literal structure
1988 is defined inline with other types (e.g. ``{i32, i32}*``) whereas
1989 identified types are always defined at the top level with a name.
1990 Literal types are uniqued by their contents and can never be recursive
1991 or opaque since there is no way to write one. Identified types can be
1992 recursive, can be opaqued, and are never uniqued.
1993
1994 :Syntax:
1995
1996 ::
1997
1998       %T1 = type { <type list> }     ; Identified normal struct type
1999       %T2 = type <{ <type list> }>   ; Identified packed struct type
2000
2001 :Examples:
2002
2003 +------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2004 | ``{ i32, i32, i32 }``        | A triple of three ``i32`` values                                                                                                                                                      |
2005 +------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2006 | ``{ float, i32 (i32) * }``   | A pair, where the first element is a ``float`` and the second element is a :ref:`pointer <t_pointer>` to a :ref:`function <t_function>` that takes an ``i32``, returning an ``i32``.  |
2007 +------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2008 | ``<{ i8, i32 }>``            | A packed struct known to be 5 bytes in size.                                                                                                                                          |
2009 +------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2010
2011 .. _t_opaque:
2012
2013 Opaque Structure Types
2014 """"""""""""""""""""""
2015
2016 :Overview:
2017
2018 Opaque structure types are used to represent named structure types that
2019 do not have a body specified. This corresponds (for example) to the C
2020 notion of a forward declared structure.
2021
2022 :Syntax:
2023
2024 ::
2025
2026       %X = type opaque
2027       %52 = type opaque
2028
2029 :Examples:
2030
2031 +--------------+-------------------+
2032 | ``opaque``   | An opaque type.   |
2033 +--------------+-------------------+
2034
2035 .. _constants:
2036
2037 Constants
2038 =========
2039
2040 LLVM has several different basic types of constants. This section
2041 describes them all and their syntax.
2042
2043 Simple Constants
2044 ----------------
2045
2046 **Boolean constants**
2047     The two strings '``true``' and '``false``' are both valid constants
2048     of the ``i1`` type.
2049 **Integer constants**
2050     Standard integers (such as '4') are constants of the
2051     :ref:`integer <t_integer>` type. Negative numbers may be used with
2052     integer types.
2053 **Floating point constants**
2054     Floating point constants use standard decimal notation (e.g.
2055     123.421), exponential notation (e.g. 1.23421e+2), or a more precise
2056     hexadecimal notation (see below). The assembler requires the exact
2057     decimal value of a floating-point constant. For example, the
2058     assembler accepts 1.25 but rejects 1.3 because 1.3 is a repeating
2059     decimal in binary. Floating point constants must have a :ref:`floating
2060     point <t_floating>` type.
2061 **Null pointer constants**
2062     The identifier '``null``' is recognized as a null pointer constant
2063     and must be of :ref:`pointer type <t_pointer>`.
2064
2065 The one non-intuitive notation for constants is the hexadecimal form of
2066 floating point constants. For example, the form
2067 '``double    0x432ff973cafa8000``' is equivalent to (but harder to read
2068 than) '``double 4.5e+15``'. The only time hexadecimal floating point
2069 constants are required (and the only time that they are generated by the
2070 disassembler) is when a floating point constant must be emitted but it
2071 cannot be represented as a decimal floating point number in a reasonable
2072 number of digits. For example, NaN's, infinities, and other special
2073 values are represented in their IEEE hexadecimal format so that assembly
2074 and disassembly do not cause any bits to change in the constants.
2075
2076 When using the hexadecimal form, constants of types half, float, and
2077 double are represented using the 16-digit form shown above (which
2078 matches the IEEE754 representation for double); half and float values
2079 must, however, be exactly representable as IEEE 754 half and single
2080 precision, respectively. Hexadecimal format is always used for long
2081 double, and there are three forms of long double. The 80-bit format used
2082 by x86 is represented as ``0xK`` followed by 20 hexadecimal digits. The
2083 128-bit format used by PowerPC (two adjacent doubles) is represented by
2084 ``0xM`` followed by 32 hexadecimal digits. The IEEE 128-bit format is
2085 represented by ``0xL`` followed by 32 hexadecimal digits. Long doubles
2086 will only work if they match the long double format on your target.
2087 The IEEE 16-bit format (half precision) is represented by ``0xH``
2088 followed by 4 hexadecimal digits. All hexadecimal formats are big-endian
2089 (sign bit at the left).
2090
2091 There are no constants of type x86_mmx.
2092
2093 .. _complexconstants:
2094
2095 Complex Constants
2096 -----------------
2097
2098 Complex constants are a (potentially recursive) combination of simple
2099 constants and smaller complex constants.
2100
2101 **Structure constants**
2102     Structure constants are represented with notation similar to
2103     structure type definitions (a comma separated list of elements,
2104     surrounded by braces (``{}``)). For example:
2105     "``{ i32 4, float 17.0, i32* @G }``", where "``@G``" is declared as
2106     "``@G = external global i32``". Structure constants must have
2107     :ref:`structure type <t_struct>`, and the number and types of elements
2108     must match those specified by the type.
2109 **Array constants**
2110     Array constants are represented with notation similar to array type
2111     definitions (a comma separated list of elements, surrounded by
2112     square brackets (``[]``)). For example:
2113     "``[ i32 42, i32 11, i32 74 ]``". Array constants must have
2114     :ref:`array type <t_array>`, and the number and types of elements must
2115     match those specified by the type.
2116 **Vector constants**
2117     Vector constants are represented with notation similar to vector
2118     type definitions (a comma separated list of elements, surrounded by
2119     less-than/greater-than's (``<>``)). For example:
2120     "``< i32 42, i32 11, i32 74, i32 100 >``". Vector constants
2121     must have :ref:`vector type <t_vector>`, and the number and types of
2122     elements must match those specified by the type.
2123 **Zero initialization**
2124     The string '``zeroinitializer``' can be used to zero initialize a
2125     value to zero of *any* type, including scalar and
2126     :ref:`aggregate <t_aggregate>` types. This is often used to avoid
2127     having to print large zero initializers (e.g. for large arrays) and
2128     is always exactly equivalent to using explicit zero initializers.
2129 **Metadata node**
2130     A metadata node is a structure-like constant with :ref:`metadata
2131     type <t_metadata>`. For example:
2132     "``metadata !{ i32 0, metadata !"test" }``". Unlike other
2133     constants that are meant to be interpreted as part of the
2134     instruction stream, metadata is a place to attach additional
2135     information such as debug info.
2136
2137 Global Variable and Function Addresses
2138 --------------------------------------
2139
2140 The addresses of :ref:`global variables <globalvars>` and
2141 :ref:`functions <functionstructure>` are always implicitly valid
2142 (link-time) constants. These constants are explicitly referenced when
2143 the :ref:`identifier for the global <identifiers>` is used and always have
2144 :ref:`pointer <t_pointer>` type. For example, the following is a legal LLVM
2145 file:
2146
2147 .. code-block:: llvm
2148
2149     @X = global i32 17
2150     @Y = global i32 42
2151     @Z = global [2 x i32*] [ i32* @X, i32* @Y ]
2152
2153 .. _undefvalues:
2154
2155 Undefined Values
2156 ----------------
2157
2158 The string '``undef``' can be used anywhere a constant is expected, and
2159 indicates that the user of the value may receive an unspecified
2160 bit-pattern. Undefined values may be of any type (other than '``label``'
2161 or '``void``') and be used anywhere a constant is permitted.
2162
2163 Undefined values are useful because they indicate to the compiler that
2164 the program is well defined no matter what value is used. This gives the
2165 compiler more freedom to optimize. Here are some examples of
2166 (potentially surprising) transformations that are valid (in pseudo IR):
2167
2168 .. code-block:: llvm
2169
2170       %A = add %X, undef
2171       %B = sub %X, undef
2172       %C = xor %X, undef
2173     Safe:
2174       %A = undef
2175       %B = undef
2176       %C = undef
2177
2178 This is safe because all of the output bits are affected by the undef
2179 bits. Any output bit can have a zero or one depending on the input bits.
2180
2181 .. code-block:: llvm
2182
2183       %A = or %X, undef
2184       %B = and %X, undef
2185     Safe:
2186       %A = -1
2187       %B = 0
2188     Unsafe:
2189       %A = undef
2190       %B = undef
2191
2192 These logical operations have bits that are not always affected by the
2193 input. For example, if ``%X`` has a zero bit, then the output of the
2194 '``and``' operation will always be a zero for that bit, no matter what
2195 the corresponding bit from the '``undef``' is. As such, it is unsafe to
2196 optimize or assume that the result of the '``and``' is '``undef``'.
2197 However, it is safe to assume that all bits of the '``undef``' could be
2198 0, and optimize the '``and``' to 0. Likewise, it is safe to assume that
2199 all the bits of the '``undef``' operand to the '``or``' could be set,
2200 allowing the '``or``' to be folded to -1.
2201
2202 .. code-block:: llvm
2203
2204       %A = select undef, %X, %Y
2205       %B = select undef, 42, %Y
2206       %C = select %X, %Y, undef
2207     Safe:
2208       %A = %X     (or %Y)
2209       %B = 42     (or %Y)
2210       %C = %Y
2211     Unsafe:
2212       %A = undef
2213       %B = undef
2214       %C = undef
2215
2216 This set of examples shows that undefined '``select``' (and conditional
2217 branch) conditions can go *either way*, but they have to come from one
2218 of the two operands. In the ``%A`` example, if ``%X`` and ``%Y`` were
2219 both known to have a clear low bit, then ``%A`` would have to have a
2220 cleared low bit. However, in the ``%C`` example, the optimizer is
2221 allowed to assume that the '``undef``' operand could be the same as
2222 ``%Y``, allowing the whole '``select``' to be eliminated.
2223
2224 .. code-block:: llvm
2225
2226       %A = xor undef, undef
2227
2228       %B = undef
2229       %C = xor %B, %B
2230
2231       %D = undef
2232       %E = icmp lt %D, 4
2233       %F = icmp gte %D, 4
2234
2235     Safe:
2236       %A = undef
2237       %B = undef
2238       %C = undef
2239       %D = undef
2240       %E = undef
2241       %F = undef
2242
2243 This example points out that two '``undef``' operands are not
2244 necessarily the same. This can be surprising to people (and also matches
2245 C semantics) where they assume that "``X^X``" is always zero, even if
2246 ``X`` is undefined. This isn't true for a number of reasons, but the
2247 short answer is that an '``undef``' "variable" can arbitrarily change
2248 its value over its "live range". This is true because the variable
2249 doesn't actually *have a live range*. Instead, the value is logically
2250 read from arbitrary registers that happen to be around when needed, so
2251 the value is not necessarily consistent over time. In fact, ``%A`` and
2252 ``%C`` need to have the same semantics or the core LLVM "replace all
2253 uses with" concept would not hold.
2254
2255 .. code-block:: llvm
2256
2257       %A = fdiv undef, %X
2258       %B = fdiv %X, undef
2259     Safe:
2260       %A = undef
2261     b: unreachable
2262
2263 These examples show the crucial difference between an *undefined value*
2264 and *undefined behavior*. An undefined value (like '``undef``') is
2265 allowed to have an arbitrary bit-pattern. This means that the ``%A``
2266 operation can be constant folded to '``undef``', because the '``undef``'
2267 could be an SNaN, and ``fdiv`` is not (currently) defined on SNaN's.
2268 However, in the second example, we can make a more aggressive
2269 assumption: because the ``undef`` is allowed to be an arbitrary value,
2270 we are allowed to assume that it could be zero. Since a divide by zero
2271 has *undefined behavior*, we are allowed to assume that the operation
2272 does not execute at all. This allows us to delete the divide and all
2273 code after it. Because the undefined operation "can't happen", the
2274 optimizer can assume that it occurs in dead code.
2275
2276 .. code-block:: llvm
2277
2278     a:  store undef -> %X
2279     b:  store %X -> undef
2280     Safe:
2281     a: <deleted>
2282     b: unreachable
2283
2284 These examples reiterate the ``fdiv`` example: a store *of* an undefined
2285 value can be assumed to not have any effect; we can assume that the
2286 value is overwritten with bits that happen to match what was already
2287 there. However, a store *to* an undefined location could clobber
2288 arbitrary memory, therefore, it has undefined behavior.
2289
2290 .. _poisonvalues:
2291
2292 Poison Values
2293 -------------
2294
2295 Poison values are similar to :ref:`undef values <undefvalues>`, however
2296 they also represent the fact that an instruction or constant expression
2297 which cannot evoke side effects has nevertheless detected a condition
2298 which results in undefined behavior.
2299
2300 There is currently no way of representing a poison value in the IR; they
2301 only exist when produced by operations such as :ref:`add <i_add>` with
2302 the ``nsw`` flag.
2303
2304 Poison value behavior is defined in terms of value *dependence*:
2305
2306 -  Values other than :ref:`phi <i_phi>` nodes depend on their operands.
2307 -  :ref:`Phi <i_phi>` nodes depend on the operand corresponding to
2308    their dynamic predecessor basic block.
2309 -  Function arguments depend on the corresponding actual argument values
2310    in the dynamic callers of their functions.
2311 -  :ref:`Call <i_call>` instructions depend on the :ref:`ret <i_ret>`
2312    instructions that dynamically transfer control back to them.
2313 -  :ref:`Invoke <i_invoke>` instructions depend on the
2314    :ref:`ret <i_ret>`, :ref:`resume <i_resume>`, or exception-throwing
2315    call instructions that dynamically transfer control back to them.
2316 -  Non-volatile loads and stores depend on the most recent stores to all
2317    of the referenced memory addresses, following the order in the IR
2318    (including loads and stores implied by intrinsics such as
2319    :ref:`@llvm.memcpy <int_memcpy>`.)
2320 -  An instruction with externally visible side effects depends on the
2321    most recent preceding instruction with externally visible side
2322    effects, following the order in the IR. (This includes :ref:`volatile
2323    operations <volatile>`.)
2324 -  An instruction *control-depends* on a :ref:`terminator
2325    instruction <terminators>` if the terminator instruction has
2326    multiple successors and the instruction is always executed when
2327    control transfers to one of the successors, and may not be executed
2328    when control is transferred to another.
2329 -  Additionally, an instruction also *control-depends* on a terminator
2330    instruction if the set of instructions it otherwise depends on would
2331    be different if the terminator had transferred control to a different
2332    successor.
2333 -  Dependence is transitive.
2334
2335 Poison Values have the same behavior as :ref:`undef values <undefvalues>`,
2336 with the additional affect that any instruction which has a *dependence*
2337 on a poison value has undefined behavior.
2338
2339 Here are some examples:
2340
2341 .. code-block:: llvm
2342
2343     entry:
2344       %poison = sub nuw i32 0, 1           ; Results in a poison value.
2345       %still_poison = and i32 %poison, 0   ; 0, but also poison.
2346       %poison_yet_again = getelementptr i32* @h, i32 %still_poison
2347       store i32 0, i32* %poison_yet_again  ; memory at @h[0] is poisoned
2348
2349       store i32 %poison, i32* @g           ; Poison value stored to memory.
2350       %poison2 = load i32* @g              ; Poison value loaded back from memory.
2351
2352       store volatile i32 %poison, i32* @g  ; External observation; undefined behavior.
2353
2354       %narrowaddr = bitcast i32* @g to i16*
2355       %wideaddr = bitcast i32* @g to i64*
2356       %poison3 = load i16* %narrowaddr     ; Returns a poison value.
2357       %poison4 = load i64* %wideaddr       ; Returns a poison value.
2358
2359       %cmp = icmp slt i32 %poison, 0       ; Returns a poison value.
2360       br i1 %cmp, label %true, label %end  ; Branch to either destination.
2361
2362     true:
2363       store volatile i32 0, i32* @g        ; This is control-dependent on %cmp, so
2364                                            ; it has undefined behavior.
2365       br label %end
2366
2367     end:
2368       %p = phi i32 [ 0, %entry ], [ 1, %true ]
2369                                            ; Both edges into this PHI are
2370                                            ; control-dependent on %cmp, so this
2371                                            ; always results in a poison value.
2372
2373       store volatile i32 0, i32* @g        ; This would depend on the store in %true
2374                                            ; if %cmp is true, or the store in %entry
2375                                            ; otherwise, so this is undefined behavior.
2376
2377       br i1 %cmp, label %second_true, label %second_end
2378                                            ; The same branch again, but this time the
2379                                            ; true block doesn't have side effects.
2380
2381     second_true:
2382       ; No side effects!
2383       ret void
2384
2385     second_end:
2386       store volatile i32 0, i32* @g        ; This time, the instruction always depends
2387                                            ; on the store in %end. Also, it is
2388                                            ; control-equivalent to %end, so this is
2389                                            ; well-defined (ignoring earlier undefined
2390                                            ; behavior in this example).
2391
2392 .. _blockaddress:
2393
2394 Addresses of Basic Blocks
2395 -------------------------
2396
2397 ``blockaddress(@function, %block)``
2398
2399 The '``blockaddress``' constant computes the address of the specified
2400 basic block in the specified function, and always has an ``i8*`` type.
2401 Taking the address of the entry block is illegal.
2402
2403 This value only has defined behavior when used as an operand to the
2404 ':ref:`indirectbr <i_indirectbr>`' instruction, or for comparisons
2405 against null. Pointer equality tests between labels addresses results in
2406 undefined behavior --- though, again, comparison against null is ok, and
2407 no label is equal to the null pointer. This may be passed around as an
2408 opaque pointer sized value as long as the bits are not inspected. This
2409 allows ``ptrtoint`` and arithmetic to be performed on these values so
2410 long as the original value is reconstituted before the ``indirectbr``
2411 instruction.
2412
2413 Finally, some targets may provide defined semantics when using the value
2414 as the operand to an inline assembly, but that is target specific.
2415
2416 .. _constantexprs:
2417
2418 Constant Expressions
2419 --------------------
2420
2421 Constant expressions are used to allow expressions involving other
2422 constants to be used as constants. Constant expressions may be of any
2423 :ref:`first class <t_firstclass>` type and may involve any LLVM operation
2424 that does not have side effects (e.g. load and call are not supported).
2425 The following is the syntax for constant expressions:
2426
2427 ``trunc (CST to TYPE)``
2428     Truncate a constant to another type. The bit size of CST must be
2429     larger than the bit size of TYPE. Both types must be integers.
2430 ``zext (CST to TYPE)``
2431     Zero extend a constant to another type. The bit size of CST must be
2432     smaller than the bit size of TYPE. Both types must be integers.
2433 ``sext (CST to TYPE)``
2434     Sign extend a constant to another type. The bit size of CST must be
2435     smaller than the bit size of TYPE. Both types must be integers.
2436 ``fptrunc (CST to TYPE)``
2437     Truncate a floating point constant to another floating point type.
2438     The size of CST must be larger than the size of TYPE. Both types
2439     must be floating point.
2440 ``fpext (CST to TYPE)``
2441     Floating point extend a constant to another type. The size of CST
2442     must be smaller or equal to the size of TYPE. Both types must be
2443     floating point.
2444 ``fptoui (CST to TYPE)``
2445     Convert a floating point constant to the corresponding unsigned
2446     integer constant. TYPE must be a scalar or vector integer type. CST
2447     must be of scalar or vector floating point type. Both CST and TYPE
2448     must be scalars, or vectors of the same number of elements. If the
2449     value won't fit in the integer type, the results are undefined.
2450 ``fptosi (CST to TYPE)``
2451     Convert a floating point constant to the corresponding signed
2452     integer constant. TYPE must be a scalar or vector integer type. CST
2453     must be of scalar or vector floating point type. Both CST and TYPE
2454     must be scalars, or vectors of the same number of elements. If the
2455     value won't fit in the integer type, the results are undefined.
2456 ``uitofp (CST to TYPE)``
2457     Convert an unsigned integer constant to the corresponding floating
2458     point constant. TYPE must be a scalar or vector floating point type.
2459     CST must be of scalar or vector integer type. Both CST and TYPE must
2460     be scalars, or vectors of the same number of elements. If the value
2461     won't fit in the floating point type, the results are undefined.
2462 ``sitofp (CST to TYPE)``
2463     Convert a signed integer constant to the corresponding floating
2464     point constant. TYPE must be a scalar or vector floating point type.
2465     CST must be of scalar or vector integer type. Both CST and TYPE must
2466     be scalars, or vectors of the same number of elements. If the value
2467     won't fit in the floating point type, the results are undefined.
2468 ``ptrtoint (CST to TYPE)``
2469     Convert a pointer typed constant to the corresponding integer
2470     constant. ``TYPE`` must be an integer type. ``CST`` must be of
2471     pointer type. The ``CST`` value is zero extended, truncated, or
2472     unchanged to make it fit in ``TYPE``.
2473 ``inttoptr (CST to TYPE)``
2474     Convert an integer constant to a pointer constant. TYPE must be a
2475     pointer type. CST must be of integer type. The CST value is zero
2476     extended, truncated, or unchanged to make it fit in a pointer size.
2477     This one is *really* dangerous!
2478 ``bitcast (CST to TYPE)``
2479     Convert a constant, CST, to another TYPE. The constraints of the
2480     operands are the same as those for the :ref:`bitcast
2481     instruction <i_bitcast>`.
2482 ``addrspacecast (CST to TYPE)``
2483     Convert a constant pointer or constant vector of pointer, CST, to another
2484     TYPE in a different address space. The constraints of the operands are the
2485     same as those for the :ref:`addrspacecast instruction <i_addrspacecast>`.
2486 ``getelementptr (CSTPTR, IDX0, IDX1, ...)``, ``getelementptr inbounds (CSTPTR, IDX0, IDX1, ...)``
2487     Perform the :ref:`getelementptr operation <i_getelementptr>` on
2488     constants. As with the :ref:`getelementptr <i_getelementptr>`
2489     instruction, the index list may have zero or more indexes, which are
2490     required to make sense for the type of "CSTPTR".
2491 ``select (COND, VAL1, VAL2)``
2492     Perform the :ref:`select operation <i_select>` on constants.
2493 ``icmp COND (VAL1, VAL2)``
2494     Performs the :ref:`icmp operation <i_icmp>` on constants.
2495 ``fcmp COND (VAL1, VAL2)``
2496     Performs the :ref:`fcmp operation <i_fcmp>` on constants.
2497 ``extractelement (VAL, IDX)``
2498     Perform the :ref:`extractelement operation <i_extractelement>` on
2499     constants.
2500 ``insertelement (VAL, ELT, IDX)``
2501     Perform the :ref:`insertelement operation <i_insertelement>` on
2502     constants.
2503 ``shufflevector (VEC1, VEC2, IDXMASK)``
2504     Perform the :ref:`shufflevector operation <i_shufflevector>` on
2505     constants.
2506 ``extractvalue (VAL, IDX0, IDX1, ...)``
2507     Perform the :ref:`extractvalue operation <i_extractvalue>` on
2508     constants. The index list is interpreted in a similar manner as
2509     indices in a ':ref:`getelementptr <i_getelementptr>`' operation. At
2510     least one index value must be specified.
2511 ``insertvalue (VAL, ELT, IDX0, IDX1, ...)``
2512     Perform the :ref:`insertvalue operation <i_insertvalue>` on constants.
2513     The index list is interpreted in a similar manner as indices in a
2514     ':ref:`getelementptr <i_getelementptr>`' operation. At least one index
2515     value must be specified.
2516 ``OPCODE (LHS, RHS)``
2517     Perform the specified operation of the LHS and RHS constants. OPCODE
2518     may be any of the :ref:`binary <binaryops>` or :ref:`bitwise
2519     binary <bitwiseops>` operations. The constraints on operands are
2520     the same as those for the corresponding instruction (e.g. no bitwise
2521     operations on floating point values are allowed).
2522
2523 Other Values
2524 ============
2525
2526 .. _inlineasmexprs:
2527
2528 Inline Assembler Expressions
2529 ----------------------------
2530
2531 LLVM supports inline assembler expressions (as opposed to :ref:`Module-Level
2532 Inline Assembly <moduleasm>`) through the use of a special value. This
2533 value represents the inline assembler as a string (containing the
2534 instructions to emit), a list of operand constraints (stored as a
2535 string), a flag that indicates whether or not the inline asm expression
2536 has side effects, and a flag indicating whether the function containing
2537 the asm needs to align its stack conservatively. An example inline
2538 assembler expression is:
2539
2540 .. code-block:: llvm
2541
2542     i32 (i32) asm "bswap $0", "=r,r"
2543
2544 Inline assembler expressions may **only** be used as the callee operand
2545 of a :ref:`call <i_call>` or an :ref:`invoke <i_invoke>` instruction.
2546 Thus, typically we have:
2547
2548 .. code-block:: llvm
2549
2550     %X = call i32 asm "bswap $0", "=r,r"(i32 %Y)
2551
2552 Inline asms with side effects not visible in the constraint list must be
2553 marked as having side effects. This is done through the use of the
2554 '``sideeffect``' keyword, like so:
2555
2556 .. code-block:: llvm
2557
2558     call void asm sideeffect "eieio", ""()
2559
2560 In some cases inline asms will contain code that will not work unless
2561 the stack is aligned in some way, such as calls or SSE instructions on
2562 x86, yet will not contain code that does that alignment within the asm.
2563 The compiler should make conservative assumptions about what the asm
2564 might contain and should generate its usual stack alignment code in the
2565 prologue if the '``alignstack``' keyword is present:
2566
2567 .. code-block:: llvm
2568
2569     call void asm alignstack "eieio", ""()
2570
2571 Inline asms also support using non-standard assembly dialects. The
2572 assumed dialect is ATT. When the '``inteldialect``' keyword is present,
2573 the inline asm is using the Intel dialect. Currently, ATT and Intel are
2574 the only supported dialects. An example is:
2575
2576 .. code-block:: llvm
2577
2578     call void asm inteldialect "eieio", ""()
2579
2580 If multiple keywords appear the '``sideeffect``' keyword must come
2581 first, the '``alignstack``' keyword second and the '``inteldialect``'
2582 keyword last.
2583
2584 Inline Asm Metadata
2585 ^^^^^^^^^^^^^^^^^^^
2586
2587 The call instructions that wrap inline asm nodes may have a
2588 "``!srcloc``" MDNode attached to it that contains a list of constant
2589 integers. If present, the code generator will use the integer as the
2590 location cookie value when report errors through the ``LLVMContext``
2591 error reporting mechanisms. This allows a front-end to correlate backend
2592 errors that occur with inline asm back to the source code that produced
2593 it. For example:
2594
2595 .. code-block:: llvm
2596
2597     call void asm sideeffect "something bad", ""(), !srcloc !42
2598     ...
2599     !42 = !{ i32 1234567 }
2600
2601 It is up to the front-end to make sense of the magic numbers it places
2602 in the IR. If the MDNode contains multiple constants, the code generator
2603 will use the one that corresponds to the line of the asm that the error
2604 occurs on.
2605
2606 .. _metadata:
2607
2608 Metadata Nodes and Metadata Strings
2609 -----------------------------------
2610
2611 LLVM IR allows metadata to be attached to instructions in the program
2612 that can convey extra information about the code to the optimizers and
2613 code generator. One example application of metadata is source-level
2614 debug information. There are two metadata primitives: strings and nodes.
2615 All metadata has the ``metadata`` type and is identified in syntax by a
2616 preceding exclamation point ('``!``').
2617
2618 A metadata string is a string surrounded by double quotes. It can
2619 contain any character by escaping non-printable characters with
2620 "``\xx``" where "``xx``" is the two digit hex code. For example:
2621 "``!"test\00"``".
2622
2623 Metadata nodes are represented with notation similar to structure
2624 constants (a comma separated list of elements, surrounded by braces and
2625 preceded by an exclamation point). Metadata nodes can have any values as
2626 their operand. For example:
2627
2628 .. code-block:: llvm
2629
2630     !{ metadata !"test\00", i32 10}
2631
2632 A :ref:`named metadata <namedmetadatastructure>` is a collection of
2633 metadata nodes, which can be looked up in the module symbol table. For
2634 example:
2635
2636 .. code-block:: llvm
2637
2638     !foo =  metadata !{!4, !3}
2639
2640 Metadata can be used as function arguments. Here ``llvm.dbg.value``
2641 function is using two metadata arguments:
2642
2643 .. code-block:: llvm
2644
2645     call void @llvm.dbg.value(metadata !24, i64 0, metadata !25)
2646
2647 Metadata can be attached with an instruction. Here metadata ``!21`` is
2648 attached to the ``add`` instruction using the ``!dbg`` identifier:
2649
2650 .. code-block:: llvm
2651
2652     %indvar.next = add i64 %indvar, 1, !dbg !21
2653
2654 More information about specific metadata nodes recognized by the
2655 optimizers and code generator is found below.
2656
2657 '``tbaa``' Metadata
2658 ^^^^^^^^^^^^^^^^^^^
2659
2660 In LLVM IR, memory does not have types, so LLVM's own type system is not
2661 suitable for doing TBAA. Instead, metadata is added to the IR to
2662 describe a type system of a higher level language. This can be used to
2663 implement typical C/C++ TBAA, but it can also be used to implement
2664 custom alias analysis behavior for other languages.
2665
2666 The current metadata format is very simple. TBAA metadata nodes have up
2667 to three fields, e.g.:
2668
2669 .. code-block:: llvm
2670
2671     !0 = metadata !{ metadata !"an example type tree" }
2672     !1 = metadata !{ metadata !"int", metadata !0 }
2673     !2 = metadata !{ metadata !"float", metadata !0 }
2674     !3 = metadata !{ metadata !"const float", metadata !2, i64 1 }
2675
2676 The first field is an identity field. It can be any value, usually a
2677 metadata string, which uniquely identifies the type. The most important
2678 name in the tree is the name of the root node. Two trees with different
2679 root node names are entirely disjoint, even if they have leaves with
2680 common names.
2681
2682 The second field identifies the type's parent node in the tree, or is
2683 null or omitted for a root node. A type is considered to alias all of
2684 its descendants and all of its ancestors in the tree. Also, a type is
2685 considered to alias all types in other trees, so that bitcode produced
2686 from multiple front-ends is handled conservatively.
2687
2688 If the third field is present, it's an integer which if equal to 1
2689 indicates that the type is "constant" (meaning
2690 ``pointsToConstantMemory`` should return true; see `other useful
2691 AliasAnalysis methods <AliasAnalysis.html#OtherItfs>`_).
2692
2693 '``tbaa.struct``' Metadata
2694 ^^^^^^^^^^^^^^^^^^^^^^^^^^
2695
2696 The :ref:`llvm.memcpy <int_memcpy>` is often used to implement
2697 aggregate assignment operations in C and similar languages, however it
2698 is defined to copy a contiguous region of memory, which is more than
2699 strictly necessary for aggregate types which contain holes due to
2700 padding. Also, it doesn't contain any TBAA information about the fields
2701 of the aggregate.
2702
2703 ``!tbaa.struct`` metadata can describe which memory subregions in a
2704 memcpy are padding and what the TBAA tags of the struct are.
2705
2706 The current metadata format is very simple. ``!tbaa.struct`` metadata
2707 nodes are a list of operands which are in conceptual groups of three.
2708 For each group of three, the first operand gives the byte offset of a
2709 field in bytes, the second gives its size in bytes, and the third gives
2710 its tbaa tag. e.g.:
2711
2712 .. code-block:: llvm
2713
2714     !4 = metadata !{ i64 0, i64 4, metadata !1, i64 8, i64 4, metadata !2 }
2715
2716 This describes a struct with two fields. The first is at offset 0 bytes
2717 with size 4 bytes, and has tbaa tag !1. The second is at offset 8 bytes
2718 and has size 4 bytes and has tbaa tag !2.
2719
2720 Note that the fields need not be contiguous. In this example, there is a
2721 4 byte gap between the two fields. This gap represents padding which
2722 does not carry useful data and need not be preserved.
2723
2724 '``fpmath``' Metadata
2725 ^^^^^^^^^^^^^^^^^^^^^
2726
2727 ``fpmath`` metadata may be attached to any instruction of floating point
2728 type. It can be used to express the maximum acceptable error in the
2729 result of that instruction, in ULPs, thus potentially allowing the
2730 compiler to use a more efficient but less accurate method of computing
2731 it. ULP is defined as follows:
2732
2733     If ``x`` is a real number that lies between two finite consecutive
2734     floating-point numbers ``a`` and ``b``, without being equal to one
2735     of them, then ``ulp(x) = |b - a|``, otherwise ``ulp(x)`` is the
2736     distance between the two non-equal finite floating-point numbers
2737     nearest ``x``. Moreover, ``ulp(NaN)`` is ``NaN``.
2738
2739 The metadata node shall consist of a single positive floating point
2740 number representing the maximum relative error, for example:
2741
2742 .. code-block:: llvm
2743
2744     !0 = metadata !{ float 2.5 } ; maximum acceptable inaccuracy is 2.5 ULPs
2745
2746 '``range``' Metadata
2747 ^^^^^^^^^^^^^^^^^^^^
2748
2749 ``range`` metadata may be attached only to loads of integer types. It
2750 expresses the possible ranges the loaded value is in. The ranges are
2751 represented with a flattened list of integers. The loaded value is known
2752 to be in the union of the ranges defined by each consecutive pair. Each
2753 pair has the following properties:
2754
2755 -  The type must match the type loaded by the instruction.
2756 -  The pair ``a,b`` represents the range ``[a,b)``.
2757 -  Both ``a`` and ``b`` are constants.
2758 -  The range is allowed to wrap.
2759 -  The range should not represent the full or empty set. That is,
2760    ``a!=b``.
2761
2762 In addition, the pairs must be in signed order of the lower bound and
2763 they must be non-contiguous.
2764
2765 Examples:
2766
2767 .. code-block:: llvm
2768
2769       %a = load i8* %x, align 1, !range !0 ; Can only be 0 or 1
2770       %b = load i8* %y, align 1, !range !1 ; Can only be 255 (-1), 0 or 1
2771       %c = load i8* %z, align 1, !range !2 ; Can only be 0, 1, 3, 4 or 5
2772       %d = load i8* %z, align 1, !range !3 ; Can only be -2, -1, 3, 4 or 5
2773     ...
2774     !0 = metadata !{ i8 0, i8 2 }
2775     !1 = metadata !{ i8 255, i8 2 }
2776     !2 = metadata !{ i8 0, i8 2, i8 3, i8 6 }
2777     !3 = metadata !{ i8 -2, i8 0, i8 3, i8 6 }
2778
2779 '``llvm.loop``'
2780 ^^^^^^^^^^^^^^^
2781
2782 It is sometimes useful to attach information to loop constructs. Currently,
2783 loop metadata is implemented as metadata attached to the branch instruction
2784 in the loop latch block. This type of metadata refer to a metadata node that is
2785 guaranteed to be separate for each loop. The loop identifier metadata is
2786 specified with the name ``llvm.loop``.
2787
2788 The loop identifier metadata is implemented using a metadata that refers to
2789 itself to avoid merging it with any other identifier metadata, e.g.,
2790 during module linkage or function inlining. That is, each loop should refer
2791 to their own identification metadata even if they reside in separate functions.
2792 The following example contains loop identifier metadata for two separate loop
2793 constructs:
2794
2795 .. code-block:: llvm
2796
2797     !0 = metadata !{ metadata !0 }
2798     !1 = metadata !{ metadata !1 }
2799
2800 The loop identifier metadata can be used to specify additional per-loop
2801 metadata. Any operands after the first operand can be treated as user-defined
2802 metadata. For example the ``llvm.vectorizer.unroll`` metadata is understood
2803 by the loop vectorizer to indicate how many times to unroll the loop:
2804
2805 .. code-block:: llvm
2806
2807       br i1 %exitcond, label %._crit_edge, label %.lr.ph, !llvm.loop !0
2808     ...
2809     !0 = metadata !{ metadata !0, metadata !1 }
2810     !1 = metadata !{ metadata !"llvm.vectorizer.unroll", i32 2 }
2811
2812 '``llvm.mem``'
2813 ^^^^^^^^^^^^^^^
2814
2815 Metadata types used to annotate memory accesses with information helpful
2816 for optimizations are prefixed with ``llvm.mem``.
2817
2818 '``llvm.mem.parallel_loop_access``' Metadata
2819 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2820
2821 The ``llvm.mem.parallel_loop_access`` metadata refers to a loop identifier, 
2822 or metadata containing a list of loop identifiers for nested loops. 
2823 The metadata is attached to memory accessing instructions and denotes that 
2824 no loop carried memory dependence exist between it and other instructions denoted 
2825 with the same loop identifier.
2826
2827 Precisely, given two instructions ``m1`` and ``m2`` that both have the 
2828 ``llvm.mem.parallel_loop_access`` metadata, with ``L1`` and ``L2`` being the 
2829 set of loops associated with that metadata, respectively, then there is no loop 
2830 carried dependence between ``m1`` and ``m2`` for loops ``L1`` or 
2831 ``L2``.
2832
2833 As a special case, if all memory accessing instructions in a loop have 
2834 ``llvm.mem.parallel_loop_access`` metadata that refers to that loop, then the 
2835 loop has no loop carried memory dependences and is considered to be a parallel 
2836 loop.  
2837
2838 Note that if not all memory access instructions have such metadata referring to 
2839 the loop, then the loop is considered not being trivially parallel. Additional 
2840 memory dependence analysis is required to make that determination.  As a fail 
2841 safe mechanism, this causes loops that were originally parallel to be considered 
2842 sequential (if optimization passes that are unaware of the parallel semantics 
2843 insert new memory instructions into the loop body).
2844
2845 Example of a loop that is considered parallel due to its correct use of
2846 both ``llvm.loop`` and ``llvm.mem.parallel_loop_access``
2847 metadata types that refer to the same loop identifier metadata.
2848
2849 .. code-block:: llvm
2850
2851    for.body:
2852      ...
2853      %val0 = load i32* %arrayidx, !llvm.mem.parallel_loop_access !0
2854      ...
2855      store i32 %val0, i32* %arrayidx1, !llvm.mem.parallel_loop_access !0
2856      ...
2857      br i1 %exitcond, label %for.end, label %for.body, !llvm.loop !0
2858
2859    for.end:
2860    ...
2861    !0 = metadata !{ metadata !0 }
2862
2863 It is also possible to have nested parallel loops. In that case the
2864 memory accesses refer to a list of loop identifier metadata nodes instead of
2865 the loop identifier metadata node directly:
2866
2867 .. code-block:: llvm
2868
2869    outer.for.body:
2870      ...
2871      %val1 = load i32* %arrayidx3, !llvm.mem.parallel_loop_access !2
2872      ...
2873      br label %inner.for.body
2874
2875    inner.for.body:
2876      ...
2877      %val0 = load i32* %arrayidx1, !llvm.mem.parallel_loop_access !0
2878      ...
2879      store i32 %val0, i32* %arrayidx2, !llvm.mem.parallel_loop_access !0
2880      ...
2881      br i1 %exitcond, label %inner.for.end, label %inner.for.body, !llvm.loop !1
2882
2883    inner.for.end:
2884      ...
2885      store i32 %val1, i32* %arrayidx4, !llvm.mem.parallel_loop_access !2
2886      ...
2887      br i1 %exitcond, label %outer.for.end, label %outer.for.body, !llvm.loop !2
2888
2889    outer.for.end:                                          ; preds = %for.body
2890    ...
2891    !0 = metadata !{ metadata !1, metadata !2 } ; a list of loop identifiers
2892    !1 = metadata !{ metadata !1 } ; an identifier for the inner loop
2893    !2 = metadata !{ metadata !2 } ; an identifier for the outer loop
2894
2895 '``llvm.vectorizer``'
2896 ^^^^^^^^^^^^^^^^^^^^^
2897
2898 Metadata prefixed with ``llvm.vectorizer`` is used to control per-loop
2899 vectorization parameters such as vectorization factor and unroll factor.
2900
2901 ``llvm.vectorizer`` metadata should be used in conjunction with ``llvm.loop``
2902 loop identification metadata.
2903
2904 '``llvm.vectorizer.unroll``' Metadata
2905 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2906
2907 This metadata instructs the loop vectorizer to unroll the specified
2908 loop exactly ``N`` times.
2909
2910 The first operand is the string ``llvm.vectorizer.unroll`` and the second
2911 operand is an integer specifying the unroll factor. For example:
2912
2913 .. code-block:: llvm
2914
2915    !0 = metadata !{ metadata !"llvm.vectorizer.unroll", i32 4 }
2916
2917 Note that setting ``llvm.vectorizer.unroll`` to 1 disables unrolling of the
2918 loop.
2919
2920 If ``llvm.vectorizer.unroll`` is set to 0 then the amount of unrolling will be
2921 determined automatically.
2922
2923 '``llvm.vectorizer.width``' Metadata
2924 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2925
2926 This metadata sets the target width of the vectorizer to ``N``. Without
2927 this metadata, the vectorizer will choose a width automatically.
2928 Regardless of this metadata, the vectorizer will only vectorize loops if
2929 it believes it is valid to do so.
2930
2931 The first operand is the string ``llvm.vectorizer.width`` and the second
2932 operand is an integer specifying the width. For example:
2933
2934 .. code-block:: llvm
2935
2936    !0 = metadata !{ metadata !"llvm.vectorizer.width", i32 4 }
2937
2938 Note that setting ``llvm.vectorizer.width`` to 1 disables vectorization of the
2939 loop.
2940
2941 If ``llvm.vectorizer.width`` is set to 0 then the width will be determined
2942 automatically.
2943
2944 Module Flags Metadata
2945 =====================
2946
2947 Information about the module as a whole is difficult to convey to LLVM's
2948 subsystems. The LLVM IR isn't sufficient to transmit this information.
2949 The ``llvm.module.flags`` named metadata exists in order to facilitate
2950 this. These flags are in the form of key / value pairs --- much like a
2951 dictionary --- making it easy for any subsystem who cares about a flag to
2952 look it up.
2953
2954 The ``llvm.module.flags`` metadata contains a list of metadata triplets.
2955 Each triplet has the following form:
2956
2957 -  The first element is a *behavior* flag, which specifies the behavior
2958    when two (or more) modules are merged together, and it encounters two
2959    (or more) metadata with the same ID. The supported behaviors are
2960    described below.
2961 -  The second element is a metadata string that is a unique ID for the
2962    metadata. Each module may only have one flag entry for each unique ID (not
2963    including entries with the **Require** behavior).
2964 -  The third element is the value of the flag.
2965
2966 When two (or more) modules are merged together, the resulting
2967 ``llvm.module.flags`` metadata is the union of the modules' flags. That is, for
2968 each unique metadata ID string, there will be exactly one entry in the merged
2969 modules ``llvm.module.flags`` metadata table, and the value for that entry will
2970 be determined by the merge behavior flag, as described below. The only exception
2971 is that entries with the *Require* behavior are always preserved.
2972
2973 The following behaviors are supported:
2974
2975 .. list-table::
2976    :header-rows: 1
2977    :widths: 10 90
2978
2979    * - Value
2980      - Behavior
2981
2982    * - 1
2983      - **Error**
2984            Emits an error if two values disagree, otherwise the resulting value
2985            is that of the operands.
2986
2987    * - 2
2988      - **Warning**
2989            Emits a warning if two values disagree. The result value will be the
2990            operand for the flag from the first module being linked.
2991
2992    * - 3
2993      - **Require**
2994            Adds a requirement that another module flag be present and have a
2995            specified value after linking is performed. The value must be a
2996            metadata pair, where the first element of the pair is the ID of the
2997            module flag to be restricted, and the second element of the pair is
2998            the value the module flag should be restricted to. This behavior can
2999            be used to restrict the allowable results (via triggering of an
3000            error) of linking IDs with the **Override** behavior.
3001
3002    * - 4
3003      - **Override**
3004            Uses the specified value, regardless of the behavior or value of the
3005            other module. If both modules specify **Override**, but the values
3006            differ, an error will be emitted.
3007
3008    * - 5
3009      - **Append**
3010            Appends the two values, which are required to be metadata nodes.
3011
3012    * - 6
3013      - **AppendUnique**
3014            Appends the two values, which are required to be metadata
3015            nodes. However, duplicate entries in the second list are dropped
3016            during the append operation.
3017
3018 It is an error for a particular unique flag ID to have multiple behaviors,
3019 except in the case of **Require** (which adds restrictions on another metadata
3020 value) or **Override**.
3021
3022 An example of module flags:
3023
3024 .. code-block:: llvm
3025
3026     !0 = metadata !{ i32 1, metadata !"foo", i32 1 }
3027     !1 = metadata !{ i32 4, metadata !"bar", i32 37 }
3028     !2 = metadata !{ i32 2, metadata !"qux", i32 42 }
3029     !3 = metadata !{ i32 3, metadata !"qux",
3030       metadata !{
3031         metadata !"foo", i32 1
3032       }
3033     }
3034     !llvm.module.flags = !{ !0, !1, !2, !3 }
3035
3036 -  Metadata ``!0`` has the ID ``!"foo"`` and the value '1'. The behavior
3037    if two or more ``!"foo"`` flags are seen is to emit an error if their
3038    values are not equal.
3039
3040 -  Metadata ``!1`` has the ID ``!"bar"`` and the value '37'. The
3041    behavior if two or more ``!"bar"`` flags are seen is to use the value
3042    '37'.
3043
3044 -  Metadata ``!2`` has the ID ``!"qux"`` and the value '42'. The
3045    behavior if two or more ``!"qux"`` flags are seen is to emit a
3046    warning if their values are not equal.
3047
3048 -  Metadata ``!3`` has the ID ``!"qux"`` and the value:
3049
3050    ::
3051
3052        metadata !{ metadata !"foo", i32 1 }
3053
3054    The behavior is to emit an error if the ``llvm.module.flags`` does not
3055    contain a flag with the ID ``!"foo"`` that has the value '1' after linking is
3056    performed.
3057
3058 Objective-C Garbage Collection Module Flags Metadata
3059 ----------------------------------------------------
3060
3061 On the Mach-O platform, Objective-C stores metadata about garbage
3062 collection in a special section called "image info". The metadata
3063 consists of a version number and a bitmask specifying what types of
3064 garbage collection are supported (if any) by the file. If two or more
3065 modules are linked together their garbage collection metadata needs to
3066 be merged rather than appended together.
3067
3068 The Objective-C garbage collection module flags metadata consists of the
3069 following key-value pairs:
3070
3071 .. list-table::
3072    :header-rows: 1
3073    :widths: 30 70
3074
3075    * - Key
3076      - Value
3077
3078    * - ``Objective-C Version``
3079      - **[Required]** --- The Objective-C ABI version. Valid values are 1 and 2.
3080
3081    * - ``Objective-C Image Info Version``
3082      - **[Required]** --- The version of the image info section. Currently
3083        always 0.
3084
3085    * - ``Objective-C Image Info Section``
3086      - **[Required]** --- The section to place the metadata. Valid values are
3087        ``"__OBJC, __image_info, regular"`` for Objective-C ABI version 1, and
3088        ``"__DATA,__objc_imageinfo, regular, no_dead_strip"`` for
3089        Objective-C ABI version 2.
3090
3091    * - ``Objective-C Garbage Collection``
3092      - **[Required]** --- Specifies whether garbage collection is supported or
3093        not. Valid values are 0, for no garbage collection, and 2, for garbage
3094        collection supported.
3095
3096    * - ``Objective-C GC Only``
3097      - **[Optional]** --- Specifies that only garbage collection is supported.
3098        If present, its value must be 6. This flag requires that the
3099        ``Objective-C Garbage Collection`` flag have the value 2.
3100
3101 Some important flag interactions:
3102
3103 -  If a module with ``Objective-C Garbage Collection`` set to 0 is
3104    merged with a module with ``Objective-C Garbage Collection`` set to
3105    2, then the resulting module has the
3106    ``Objective-C Garbage Collection`` flag set to 0.
3107 -  A module with ``Objective-C Garbage Collection`` set to 0 cannot be
3108    merged with a module with ``Objective-C GC Only`` set to 6.
3109
3110 Automatic Linker Flags Module Flags Metadata
3111 --------------------------------------------
3112
3113 Some targets support embedding flags to the linker inside individual object
3114 files. Typically this is used in conjunction with language extensions which
3115 allow source files to explicitly declare the libraries they depend on, and have
3116 these automatically be transmitted to the linker via object files.
3117
3118 These flags are encoded in the IR using metadata in the module flags section,
3119 using the ``Linker Options`` key. The merge behavior for this flag is required
3120 to be ``AppendUnique``, and the value for the key is expected to be a metadata
3121 node which should be a list of other metadata nodes, each of which should be a
3122 list of metadata strings defining linker options.
3123
3124 For example, the following metadata section specifies two separate sets of
3125 linker options, presumably to link against ``libz`` and the ``Cocoa``
3126 framework::
3127
3128     !0 = metadata !{ i32 6, metadata !"Linker Options",
3129        metadata !{
3130           metadata !{ metadata !"-lz" },
3131           metadata !{ metadata !"-framework", metadata !"Cocoa" } } }
3132     !llvm.module.flags = !{ !0 }
3133
3134 The metadata encoding as lists of lists of options, as opposed to a collapsed
3135 list of options, is chosen so that the IR encoding can use multiple option
3136 strings to specify e.g., a single library, while still having that specifier be
3137 preserved as an atomic element that can be recognized by a target specific
3138 assembly writer or object file emitter.
3139
3140 Each individual option is required to be either a valid option for the target's
3141 linker, or an option that is reserved by the target specific assembly writer or
3142 object file emitter. No other aspect of these options is defined by the IR.
3143
3144 .. _intrinsicglobalvariables:
3145
3146 Intrinsic Global Variables
3147 ==========================
3148
3149 LLVM has a number of "magic" global variables that contain data that
3150 affect code generation or other IR semantics. These are documented here.
3151 All globals of this sort should have a section specified as
3152 "``llvm.metadata``". This section and all globals that start with
3153 "``llvm.``" are reserved for use by LLVM.
3154
3155 .. _gv_llvmused:
3156
3157 The '``llvm.used``' Global Variable
3158 -----------------------------------
3159
3160 The ``@llvm.used`` global is an array which has
3161 :ref:`appending linkage <linkage_appending>`. This array contains a list of
3162 pointers to named global variables, functions and aliases which may optionally
3163 have a pointer cast formed of bitcast or getelementptr. For example, a legal
3164 use of it is:
3165
3166 .. code-block:: llvm
3167
3168     @X = global i8 4
3169     @Y = global i32 123
3170
3171     @llvm.used = appending global [2 x i8*] [
3172        i8* @X,
3173        i8* bitcast (i32* @Y to i8*)
3174     ], section "llvm.metadata"
3175
3176 If a symbol appears in the ``@llvm.used`` list, then the compiler, assembler,
3177 and linker are required to treat the symbol as if there is a reference to the
3178 symbol that it cannot see (which is why they have to be named). For example, if
3179 a variable has internal linkage and no references other than that from the
3180 ``@llvm.used`` list, it cannot be deleted. This is commonly used to represent
3181 references from inline asms and other things the compiler cannot "see", and
3182 corresponds to "``attribute((used))``" in GNU C.
3183
3184 On some targets, the code generator must emit a directive to the
3185 assembler or object file to prevent the assembler and linker from
3186 molesting the symbol.
3187
3188 .. _gv_llvmcompilerused:
3189
3190 The '``llvm.compiler.used``' Global Variable
3191 --------------------------------------------
3192
3193 The ``@llvm.compiler.used`` directive is the same as the ``@llvm.used``
3194 directive, except that it only prevents the compiler from touching the
3195 symbol. On targets that support it, this allows an intelligent linker to
3196 optimize references to the symbol without being impeded as it would be
3197 by ``@llvm.used``.
3198
3199 This is a rare construct that should only be used in rare circumstances,
3200 and should not be exposed to source languages.
3201
3202 .. _gv_llvmglobalctors:
3203
3204 The '``llvm.global_ctors``' Global Variable
3205 -------------------------------------------
3206
3207 .. code-block:: llvm
3208
3209     %0 = type { i32, void ()*, i8* }
3210     @llvm.global_ctors = appending global [1 x %0] [%0 { i32 65535, void ()* @ctor, i8* @data }]
3211
3212 The ``@llvm.global_ctors`` array contains a list of constructor
3213 functions, priorities, and an optional associated global or function.
3214 The functions referenced by this array will be called in ascending order
3215 of priority (i.e. lowest first) when the module is loaded. The order of
3216 functions with the same priority is not defined.
3217
3218 If the third field is present, non-null, and points to a global variable
3219 or function, the initializer function will only run if the associated
3220 data from the current module is not discarded.
3221
3222 .. _llvmglobaldtors:
3223
3224 The '``llvm.global_dtors``' Global Variable
3225 -------------------------------------------
3226
3227 .. code-block:: llvm
3228
3229     %0 = type { i32, void ()*, i8* }
3230     @llvm.global_dtors = appending global [1 x %0] [%0 { i32 65535, void ()* @dtor, i8* @data }]
3231
3232 The ``@llvm.global_dtors`` array contains a list of destructor
3233 functions, priorities, and an optional associated global or function.
3234 The functions referenced by this array will be called in descending
3235 order of priority (i.e. highest first) when the module is unloaded. The
3236 order of functions with the same priority is not defined.
3237
3238 If the third field is present, non-null, and points to a global variable
3239 or function, the destructor function will only run if the associated
3240 data from the current module is not discarded.
3241
3242 Instruction Reference
3243 =====================
3244
3245 The LLVM instruction set consists of several different classifications
3246 of instructions: :ref:`terminator instructions <terminators>`, :ref:`binary
3247 instructions <binaryops>`, :ref:`bitwise binary
3248 instructions <bitwiseops>`, :ref:`memory instructions <memoryops>`, and
3249 :ref:`other instructions <otherops>`.
3250
3251 .. _terminators:
3252
3253 Terminator Instructions
3254 -----------------------
3255
3256 As mentioned :ref:`previously <functionstructure>`, every basic block in a
3257 program ends with a "Terminator" instruction, which indicates which
3258 block should be executed after the current block is finished. These
3259 terminator instructions typically yield a '``void``' value: they produce
3260 control flow, not values (the one exception being the
3261 ':ref:`invoke <i_invoke>`' instruction).
3262
3263 The terminator instructions are: ':ref:`ret <i_ret>`',
3264 ':ref:`br <i_br>`', ':ref:`switch <i_switch>`',
3265 ':ref:`indirectbr <i_indirectbr>`', ':ref:`invoke <i_invoke>`',
3266 ':ref:`resume <i_resume>`', and ':ref:`unreachable <i_unreachable>`'.
3267
3268 .. _i_ret:
3269
3270 '``ret``' Instruction
3271 ^^^^^^^^^^^^^^^^^^^^^
3272
3273 Syntax:
3274 """""""
3275
3276 ::
3277
3278       ret <type> <value>       ; Return a value from a non-void function
3279       ret void                 ; Return from void function
3280
3281 Overview:
3282 """""""""
3283
3284 The '``ret``' instruction is used to return control flow (and optionally
3285 a value) from a function back to the caller.
3286
3287 There are two forms of the '``ret``' instruction: one that returns a
3288 value and then causes control flow, and one that just causes control
3289 flow to occur.
3290
3291 Arguments:
3292 """"""""""
3293
3294 The '``ret``' instruction optionally accepts a single argument, the
3295 return value. The type of the return value must be a ':ref:`first
3296 class <t_firstclass>`' type.
3297
3298 A function is not :ref:`well formed <wellformed>` if it it has a non-void
3299 return type and contains a '``ret``' instruction with no return value or
3300 a return value with a type that does not match its type, or if it has a
3301 void return type and contains a '``ret``' instruction with a return
3302 value.
3303
3304 Semantics:
3305 """"""""""
3306
3307 When the '``ret``' instruction is executed, control flow returns back to
3308 the calling function's context. If the caller is a
3309 ":ref:`call <i_call>`" instruction, execution continues at the
3310 instruction after the call. If the caller was an
3311 ":ref:`invoke <i_invoke>`" instruction, execution continues at the
3312 beginning of the "normal" destination block. If the instruction returns
3313 a value, that value shall set the call or invoke instruction's return
3314 value.
3315
3316 Example:
3317 """"""""
3318
3319 .. code-block:: llvm
3320
3321       ret i32 5                       ; Return an integer value of 5
3322       ret void                        ; Return from a void function
3323       ret { i32, i8 } { i32 4, i8 2 } ; Return a struct of values 4 and 2
3324
3325 .. _i_br:
3326
3327 '``br``' Instruction
3328 ^^^^^^^^^^^^^^^^^^^^
3329
3330 Syntax:
3331 """""""
3332
3333 ::
3334
3335       br i1 <cond>, label <iftrue>, label <iffalse>
3336       br label <dest>          ; Unconditional branch
3337
3338 Overview:
3339 """""""""
3340
3341 The '``br``' instruction is used to cause control flow to transfer to a
3342 different basic block in the current function. There are two forms of
3343 this instruction, corresponding to a conditional branch and an
3344 unconditional branch.
3345
3346 Arguments:
3347 """"""""""
3348
3349 The conditional branch form of the '``br``' instruction takes a single
3350 '``i1``' value and two '``label``' values. The unconditional form of the
3351 '``br``' instruction takes a single '``label``' value as a target.
3352
3353 Semantics:
3354 """"""""""
3355
3356 Upon execution of a conditional '``br``' instruction, the '``i1``'
3357 argument is evaluated. If the value is ``true``, control flows to the
3358 '``iftrue``' ``label`` argument. If "cond" is ``false``, control flows
3359 to the '``iffalse``' ``label`` argument.
3360
3361 Example:
3362 """"""""
3363
3364 .. code-block:: llvm
3365
3366     Test:
3367       %cond = icmp eq i32 %a, %b
3368       br i1 %cond, label %IfEqual, label %IfUnequal
3369     IfEqual:
3370       ret i32 1
3371     IfUnequal:
3372       ret i32 0
3373
3374 .. _i_switch:
3375
3376 '``switch``' Instruction
3377 ^^^^^^^^^^^^^^^^^^^^^^^^
3378
3379 Syntax:
3380 """""""
3381
3382 ::
3383
3384       switch <intty> <value>, label <defaultdest> [ <intty> <val>, label <dest> ... ]
3385
3386 Overview:
3387 """""""""
3388
3389 The '``switch``' instruction is used to transfer control flow to one of
3390 several different places. It is a generalization of the '``br``'
3391 instruction, allowing a branch to occur to one of many possible
3392 destinations.
3393
3394 Arguments:
3395 """"""""""
3396
3397 The '``switch``' instruction uses three parameters: an integer
3398 comparison value '``value``', a default '``label``' destination, and an
3399 array of pairs of comparison value constants and '``label``'s. The table
3400 is not allowed to contain duplicate constant entries.
3401
3402 Semantics:
3403 """"""""""
3404
3405 The ``switch`` instruction specifies a table of values and destinations.
3406 When the '``switch``' instruction is executed, this table is searched
3407 for the given value. If the value is found, control flow is transferred
3408 to the corresponding destination; otherwise, control flow is transferred
3409 to the default destination.
3410
3411 Implementation:
3412 """""""""""""""
3413
3414 Depending on properties of the target machine and the particular
3415 ``switch`` instruction, this instruction may be code generated in
3416 different ways. For example, it could be generated as a series of
3417 chained conditional branches or with a lookup table.
3418
3419 Example:
3420 """"""""
3421
3422 .. code-block:: llvm
3423
3424      ; Emulate a conditional br instruction
3425      %Val = zext i1 %value to i32
3426      switch i32 %Val, label %truedest [ i32 0, label %falsedest ]
3427
3428      ; Emulate an unconditional br instruction
3429      switch i32 0, label %dest [ ]
3430
3431      ; Implement a jump table:
3432      switch i32 %val, label %otherwise [ i32 0, label %onzero
3433                                          i32 1, label %onone
3434                                          i32 2, label %ontwo ]
3435
3436 .. _i_indirectbr:
3437
3438 '``indirectbr``' Instruction
3439 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3440
3441 Syntax:
3442 """""""
3443
3444 ::
3445
3446       indirectbr <somety>* <address>, [ label <dest1>, label <dest2>, ... ]
3447
3448 Overview:
3449 """""""""
3450
3451 The '``indirectbr``' instruction implements an indirect branch to a
3452 label within the current function, whose address is specified by
3453 "``address``". Address must be derived from a
3454 :ref:`blockaddress <blockaddress>` constant.
3455
3456 Arguments:
3457 """"""""""
3458
3459 The '``address``' argument is the address of the label to jump to. The
3460 rest of the arguments indicate the full set of possible destinations
3461 that the address may point to. Blocks are allowed to occur multiple
3462 times in the destination list, though this isn't particularly useful.
3463
3464 This destination list is required so that dataflow analysis has an
3465 accurate understanding of the CFG.
3466
3467 Semantics:
3468 """"""""""
3469
3470 Control transfers to the block specified in the address argument. All
3471 possible destination blocks must be listed in the label list, otherwise
3472 this instruction has undefined behavior. This implies that jumps to
3473 labels defined in other functions have undefined behavior as well.
3474
3475 Implementation:
3476 """""""""""""""
3477
3478 This is typically implemented with a jump through a register.
3479
3480 Example:
3481 """"""""
3482
3483 .. code-block:: llvm
3484
3485      indirectbr i8* %Addr, [ label %bb1, label %bb2, label %bb3 ]
3486
3487 .. _i_invoke:
3488
3489 '``invoke``' Instruction
3490 ^^^^^^^^^^^^^^^^^^^^^^^^
3491
3492 Syntax:
3493 """""""
3494
3495 ::
3496
3497       <result> = invoke [cconv] [ret attrs] <ptr to function ty> <function ptr val>(<function args>) [fn attrs]
3498                     to label <normal label> unwind label <exception label>
3499
3500 Overview:
3501 """""""""
3502
3503 The '``invoke``' instruction causes control to transfer to a specified
3504 function, with the possibility of control flow transfer to either the
3505 '``normal``' label or the '``exception``' label. If the callee function
3506 returns with the "``ret``" instruction, control flow will return to the
3507 "normal" label. If the callee (or any indirect callees) returns via the
3508 ":ref:`resume <i_resume>`" instruction or other exception handling
3509 mechanism, control is interrupted and continued at the dynamically
3510 nearest "exception" label.
3511
3512 The '``exception``' label is a `landing
3513 pad <ExceptionHandling.html#overview>`_ for the exception. As such,
3514 '``exception``' label is required to have the
3515 ":ref:`landingpad <i_landingpad>`" instruction, which contains the
3516 information about the behavior of the program after unwinding happens,
3517 as its first non-PHI instruction. The restrictions on the
3518 "``landingpad``" instruction's tightly couples it to the "``invoke``"
3519 instruction, so that the important information contained within the
3520 "``landingpad``" instruction can't be lost through normal code motion.
3521
3522 Arguments:
3523 """"""""""
3524
3525 This instruction requires several arguments:
3526
3527 #. The optional "cconv" marker indicates which :ref:`calling
3528    convention <callingconv>` the call should use. If none is
3529    specified, the call defaults to using C calling conventions.
3530 #. The optional :ref:`Parameter Attributes <paramattrs>` list for return
3531    values. Only '``zeroext``', '``signext``', and '``inreg``' attributes
3532    are valid here.
3533 #. '``ptr to function ty``': shall be the signature of the pointer to
3534    function value being invoked. In most cases, this is a direct
3535    function invocation, but indirect ``invoke``'s are just as possible,
3536    branching off an arbitrary pointer to function value.
3537 #. '``function ptr val``': An LLVM value containing a pointer to a
3538    function to be invoked.
3539 #. '``function args``': argument list whose types match the function
3540    signature argument types and parameter attributes. All arguments must
3541    be of :ref:`first class <t_firstclass>` type. If the function signature
3542    indicates the function accepts a variable number of arguments, the
3543    extra arguments can be specified.
3544 #. '``normal label``': the label reached when the called function
3545    executes a '``ret``' instruction.
3546 #. '``exception label``': the label reached when a callee returns via
3547    the :ref:`resume <i_resume>` instruction or other exception handling
3548    mechanism.
3549 #. The optional :ref:`function attributes <fnattrs>` list. Only
3550    '``noreturn``', '``nounwind``', '``readonly``' and '``readnone``'
3551    attributes are valid here.
3552
3553 Semantics:
3554 """"""""""
3555
3556 This instruction is designed to operate as a standard '``call``'
3557 instruction in most regards. The primary difference is that it
3558 establishes an association with a label, which is used by the runtime
3559 library to unwind the stack.
3560
3561 This instruction is used in languages with destructors to ensure that
3562 proper cleanup is performed in the case of either a ``longjmp`` or a
3563 thrown exception. Additionally, this is important for implementation of
3564 '``catch``' clauses in high-level languages that support them.
3565
3566 For the purposes of the SSA form, the definition of the value returned
3567 by the '``invoke``' instruction is deemed to occur on the edge from the
3568 current block to the "normal" label. If the callee unwinds then no
3569 return value is available.
3570
3571 Example:
3572 """"""""
3573
3574 .. code-block:: llvm
3575
3576       %retval = invoke i32 @Test(i32 15) to label %Continue
3577                   unwind label %TestCleanup              ; {i32}:retval set
3578       %retval = invoke coldcc i32 %Testfnptr(i32 15) to label %Continue
3579                   unwind label %TestCleanup              ; {i32}:retval set
3580
3581 .. _i_resume:
3582
3583 '``resume``' Instruction
3584 ^^^^^^^^^^^^^^^^^^^^^^^^
3585
3586 Syntax:
3587 """""""
3588
3589 ::
3590
3591       resume <type> <value>
3592
3593 Overview:
3594 """""""""
3595
3596 The '``resume``' instruction is a terminator instruction that has no
3597 successors.
3598
3599 Arguments:
3600 """"""""""
3601
3602 The '``resume``' instruction requires one argument, which must have the
3603 same type as the result of any '``landingpad``' instruction in the same
3604 function.
3605
3606 Semantics:
3607 """"""""""
3608
3609 The '``resume``' instruction resumes propagation of an existing
3610 (in-flight) exception whose unwinding was interrupted with a
3611 :ref:`landingpad <i_landingpad>` instruction.
3612
3613 Example:
3614 """"""""
3615
3616 .. code-block:: llvm
3617
3618       resume { i8*, i32 } %exn
3619
3620 .. _i_unreachable:
3621
3622 '``unreachable``' Instruction
3623 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3624
3625 Syntax:
3626 """""""
3627
3628 ::
3629
3630       unreachable
3631
3632 Overview:
3633 """""""""
3634
3635 The '``unreachable``' instruction has no defined semantics. This
3636 instruction is used to inform the optimizer that a particular portion of
3637 the code is not reachable. This can be used to indicate that the code
3638 after a no-return function cannot be reached, and other facts.
3639
3640 Semantics:
3641 """"""""""
3642
3643 The '``unreachable``' instruction has no defined semantics.
3644
3645 .. _binaryops:
3646
3647 Binary Operations
3648 -----------------
3649
3650 Binary operators are used to do most of the computation in a program.
3651 They require two operands of the same type, execute an operation on
3652 them, and produce a single value. The operands might represent multiple
3653 data, as is the case with the :ref:`vector <t_vector>` data type. The
3654 result value has the same type as its operands.
3655
3656 There are several different binary operators:
3657
3658 .. _i_add:
3659
3660 '``add``' Instruction
3661 ^^^^^^^^^^^^^^^^^^^^^
3662
3663 Syntax:
3664 """""""
3665
3666 ::
3667
3668       <result> = add <ty> <op1>, <op2>          ; yields {ty}:result
3669       <result> = add nuw <ty> <op1>, <op2>      ; yields {ty}:result
3670       <result> = add nsw <ty> <op1>, <op2>      ; yields {ty}:result
3671       <result> = add nuw nsw <ty> <op1>, <op2>  ; yields {ty}:result
3672
3673 Overview:
3674 """""""""
3675
3676 The '``add``' instruction returns the sum of its two operands.
3677
3678 Arguments:
3679 """"""""""
3680
3681 The two arguments to the '``add``' instruction must be
3682 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer values. Both
3683 arguments must have identical types.
3684
3685 Semantics:
3686 """"""""""
3687
3688 The value produced is the integer sum of the two operands.
3689
3690 If the sum has unsigned overflow, the result returned is the
3691 mathematical result modulo 2\ :sup:`n`\ , where n is the bit width of
3692 the result.
3693
3694 Because LLVM integers use a two's complement representation, this
3695 instruction is appropriate for both signed and unsigned integers.
3696
3697 ``nuw`` and ``nsw`` stand for "No Unsigned Wrap" and "No Signed Wrap",
3698 respectively. If the ``nuw`` and/or ``nsw`` keywords are present, the
3699 result value of the ``add`` is a :ref:`poison value <poisonvalues>` if
3700 unsigned and/or signed overflow, respectively, occurs.
3701
3702 Example:
3703 """"""""
3704
3705 .. code-block:: llvm
3706
3707       <result> = add i32 4, %var          ; yields {i32}:result = 4 + %var
3708
3709 .. _i_fadd:
3710
3711 '``fadd``' Instruction
3712 ^^^^^^^^^^^^^^^^^^^^^^
3713
3714 Syntax:
3715 """""""
3716
3717 ::
3718
3719       <result> = fadd [fast-math flags]* <ty> <op1>, <op2>   ; yields {ty}:result
3720
3721 Overview:
3722 """""""""
3723
3724 The '``fadd``' instruction returns the sum of its two operands.
3725
3726 Arguments:
3727 """"""""""
3728
3729 The two arguments to the '``fadd``' instruction must be :ref:`floating
3730 point <t_floating>` or :ref:`vector <t_vector>` of floating point values.
3731 Both arguments must have identical types.
3732
3733 Semantics:
3734 """"""""""
3735
3736 The value produced is the floating point sum of the two operands. This
3737 instruction can also take any number of :ref:`fast-math flags <fastmath>`,
3738 which are optimization hints to enable otherwise unsafe floating point
3739 optimizations:
3740
3741 Example:
3742 """"""""
3743
3744 .. code-block:: llvm
3745
3746       <result> = fadd float 4.0, %var          ; yields {float}:result = 4.0 + %var
3747
3748 '``sub``' Instruction
3749 ^^^^^^^^^^^^^^^^^^^^^
3750
3751 Syntax:
3752 """""""
3753
3754 ::
3755
3756       <result> = sub <ty> <op1>, <op2>          ; yields {ty}:result
3757       <result> = sub nuw <ty> <op1>, <op2>      ; yields {ty}:result
3758       <result> = sub nsw <ty> <op1>, <op2>      ; yields {ty}:result
3759       <result> = sub nuw nsw <ty> <op1>, <op2>  ; yields {ty}:result
3760
3761 Overview:
3762 """""""""
3763
3764 The '``sub``' instruction returns the difference of its two operands.
3765
3766 Note that the '``sub``' instruction is used to represent the '``neg``'
3767 instruction present in most other intermediate representations.
3768
3769 Arguments:
3770 """"""""""
3771
3772 The two arguments to the '``sub``' instruction must be
3773 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer values. Both
3774 arguments must have identical types.
3775
3776 Semantics:
3777 """"""""""
3778
3779 The value produced is the integer difference of the two operands.
3780
3781 If the difference has unsigned overflow, the result returned is the
3782 mathematical result modulo 2\ :sup:`n`\ , where n is the bit width of
3783 the result.
3784
3785 Because LLVM integers use a two's complement representation, this
3786 instruction is appropriate for both signed and unsigned integers.
3787
3788 ``nuw`` and ``nsw`` stand for "No Unsigned Wrap" and "No Signed Wrap",
3789 respectively. If the ``nuw`` and/or ``nsw`` keywords are present, the
3790 result value of the ``sub`` is a :ref:`poison value <poisonvalues>` if
3791 unsigned and/or signed overflow, respectively, occurs.
3792
3793 Example:
3794 """"""""
3795
3796 .. code-block:: llvm
3797
3798       <result> = sub i32 4, %var          ; yields {i32}:result = 4 - %var
3799       <result> = sub i32 0, %val          ; yields {i32}:result = -%var
3800
3801 .. _i_fsub:
3802
3803 '``fsub``' Instruction
3804 ^^^^^^^^^^^^^^^^^^^^^^
3805
3806 Syntax:
3807 """""""
3808
3809 ::
3810
3811       <result> = fsub [fast-math flags]* <ty> <op1>, <op2>   ; yields {ty}:result
3812
3813 Overview:
3814 """""""""
3815
3816 The '``fsub``' instruction returns the difference of its two operands.
3817
3818 Note that the '``fsub``' instruction is used to represent the '``fneg``'
3819 instruction present in most other intermediate representations.
3820
3821 Arguments:
3822 """"""""""
3823
3824 The two arguments to the '``fsub``' instruction must be :ref:`floating
3825 point <t_floating>` or :ref:`vector <t_vector>` of floating point values.
3826 Both arguments must have identical types.
3827
3828 Semantics:
3829 """"""""""
3830
3831 The value produced is the floating point difference of the two operands.
3832 This instruction can also take any number of :ref:`fast-math
3833 flags <fastmath>`, which are optimization hints to enable otherwise
3834 unsafe floating point optimizations:
3835
3836 Example:
3837 """"""""
3838
3839 .. code-block:: llvm
3840
3841       <result> = fsub float 4.0, %var           ; yields {float}:result = 4.0 - %var
3842       <result> = fsub float -0.0, %val          ; yields {float}:result = -%var
3843
3844 '``mul``' Instruction
3845 ^^^^^^^^^^^^^^^^^^^^^
3846
3847 Syntax:
3848 """""""
3849
3850 ::
3851
3852       <result> = mul <ty> <op1>, <op2>          ; yields {ty}:result
3853       <result> = mul nuw <ty> <op1>, <op2>      ; yields {ty}:result
3854       <result> = mul nsw <ty> <op1>, <op2>      ; yields {ty}:result
3855       <result> = mul nuw nsw <ty> <op1>, <op2>  ; yields {ty}:result
3856
3857 Overview:
3858 """""""""
3859
3860 The '``mul``' instruction returns the product of its two operands.
3861
3862 Arguments:
3863 """"""""""
3864
3865 The two arguments to the '``mul``' instruction must be
3866 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer values. Both
3867 arguments must have identical types.
3868
3869 Semantics:
3870 """"""""""
3871
3872 The value produced is the integer product of the two operands.
3873
3874 If the result of the multiplication has unsigned overflow, the result
3875 returned is the mathematical result modulo 2\ :sup:`n`\ , where n is the
3876 bit width of the result.
3877
3878 Because LLVM integers use a two's complement representation, and the
3879 result is the same width as the operands, this instruction returns the
3880 correct result for both signed and unsigned integers. If a full product
3881 (e.g. ``i32`` * ``i32`` -> ``i64``) is needed, the operands should be
3882 sign-extended or zero-extended as appropriate to the width of the full
3883 product.
3884
3885 ``nuw`` and ``nsw`` stand for "No Unsigned Wrap" and "No Signed Wrap",
3886 respectively. If the ``nuw`` and/or ``nsw`` keywords are present, the
3887 result value of the ``mul`` is a :ref:`poison value <poisonvalues>` if
3888 unsigned and/or signed overflow, respectively, occurs.
3889
3890 Example:
3891 """"""""
3892
3893 .. code-block:: llvm
3894
3895       <result> = mul i32 4, %var          ; yields {i32}:result = 4 * %var
3896
3897 .. _i_fmul:
3898
3899 '``fmul``' Instruction
3900 ^^^^^^^^^^^^^^^^^^^^^^
3901
3902 Syntax:
3903 """""""
3904
3905 ::
3906
3907       <result> = fmul [fast-math flags]* <ty> <op1>, <op2>   ; yields {ty}:result
3908
3909 Overview:
3910 """""""""
3911
3912 The '``fmul``' instruction returns the product of its two operands.
3913
3914 Arguments:
3915 """"""""""
3916
3917 The two arguments to the '``fmul``' instruction must be :ref:`floating
3918 point <t_floating>` or :ref:`vector <t_vector>` of floating point values.
3919 Both arguments must have identical types.
3920
3921 Semantics:
3922 """"""""""
3923
3924 The value produced is the floating point product of the two operands.
3925 This instruction can also take any number of :ref:`fast-math
3926 flags <fastmath>`, which are optimization hints to enable otherwise
3927 unsafe floating point optimizations:
3928
3929 Example:
3930 """"""""
3931
3932 .. code-block:: llvm
3933
3934       <result> = fmul float 4.0, %var          ; yields {float}:result = 4.0 * %var
3935
3936 '``udiv``' Instruction
3937 ^^^^^^^^^^^^^^^^^^^^^^
3938
3939 Syntax:
3940 """""""
3941
3942 ::
3943
3944       <result> = udiv <ty> <op1>, <op2>         ; yields {ty}:result
3945       <result> = udiv exact <ty> <op1>, <op2>   ; yields {ty}:result
3946
3947 Overview:
3948 """""""""
3949
3950 The '``udiv``' instruction returns the quotient of its two operands.
3951
3952 Arguments:
3953 """"""""""
3954
3955 The two arguments to the '``udiv``' instruction must be
3956 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer values. Both
3957 arguments must have identical types.
3958
3959 Semantics:
3960 """"""""""
3961
3962 The value produced is the unsigned integer quotient of the two operands.
3963
3964 Note that unsigned integer division and signed integer division are
3965 distinct operations; for signed integer division, use '``sdiv``'.
3966
3967 Division by zero leads to undefined behavior.
3968
3969 If the ``exact`` keyword is present, the result value of the ``udiv`` is
3970 a :ref:`poison value <poisonvalues>` if %op1 is not a multiple of %op2 (as
3971 such, "((a udiv exact b) mul b) == a").
3972
3973 Example:
3974 """"""""
3975
3976 .. code-block:: llvm
3977
3978       <result> = udiv i32 4, %var          ; yields {i32}:result = 4 / %var
3979
3980 '``sdiv``' Instruction
3981 ^^^^^^^^^^^^^^^^^^^^^^
3982
3983 Syntax:
3984 """""""
3985
3986 ::
3987
3988       <result> = sdiv <ty> <op1>, <op2>         ; yields {ty}:result
3989       <result> = sdiv exact <ty> <op1>, <op2>   ; yields {ty}:result
3990
3991 Overview:
3992 """""""""
3993
3994 The '``sdiv``' instruction returns the quotient of its two operands.
3995
3996 Arguments:
3997 """"""""""
3998
3999 The two arguments to the '``sdiv``' instruction must be
4000 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer values. Both
4001 arguments must have identical types.
4002
4003 Semantics:
4004 """"""""""
4005
4006 The value produced is the signed integer quotient of the two operands
4007 rounded towards zero.
4008
4009 Note that signed integer division and unsigned integer division are
4010 distinct operations; for unsigned integer division, use '``udiv``'.
4011
4012 Division by zero leads to undefined behavior. Overflow also leads to
4013 undefined behavior; this is a rare case, but can occur, for example, by
4014 doing a 32-bit division of -2147483648 by -1.
4015
4016 If the ``exact`` keyword is present, the result value of the ``sdiv`` is
4017 a :ref:`poison value <poisonvalues>` if the result would be rounded.
4018
4019 Example:
4020 """"""""
4021
4022 .. code-block:: llvm
4023
4024       <result> = sdiv i32 4, %var          ; yields {i32}:result = 4 / %var
4025
4026 .. _i_fdiv:
4027
4028 '``fdiv``' Instruction
4029 ^^^^^^^^^^^^^^^^^^^^^^
4030
4031 Syntax:
4032 """""""
4033
4034 ::
4035
4036       <result> = fdiv [fast-math flags]* <ty> <op1>, <op2>   ; yields {ty}:result
4037
4038 Overview:
4039 """""""""
4040
4041 The '``fdiv``' instruction returns the quotient of its two operands.
4042
4043 Arguments:
4044 """"""""""
4045
4046 The two arguments to the '``fdiv``' instruction must be :ref:`floating
4047 point <t_floating>` or :ref:`vector <t_vector>` of floating point values.
4048 Both arguments must have identical types.
4049
4050 Semantics:
4051 """"""""""
4052
4053 The value produced is the floating point quotient of the two operands.
4054 This instruction can also take any number of :ref:`fast-math
4055 flags <fastmath>`, which are optimization hints to enable otherwise
4056 unsafe floating point optimizations:
4057
4058 Example:
4059 """"""""
4060
4061 .. code-block:: llvm
4062
4063       <result> = fdiv float 4.0, %var          ; yields {float}:result = 4.0 / %var
4064
4065 '``urem``' Instruction
4066 ^^^^^^^^^^^^^^^^^^^^^^
4067
4068 Syntax:
4069 """""""
4070
4071 ::
4072
4073       <result> = urem <ty> <op1>, <op2>   ; yields {ty}:result
4074
4075 Overview:
4076 """""""""
4077
4078 The '``urem``' instruction returns the remainder from the unsigned
4079 division of its two arguments.
4080
4081 Arguments:
4082 """"""""""
4083
4084 The two arguments to the '``urem``' instruction must be
4085 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer values. Both
4086 arguments must have identical types.
4087
4088 Semantics:
4089 """"""""""
4090
4091 This instruction returns the unsigned integer *remainder* of a division.
4092 This instruction always performs an unsigned division to get the
4093 remainder.
4094
4095 Note that unsigned integer remainder and signed integer remainder are
4096 distinct operations; for signed integer remainder, use '``srem``'.
4097
4098 Taking the remainder of a division by zero leads to undefined behavior.
4099
4100 Example:
4101 """"""""
4102
4103 .. code-block:: llvm
4104
4105       <result> = urem i32 4, %var          ; yields {i32}:result = 4 % %var
4106
4107 '``srem``' Instruction
4108 ^^^^^^^^^^^^^^^^^^^^^^
4109
4110 Syntax:
4111 """""""
4112
4113 ::
4114
4115       <result> = srem <ty> <op1>, <op2>   ; yields {ty}:result
4116
4117 Overview:
4118 """""""""
4119
4120 The '``srem``' instruction returns the remainder from the signed
4121 division of its two operands. This instruction can also take
4122 :ref:`vector <t_vector>` versions of the values in which case the elements
4123 must be integers.
4124
4125 Arguments:
4126 """"""""""
4127
4128 The two arguments to the '``srem``' instruction must be
4129 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer values. Both
4130 arguments must have identical types.
4131
4132 Semantics:
4133 """"""""""
4134
4135 This instruction returns the *remainder* of a division (where the result
4136 is either zero or has the same sign as the dividend, ``op1``), not the
4137 *modulo* operator (where the result is either zero or has the same sign
4138 as the divisor, ``op2``) of a value. For more information about the
4139 difference, see `The Math
4140 Forum <http://mathforum.org/dr.math/problems/anne.4.28.99.html>`_. For a
4141 table of how this is implemented in various languages, please see
4142 `Wikipedia: modulo
4143 operation <http://en.wikipedia.org/wiki/Modulo_operation>`_.
4144
4145 Note that signed integer remainder and unsigned integer remainder are
4146 distinct operations; for unsigned integer remainder, use '``urem``'.
4147
4148 Taking the remainder of a division by zero leads to undefined behavior.
4149 Overflow also leads to undefined behavior; this is a rare case, but can
4150 occur, for example, by taking the remainder of a 32-bit division of
4151 -2147483648 by -1. (The remainder doesn't actually overflow, but this
4152 rule lets srem be implemented using instructions that return both the
4153 result of the division and the remainder.)
4154
4155 Example:
4156 """"""""
4157
4158 .. code-block:: llvm
4159
4160       <result> = srem i32 4, %var          ; yields {i32}:result = 4 % %var
4161
4162 .. _i_frem:
4163
4164 '``frem``' Instruction
4165 ^^^^^^^^^^^^^^^^^^^^^^
4166
4167 Syntax:
4168 """""""
4169
4170 ::
4171
4172       <result> = frem [fast-math flags]* <ty> <op1>, <op2>   ; yields {ty}:result
4173
4174 Overview:
4175 """""""""
4176
4177 The '``frem``' instruction returns the remainder from the division of
4178 its two operands.
4179
4180 Arguments:
4181 """"""""""
4182
4183 The two arguments to the '``frem``' instruction must be :ref:`floating
4184 point <t_floating>` or :ref:`vector <t_vector>` of floating point values.
4185 Both arguments must have identical types.
4186
4187 Semantics:
4188 """"""""""
4189
4190 This instruction returns the *remainder* of a division. The remainder
4191 has the same sign as the dividend. This instruction can also take any
4192 number of :ref:`fast-math flags <fastmath>`, which are optimization hints
4193 to enable otherwise unsafe floating point optimizations:
4194
4195 Example:
4196 """"""""
4197
4198 .. code-block:: llvm
4199
4200       <result> = frem float 4.0, %var          ; yields {float}:result = 4.0 % %var
4201
4202 .. _bitwiseops:
4203
4204 Bitwise Binary Operations
4205 -------------------------
4206
4207 Bitwise binary operators are used to do various forms of bit-twiddling
4208 in a program. They are generally very efficient instructions and can
4209 commonly be strength reduced from other instructions. They require two
4210 operands of the same type, execute an operation on them, and produce a
4211 single value. The resulting value is the same type as its operands.
4212
4213 '``shl``' Instruction
4214 ^^^^^^^^^^^^^^^^^^^^^
4215
4216 Syntax:
4217 """""""
4218
4219 ::
4220
4221       <result> = shl <ty> <op1>, <op2>           ; yields {ty}:result
4222       <result> = shl nuw <ty> <op1>, <op2>       ; yields {ty}:result
4223       <result> = shl nsw <ty> <op1>, <op2>       ; yields {ty}:result
4224       <result> = shl nuw nsw <ty> <op1>, <op2>   ; yields {ty}:result
4225
4226 Overview:
4227 """""""""
4228
4229 The '``shl``' instruction returns the first operand shifted to the left
4230 a specified number of bits.
4231
4232 Arguments:
4233 """"""""""
4234
4235 Both arguments to the '``shl``' instruction must be the same
4236 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer type.
4237 '``op2``' is treated as an unsigned value.
4238
4239 Semantics:
4240 """"""""""
4241
4242 The value produced is ``op1`` \* 2\ :sup:`op2` mod 2\ :sup:`n`,
4243 where ``n`` is the width of the result. If ``op2`` is (statically or
4244 dynamically) negative or equal to or larger than the number of bits in
4245 ``op1``, the result is undefined. If the arguments are vectors, each
4246 vector element of ``op1`` is shifted by the corresponding shift amount
4247 in ``op2``.
4248
4249 If the ``nuw`` keyword is present, then the shift produces a :ref:`poison
4250 value <poisonvalues>` if it shifts out any non-zero bits. If the
4251 ``nsw`` keyword is present, then the shift produces a :ref:`poison
4252 value <poisonvalues>` if it shifts out any bits that disagree with the
4253 resultant sign bit. As such, NUW/NSW have the same semantics as they
4254 would if the shift were expressed as a mul instruction with the same
4255 nsw/nuw bits in (mul %op1, (shl 1, %op2)).
4256
4257 Example:
4258 """"""""
4259
4260 .. code-block:: llvm
4261
4262       <result> = shl i32 4, %var   ; yields {i32}: 4 << %var
4263       <result> = shl i32 4, 2      ; yields {i32}: 16
4264       <result> = shl i32 1, 10     ; yields {i32}: 1024
4265       <result> = shl i32 1, 32     ; undefined
4266       <result> = shl <2 x i32> < i32 1, i32 1>, < i32 1, i32 2>   ; yields: result=<2 x i32> < i32 2, i32 4>
4267
4268 '``lshr``' Instruction
4269 ^^^^^^^^^^^^^^^^^^^^^^
4270
4271 Syntax:
4272 """""""
4273
4274 ::
4275
4276       <result> = lshr <ty> <op1>, <op2>         ; yields {ty}:result
4277       <result> = lshr exact <ty> <op1>, <op2>   ; yields {ty}:result
4278
4279 Overview:
4280 """""""""
4281
4282 The '``lshr``' instruction (logical shift right) returns the first
4283 operand shifted to the right a specified number of bits with zero fill.
4284
4285 Arguments:
4286 """"""""""
4287
4288 Both arguments to the '``lshr``' instruction must be the same
4289 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer type.
4290 '``op2``' is treated as an unsigned value.
4291
4292 Semantics:
4293 """"""""""
4294
4295 This instruction always performs a logical shift right operation. The
4296 most significant bits of the result will be filled with zero bits after
4297 the shift. If ``op2`` is (statically or dynamically) equal to or larger
4298 than the number of bits in ``op1``, the result is undefined. If the
4299 arguments are vectors, each vector element of ``op1`` is shifted by the
4300 corresponding shift amount in ``op2``.
4301
4302 If the ``exact`` keyword is present, the result value of the ``lshr`` is
4303 a :ref:`poison value <poisonvalues>` if any of the bits shifted out are
4304 non-zero.
4305
4306 Example:
4307 """"""""
4308
4309 .. code-block:: llvm
4310
4311       <result> = lshr i32 4, 1   ; yields {i32}:result = 2
4312       <result> = lshr i32 4, 2   ; yields {i32}:result = 1
4313       <result> = lshr i8  4, 3   ; yields {i8}:result = 0
4314       <result> = lshr i8 -2, 1   ; yields {i8}:result = 0x7F
4315       <result> = lshr i32 1, 32  ; undefined
4316       <result> = lshr <2 x i32> < i32 -2, i32 4>, < i32 1, i32 2>   ; yields: result=<2 x i32> < i32 0x7FFFFFFF, i32 1>
4317
4318 '``ashr``' Instruction
4319 ^^^^^^^^^^^^^^^^^^^^^^
4320
4321 Syntax:
4322 """""""
4323
4324 ::
4325
4326       <result> = ashr <ty> <op1>, <op2>         ; yields {ty}:result
4327       <result> = ashr exact <ty> <op1>, <op2>   ; yields {ty}:result
4328
4329 Overview:
4330 """""""""
4331
4332 The '``ashr``' instruction (arithmetic shift right) returns the first
4333 operand shifted to the right a specified number of bits with sign
4334 extension.
4335
4336 Arguments:
4337 """"""""""
4338
4339 Both arguments to the '``ashr``' instruction must be the same
4340 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer type.
4341 '``op2``' is treated as an unsigned value.
4342
4343 Semantics:
4344 """"""""""
4345
4346 This instruction always performs an arithmetic shift right operation,
4347 The most significant bits of the result will be filled with the sign bit
4348 of ``op1``. If ``op2`` is (statically or dynamically) equal to or larger
4349 than the number of bits in ``op1``, the result is undefined. If the
4350 arguments are vectors, each vector element of ``op1`` is shifted by the
4351 corresponding shift amount in ``op2``.
4352
4353 If the ``exact`` keyword is present, the result value of the ``ashr`` is
4354 a :ref:`poison value <poisonvalues>` if any of the bits shifted out are
4355 non-zero.
4356
4357 Example:
4358 """"""""
4359
4360 .. code-block:: llvm
4361
4362       <result> = ashr i32 4, 1   ; yields {i32}:result = 2
4363       <result> = ashr i32 4, 2   ; yields {i32}:result = 1
4364       <result> = ashr i8  4, 3   ; yields {i8}:result = 0
4365       <result> = ashr i8 -2, 1   ; yields {i8}:result = -1
4366       <result> = ashr i32 1, 32  ; undefined
4367       <result> = ashr <2 x i32> < i32 -2, i32 4>, < i32 1, i32 3>   ; yields: result=<2 x i32> < i32 -1, i32 0>
4368
4369 '``and``' Instruction
4370 ^^^^^^^^^^^^^^^^^^^^^
4371
4372 Syntax:
4373 """""""
4374
4375 ::
4376
4377       <result> = and <ty> <op1>, <op2>   ; yields {ty}:result
4378
4379 Overview:
4380 """""""""
4381
4382 The '``and``' instruction returns the bitwise logical and of its two
4383 operands.
4384
4385 Arguments:
4386 """"""""""
4387
4388 The two arguments to the '``and``' instruction must be
4389 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer values. Both
4390 arguments must have identical types.
4391
4392 Semantics:
4393 """"""""""
4394
4395 The truth table used for the '``and``' instruction is:
4396
4397 +-----+-----+-----+
4398 | In0 | In1 | Out |
4399 +-----+-----+-----+
4400 |   0 |   0 |   0 |
4401 +-----+-----+-----+
4402 |   0 |   1 |   0 |
4403 +-----+-----+-----+
4404 |   1 |   0 |   0 |
4405 +-----+-----+-----+
4406 |   1 |   1 |   1 |
4407 +-----+-----+-----+
4408
4409 Example:
4410 """"""""
4411
4412 .. code-block:: llvm
4413
4414       <result> = and i32 4, %var         ; yields {i32}:result = 4 & %var
4415       <result> = and i32 15, 40          ; yields {i32}:result = 8
4416       <result> = and i32 4, 8            ; yields {i32}:result = 0
4417
4418 '``or``' Instruction
4419 ^^^^^^^^^^^^^^^^^^^^
4420
4421 Syntax:
4422 """""""
4423
4424 ::
4425
4426       <result> = or <ty> <op1>, <op2>   ; yields {ty}:result
4427
4428 Overview:
4429 """""""""
4430
4431 The '``or``' instruction returns the bitwise logical inclusive or of its
4432 two operands.
4433
4434 Arguments:
4435 """"""""""
4436
4437 The two arguments to the '``or``' instruction must be
4438 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer values. Both
4439 arguments must have identical types.
4440
4441 Semantics:
4442 """"""""""
4443
4444 The truth table used for the '``or``' instruction is:
4445
4446 +-----+-----+-----+
4447 | In0 | In1 | Out |
4448 +-----+-----+-----+
4449 |   0 |   0 |   0 |
4450 +-----+-----+-----+
4451 |   0 |   1 |   1 |
4452 +-----+-----+-----+
4453 |   1 |   0 |   1 |
4454 +-----+-----+-----+
4455 |   1 |   1 |   1 |
4456 +-----+-----+-----+
4457
4458 Example:
4459 """"""""
4460
4461 ::
4462
4463       <result> = or i32 4, %var         ; yields {i32}:result = 4 | %var
4464       <result> = or i32 15, 40          ; yields {i32}:result = 47
4465       <result> = or i32 4, 8            ; yields {i32}:result = 12
4466
4467 '``xor``' Instruction
4468 ^^^^^^^^^^^^^^^^^^^^^
4469
4470 Syntax:
4471 """""""
4472
4473 ::
4474
4475       <result> = xor <ty> <op1>, <op2>   ; yields {ty}:result
4476
4477 Overview:
4478 """""""""
4479
4480 The '``xor``' instruction returns the bitwise logical exclusive or of
4481 its two operands. The ``xor`` is used to implement the "one's
4482 complement" operation, which is the "~" operator in C.
4483
4484 Arguments:
4485 """"""""""
4486
4487 The two arguments to the '``xor``' instruction must be
4488 :ref:`integer <t_integer>` or :ref:`vector <t_vector>` of integer values. Both
4489 arguments must have identical types.
4490
4491 Semantics:
4492 """"""""""
4493
4494 The truth table used for the '``xor``' instruction is:
4495
4496 +-----+-----+-----+
4497 | In0 | In1 | Out |
4498 +-----+-----+-----+
4499 |   0 |   0 |   0 |
4500 +-----+-----+-----+
4501 |   0 |   1 |   1 |
4502 +-----+-----+-----+
4503 |   1 |   0 |   1 |
4504 +-----+-----+-----+
4505 |   1 |   1 |   0 |
4506 +-----+-----+-----+
4507
4508 Example:
4509 """"""""
4510
4511 .. code-block:: llvm
4512
4513       <result> = xor i32 4, %var         ; yields {i32}:result = 4 ^ %var
4514       <result> = xor i32 15, 40          ; yields {i32}:result = 39
4515       <result> = xor i32 4, 8            ; yields {i32}:result = 12
4516       <result> = xor i32 %V, -1          ; yields {i32}:result = ~%V
4517
4518 Vector Operations
4519 -----------------
4520
4521 LLVM supports several instructions to represent vector operations in a
4522 target-independent manner. These instructions cover the element-access
4523 and vector-specific operations needed to process vectors effectively.
4524 While LLVM does directly support these vector operations, many
4525 sophisticated algorithms will want to use target-specific intrinsics to
4526 take full advantage of a specific target.
4527
4528 .. _i_extractelement:
4529
4530 '``extractelement``' Instruction
4531 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4532
4533 Syntax:
4534 """""""
4535
4536 ::
4537
4538       <result> = extractelement <n x <ty>> <val>, <ty2> <idx>  ; yields <ty>
4539
4540 Overview:
4541 """""""""
4542
4543 The '``extractelement``' instruction extracts a single scalar element
4544 from a vector at a specified index.
4545
4546 Arguments:
4547 """"""""""
4548
4549 The first operand of an '``extractelement``' instruction is a value of
4550 :ref:`vector <t_vector>` type. The second operand is an index indicating
4551 the position from which to extract the element. The index may be a
4552 variable of any integer type.
4553
4554 Semantics:
4555 """"""""""
4556
4557 The result is a scalar of the same type as the element type of ``val``.
4558 Its value is the value at position ``idx`` of ``val``. If ``idx``
4559 exceeds the length of ``val``, the results are undefined.
4560
4561 Example:
4562 """"""""
4563
4564 .. code-block:: llvm
4565
4566       <result> = extractelement <4 x i32> %vec, i32 0    ; yields i32
4567
4568 .. _i_insertelement:
4569
4570 '``insertelement``' Instruction
4571 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4572
4573 Syntax:
4574 """""""
4575
4576 ::
4577
4578       <result> = insertelement <n x <ty>> <val>, <ty> <elt>, <ty2> <idx>    ; yields <n x <ty>>
4579
4580 Overview:
4581 """""""""
4582
4583 The '``insertelement``' instruction inserts a scalar element into a
4584 vector at a specified index.
4585
4586 Arguments:
4587 """"""""""
4588
4589 The first operand of an '``insertelement``' instruction is a value of
4590 :ref:`vector <t_vector>` type. The second operand is a scalar value whose
4591 type must equal the element type of the first operand. The third operand
4592 is an index indicating the position at which to insert the value. The
4593 index may be a variable of any integer type.
4594
4595 Semantics:
4596 """"""""""
4597
4598 The result is a vector of the same type as ``val``. Its element values
4599 are those of ``val`` except at position ``idx``, where it gets the value
4600 ``elt``. If ``idx`` exceeds the length of ``val``, the results are
4601 undefined.
4602
4603 Example:
4604 """"""""
4605
4606 .. code-block:: llvm
4607
4608       <result> = insertelement <4 x i32> %vec, i32 1, i32 0    ; yields <4 x i32>
4609
4610 .. _i_shufflevector:
4611
4612 '``shufflevector``' Instruction
4613 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4614
4615 Syntax:
4616 """""""
4617
4618 ::
4619
4620       <result> = shufflevector <n x <ty>> <v1>, <n x <ty>> <v2>, <m x i32> <mask>    ; yields <m x <ty>>
4621
4622 Overview:
4623 """""""""
4624
4625 The '``shufflevector``' instruction constructs a permutation of elements
4626 from two input vectors, returning a vector with the same element type as
4627 the input and length that is the same as the shuffle mask.
4628
4629 Arguments:
4630 """"""""""
4631
4632 The first two operands of a '``shufflevector``' instruction are vectors
4633 with the same type. The third argument is a shuffle mask whose element
4634 type is always 'i32'. The result of the instruction is a vector whose
4635 length is the same as the shuffle mask and whose element type is the
4636 same as the element type of the first two operands.
4637
4638 The shuffle mask operand is required to be a constant vector with either
4639 constant integer or undef values.
4640
4641 Semantics:
4642 """"""""""
4643
4644 The elements of the two input vectors are numbered from left to right
4645 across both of the vectors. The shuffle mask operand specifies, for each
4646 element of the result vector, which element of the two input vectors the
4647 result element gets. The element selector may be undef (meaning "don't
4648 care") and the second operand may be undef if performing a shuffle from
4649 only one vector.
4650
4651 Example:
4652 """"""""
4653
4654 .. code-block:: llvm
4655
4656       <result> = shufflevector <4 x i32> %v1, <4 x i32> %v2,
4657                               <4 x i32> <i32 0, i32 4, i32 1, i32 5>  ; yields <4 x i32>
4658       <result> = shufflevector <4 x i32> %v1, <4 x i32> undef,
4659                               <4 x i32> <i32 0, i32 1, i32 2, i32 3>  ; yields <4 x i32> - Identity shuffle.
4660       <result> = shufflevector <8 x i32> %v1, <8 x i32> undef,
4661                               <4 x i32> <i32 0, i32 1, i32 2, i32 3>  ; yields <4 x i32>
4662       <result> = shufflevector <4 x i32> %v1, <4 x i32> %v2,
4663                               <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7 >  ; yields <8 x i32>
4664
4665 Aggregate Operations
4666 --------------------
4667
4668 LLVM supports several instructions for working with
4669 :ref:`aggregate <t_aggregate>` values.
4670
4671 .. _i_extractvalue:
4672
4673 '``extractvalue``' Instruction
4674 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4675
4676 Syntax:
4677 """""""
4678
4679 ::
4680
4681       <result> = extractvalue <aggregate type> <val>, <idx>{, <idx>}*
4682
4683 Overview:
4684 """""""""
4685
4686 The '``extractvalue``' instruction extracts the value of a member field
4687 from an :ref:`aggregate <t_aggregate>` value.
4688
4689 Arguments:
4690 """"""""""
4691
4692 The first operand of an '``extractvalue``' instruction is a value of
4693 :ref:`struct <t_struct>` or :ref:`array <t_array>` type. The operands are
4694 constant indices to specify which value to extract in a similar manner
4695 as indices in a '``getelementptr``' instruction.
4696
4697 The major differences to ``getelementptr`` indexing are:
4698
4699 -  Since the value being indexed is not a pointer, the first index is
4700    omitted and assumed to be zero.
4701 -  At least one index must be specified.
4702 -  Not only struct indices but also array indices must be in bounds.
4703
4704 Semantics:
4705 """"""""""
4706
4707 The result is the value at the position in the aggregate specified by
4708 the index operands.
4709
4710 Example:
4711 """"""""
4712
4713 .. code-block:: llvm
4714
4715       <result> = extractvalue {i32, float} %agg, 0    ; yields i32
4716
4717 .. _i_insertvalue:
4718
4719 '``insertvalue``' Instruction
4720 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4721
4722 Syntax:
4723 """""""
4724
4725 ::
4726
4727       <result> = insertvalue <aggregate type> <val>, <ty> <elt>, <idx>{, <idx>}*    ; yields <aggregate type>
4728
4729 Overview:
4730 """""""""
4731
4732 The '``insertvalue``' instruction inserts a value into a member field in
4733 an :ref:`aggregate <t_aggregate>` value.
4734
4735 Arguments:
4736 """"""""""
4737
4738 The first operand of an '``insertvalue``' instruction is a value of
4739 :ref:`struct <t_struct>` or :ref:`array <t_array>` type. The second operand is
4740 a first-class value to insert. The following operands are constant
4741 indices indicating the position at which to insert the value in a
4742 similar manner as indices in a '``extractvalue``' instruction. The value
4743 to insert must have the same type as the value identified by the
4744 indices.
4745
4746 Semantics:
4747 """"""""""
4748
4749 The result is an aggregate of the same type as ``val``. Its value is
4750 that of ``val`` except that the value at the position specified by the
4751 indices is that of ``elt``.
4752
4753 Example:
4754 """"""""
4755
4756 .. code-block:: llvm
4757
4758       %agg1 = insertvalue {i32, float} undef, i32 1, 0              ; yields {i32 1, float undef}
4759       %agg2 = insertvalue {i32, float} %agg1, float %val, 1         ; yields {i32 1, float %val}
4760       %agg3 = insertvalue {i32, {float}} %agg1, float %val, 1, 0    ; yields {i32 1, float %val}
4761
4762 .. _memoryops:
4763
4764 Memory Access and Addressing Operations
4765 ---------------------------------------
4766
4767 A key design point of an SSA-based representation is how it represents
4768 memory. In LLVM, no memory locations are in SSA form, which makes things
4769 very simple. This section describes how to read, write, and allocate
4770 memory in LLVM.
4771
4772 .. _i_alloca:
4773
4774 '``alloca``' Instruction
4775 ^^^^^^^^^^^^^^^^^^^^^^^^
4776
4777 Syntax:
4778 """""""
4779
4780 ::
4781
4782       <result> = alloca [inalloca] <type> [, <ty> <NumElements>] [, align <alignment>]     ; yields {type*}:result
4783
4784 Overview:
4785 """""""""
4786
4787 The '``alloca``' instruction allocates memory on the stack frame of the
4788 currently executing function, to be automatically released when this
4789 function returns to its caller. The object is always allocated in the
4790 generic address space (address space zero).
4791
4792 Arguments:
4793 """"""""""
4794
4795 The '``alloca``' instruction allocates ``sizeof(<type>)*NumElements``
4796 bytes of memory on the runtime stack, returning a pointer of the
4797 appropriate type to the program. If "NumElements" is specified, it is
4798 the number of elements allocated, otherwise "NumElements" is defaulted
4799 to be one. If a constant alignment is specified, the value result of the
4800 allocation is guaranteed to be aligned to at least that boundary. If not
4801 specified, or if zero, the target can choose to align the allocation on
4802 any convenient boundary compatible with the type.
4803
4804 '``type``' may be any sized type.
4805
4806 Semantics:
4807 """"""""""
4808
4809 Memory is allocated; a pointer is returned. The operation is undefined
4810 if there is insufficient stack space for the allocation. '``alloca``'d
4811 memory is automatically released when the function returns. The
4812 '``alloca``' instruction is commonly used to represent automatic
4813 variables that must have an address available. When the function returns
4814 (either with the ``ret`` or ``resume`` instructions), the memory is
4815 reclaimed. Allocating zero bytes is legal, but the result is undefined.
4816 The order in which memory is allocated (ie., which way the stack grows)
4817 is not specified.
4818
4819 Example:
4820 """"""""
4821
4822 .. code-block:: llvm
4823
4824       %ptr = alloca i32                             ; yields {i32*}:ptr
4825       %ptr = alloca i32, i32 4                      ; yields {i32*}:ptr
4826       %ptr = alloca i32, i32 4, align 1024          ; yields {i32*}:ptr
4827       %ptr = alloca i32, align 1024                 ; yields {i32*}:ptr
4828
4829 .. _i_load:
4830
4831 '``load``' Instruction
4832 ^^^^^^^^^^^^^^^^^^^^^^
4833
4834 Syntax:
4835 """""""
4836
4837 ::
4838
4839       <result> = load [volatile] <ty>* <pointer>[, align <alignment>][, !nontemporal !<index>][, !invariant.load !<index>]
4840       <result> = load atomic [volatile] <ty>* <pointer> [singlethread] <ordering>, align <alignment>
4841       !<index> = !{ i32 1 }
4842
4843 Overview:
4844 """""""""
4845
4846 The '``load``' instruction is used to read from memory.
4847
4848 Arguments:
4849 """"""""""
4850
4851 The argument to the ``load`` instruction specifies the memory address
4852 from which to load. The pointer must point to a :ref:`first
4853 class <t_firstclass>` type. If the ``load`` is marked as ``volatile``,
4854 then the optimizer is not allowed to modify the number or order of
4855 execution of this ``load`` with other :ref:`volatile
4856 operations <volatile>`.
4857
4858 If the ``load`` is marked as ``atomic``, it takes an extra
4859 :ref:`ordering <ordering>` and optional ``singlethread`` argument. The
4860 ``release`` and ``acq_rel`` orderings are not valid on ``load``
4861 instructions. Atomic loads produce :ref:`defined <memmodel>` results
4862 when they may see multiple atomic stores. The type of the pointee must
4863 be an integer type whose bit width is a power of two greater than or
4864 equal to eight and less than or equal to a target-specific size limit.
4865 ``align`` must be explicitly specified on atomic loads, and the load has
4866 undefined behavior if the alignment is not set to a value which is at
4867 least the size in bytes of the pointee. ``!nontemporal`` does not have
4868 any defined semantics for atomic loads.
4869
4870 The optional constant ``align`` argument specifies the alignment of the
4871 operation (that is, the alignment of the memory address). A value of 0
4872 or an omitted ``align`` argument means that the operation has the ABI
4873 alignment for the target. It is the responsibility of the code emitter
4874 to ensure that the alignment information is correct. Overestimating the
4875 alignment results in undefined behavior. Underestimating the alignment
4876 may produce less efficient code. An alignment of 1 is always safe.
4877
4878 The optional ``!nontemporal`` metadata must reference a single
4879 metadata name ``<index>`` corresponding to a metadata node with one
4880 ``i32`` entry of value 1. The existence of the ``!nontemporal``
4881 metadata on the instruction tells the optimizer and code generator
4882 that this load is not expected to be reused in the cache. The code
4883 generator may select special instructions to save cache bandwidth, such
4884 as the ``MOVNT`` instruction on x86.
4885
4886 The optional ``!invariant.load`` metadata must reference a single
4887 metadata name ``<index>`` corresponding to a metadata node with no
4888 entries. The existence of the ``!invariant.load`` metadata on the
4889 instruction tells the optimizer and code generator that this load
4890 address points to memory which does not change value during program
4891 execution. The optimizer may then move this load around, for example, by
4892 hoisting it out of loops using loop invariant code motion.
4893
4894 Semantics:
4895 """"""""""
4896
4897 The location of memory pointed to is loaded. If the value being loaded
4898 is of scalar type then the number of bytes read does not exceed the
4899 minimum number of bytes needed to hold all bits of the type. For
4900 example, loading an ``i24`` reads at most three bytes. When loading a
4901 value of a type like ``i20`` with a size that is not an integral number
4902 of bytes, the result is undefined if the value was not originally
4903 written using a store of the same type.
4904
4905 Examples:
4906 """""""""
4907
4908 .. code-block:: llvm
4909
4910       %ptr = alloca i32                               ; yields {i32*}:ptr
4911       store i32 3, i32* %ptr                          ; yields {void}
4912       %val = load i32* %ptr                           ; yields {i32}:val = i32 3
4913
4914 .. _i_store:
4915
4916 '``store``' Instruction
4917 ^^^^^^^^^^^^^^^^^^^^^^^
4918
4919 Syntax:
4920 """""""
4921
4922 ::
4923
4924       store [volatile] <ty> <value>, <ty>* <pointer>[, align <alignment>][, !nontemporal !<index>]        ; yields {void}
4925       store atomic [volatile] <ty> <value>, <ty>* <pointer> [singlethread] <ordering>, align <alignment>  ; yields {void}
4926
4927 Overview:
4928 """""""""
4929
4930 The '``store``' instruction is used to write to memory.
4931
4932 Arguments:
4933 """"""""""
4934
4935 There are two arguments to the ``store`` instruction: a value to store
4936 and an address at which to store it. The type of the ``<pointer>``
4937 operand must be a pointer to the :ref:`first class <t_firstclass>` type of
4938 the ``<value>`` operand. If the ``store`` is marked as ``volatile``,
4939 then the optimizer is not allowed to modify the number or order of
4940 execution of this ``store`` with other :ref:`volatile
4941 operations <volatile>`.
4942
4943 If the ``store`` is marked as ``atomic``, it takes an extra
4944 :ref:`ordering <ordering>` and optional ``singlethread`` argument. The
4945 ``acquire`` and ``acq_rel`` orderings aren't valid on ``store``
4946 instructions. Atomic loads produce :ref:`defined <memmodel>` results
4947 when they may see multiple atomic stores. The type of the pointee must
4948 be an integer type whose bit width is a power of two greater than or
4949 equal to eight and less than or equal to a target-specific size limit.
4950 ``align`` must be explicitly specified on atomic stores, and the store
4951 has undefined behavior if the alignment is not set to a value which is
4952 at least the size in bytes of the pointee. ``!nontemporal`` does not
4953 have any defined semantics for atomic stores.
4954
4955 The optional constant ``align`` argument specifies the alignment of the
4956 operation (that is, the alignment of the memory address). A value of 0
4957 or an omitted ``align`` argument means that the operation has the ABI
4958 alignment for the target. It is the responsibility of the code emitter
4959 to ensure that the alignment information is correct. Overestimating the
4960 alignment results in undefined behavior. Underestimating the
4961 alignment may produce less efficient code. An alignment of 1 is always
4962 safe.
4963
4964 The optional ``!nontemporal`` metadata must reference a single metadata
4965 name ``<index>`` corresponding to a metadata node with one ``i32`` entry of
4966 value 1. The existence of the ``!nontemporal`` metadata on the instruction
4967 tells the optimizer and code generator that this load is not expected to
4968 be reused in the cache. The code generator may select special
4969 instructions to save cache bandwidth, such as the MOVNT instruction on
4970 x86.
4971
4972 Semantics:
4973 """"""""""
4974
4975 The contents of memory are updated to contain ``<value>`` at the
4976 location specified by the ``<pointer>`` operand. If ``<value>`` is
4977 of scalar type then the number of bytes written does not exceed the
4978 minimum number of bytes needed to hold all bits of the type. For
4979 example, storing an ``i24`` writes at most three bytes. When writing a
4980 value of a type like ``i20`` with a size that is not an integral number
4981 of bytes, it is unspecified what happens to the extra bits that do not
4982 belong to the type, but they will typically be overwritten.
4983
4984 Example:
4985 """"""""
4986
4987 .. code-block:: llvm
4988
4989       %ptr = alloca i32                               ; yields {i32*}:ptr
4990       store i32 3, i32* %ptr                          ; yields {void}
4991       %val = load i32* %ptr                           ; yields {i32}:val = i32 3
4992
4993 .. _i_fence:
4994
4995 '``fence``' Instruction
4996 ^^^^^^^^^^^^^^^^^^^^^^^
4997
4998 Syntax:
4999 """""""
5000
5001 ::
5002
5003       fence [singlethread] <ordering>                   ; yields {void}
5004
5005 Overview:
5006 """""""""
5007
5008 The '``fence``' instruction is used to introduce happens-before edges
5009 between operations.
5010
5011 Arguments:
5012 """"""""""
5013
5014 '``fence``' instructions take an :ref:`ordering <ordering>` argument which
5015 defines what *synchronizes-with* edges they add. They can only be given
5016 ``acquire``, ``release``, ``acq_rel``, and ``seq_cst`` orderings.
5017
5018 Semantics:
5019 """"""""""
5020
5021 A fence A which has (at least) ``release`` ordering semantics
5022 *synchronizes with* a fence B with (at least) ``acquire`` ordering
5023 semantics if and only if there exist atomic operations X and Y, both
5024 operating on some atomic object M, such that A is sequenced before X, X
5025 modifies M (either directly or through some side effect of a sequence
5026 headed by X), Y is sequenced before B, and Y observes M. This provides a
5027 *happens-before* dependency between A and B. Rather than an explicit
5028 ``fence``, one (but not both) of the atomic operations X or Y might
5029 provide a ``release`` or ``acquire`` (resp.) ordering constraint and
5030 still *synchronize-with* the explicit ``fence`` and establish the
5031 *happens-before* edge.
5032
5033 A ``fence`` which has ``seq_cst`` ordering, in addition to having both
5034 ``acquire`` and ``release`` semantics specified above, participates in
5035 the global program order of other ``seq_cst`` operations and/or fences.
5036
5037 The optional ":ref:`singlethread <singlethread>`" argument specifies
5038 that the fence only synchronizes with other fences in the same thread.
5039 (This is useful for interacting with signal handlers.)
5040
5041 Example:
5042 """"""""
5043
5044 .. code-block:: llvm
5045
5046       fence acquire                          ; yields {void}
5047       fence singlethread seq_cst             ; yields {void}
5048
5049 .. _i_cmpxchg:
5050
5051 '``cmpxchg``' Instruction
5052 ^^^^^^^^^^^^^^^^^^^^^^^^^
5053
5054 Syntax:
5055 """""""
5056
5057 ::
5058
5059       cmpxchg [volatile] <ty>* <pointer>, <ty> <cmp>, <ty> <new> [singlethread] <success ordering> <failure ordering> ; yields {ty}
5060
5061 Overview:
5062 """""""""
5063
5064 The '``cmpxchg``' instruction is used to atomically modify memory. It
5065 loads a value in memory and compares it to a given value. If they are
5066 equal, it stores a new value into the memory.
5067
5068 Arguments:
5069 """"""""""
5070
5071 There are three arguments to the '``cmpxchg``' instruction: an address
5072 to operate on, a value to compare to the value currently be at that
5073 address, and a new value to place at that address if the compared values
5074 are equal. The type of '<cmp>' must be an integer type whose bit width
5075 is a power of two greater than or equal to eight and less than or equal
5076 to a target-specific size limit. '<cmp>' and '<new>' must have the same
5077 type, and the type of '<pointer>' must be a pointer to that type. If the
5078 ``cmpxchg`` is marked as ``volatile``, then the optimizer is not allowed
5079 to modify the number or order of execution of this ``cmpxchg`` with
5080 other :ref:`volatile operations <volatile>`.
5081
5082 The success and failure :ref:`ordering <ordering>` arguments specify how this
5083 ``cmpxchg`` synchronizes with other atomic operations. The both ordering
5084 parameters must be at least ``monotonic``, the ordering constraint on failure
5085 must be no stronger than that on success, and the failure ordering cannot be
5086 either ``release`` or ``acq_rel``.
5087
5088 The optional "``singlethread``" argument declares that the ``cmpxchg``
5089 is only atomic with respect to code (usually signal handlers) running in
5090 the same thread as the ``cmpxchg``. Otherwise the cmpxchg is atomic with
5091 respect to all other code in the system.
5092
5093 The pointer passed into cmpxchg must have alignment greater than or
5094 equal to the size in memory of the operand.
5095
5096 Semantics:
5097 """"""""""
5098
5099 The contents of memory at the location specified by the '``<pointer>``'
5100 operand is read and compared to '``<cmp>``'; if the read value is the
5101 equal, '``<new>``' is written. The original value at the location is
5102 returned.
5103
5104 A successful ``cmpxchg`` is a read-modify-write instruction for the purpose of
5105 identifying release sequences. A failed ``cmpxchg`` is equivalent to an atomic
5106 load with an ordering parameter determined the second ordering parameter.
5107
5108 Example:
5109 """"""""
5110
5111 .. code-block:: llvm
5112
5113     entry:
5114       %orig = atomic load i32* %ptr unordered                   ; yields {i32}
5115       br label %loop
5116
5117     loop:
5118       %cmp = phi i32 [ %orig, %entry ], [%old, %loop]
5119       %squared = mul i32 %cmp, %cmp
5120       %old = cmpxchg i32* %ptr, i32 %cmp, i32 %squared acq_rel monotonic ; yields {i32}
5121       %success = icmp eq i32 %cmp, %old
5122       br i1 %success, label %done, label %loop
5123
5124     done:
5125       ...
5126
5127 .. _i_atomicrmw:
5128
5129 '``atomicrmw``' Instruction
5130 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
5131
5132 Syntax:
5133 """""""
5134
5135 ::
5136
5137       atomicrmw [volatile] <operation> <ty>* <pointer>, <ty> <value> [singlethread] <ordering>                   ; yields {ty}
5138
5139 Overview:
5140 """""""""
5141
5142 The '``atomicrmw``' instruction is used to atomically modify memory.
5143
5144 Arguments:
5145 """"""""""
5146
5147 There are three arguments to the '``atomicrmw``' instruction: an
5148 operation to apply, an address whose value to modify, an argument to the
5149 operation. The operation must be one of the following keywords:
5150
5151 -  xchg
5152 -  add
5153 -  sub
5154 -  and
5155 -  nand
5156 -  or
5157 -  xor
5158 -  max
5159 -  min
5160 -  umax
5161 -  umin
5162
5163 The type of '<value>' must be an integer type whose bit width is a power
5164 of two greater than or equal to eight and less than or equal to a
5165 target-specific size limit. The type of the '``<pointer>``' operand must
5166 be a pointer to that type. If the ``atomicrmw`` is marked as
5167 ``volatile``, then the optimizer is not allowed to modify the number or
5168 order of execution of this ``atomicrmw`` with other :ref:`volatile
5169 operations <volatile>`.
5170
5171 Semantics:
5172 """"""""""
5173
5174 The contents of memory at the location specified by the '``<pointer>``'
5175 operand are atomically read, modified, and written back. The original
5176 value at the location is returned. The modification is specified by the
5177 operation argument:
5178
5179 -  xchg: ``*ptr = val``
5180 -  add: ``*ptr = *ptr + val``
5181 -  sub: ``*ptr = *ptr - val``
5182 -  and: ``*ptr = *ptr & val``
5183 -  nand: ``*ptr = ~(*ptr & val)``
5184 -  or: ``*ptr = *ptr | val``
5185 -  xor: ``*ptr = *ptr ^ val``
5186 -  max: ``*ptr = *ptr > val ? *ptr : val`` (using a signed comparison)
5187 -  min: ``*ptr = *ptr < val ? *ptr : val`` (using a signed comparison)
5188 -  umax: ``*ptr = *ptr > val ? *ptr : val`` (using an unsigned
5189    comparison)
5190 -  umin: ``*ptr = *ptr < val ? *ptr : val`` (using an unsigned
5191    comparison)
5192
5193 Example:
5194 """"""""
5195
5196 .. code-block:: llvm
5197
5198       %old = atomicrmw add i32* %ptr, i32 1 acquire                        ; yields {i32}
5199
5200 .. _i_getelementptr:
5201
5202 '``getelementptr``' Instruction
5203 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5204
5205 Syntax:
5206 """""""
5207
5208 ::
5209
5210       <result> = getelementptr <pty>* <ptrval>{, <ty> <idx>}*
5211       <result> = getelementptr inbounds <pty>* <ptrval>{, <ty> <idx>}*
5212       <result> = getelementptr <ptr vector> ptrval, <vector index type> idx
5213
5214 Overview:
5215 """""""""
5216
5217 The '``getelementptr``' instruction is used to get the address of a
5218 subelement of an :ref:`aggregate <t_aggregate>` data structure. It performs
5219 address calculation only and does not access memory.
5220
5221 Arguments:
5222 """"""""""
5223
5224 The first argument is always a pointer or a vector of pointers, and
5225 forms the basis of the calculation. The remaining arguments are indices
5226 that indicate which of the elements of the aggregate object are indexed.
5227 The interpretation of each index is dependent on the type being indexed
5228 into. The first index always indexes the pointer value given as the
5229 first argument, the second index indexes a value of the type pointed to
5230 (not necessarily the value directly pointed to, since the first index
5231 can be non-zero), etc. The first type indexed into must be a pointer
5232 value, subsequent types can be arrays, vectors, and structs. Note that
5233 subsequent types being indexed into can never be pointers, since that
5234 would require loading the pointer before continuing calculation.
5235
5236 The type of each index argument depends on the type it is indexing into.
5237 When indexing into a (optionally packed) structure, only ``i32`` integer
5238 **constants** are allowed (when using a vector of indices they must all
5239 be the **same** ``i32`` integer constant). When indexing into an array,
5240 pointer or vector, integers of any width are allowed, and they are not
5241 required to be constant. These integers are treated as signed values
5242 where relevant.
5243
5244 For example, let's consider a C code fragment and how it gets compiled
5245 to LLVM:
5246
5247 .. code-block:: c
5248
5249     struct RT {
5250       char A;
5251       int B[10][20];
5252       char C;
5253     };
5254     struct ST {
5255       int X;
5256       double Y;
5257       struct RT Z;
5258     };
5259
5260     int *foo(struct ST *s) {
5261       return &s[1].Z.B[5][13];
5262     }
5263
5264 The LLVM code generated by Clang is:
5265
5266 .. code-block:: llvm
5267
5268     %struct.RT = type { i8, [10 x [20 x i32]], i8 }
5269     %struct.ST = type { i32, double, %struct.RT }
5270
5271     define i32* @foo(%struct.ST* %s) nounwind uwtable readnone optsize ssp {
5272     entry:
5273       %arrayidx = getelementptr inbounds %struct.ST* %s, i64 1, i32 2, i32 1, i64 5, i64 13
5274       ret i32* %arrayidx
5275     }
5276
5277 Semantics:
5278 """"""""""
5279
5280 In the example above, the first index is indexing into the
5281 '``%struct.ST*``' type, which is a pointer, yielding a '``%struct.ST``'
5282 = '``{ i32, double, %struct.RT }``' type, a structure. The second index
5283 indexes into the third element of the structure, yielding a
5284 '``%struct.RT``' = '``{ i8 , [10 x [20 x i32]], i8 }``' type, another
5285 structure. The third index indexes into the second element of the
5286 structure, yielding a '``[10 x [20 x i32]]``' type, an array. The two
5287 dimensions of the array are subscripted into, yielding an '``i32``'
5288 type. The '``getelementptr``' instruction returns a pointer to this
5289 element, thus computing a value of '``i32*``' type.
5290
5291 Note that it is perfectly legal to index partially through a structure,
5292 returning a pointer to an inner element. Because of this, the LLVM code
5293 for the given testcase is equivalent to:
5294
5295 .. code-block:: llvm
5296
5297     define i32* @foo(%struct.ST* %s) {
5298       %t1 = getelementptr %struct.ST* %s, i32 1                 ; yields %struct.ST*:%t1
5299       %t2 = getelementptr %struct.ST* %t1, i32 0, i32 2         ; yields %struct.RT*:%t2
5300       %t3 = getelementptr %struct.RT* %t2, i32 0, i32 1         ; yields [10 x [20 x i32]]*:%t3
5301       %t4 = getelementptr [10 x [20 x i32]]* %t3, i32 0, i32 5  ; yields [20 x i32]*:%t4
5302       %t5 = getelementptr [20 x i32]* %t4, i32 0, i32 13        ; yields i32*:%t5
5303       ret i32* %t5
5304     }
5305
5306 If the ``inbounds`` keyword is present, the result value of the
5307 ``getelementptr`` is a :ref:`poison value <poisonvalues>` if the base
5308 pointer is not an *in bounds* address of an allocated object, or if any
5309 of the addresses that would be formed by successive addition of the
5310 offsets implied by the indices to the base address with infinitely
5311 precise signed arithmetic are not an *in bounds* address of that
5312 allocated object. The *in bounds* addresses for an allocated object are
5313 all the addresses that point into the object, plus the address one byte
5314 past the end. In cases where the base is a vector of pointers the
5315 ``inbounds`` keyword applies to each of the computations element-wise.
5316
5317 If the ``inbounds`` keyword is not present, the offsets are added to the
5318 base address with silently-wrapping two's complement arithmetic. If the
5319 offsets have a different width from the pointer, they are sign-extended
5320 or truncated to the width of the pointer. The result value of the
5321 ``getelementptr`` may be outside the object pointed to by the base
5322 pointer. The result value may not necessarily be used to access memory
5323 though, even if it happens to point into allocated storage. See the
5324 :ref:`Pointer Aliasing Rules <pointeraliasing>` section for more
5325 information.
5326
5327 The getelementptr instruction is often confusing. For some more insight
5328 into how it works, see :doc:`the getelementptr FAQ <GetElementPtr>`.
5329
5330 Example:
5331 """"""""
5332
5333 .. code-block:: llvm
5334
5335         ; yields [12 x i8]*:aptr
5336         %aptr = getelementptr {i32, [12 x i8]}* %saptr, i64 0, i32 1
5337         ; yields i8*:vptr
5338         %vptr = getelementptr {i32, <2 x i8>}* %svptr, i64 0, i32 1, i32 1
5339         ; yields i8*:eptr
5340         %eptr = getelementptr [12 x i8]* %aptr, i64 0, i32 1
5341         ; yields i32*:iptr
5342         %iptr = getelementptr [10 x i32]* @arr, i16 0, i16 0
5343
5344 In cases where the pointer argument is a vector of pointers, each index
5345 must be a vector with the same number of elements. For example:
5346
5347 .. code-block:: llvm
5348
5349      %A = getelementptr <4 x i8*> %ptrs, <4 x i64> %offsets,
5350
5351 Conversion Operations
5352 ---------------------
5353
5354 The instructions in this category are the conversion instructions
5355 (casting) which all take a single operand and a type. They perform
5356 various bit conversions on the operand.
5357
5358 '``trunc .. to``' Instruction
5359 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5360
5361 Syntax:
5362 """""""
5363
5364 ::
5365
5366       <result> = trunc <ty> <value> to <ty2>             ; yields ty2
5367
5368 Overview:
5369 """""""""
5370
5371 The '``trunc``' instruction truncates its operand to the type ``ty2``.
5372
5373 Arguments:
5374 """"""""""
5375
5376 The '``trunc``' instruction takes a value to trunc, and a type to trunc
5377 it to. Both types must be of :ref:`integer <t_integer>` types, or vectors
5378 of the same number of integers. The bit size of the ``value`` must be
5379 larger than the bit size of the destination type, ``ty2``. Equal sized
5380 types are not allowed.
5381
5382 Semantics:
5383 """"""""""
5384
5385 The '``trunc``' instruction truncates the high order bits in ``value``
5386 and converts the remaining bits to ``ty2``. Since the source size must
5387 be larger than the destination size, ``trunc`` cannot be a *no-op cast*.
5388 It will always truncate bits.
5389
5390 Example:
5391 """"""""
5392
5393 .. code-block:: llvm
5394
5395       %X = trunc i32 257 to i8                        ; yields i8:1
5396       %Y = trunc i32 123 to i1                        ; yields i1:true
5397       %Z = trunc i32 122 to i1                        ; yields i1:false
5398       %W = trunc <2 x i16> <i16 8, i16 7> to <2 x i8> ; yields <i8 8, i8 7>
5399
5400 '``zext .. to``' Instruction
5401 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5402
5403 Syntax:
5404 """""""
5405
5406 ::
5407
5408       <result> = zext <ty> <value> to <ty2>             ; yields ty2
5409
5410 Overview:
5411 """""""""
5412
5413 The '``zext``' instruction zero extends its operand to type ``ty2``.
5414
5415 Arguments:
5416 """"""""""
5417
5418 The '``zext``' instruction takes a value to cast, and a type to cast it
5419 to. Both types must be of :ref:`integer <t_integer>` types, or vectors of
5420 the same number of integers. The bit size of the ``value`` must be
5421 smaller than the bit size of the destination type, ``ty2``.
5422
5423 Semantics:
5424 """"""""""
5425
5426 The ``zext`` fills the high order bits of the ``value`` with zero bits
5427 until it reaches the size of the destination type, ``ty2``.
5428
5429 When zero extending from i1, the result will always be either 0 or 1.
5430
5431 Example:
5432 """"""""
5433
5434 .. code-block:: llvm
5435
5436       %X = zext i32 257 to i64              ; yields i64:257
5437       %Y = zext i1 true to i32              ; yields i32:1
5438       %Z = zext <2 x i16> <i16 8, i16 7> to <2 x i32> ; yields <i32 8, i32 7>
5439
5440 '``sext .. to``' Instruction
5441 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5442
5443 Syntax:
5444 """""""
5445
5446 ::
5447
5448       <result> = sext <ty> <value> to <ty2>             ; yields ty2
5449
5450 Overview:
5451 """""""""
5452
5453 The '``sext``' sign extends ``value`` to the type ``ty2``.
5454
5455 Arguments:
5456 """"""""""
5457
5458 The '``sext``' instruction takes a value to cast, and a type to cast it
5459 to. Both types must be of :ref:`integer <t_integer>` types, or vectors of
5460 the same number of integers. The bit size of the ``value`` must be
5461 smaller than the bit size of the destination type, ``ty2``.
5462
5463 Semantics:
5464 """"""""""
5465
5466 The '``sext``' instruction performs a sign extension by copying the sign
5467 bit (highest order bit) of the ``value`` until it reaches the bit size
5468 of the type ``ty2``.
5469
5470 When sign extending from i1, the extension always results in -1 or 0.
5471
5472 Example:
5473 """"""""
5474
5475 .. code-block:: llvm
5476
5477       %X = sext i8  -1 to i16              ; yields i16   :65535
5478       %Y = sext i1 true to i32             ; yields i32:-1
5479       %Z = sext <2 x i16> <i16 8, i16 7> to <2 x i32> ; yields <i32 8, i32 7>
5480
5481 '``fptrunc .. to``' Instruction
5482 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5483
5484 Syntax:
5485 """""""
5486
5487 ::
5488
5489       <result> = fptrunc <ty> <value> to <ty2>             ; yields ty2
5490
5491 Overview:
5492 """""""""
5493
5494 The '``fptrunc``' instruction truncates ``value`` to type ``ty2``.
5495
5496 Arguments:
5497 """"""""""
5498
5499 The '``fptrunc``' instruction takes a :ref:`floating point <t_floating>`
5500 value to cast and a :ref:`floating point <t_floating>` type to cast it to.
5501 The size of ``value`` must be larger than the size of ``ty2``. This
5502 implies that ``fptrunc`` cannot be used to make a *no-op cast*.
5503
5504 Semantics:
5505 """"""""""
5506
5507 The '``fptrunc``' instruction truncates a ``value`` from a larger
5508 :ref:`floating point <t_floating>` type to a smaller :ref:`floating
5509 point <t_floating>` type. If the value cannot fit within the
5510 destination type, ``ty2``, then the results are undefined.
5511
5512 Example:
5513 """"""""
5514
5515 .. code-block:: llvm
5516
5517       %X = fptrunc double 123.0 to float         ; yields float:123.0
5518       %Y = fptrunc double 1.0E+300 to float      ; yields undefined
5519
5520 '``fpext .. to``' Instruction
5521 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5522
5523 Syntax:
5524 """""""
5525
5526 ::
5527
5528       <result> = fpext <ty> <value> to <ty2>             ; yields ty2
5529
5530 Overview:
5531 """""""""
5532
5533 The '``fpext``' extends a floating point ``value`` to a larger floating
5534 point value.
5535
5536 Arguments:
5537 """"""""""
5538
5539 The '``fpext``' instruction takes a :ref:`floating point <t_floating>`
5540 ``value`` to cast, and a :ref:`floating point <t_floating>` type to cast it
5541 to. The source type must be smaller than the destination type.
5542
5543 Semantics:
5544 """"""""""
5545
5546 The '``fpext``' instruction extends the ``value`` from a smaller
5547 :ref:`floating point <t_floating>` type to a larger :ref:`floating
5548 point <t_floating>` type. The ``fpext`` cannot be used to make a
5549 *no-op cast* because it always changes bits. Use ``bitcast`` to make a
5550 *no-op cast* for a floating point cast.
5551
5552 Example:
5553 """"""""
5554
5555 .. code-block:: llvm
5556
5557       %X = fpext float 3.125 to double         ; yields double:3.125000e+00
5558       %Y = fpext double %X to fp128            ; yields fp128:0xL00000000000000004000900000000000
5559
5560 '``fptoui .. to``' Instruction
5561 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5562
5563 Syntax:
5564 """""""
5565
5566 ::
5567
5568       <result> = fptoui <ty> <value> to <ty2>             ; yields ty2
5569
5570 Overview:
5571 """""""""
5572
5573 The '``fptoui``' converts a floating point ``value`` to its unsigned
5574 integer equivalent of type ``ty2``.
5575
5576 Arguments:
5577 """"""""""
5578
5579 The '``fptoui``' instruction takes a value to cast, which must be a
5580 scalar or vector :ref:`floating point <t_floating>` value, and a type to
5581 cast it to ``ty2``, which must be an :ref:`integer <t_integer>` type. If
5582 ``ty`` is a vector floating point type, ``ty2`` must be a vector integer
5583 type with the same number of elements as ``ty``
5584
5585 Semantics:
5586 """"""""""
5587
5588 The '``fptoui``' instruction converts its :ref:`floating
5589 point <t_floating>` operand into the nearest (rounding towards zero)
5590 unsigned integer value. If the value cannot fit in ``ty2``, the results
5591 are undefined.
5592
5593 Example:
5594 """"""""
5595
5596 .. code-block:: llvm
5597
5598       %X = fptoui double 123.0 to i32      ; yields i32:123
5599       %Y = fptoui float 1.0E+300 to i1     ; yields undefined:1
5600       %Z = fptoui float 1.04E+17 to i8     ; yields undefined:1
5601
5602 '``fptosi .. to``' Instruction
5603 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5604
5605 Syntax:
5606 """""""
5607
5608 ::
5609
5610       <result> = fptosi <ty> <value> to <ty2>             ; yields ty2
5611
5612 Overview:
5613 """""""""
5614
5615 The '``fptosi``' instruction converts :ref:`floating point <t_floating>`
5616 ``value`` to type ``ty2``.
5617
5618 Arguments:
5619 """"""""""
5620
5621 The '``fptosi``' instruction takes a value to cast, which must be a
5622 scalar or vector :ref:`floating point <t_floating>` value, and a type to
5623 cast it to ``ty2``, which must be an :ref:`integer <t_integer>` type. If
5624 ``ty`` is a vector floating point type, ``ty2`` must be a vector integer
5625 type with the same number of elements as ``ty``
5626
5627 Semantics:
5628 """"""""""
5629
5630 The '``fptosi``' instruction converts its :ref:`floating
5631 point <t_floating>` operand into the nearest (rounding towards zero)
5632 signed integer value. If the value cannot fit in ``ty2``, the results
5633 are undefined.
5634
5635 Example:
5636 """"""""
5637
5638 .. code-block:: llvm
5639
5640       %X = fptosi double -123.0 to i32      ; yields i32:-123
5641       %Y = fptosi float 1.0E-247 to i1      ; yields undefined:1
5642       %Z = fptosi float 1.04E+17 to i8      ; yields undefined:1
5643
5644 '``uitofp .. to``' Instruction
5645 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5646
5647 Syntax:
5648 """""""
5649
5650 ::
5651
5652       <result> = uitofp <ty> <value> to <ty2>             ; yields ty2
5653
5654 Overview:
5655 """""""""
5656
5657 The '``uitofp``' instruction regards ``value`` as an unsigned integer
5658 and converts that value to the ``ty2`` type.
5659
5660 Arguments:
5661 """"""""""
5662
5663 The '``uitofp``' instruction takes a value to cast, which must be a
5664 scalar or vector :ref:`integer <t_integer>` value, and a type to cast it to
5665 ``ty2``, which must be an :ref:`floating point <t_floating>` type. If
5666 ``ty`` is a vector integer type, ``ty2`` must be a vector floating point
5667 type with the same number of elements as ``ty``
5668
5669 Semantics:
5670 """"""""""
5671
5672 The '``uitofp``' instruction interprets its operand as an unsigned
5673 integer quantity and converts it to the corresponding floating point
5674 value. If the value cannot fit in the floating point value, the results
5675 are undefined.
5676
5677 Example:
5678 """"""""
5679
5680 .. code-block:: llvm
5681
5682       %X = uitofp i32 257 to float         ; yields float:257.0
5683       %Y = uitofp i8 -1 to double          ; yields double:255.0
5684
5685 '``sitofp .. to``' Instruction
5686 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5687
5688 Syntax:
5689 """""""
5690
5691 ::
5692
5693       <result> = sitofp <ty> <value> to <ty2>             ; yields ty2
5694
5695 Overview:
5696 """""""""
5697
5698 The '``sitofp``' instruction regards ``value`` as a signed integer and
5699 converts that value to the ``ty2`` type.
5700
5701 Arguments:
5702 """"""""""
5703
5704 The '``sitofp``' instruction takes a value to cast, which must be a
5705 scalar or vector :ref:`integer <t_integer>` value, and a type to cast it to
5706 ``ty2``, which must be an :ref:`floating point <t_floating>` type. If
5707 ``ty`` is a vector integer type, ``ty2`` must be a vector floating point
5708 type with the same number of elements as ``ty``
5709
5710 Semantics:
5711 """"""""""
5712
5713 The '``sitofp``' instruction interprets its operand as a signed integer
5714 quantity and converts it to the corresponding floating point value. If
5715 the value cannot fit in the floating point value, the results are
5716 undefined.
5717
5718 Example:
5719 """"""""
5720
5721 .. code-block:: llvm
5722
5723       %X = sitofp i32 257 to float         ; yields float:257.0
5724       %Y = sitofp i8 -1 to double          ; yields double:-1.0
5725
5726 .. _i_ptrtoint:
5727
5728 '``ptrtoint .. to``' Instruction
5729 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5730
5731 Syntax:
5732 """""""
5733
5734 ::
5735
5736       <result> = ptrtoint <ty> <value> to <ty2>             ; yields ty2
5737
5738 Overview:
5739 """""""""
5740
5741 The '``ptrtoint``' instruction converts the pointer or a vector of
5742 pointers ``value`` to the integer (or vector of integers) type ``ty2``.
5743
5744 Arguments:
5745 """"""""""
5746
5747 The '``ptrtoint``' instruction takes a ``value`` to cast, which must be
5748 a a value of type :ref:`pointer <t_pointer>` or a vector of pointers, and a
5749 type to cast it to ``ty2``, which must be an :ref:`integer <t_integer>` or
5750 a vector of integers type.
5751
5752 Semantics:
5753 """"""""""
5754
5755 The '``ptrtoint``' instruction converts ``value`` to integer type
5756 ``ty2`` by interpreting the pointer value as an integer and either
5757 truncating or zero extending that value to the size of the integer type.
5758 If ``value`` is smaller than ``ty2`` then a zero extension is done. If
5759 ``value`` is larger than ``ty2`` then a truncation is done. If they are
5760 the same size, then nothing is done (*no-op cast*) other than a type
5761 change.
5762
5763 Example:
5764 """"""""
5765
5766 .. code-block:: llvm
5767
5768       %X = ptrtoint i32* %P to i8                         ; yields truncation on 32-bit architecture
5769       %Y = ptrtoint i32* %P to i64                        ; yields zero extension on 32-bit architecture
5770       %Z = ptrtoint <4 x i32*> %P to <4 x i64>; yields vector zero extension for a vector of addresses on 32-bit architecture
5771
5772 .. _i_inttoptr:
5773
5774 '``inttoptr .. to``' Instruction
5775 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5776
5777 Syntax:
5778 """""""
5779
5780 ::
5781
5782       <result> = inttoptr <ty> <value> to <ty2>             ; yields ty2
5783
5784 Overview:
5785 """""""""
5786
5787 The '``inttoptr``' instruction converts an integer ``value`` to a
5788 pointer type, ``ty2``.
5789
5790 Arguments:
5791 """"""""""
5792
5793 The '``inttoptr``' instruction takes an :ref:`integer <t_integer>` value to
5794 cast, and a type to cast it to, which must be a :ref:`pointer <t_pointer>`
5795 type.
5796
5797 Semantics:
5798 """"""""""
5799
5800 The '``inttoptr``' instruction converts ``value`` to type ``ty2`` by
5801 applying either a zero extension or a truncation depending on the size
5802 of the integer ``value``. If ``value`` is larger than the size of a
5803 pointer then a truncation is done. If ``value`` is smaller than the size
5804 of a pointer then a zero extension is done. If they are the same size,
5805 nothing is done (*no-op cast*).
5806
5807 Example:
5808 """"""""
5809
5810 .. code-block:: llvm
5811
5812       %X = inttoptr i32 255 to i32*          ; yields zero extension on 64-bit architecture
5813       %Y = inttoptr i32 255 to i32*          ; yields no-op on 32-bit architecture
5814       %Z = inttoptr i64 0 to i32*            ; yields truncation on 32-bit architecture
5815       %Z = inttoptr <4 x i32> %G to <4 x i8*>; yields truncation of vector G to four pointers
5816
5817 .. _i_bitcast:
5818
5819 '``bitcast .. to``' Instruction
5820 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5821
5822 Syntax:
5823 """""""
5824
5825 ::
5826
5827       <result> = bitcast <ty> <value> to <ty2>             ; yields ty2
5828
5829 Overview:
5830 """""""""
5831
5832 The '``bitcast``' instruction converts ``value`` to type ``ty2`` without
5833 changing any bits.
5834
5835 Arguments:
5836 """"""""""
5837
5838 The '``bitcast``' instruction takes a value to cast, which must be a
5839 non-aggregate first class value, and a type to cast it to, which must
5840 also be a non-aggregate :ref:`first class <t_firstclass>` type. The
5841 bit sizes of ``value`` and the destination type, ``ty2``, must be
5842 identical.  If the source type is a pointer, the destination type must
5843 also be a pointer of the same size. This instruction supports bitwise
5844 conversion of vectors to integers and to vectors of other types (as
5845 long as they have the same size).
5846
5847 Semantics:
5848 """"""""""
5849
5850 The '``bitcast``' instruction converts ``value`` to type ``ty2``. It
5851 is always a *no-op cast* because no bits change with this
5852 conversion. The conversion is done as if the ``value`` had been stored
5853 to memory and read back as type ``ty2``. Pointer (or vector of
5854 pointers) types may only be converted to other pointer (or vector of
5855 pointers) types with the same address space through this instruction.
5856 To convert pointers to other types, use the :ref:`inttoptr <i_inttoptr>`
5857 or :ref:`ptrtoint <i_ptrtoint>` instructions first.
5858
5859 Example:
5860 """"""""
5861
5862 .. code-block:: llvm
5863
5864       %X = bitcast i8 255 to i8              ; yields i8 :-1
5865       %Y = bitcast i32* %x to sint*          ; yields sint*:%x
5866       %Z = bitcast <2 x int> %V to i64;        ; yields i64: %V
5867       %Z = bitcast <2 x i32*> %V to <2 x i64*> ; yields <2 x i64*>
5868
5869 .. _i_addrspacecast:
5870
5871 '``addrspacecast .. to``' Instruction
5872 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5873
5874 Syntax:
5875 """""""
5876
5877 ::
5878
5879       <result> = addrspacecast <pty> <ptrval> to <pty2>       ; yields pty2
5880
5881 Overview:
5882 """""""""
5883
5884 The '``addrspacecast``' instruction converts ``ptrval`` from ``pty`` in
5885 address space ``n`` to type ``pty2`` in address space ``m``.
5886
5887 Arguments:
5888 """"""""""
5889
5890 The '``addrspacecast``' instruction takes a pointer or vector of pointer value
5891 to cast and a pointer type to cast it to, which must have a different
5892 address space.
5893
5894 Semantics:
5895 """"""""""
5896
5897 The '``addrspacecast``' instruction converts the pointer value
5898 ``ptrval`` to type ``pty2``. It can be a *no-op cast* or a complex
5899 value modification, depending on the target and the address space
5900 pair. Pointer conversions within the same address space must be
5901 performed with the ``bitcast`` instruction. Note that if the address space
5902 conversion is legal then both result and operand refer to the same memory
5903 location.
5904
5905 Example:
5906 """"""""
5907
5908 .. code-block:: llvm
5909
5910       %X = addrspacecast i32* %x to i32 addrspace(1)*    ; yields i32 addrspace(1)*:%x
5911       %Y = addrspacecast i32 addrspace(1)* %y to i64 addrspace(2)*    ; yields i64 addrspace(2)*:%y
5912       %Z = addrspacecast <4 x i32*> %z to <4 x float addrspace(3)*>   ; yields <4 x float addrspace(3)*>:%z
5913
5914 .. _otherops:
5915
5916 Other Operations
5917 ----------------
5918
5919 The instructions in this category are the "miscellaneous" instructions,
5920 which defy better classification.
5921
5922 .. _i_icmp:
5923
5924 '``icmp``' Instruction
5925 ^^^^^^^^^^^^^^^^^^^^^^
5926
5927 Syntax:
5928 """""""
5929
5930 ::
5931
5932       <result> = icmp <cond> <ty> <op1>, <op2>   ; yields {i1} or {<N x i1>}:result
5933
5934 Overview:
5935 """""""""
5936
5937 The '``icmp``' instruction returns a boolean value or a vector of
5938 boolean values based on comparison of its two integer, integer vector,
5939 pointer, or pointer vector operands.
5940
5941 Arguments:
5942 """"""""""
5943
5944 The '``icmp``' instruction takes three operands. The first operand is
5945 the condition code indicating the kind of comparison to perform. It is
5946 not a value, just a keyword. The possible condition code are:
5947
5948 #. ``eq``: equal
5949 #. ``ne``: not equal
5950 #. ``ugt``: unsigned greater than
5951 #. ``uge``: unsigned greater or equal
5952 #. ``ult``: unsigned less than
5953 #. ``ule``: unsigned less or equal
5954 #. ``sgt``: signed greater than
5955 #. ``sge``: signed greater or equal
5956 #. ``slt``: signed less than
5957 #. ``sle``: signed less or equal
5958
5959 The remaining two arguments must be :ref:`integer <t_integer>` or
5960 :ref:`pointer <t_pointer>` or integer :ref:`vector <t_vector>` typed. They
5961 must also be identical types.
5962
5963 Semantics:
5964 """"""""""
5965
5966 The '``icmp``' compares ``op1`` and ``op2`` according to the condition
5967 code given as ``cond``. The comparison performed always yields either an
5968 :ref:`i1 <t_integer>` or vector of ``i1`` result, as follows:
5969
5970 #. ``eq``: yields ``true`` if the operands are equal, ``false``
5971    otherwise. No sign interpretation is necessary or performed.
5972 #. ``ne``: yields ``true`` if the operands are unequal, ``false``
5973    otherwise. No sign interpretation is necessary or performed.
5974 #. ``ugt``: interprets the operands as unsigned values and yields
5975    ``true`` if ``op1`` is greater than ``op2``.
5976 #. ``uge``: interprets the operands as unsigned values and yields
5977    ``true`` if ``op1`` is greater than or equal to ``op2``.
5978 #. ``ult``: interprets the operands as unsigned values and yields
5979    ``true`` if ``op1`` is less than ``op2``.
5980 #. ``ule``: interprets the operands as unsigned values and yields
5981    ``true`` if ``op1`` is less than or equal to ``op2``.
5982 #. ``sgt``: interprets the operands as signed values and yields ``true``
5983    if ``op1`` is greater than ``op2``.
5984 #. ``sge``: interprets the operands as signed values and yields ``true``
5985    if ``op1`` is greater than or equal to ``op2``.
5986 #. ``slt``: interprets the operands as signed values and yields ``true``
5987    if ``op1`` is less than ``op2``.
5988 #. ``sle``: interprets the operands as signed values and yields ``true``
5989    if ``op1`` is less than or equal to ``op2``.
5990
5991 If the operands are :ref:`pointer <t_pointer>` typed, the pointer values
5992 are compared as if they were integers.
5993
5994 If the operands are integer vectors, then they are compared element by
5995 element. The result is an ``i1`` vector with the same number of elements
5996 as the values being compared. Otherwise, the result is an ``i1``.
5997
5998 Example:
5999 """"""""
6000
6001 .. code-block:: llvm
6002
6003       <result> = icmp eq i32 4, 5          ; yields: result=false
6004       <result> = icmp ne float* %X, %X     ; yields: result=false
6005       <result> = icmp ult i16  4, 5        ; yields: result=true
6006       <result> = icmp sgt i16  4, 5        ; yields: result=false
6007       <result> = icmp ule i16 -4, 5        ; yields: result=false
6008       <result> = icmp sge i16  4, 5        ; yields: result=false
6009
6010 Note that the code generator does not yet support vector types with the
6011 ``icmp`` instruction.
6012
6013 .. _i_fcmp:
6014
6015 '``fcmp``' Instruction
6016 ^^^^^^^^^^^^^^^^^^^^^^
6017
6018 Syntax:
6019 """""""
6020
6021 ::
6022
6023       <result> = fcmp <cond> <ty> <op1>, <op2>     ; yields {i1} or {<N x i1>}:result
6024
6025 Overview:
6026 """""""""
6027
6028 The '``fcmp``' instruction returns a boolean value or vector of boolean
6029 values based on comparison of its operands.
6030
6031 If the operands are floating point scalars, then the result type is a
6032 boolean (:ref:`i1 <t_integer>`).
6033
6034 If the operands are floating point vectors, then the result type is a
6035 vector of boolean with the same number of elements as the operands being
6036 compared.
6037
6038 Arguments:
6039 """"""""""
6040
6041 The '``fcmp``' instruction takes three operands. The first operand is
6042 the condition code indicating the kind of comparison to perform. It is
6043 not a value, just a keyword. The possible condition code are:
6044
6045 #. ``false``: no comparison, always returns false
6046 #. ``oeq``: ordered and equal
6047 #. ``ogt``: ordered and greater than
6048 #. ``oge``: ordered and greater than or equal
6049 #. ``olt``: ordered and less than
6050 #. ``ole``: ordered and less than or equal
6051 #. ``one``: ordered and not equal
6052 #. ``ord``: ordered (no nans)
6053 #. ``ueq``: unordered or equal
6054 #. ``ugt``: unordered or greater than
6055 #. ``uge``: unordered or greater than or equal
6056 #. ``ult``: unordered or less than
6057 #. ``ule``: unordered or less than or equal
6058 #. ``une``: unordered or not equal
6059 #. ``uno``: unordered (either nans)
6060 #. ``true``: no comparison, always returns true
6061
6062 *Ordered* means that neither operand is a QNAN while *unordered* means
6063 that either operand may be a QNAN.
6064
6065 Each of ``val1`` and ``val2`` arguments must be either a :ref:`floating
6066 point <t_floating>` type or a :ref:`vector <t_vector>` of floating point
6067 type. They must have identical types.
6068
6069 Semantics:
6070 """"""""""
6071
6072 The '``fcmp``' instruction compares ``op1`` and ``op2`` according to the
6073 condition code given as ``cond``. If the operands are vectors, then the
6074 vectors are compared element by element. Each comparison performed
6075 always yields an :ref:`i1 <t_integer>` result, as follows:
6076
6077 #. ``false``: always yields ``false``, regardless of operands.
6078 #. ``oeq``: yields ``true`` if both operands are not a QNAN and ``op1``
6079    is equal to ``op2``.
6080 #. ``ogt``: yields ``true`` if both operands are not a QNAN and ``op1``
6081    is greater than ``op2``.
6082 #. ``oge``: yields ``true`` if both operands are not a QNAN and ``op1``
6083    is greater than or equal to ``op2``.
6084 #. ``olt``: yields ``true`` if both operands are not a QNAN and ``op1``
6085    is less than ``op2``.
6086 #. ``ole``: yields ``true`` if both operands are not a QNAN and ``op1``
6087    is less than or equal to ``op2``.
6088 #. ``one``: yields ``true`` if both operands are not a QNAN and ``op1``
6089    is not equal to ``op2``.
6090 #. ``ord``: yields ``true`` if both operands are not a QNAN.
6091 #. ``ueq``: yields ``true`` if either operand is a QNAN or ``op1`` is
6092    equal to ``op2``.
6093 #. ``ugt``: yields ``true`` if either operand is a QNAN or ``op1`` is
6094    greater than ``op2``.
6095 #. ``uge``: yields ``true`` if either operand is a QNAN or ``op1`` is
6096    greater than or equal to ``op2``.
6097 #. ``ult``: yields ``true`` if either operand is a QNAN or ``op1`` is
6098    less than ``op2``.
6099 #. ``ule``: yields ``true`` if either operand is a QNAN or ``op1`` is
6100    less than or equal to ``op2``.
6101 #. ``une``: yields ``true`` if either operand is a QNAN or ``op1`` is
6102    not equal to ``op2``.
6103 #. ``uno``: yields ``true`` if either operand is a QNAN.
6104 #. ``true``: always yields ``true``, regardless of operands.
6105
6106 Example:
6107 """"""""
6108
6109 .. code-block:: llvm
6110
6111       <result> = fcmp oeq float 4.0, 5.0    ; yields: result=false
6112       <result> = fcmp one float 4.0, 5.0    ; yields: result=true
6113       <result> = fcmp olt float 4.0, 5.0    ; yields: result=true
6114       <result> = fcmp ueq double 1.0, 2.0   ; yields: result=false
6115
6116 Note that the code generator does not yet support vector types with the
6117 ``fcmp`` instruction.
6118
6119 .. _i_phi:
6120
6121 '``phi``' Instruction
6122 ^^^^^^^^^^^^^^^^^^^^^
6123
6124 Syntax:
6125 """""""
6126
6127 ::
6128
6129       <result> = phi <ty> [ <val0>, <label0>], ...
6130
6131 Overview:
6132 """""""""
6133
6134 The '``phi``' instruction is used to implement the Ï† node in the SSA
6135 graph representing the function.
6136
6137 Arguments:
6138 """"""""""
6139
6140 The type of the incoming values is specified with the first type field.
6141 After this, the '``phi``' instruction takes a list of pairs as
6142 arguments, with one pair for each predecessor basic block of the current
6143 block. Only values of :ref:`first class <t_firstclass>` type may be used as
6144 the value arguments to the PHI node. Only labels may be used as the
6145 label arguments.
6146
6147 There must be no non-phi instructions between the start of a basic block
6148 and the PHI instructions: i.e. PHI instructions must be first in a basic
6149 block.
6150
6151 For the purposes of the SSA form, the use of each incoming value is
6152 deemed to occur on the edge from the corresponding predecessor block to
6153 the current block (but after any definition of an '``invoke``'
6154 instruction's return value on the same edge).
6155
6156 Semantics:
6157 """"""""""
6158
6159 At runtime, the '``phi``' instruction logically takes on the value
6160 specified by the pair corresponding to the predecessor basic block that
6161 executed just prior to the current block.
6162
6163 Example:
6164 """"""""
6165
6166 .. code-block:: llvm
6167
6168     Loop:       ; Infinite loop that counts from 0 on up...
6169       %indvar = phi i32 [ 0, %LoopHeader ], [ %nextindvar, %Loop ]
6170       %nextindvar = add i32 %indvar, 1
6171       br label %Loop
6172
6173 .. _i_select:
6174
6175 '``select``' Instruction
6176 ^^^^^^^^^^^^^^^^^^^^^^^^
6177
6178 Syntax:
6179 """""""
6180
6181 ::
6182
6183       <result> = select selty <cond>, <ty> <val1>, <ty> <val2>             ; yields ty
6184
6185       selty is either i1 or {<N x i1>}
6186
6187 Overview:
6188 """""""""
6189
6190 The '``select``' instruction is used to choose one value based on a
6191 condition, without IR-level branching.
6192
6193 Arguments:
6194 """"""""""
6195
6196 The '``select``' instruction requires an 'i1' value or a vector of 'i1'
6197 values indicating the condition, and two values of the same :ref:`first
6198 class <t_firstclass>` type. If the val1/val2 are vectors and the
6199 condition is a scalar, then entire vectors are selected, not individual
6200 elements.
6201
6202 Semantics:
6203 """"""""""
6204
6205 If the condition is an i1 and it evaluates to 1, the instruction returns
6206 the first value argument; otherwise, it returns the second value
6207 argument.
6208
6209 If the condition is a vector of i1, then the value arguments must be
6210 vectors of the same size, and the selection is done element by element.
6211
6212 Example:
6213 """"""""
6214
6215 .. code-block:: llvm
6216
6217       %X = select i1 true, i8 17, i8 42          ; yields i8:17
6218
6219 .. _i_call:
6220
6221 '``call``' Instruction
6222 ^^^^^^^^^^^^^^^^^^^^^^
6223
6224 Syntax:
6225 """""""
6226
6227 ::
6228
6229       <result> = [tail | musttail] call [cconv] [ret attrs] <ty> [<fnty>*] <fnptrval>(<function args>) [fn attrs]
6230
6231 Overview:
6232 """""""""
6233
6234 The '``call``' instruction represents a simple function call.
6235
6236 Arguments:
6237 """"""""""
6238
6239 This instruction requires several arguments:
6240
6241 #. The optional ``tail`` and ``musttail`` markers indicate that the optimizers
6242    should perform tail call optimization.  The ``tail`` marker is a hint that
6243    `can be ignored <CodeGenerator.html#sibcallopt>`_.  The ``musttail`` marker
6244    means that the call must be tail call optimized in order for the program to
6245    be correct.  The ``musttail`` marker provides these guarantees:
6246
6247    #. The call will not cause unbounded stack growth if it is part of a
6248       recursive cycle in the call graph.
6249    #. Arguments with the :ref:`inalloca <attr_inalloca>` attribute are
6250       forwarded in place.
6251
6252    Both markers imply that the callee does not access allocas or varargs from
6253    the caller.  Calls marked ``musttail`` must obey the following additional
6254    rules:
6255
6256    - The call must immediately precede a :ref:`ret <i_ret>` instruction,
6257      or a pointer bitcast followed by a ret instruction.
6258    - The ret instruction must return the (possibly bitcasted) value
6259      produced by the call or void.
6260    - The caller and callee prototypes must match.  Pointer types of
6261      parameters or return types may differ in pointee type, but not
6262      in address space.
6263    - The calling conventions of the caller and callee must match.
6264    - All ABI-impacting function attributes, such as sret, byval, inreg,
6265      returned, and inalloca, must match.
6266
6267    Tail call optimization for calls marked ``tail`` is guaranteed to occur if
6268    the following conditions are met:
6269
6270    -  Caller and callee both have the calling convention ``fastcc``.
6271    -  The call is in tail position (ret immediately follows call and ret
6272       uses value of call or is void).
6273    -  Option ``-tailcallopt`` is enabled, or
6274       ``llvm::GuaranteedTailCallOpt`` is ``true``.
6275    -  `Platform specific constraints are
6276       met. <CodeGenerator.html#tailcallopt>`_
6277
6278 #. The optional "cconv" marker indicates which :ref:`calling
6279    convention <callingconv>` the call should use. If none is
6280    specified, the call defaults to using C calling conventions. The
6281    calling convention of the call must match the calling convention of
6282    the target function, or else the behavior is undefined.
6283 #. The optional :ref:`Parameter Attributes <paramattrs>` list for return
6284    values. Only '``zeroext``', '``signext``', and '``inreg``' attributes
6285    are valid here.
6286 #. '``ty``': the type of the call instruction itself which is also the
6287    type of the return value. Functions that return no value are marked
6288    ``void``.
6289 #. '``fnty``': shall be the signature of the pointer to function value
6290    being invoked. The argument types must match the types implied by
6291    this signature. This type can be omitted if the function is not
6292    varargs and if the function type does not return a pointer to a
6293    function.
6294 #. '``fnptrval``': An LLVM value containing a pointer to a function to
6295    be invoked. In most cases, this is a direct function invocation, but
6296    indirect ``call``'s are just as possible, calling an arbitrary pointer
6297    to function value.
6298 #. '``function args``': argument list whose types match the function
6299    signature argument types and parameter attributes. All arguments must
6300    be of :ref:`first class <t_firstclass>` type. If the function signature
6301    indicates the function accepts a variable number of arguments, the
6302    extra arguments can be specified.
6303 #. The optional :ref:`function attributes <fnattrs>` list. Only
6304    '``noreturn``', '``nounwind``', '``readonly``' and '``readnone``'
6305    attributes are valid here.
6306
6307 Semantics:
6308 """"""""""
6309
6310 The '``call``' instruction is used to cause control flow to transfer to
6311 a specified function, with its incoming arguments bound to the specified
6312 values. Upon a '``ret``' instruction in the called function, control
6313 flow continues with the instruction after the function call, and the
6314 return value of the function is bound to the result argument.
6315
6316 Example:
6317 """"""""
6318
6319 .. code-block:: llvm
6320
6321       %retval = call i32 @test(i32 %argc)
6322       call i32 (i8*, ...)* @printf(i8* %msg, i32 12, i8 42)        ; yields i32
6323       %X = tail call i32 @foo()                                    ; yields i32
6324       %Y = tail call fastcc i32 @foo()  ; yields i32
6325       call void %foo(i8 97 signext)
6326
6327       %struct.A = type { i32, i8 }
6328       %r = call %struct.A @foo()                        ; yields { 32, i8 }
6329       %gr = extractvalue %struct.A %r, 0                ; yields i32
6330       %gr1 = extractvalue %struct.A %r, 1               ; yields i8
6331       %Z = call void @foo() noreturn                    ; indicates that %foo never returns normally
6332       %ZZ = call zeroext i32 @bar()                     ; Return value is %zero extended
6333
6334 llvm treats calls to some functions with names and arguments that match
6335 the standard C99 library as being the C99 library functions, and may
6336 perform optimizations or generate code for them under that assumption.
6337 This is something we'd like to change in the future to provide better
6338 support for freestanding environments and non-C-based languages.
6339
6340 .. _i_va_arg:
6341
6342 '``va_arg``' Instruction
6343 ^^^^^^^^^^^^^^^^^^^^^^^^
6344
6345 Syntax:
6346 """""""
6347
6348 ::
6349
6350       <resultval> = va_arg <va_list*> <arglist>, <argty>
6351
6352 Overview:
6353 """""""""
6354
6355 The '``va_arg``' instruction is used to access arguments passed through
6356 the "variable argument" area of a function call. It is used to implement
6357 the ``va_arg`` macro in C.
6358
6359 Arguments:
6360 """"""""""
6361
6362 This instruction takes a ``va_list*`` value and the type of the
6363 argument. It returns a value of the specified argument type and
6364 increments the ``va_list`` to point to the next argument. The actual
6365 type of ``va_list`` is target specific.
6366
6367 Semantics:
6368 """"""""""
6369
6370 The '``va_arg``' instruction loads an argument of the specified type
6371 from the specified ``va_list`` and causes the ``va_list`` to point to
6372 the next argument. For more information, see the variable argument
6373 handling :ref:`Intrinsic Functions <int_varargs>`.
6374
6375 It is legal for this instruction to be called in a function which does
6376 not take a variable number of arguments, for example, the ``vfprintf``
6377 function.
6378
6379 ``va_arg`` is an LLVM instruction instead of an :ref:`intrinsic
6380 function <intrinsics>` because it takes a type as an argument.
6381
6382 Example:
6383 """"""""
6384
6385 See the :ref:`variable argument processing <int_varargs>` section.
6386
6387 Note that the code generator does not yet fully support va\_arg on many
6388 targets. Also, it does not currently support va\_arg with aggregate
6389 types on any target.
6390
6391 .. _i_landingpad:
6392
6393 '``landingpad``' Instruction
6394 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6395
6396 Syntax:
6397 """""""
6398
6399 ::
6400
6401       <resultval> = landingpad <resultty> personality <type> <pers_fn> <clause>+
6402       <resultval> = landingpad <resultty> personality <type> <pers_fn> cleanup <clause>*
6403
6404       <clause> := catch <type> <value>
6405       <clause> := filter <array constant type> <array constant>
6406
6407 Overview:
6408 """""""""
6409
6410 The '``landingpad``' instruction is used by `LLVM's exception handling
6411 system <ExceptionHandling.html#overview>`_ to specify that a basic block
6412 is a landing pad --- one where the exception lands, and corresponds to the
6413 code found in the ``catch`` portion of a ``try``/``catch`` sequence. It
6414 defines values supplied by the personality function (``pers_fn``) upon
6415 re-entry to the function. The ``resultval`` has the type ``resultty``.
6416
6417 Arguments:
6418 """"""""""
6419
6420 This instruction takes a ``pers_fn`` value. This is the personality
6421 function associated with the unwinding mechanism. The optional
6422 ``cleanup`` flag indicates that the landing pad block is a cleanup.
6423
6424 A ``clause`` begins with the clause type --- ``catch`` or ``filter`` --- and
6425 contains the global variable representing the "type" that may be caught
6426 or filtered respectively. Unlike the ``catch`` clause, the ``filter``
6427 clause takes an array constant as its argument. Use
6428 "``[0 x i8**] undef``" for a filter which cannot throw. The
6429 '``landingpad``' instruction must contain *at least* one ``clause`` or
6430 the ``cleanup`` flag.
6431
6432 Semantics:
6433 """"""""""
6434
6435 The '``landingpad``' instruction defines the values which are set by the
6436 personality function (``pers_fn``) upon re-entry to the function, and
6437 therefore the "result type" of the ``landingpad`` instruction. As with
6438 calling conventions, how the personality function results are
6439 represented in LLVM IR is target specific.
6440
6441 The clauses are applied in order from top to bottom. If two
6442 ``landingpad`` instructions are merged together through inlining, the
6443 clauses from the calling function are appended to the list of clauses.
6444 When the call stack is being unwound due to an exception being thrown,
6445 the exception is compared against each ``clause`` in turn. If it doesn't
6446 match any of the clauses, and the ``cleanup`` flag is not set, then
6447 unwinding continues further up the call stack.
6448
6449 The ``landingpad`` instruction has several restrictions:
6450
6451 -  A landing pad block is a basic block which is the unwind destination
6452    of an '``invoke``' instruction.
6453 -  A landing pad block must have a '``landingpad``' instruction as its
6454    first non-PHI instruction.
6455 -  There can be only one '``landingpad``' instruction within the landing
6456    pad block.
6457 -  A basic block that is not a landing pad block may not include a
6458    '``landingpad``' instruction.
6459 -  All '``landingpad``' instructions in a function must have the same
6460    personality function.
6461
6462 Example:
6463 """"""""
6464
6465 .. code-block:: llvm
6466
6467       ;; A landing pad which can catch an integer.
6468       %res = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
6469                catch i8** @_ZTIi
6470       ;; A landing pad that is a cleanup.
6471       %res = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
6472                cleanup
6473       ;; A landing pad which can catch an integer and can only throw a double.
6474       %res = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
6475                catch i8** @_ZTIi
6476                filter [1 x i8**] [@_ZTId]
6477
6478 .. _intrinsics:
6479
6480 Intrinsic Functions
6481 ===================
6482
6483 LLVM supports the notion of an "intrinsic function". These functions
6484 have well known names and semantics and are required to follow certain
6485 restrictions. Overall, these intrinsics represent an extension mechanism
6486 for the LLVM language that does not require changing all of the
6487 transformations in LLVM when adding to the language (or the bitcode
6488 reader/writer, the parser, etc...).
6489
6490 Intrinsic function names must all start with an "``llvm.``" prefix. This
6491 prefix is reserved in LLVM for intrinsic names; thus, function names may
6492 not begin with this prefix. Intrinsic functions must always be external
6493 functions: you cannot define the body of intrinsic functions. Intrinsic
6494 functions may only be used in call or invoke instructions: it is illegal
6495 to take the address of an intrinsic function. Additionally, because
6496 intrinsic functions are part of the LLVM language, it is required if any
6497 are added that they be documented here.
6498
6499 Some intrinsic functions can be overloaded, i.e., the intrinsic
6500 represents a family of functions that perform the same operation but on
6501 different data types. Because LLVM can represent over 8 million
6502 different integer types, overloading is used commonly to allow an
6503 intrinsic function to operate on any integer type. One or more of the
6504 argument types or the result type can be overloaded to accept any
6505 integer type. Argument types may also be defined as exactly matching a
6506 previous argument's type or the result type. This allows an intrinsic
6507 function which accepts multiple arguments, but needs all of them to be
6508 of the same type, to only be overloaded with respect to a single
6509 argument or the result.
6510
6511 Overloaded intrinsics will have the names of its overloaded argument
6512 types encoded into its function name, each preceded by a period. Only
6513 those types which are overloaded result in a name suffix. Arguments
6514 whose type is matched against another type do not. For example, the
6515 ``llvm.ctpop`` function can take an integer of any width and returns an
6516 integer of exactly the same integer width. This leads to a family of
6517 functions such as ``i8 @llvm.ctpop.i8(i8 %val)`` and
6518 ``i29 @llvm.ctpop.i29(i29 %val)``. Only one type, the return type, is
6519 overloaded, and only one type suffix is required. Because the argument's
6520 type is matched against the return type, it does not require its own
6521 name suffix.
6522
6523 To learn how to add an intrinsic function, please see the `Extending
6524 LLVM Guide <ExtendingLLVM.html>`_.
6525
6526 .. _int_varargs:
6527
6528 Variable Argument Handling Intrinsics
6529 -------------------------------------
6530
6531 Variable argument support is defined in LLVM with the
6532 :ref:`va_arg <i_va_arg>` instruction and these three intrinsic
6533 functions. These functions are related to the similarly named macros
6534 defined in the ``<stdarg.h>`` header file.
6535
6536 All of these functions operate on arguments that use a target-specific
6537 value type "``va_list``". The LLVM assembly language reference manual
6538 does not define what this type is, so all transformations should be
6539 prepared to handle these functions regardless of the type used.
6540
6541 This example shows how the :ref:`va_arg <i_va_arg>` instruction and the
6542 variable argument handling intrinsic functions are used.
6543
6544 .. code-block:: llvm
6545
6546     define i32 @test(i32 %X, ...) {
6547       ; Initialize variable argument processing
6548       %ap = alloca i8*
6549       %ap2 = bitcast i8** %ap to i8*
6550       call void @llvm.va_start(i8* %ap2)
6551
6552       ; Read a single integer argument
6553       %tmp = va_arg i8** %ap, i32
6554
6555       ; Demonstrate usage of llvm.va_copy and llvm.va_end
6556       %aq = alloca i8*
6557       %aq2 = bitcast i8** %aq to i8*
6558       call void @llvm.va_copy(i8* %aq2, i8* %ap2)
6559       call void @llvm.va_end(i8* %aq2)
6560
6561       ; Stop processing of arguments.
6562       call void @llvm.va_end(i8* %ap2)
6563       ret i32 %tmp
6564     }
6565
6566     declare void @llvm.va_start(i8*)
6567     declare void @llvm.va_copy(i8*, i8*)
6568     declare void @llvm.va_end(i8*)
6569
6570 .. _int_va_start:
6571
6572 '``llvm.va_start``' Intrinsic
6573 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6574
6575 Syntax:
6576 """""""
6577
6578 ::
6579
6580       declare void @llvm.va_start(i8* <arglist>)
6581
6582 Overview:
6583 """""""""
6584
6585 The '``llvm.va_start``' intrinsic initializes ``*<arglist>`` for
6586 subsequent use by ``va_arg``.
6587
6588 Arguments:
6589 """"""""""
6590
6591 The argument is a pointer to a ``va_list`` element to initialize.
6592
6593 Semantics:
6594 """"""""""
6595
6596 The '``llvm.va_start``' intrinsic works just like the ``va_start`` macro
6597 available in C. In a target-dependent way, it initializes the
6598 ``va_list`` element to which the argument points, so that the next call
6599 to ``va_arg`` will produce the first variable argument passed to the
6600 function. Unlike the C ``va_start`` macro, this intrinsic does not need
6601 to know the last argument of the function as the compiler can figure
6602 that out.
6603
6604 '``llvm.va_end``' Intrinsic
6605 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
6606
6607 Syntax:
6608 """""""
6609
6610 ::
6611
6612       declare void @llvm.va_end(i8* <arglist>)
6613
6614 Overview:
6615 """""""""
6616
6617 The '``llvm.va_end``' intrinsic destroys ``*<arglist>``, which has been
6618 initialized previously with ``llvm.va_start`` or ``llvm.va_copy``.
6619
6620 Arguments:
6621 """"""""""
6622
6623 The argument is a pointer to a ``va_list`` to destroy.
6624
6625 Semantics:
6626 """"""""""
6627
6628 The '``llvm.va_end``' intrinsic works just like the ``va_end`` macro
6629 available in C. In a target-dependent way, it destroys the ``va_list``
6630 element to which the argument points. Calls to
6631 :ref:`llvm.va_start <int_va_start>` and
6632 :ref:`llvm.va_copy <int_va_copy>` must be matched exactly with calls to
6633 ``llvm.va_end``.
6634
6635 .. _int_va_copy:
6636
6637 '``llvm.va_copy``' Intrinsic
6638 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6639
6640 Syntax:
6641 """""""
6642
6643 ::
6644
6645       declare void @llvm.va_copy(i8* <destarglist>, i8* <srcarglist>)
6646
6647 Overview:
6648 """""""""
6649
6650 The '``llvm.va_copy``' intrinsic copies the current argument position
6651 from the source argument list to the destination argument list.
6652
6653 Arguments:
6654 """"""""""
6655
6656 The first argument is a pointer to a ``va_list`` element to initialize.
6657 The second argument is a pointer to a ``va_list`` element to copy from.
6658
6659 Semantics:
6660 """"""""""
6661
6662 The '``llvm.va_copy``' intrinsic works just like the ``va_copy`` macro
6663 available in C. In a target-dependent way, it copies the source
6664 ``va_list`` element into the destination ``va_list`` element. This
6665 intrinsic is necessary because the `` llvm.va_start`` intrinsic may be
6666 arbitrarily complex and require, for example, memory allocation.
6667
6668 Accurate Garbage Collection Intrinsics
6669 --------------------------------------
6670
6671 LLVM support for `Accurate Garbage Collection <GarbageCollection.html>`_
6672 (GC) requires the implementation and generation of these intrinsics.
6673 These intrinsics allow identification of :ref:`GC roots on the
6674 stack <int_gcroot>`, as well as garbage collector implementations that
6675 require :ref:`read <int_gcread>` and :ref:`write <int_gcwrite>` barriers.
6676 Front-ends for type-safe garbage collected languages should generate
6677 these intrinsics to make use of the LLVM garbage collectors. For more
6678 details, see `Accurate Garbage Collection with
6679 LLVM <GarbageCollection.html>`_.
6680
6681 The garbage collection intrinsics only operate on objects in the generic
6682 address space (address space zero).
6683
6684 .. _int_gcroot:
6685
6686 '``llvm.gcroot``' Intrinsic
6687 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
6688
6689 Syntax:
6690 """""""
6691
6692 ::
6693
6694       declare void @llvm.gcroot(i8** %ptrloc, i8* %metadata)
6695
6696 Overview:
6697 """""""""
6698
6699 The '``llvm.gcroot``' intrinsic declares the existence of a GC root to
6700 the code generator, and allows some metadata to be associated with it.
6701
6702 Arguments:
6703 """"""""""
6704
6705 The first argument specifies the address of a stack object that contains
6706 the root pointer. The second pointer (which must be either a constant or
6707 a global value address) contains the meta-data to be associated with the
6708 root.
6709
6710 Semantics:
6711 """"""""""
6712
6713 At runtime, a call to this intrinsic stores a null pointer into the
6714 "ptrloc" location. At compile-time, the code generator generates
6715 information to allow the runtime to find the pointer at GC safe points.
6716 The '``llvm.gcroot``' intrinsic may only be used in a function which
6717 :ref:`specifies a GC algorithm <gc>`.
6718
6719 .. _int_gcread:
6720
6721 '``llvm.gcread``' Intrinsic
6722 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
6723
6724 Syntax:
6725 """""""
6726
6727 ::
6728
6729       declare i8* @llvm.gcread(i8* %ObjPtr, i8** %Ptr)
6730
6731 Overview:
6732 """""""""
6733
6734 The '``llvm.gcread``' intrinsic identifies reads of references from heap
6735 locations, allowing garbage collector implementations that require read
6736 barriers.
6737
6738 Arguments:
6739 """"""""""
6740
6741 The second argument is the address to read from, which should be an
6742 address allocated from the garbage collector. The first object is a
6743 pointer to the start of the referenced object, if needed by the language
6744 runtime (otherwise null).
6745
6746 Semantics:
6747 """"""""""
6748
6749 The '``llvm.gcread``' intrinsic has the same semantics as a load
6750 instruction, but may be replaced with substantially more complex code by
6751 the garbage collector runtime, as needed. The '``llvm.gcread``'
6752 intrinsic may only be used in a function which :ref:`specifies a GC
6753 algorithm <gc>`.
6754
6755 .. _int_gcwrite:
6756
6757 '``llvm.gcwrite``' Intrinsic
6758 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6759
6760 Syntax:
6761 """""""
6762
6763 ::
6764
6765       declare void @llvm.gcwrite(i8* %P1, i8* %Obj, i8** %P2)
6766
6767 Overview:
6768 """""""""
6769
6770 The '``llvm.gcwrite``' intrinsic identifies writes of references to heap
6771 locations, allowing garbage collector implementations that require write
6772 barriers (such as generational or reference counting collectors).
6773
6774 Arguments:
6775 """"""""""
6776
6777 The first argument is the reference to store, the second is the start of
6778 the object to store it to, and the third is the address of the field of
6779 Obj to store to. If the runtime does not require a pointer to the
6780 object, Obj may be null.
6781
6782 Semantics:
6783 """"""""""
6784
6785 The '``llvm.gcwrite``' intrinsic has the same semantics as a store
6786 instruction, but may be replaced with substantially more complex code by
6787 the garbage collector runtime, as needed. The '``llvm.gcwrite``'
6788 intrinsic may only be used in a function which :ref:`specifies a GC
6789 algorithm <gc>`.
6790
6791 Code Generator Intrinsics
6792 -------------------------
6793
6794 These intrinsics are provided by LLVM to expose special features that
6795 may only be implemented with code generator support.
6796
6797 '``llvm.returnaddress``' Intrinsic
6798 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6799
6800 Syntax:
6801 """""""
6802
6803 ::
6804
6805       declare i8  *@llvm.returnaddress(i32 <level>)
6806
6807 Overview:
6808 """""""""
6809
6810 The '``llvm.returnaddress``' intrinsic attempts to compute a
6811 target-specific value indicating the return address of the current
6812 function or one of its callers.
6813
6814 Arguments:
6815 """"""""""
6816
6817 The argument to this intrinsic indicates which function to return the
6818 address for. Zero indicates the calling function, one indicates its
6819 caller, etc. The argument is **required** to be a constant integer
6820 value.
6821
6822 Semantics:
6823 """"""""""
6824
6825 The '``llvm.returnaddress``' intrinsic either returns a pointer
6826 indicating the return address of the specified call frame, or zero if it
6827 cannot be identified. The value returned by this intrinsic is likely to
6828 be incorrect or 0 for arguments other than zero, so it should only be
6829 used for debugging purposes.
6830
6831 Note that calling this intrinsic does not prevent function inlining or
6832 other aggressive transformations, so the value returned may not be that
6833 of the obvious source-language caller.
6834
6835 '``llvm.frameaddress``' Intrinsic
6836 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6837
6838 Syntax:
6839 """""""
6840
6841 ::
6842
6843       declare i8* @llvm.frameaddress(i32 <level>)
6844
6845 Overview:
6846 """""""""
6847
6848 The '``llvm.frameaddress``' intrinsic attempts to return the
6849 target-specific frame pointer value for the specified stack frame.
6850
6851 Arguments:
6852 """"""""""
6853
6854 The argument to this intrinsic indicates which function to return the
6855 frame pointer for. Zero indicates the calling function, one indicates
6856 its caller, etc. The argument is **required** to be a constant integer
6857 value.
6858
6859 Semantics:
6860 """"""""""
6861
6862 The '``llvm.frameaddress``' intrinsic either returns a pointer
6863 indicating the frame address of the specified call frame, or zero if it
6864 cannot be identified. The value returned by this intrinsic is likely to
6865 be incorrect or 0 for arguments other than zero, so it should only be
6866 used for debugging purposes.
6867
6868 Note that calling this intrinsic does not prevent function inlining or
6869 other aggressive transformations, so the value returned may not be that
6870 of the obvious source-language caller.
6871
6872 .. _int_read_register:
6873 .. _int_write_register:
6874
6875 '``llvm.read_register``' and '``llvm.write_register``' Intrinsics
6876 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6877
6878 Syntax:
6879 """""""
6880
6881 ::
6882
6883       declare i32 @llvm.read_register.i32(metadata)
6884       declare i64 @llvm.read_register.i64(metadata)
6885       declare void @llvm.write_register.i32(metadata, i32 @value)
6886       declare void @llvm.write_register.i64(metadata, i64 @value)
6887       !0 = metadata !{metadata !"sp\00"}
6888
6889 Overview:
6890 """""""""
6891
6892 The '``llvm.read_register``' and '``llvm.write_register``' intrinsics
6893 provides access to the named register. The register must be valid on
6894 the architecture being compiled to. The type needs to be compatible
6895 with the register being read.
6896
6897 Semantics:
6898 """"""""""
6899
6900 The '``llvm.read_register``' intrinsic returns the current value of the
6901 register, where possible. The '``llvm.write_register``' intrinsic sets
6902 the current value of the register, where possible.
6903
6904 This is useful to implement named register global variables that need
6905 to always be mapped to a specific register, as is common practice on
6906 bare-metal programs including OS kernels.
6907
6908 The compiler doesn't check for register availability or use of the used
6909 register in surrounding code, including inline assembly. Because of that,
6910 allocatable registers are not supported.
6911
6912 Warning: So far it only works with the stack pointer on selected
6913 architectures (ARM, AArch64, PowerPC and x86_64). Significant amount of
6914 work is needed to support other registers and even more so, allocatable
6915 registers.
6916
6917 .. _int_stacksave:
6918
6919 '``llvm.stacksave``' Intrinsic
6920 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6921
6922 Syntax:
6923 """""""
6924
6925 ::
6926
6927       declare i8* @llvm.stacksave()
6928
6929 Overview:
6930 """""""""
6931
6932 The '``llvm.stacksave``' intrinsic is used to remember the current state
6933 of the function stack, for use with
6934 :ref:`llvm.stackrestore <int_stackrestore>`. This is useful for
6935 implementing language features like scoped automatic variable sized
6936 arrays in C99.
6937
6938 Semantics:
6939 """"""""""
6940
6941 This intrinsic returns a opaque pointer value that can be passed to
6942 :ref:`llvm.stackrestore <int_stackrestore>`. When an
6943 ``llvm.stackrestore`` intrinsic is executed with a value saved from
6944 ``llvm.stacksave``, it effectively restores the state of the stack to
6945 the state it was in when the ``llvm.stacksave`` intrinsic executed. In
6946 practice, this pops any :ref:`alloca <i_alloca>` blocks from the stack that
6947 were allocated after the ``llvm.stacksave`` was executed.
6948
6949 .. _int_stackrestore:
6950
6951 '``llvm.stackrestore``' Intrinsic
6952 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6953
6954 Syntax:
6955 """""""
6956
6957 ::
6958
6959       declare void @llvm.stackrestore(i8* %ptr)
6960
6961 Overview:
6962 """""""""
6963
6964 The '``llvm.stackrestore``' intrinsic is used to restore the state of
6965 the function stack to the state it was in when the corresponding
6966 :ref:`llvm.stacksave <int_stacksave>` intrinsic executed. This is
6967 useful for implementing language features like scoped automatic variable
6968 sized arrays in C99.
6969
6970 Semantics:
6971 """"""""""
6972
6973 See the description for :ref:`llvm.stacksave <int_stacksave>`.
6974
6975 '``llvm.prefetch``' Intrinsic
6976 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6977
6978 Syntax:
6979 """""""
6980
6981 ::
6982
6983       declare void @llvm.prefetch(i8* <address>, i32 <rw>, i32 <locality>, i32 <cache type>)
6984
6985 Overview:
6986 """""""""
6987
6988 The '``llvm.prefetch``' intrinsic is a hint to the code generator to
6989 insert a prefetch instruction if supported; otherwise, it is a noop.
6990 Prefetches have no effect on the behavior of the program but can change
6991 its performance characteristics.
6992
6993 Arguments:
6994 """"""""""
6995
6996 ``address`` is the address to be prefetched, ``rw`` is the specifier
6997 determining if the fetch should be for a read (0) or write (1), and
6998 ``locality`` is a temporal locality specifier ranging from (0) - no
6999 locality, to (3) - extremely local keep in cache. The ``cache type``
7000 specifies whether the prefetch is performed on the data (1) or
7001 instruction (0) cache. The ``rw``, ``locality`` and ``cache type``
7002 arguments must be constant integers.
7003
7004 Semantics:
7005 """"""""""
7006
7007 This intrinsic does not modify the behavior of the program. In
7008 particular, prefetches cannot trap and do not produce a value. On
7009 targets that support this intrinsic, the prefetch can provide hints to
7010 the processor cache for better performance.
7011
7012 '``llvm.pcmarker``' Intrinsic
7013 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7014
7015 Syntax:
7016 """""""
7017
7018 ::
7019
7020       declare void @llvm.pcmarker(i32 <id>)
7021
7022 Overview:
7023 """""""""
7024
7025 The '``llvm.pcmarker``' intrinsic is a method to export a Program
7026 Counter (PC) in a region of code to simulators and other tools. The
7027 method is target specific, but it is expected that the marker will use
7028 exported symbols to transmit the PC of the marker. The marker makes no
7029 guarantees that it will remain with any specific instruction after
7030 optimizations. It is possible that the presence of a marker will inhibit
7031 optimizations. The intended use is to be inserted after optimizations to
7032 allow correlations of simulation runs.
7033
7034 Arguments:
7035 """"""""""
7036
7037 ``id`` is a numerical id identifying the marker.
7038
7039 Semantics:
7040 """"""""""
7041
7042 This intrinsic does not modify the behavior of the program. Backends
7043 that do not support this intrinsic may ignore it.
7044
7045 '``llvm.readcyclecounter``' Intrinsic
7046 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7047
7048 Syntax:
7049 """""""
7050
7051 ::
7052
7053       declare i64 @llvm.readcyclecounter()
7054
7055 Overview:
7056 """""""""
7057
7058 The '``llvm.readcyclecounter``' intrinsic provides access to the cycle
7059 counter register (or similar low latency, high accuracy clocks) on those
7060 targets that support it. On X86, it should map to RDTSC. On Alpha, it
7061 should map to RPCC. As the backing counters overflow quickly (on the
7062 order of 9 seconds on alpha), this should only be used for small
7063 timings.
7064
7065 Semantics:
7066 """"""""""
7067
7068 When directly supported, reading the cycle counter should not modify any
7069 memory. Implementations are allowed to either return a application
7070 specific value or a system wide value. On backends without support, this
7071 is lowered to a constant 0.
7072
7073 Note that runtime support may be conditional on the privilege-level code is
7074 running at and the host platform.
7075
7076 '``llvm.clear_cache``' Intrinsic
7077 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7078
7079 Syntax:
7080 """""""
7081
7082 ::
7083
7084       declare void @llvm.clear_cache(i8*, i8*)
7085
7086 Overview:
7087 """""""""
7088
7089 The '``llvm.clear_cache``' intrinsic ensures visibility of modifications
7090 in the specified range to the execution unit of the processor. On
7091 targets with non-unified instruction and data cache, the implementation
7092 flushes the instruction cache.
7093
7094 Semantics:
7095 """"""""""
7096
7097 On platforms with coherent instruction and data caches (e.g. x86), this
7098 intrinsic is a nop. On platforms with non-coherent instruction and data
7099 cache (e.g. ARM, MIPS), the intrinsic is lowered either to appropriate
7100 instructions or a system call, if cache flushing requires special
7101 privileges.
7102
7103 The default behavior is to emit a call to ``__clear_cache`` from the run
7104 time library.
7105
7106 This instrinsic does *not* empty the instruction pipeline. Modifications
7107 of the current function are outside the scope of the intrinsic.
7108
7109 Standard C Library Intrinsics
7110 -----------------------------
7111
7112 LLVM provides intrinsics for a few important standard C library
7113 functions. These intrinsics allow source-language front-ends to pass
7114 information about the alignment of the pointer arguments to the code
7115 generator, providing opportunity for more efficient code generation.
7116
7117 .. _int_memcpy:
7118
7119 '``llvm.memcpy``' Intrinsic
7120 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
7121
7122 Syntax:
7123 """""""
7124
7125 This is an overloaded intrinsic. You can use ``llvm.memcpy`` on any
7126 integer bit width and for different address spaces. Not all targets
7127 support all bit widths however.
7128
7129 ::
7130
7131       declare void @llvm.memcpy.p0i8.p0i8.i32(i8* <dest>, i8* <src>,
7132                                               i32 <len>, i32 <align>, i1 <isvolatile>)
7133       declare void @llvm.memcpy.p0i8.p0i8.i64(i8* <dest>, i8* <src>,
7134                                               i64 <len>, i32 <align>, i1 <isvolatile>)
7135
7136 Overview:
7137 """""""""
7138
7139 The '``llvm.memcpy.*``' intrinsics copy a block of memory from the
7140 source location to the destination location.
7141
7142 Note that, unlike the standard libc function, the ``llvm.memcpy.*``
7143 intrinsics do not return a value, takes extra alignment/isvolatile
7144 arguments and the pointers can be in specified address spaces.
7145
7146 Arguments:
7147 """"""""""
7148
7149 The first argument is a pointer to the destination, the second is a
7150 pointer to the source. The third argument is an integer argument
7151 specifying the number of bytes to copy, the fourth argument is the
7152 alignment of the source and destination locations, and the fifth is a
7153 boolean indicating a volatile access.
7154
7155 If the call to this intrinsic has an alignment value that is not 0 or 1,
7156 then the caller guarantees that both the source and destination pointers
7157 are aligned to that boundary.
7158
7159 If the ``isvolatile`` parameter is ``true``, the ``llvm.memcpy`` call is
7160 a :ref:`volatile operation <volatile>`. The detailed access behavior is not
7161 very cleanly specified and it is unwise to depend on it.
7162
7163 Semantics:
7164 """"""""""
7165
7166 The '``llvm.memcpy.*``' intrinsics copy a block of memory from the
7167 source location to the destination location, which are not allowed to
7168 overlap. It copies "len" bytes of memory over. If the argument is known
7169 to be aligned to some boundary, this can be specified as the fourth
7170 argument, otherwise it should be set to 0 or 1 (both meaning no alignment).
7171
7172 '``llvm.memmove``' Intrinsic
7173 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7174
7175 Syntax:
7176 """""""
7177
7178 This is an overloaded intrinsic. You can use llvm.memmove on any integer
7179 bit width and for different address space. Not all targets support all
7180 bit widths however.
7181
7182 ::
7183
7184       declare void @llvm.memmove.p0i8.p0i8.i32(i8* <dest>, i8* <src>,
7185                                                i32 <len>, i32 <align>, i1 <isvolatile>)
7186       declare void @llvm.memmove.p0i8.p0i8.i64(i8* <dest>, i8* <src>,
7187                                                i64 <len>, i32 <align>, i1 <isvolatile>)
7188
7189 Overview:
7190 """""""""
7191
7192 The '``llvm.memmove.*``' intrinsics move a block of memory from the
7193 source location to the destination location. It is similar to the
7194 '``llvm.memcpy``' intrinsic but allows the two memory locations to
7195 overlap.
7196
7197 Note that, unlike the standard libc function, the ``llvm.memmove.*``
7198 intrinsics do not return a value, takes extra alignment/isvolatile
7199 arguments and the pointers can be in specified address spaces.
7200
7201 Arguments:
7202 """"""""""
7203
7204 The first argument is a pointer to the destination, the second is a
7205 pointer to the source. The third argument is an integer argument
7206 specifying the number of bytes to copy, the fourth argument is the
7207 alignment of the source and destination locations, and the fifth is a
7208 boolean indicating a volatile access.
7209
7210 If the call to this intrinsic has an alignment value that is not 0 or 1,
7211 then the caller guarantees that the source and destination pointers are
7212 aligned to that boundary.
7213
7214 If the ``isvolatile`` parameter is ``true``, the ``llvm.memmove`` call
7215 is a :ref:`volatile operation <volatile>`. The detailed access behavior is
7216 not very cleanly specified and it is unwise to depend on it.
7217
7218 Semantics:
7219 """"""""""
7220
7221 The '``llvm.memmove.*``' intrinsics copy a block of memory from the
7222 source location to the destination location, which may overlap. It
7223 copies "len" bytes of memory over. If the argument is known to be
7224 aligned to some boundary, this can be specified as the fourth argument,
7225 otherwise it should be set to 0 or 1 (both meaning no alignment).
7226
7227 '``llvm.memset.*``' Intrinsics
7228 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7229
7230 Syntax:
7231 """""""
7232
7233 This is an overloaded intrinsic. You can use llvm.memset on any integer
7234 bit width and for different address spaces. However, not all targets
7235 support all bit widths.
7236
7237 ::
7238
7239       declare void @llvm.memset.p0i8.i32(i8* <dest>, i8 <val>,
7240                                          i32 <len>, i32 <align>, i1 <isvolatile>)
7241       declare void @llvm.memset.p0i8.i64(i8* <dest>, i8 <val>,
7242                                          i64 <len>, i32 <align>, i1 <isvolatile>)
7243
7244 Overview:
7245 """""""""
7246
7247 The '``llvm.memset.*``' intrinsics fill a block of memory with a
7248 particular byte value.
7249
7250 Note that, unlike the standard libc function, the ``llvm.memset``
7251 intrinsic does not return a value and takes extra alignment/volatile
7252 arguments. Also, the destination can be in an arbitrary address space.
7253
7254 Arguments:
7255 """"""""""
7256
7257 The first argument is a pointer to the destination to fill, the second
7258 is the byte value with which to fill it, the third argument is an
7259 integer argument specifying the number of bytes to fill, and the fourth
7260 argument is the known alignment of the destination location.
7261
7262 If the call to this intrinsic has an alignment value that is not 0 or 1,
7263 then the caller guarantees that the destination pointer is aligned to
7264 that boundary.
7265
7266 If the ``isvolatile`` parameter is ``true``, the ``llvm.memset`` call is
7267 a :ref:`volatile operation <volatile>`. The detailed access behavior is not
7268 very cleanly specified and it is unwise to depend on it.
7269
7270 Semantics:
7271 """"""""""
7272
7273 The '``llvm.memset.*``' intrinsics fill "len" bytes of memory starting
7274 at the destination location. If the argument is known to be aligned to
7275 some boundary, this can be specified as the fourth argument, otherwise
7276 it should be set to 0 or 1 (both meaning no alignment).
7277
7278 '``llvm.sqrt.*``' Intrinsic
7279 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
7280
7281 Syntax:
7282 """""""
7283
7284 This is an overloaded intrinsic. You can use ``llvm.sqrt`` on any
7285 floating point or vector of floating point type. Not all targets support
7286 all types however.
7287
7288 ::
7289
7290       declare float     @llvm.sqrt.f32(float %Val)
7291       declare double    @llvm.sqrt.f64(double %Val)
7292       declare x86_fp80  @llvm.sqrt.f80(x86_fp80 %Val)
7293       declare fp128     @llvm.sqrt.f128(fp128 %Val)
7294       declare ppc_fp128 @llvm.sqrt.ppcf128(ppc_fp128 %Val)
7295
7296 Overview:
7297 """""""""
7298
7299 The '``llvm.sqrt``' intrinsics return the sqrt of the specified operand,
7300 returning the same value as the libm '``sqrt``' functions would. Unlike
7301 ``sqrt`` in libm, however, ``llvm.sqrt`` has undefined behavior for
7302 negative numbers other than -0.0 (which allows for better optimization,
7303 because there is no need to worry about errno being set).
7304 ``llvm.sqrt(-0.0)`` is defined to return -0.0 like IEEE sqrt.
7305
7306 Arguments:
7307 """"""""""
7308
7309 The argument and return value are floating point numbers of the same
7310 type.
7311
7312 Semantics:
7313 """"""""""
7314
7315 This function returns the sqrt of the specified operand if it is a
7316 nonnegative floating point number.
7317
7318 '``llvm.powi.*``' Intrinsic
7319 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
7320
7321 Syntax:
7322 """""""
7323
7324 This is an overloaded intrinsic. You can use ``llvm.powi`` on any
7325 floating point or vector of floating point type. Not all targets support
7326 all types however.
7327
7328 ::
7329
7330       declare float     @llvm.powi.f32(float  %Val, i32 %power)
7331       declare double    @llvm.powi.f64(double %Val, i32 %power)
7332       declare x86_fp80  @llvm.powi.f80(x86_fp80  %Val, i32 %power)
7333       declare fp128     @llvm.powi.f128(fp128 %Val, i32 %power)
7334       declare ppc_fp128 @llvm.powi.ppcf128(ppc_fp128  %Val, i32 %power)
7335
7336 Overview:
7337 """""""""
7338
7339 The '``llvm.powi.*``' intrinsics return the first operand raised to the
7340 specified (positive or negative) power. The order of evaluation of
7341 multiplications is not defined. When a vector of floating point type is
7342 used, the second argument remains a scalar integer value.
7343
7344 Arguments:
7345 """"""""""
7346
7347 The second argument is an integer power, and the first is a value to
7348 raise to that power.
7349
7350 Semantics:
7351 """"""""""
7352
7353 This function returns the first value raised to the second power with an
7354 unspecified sequence of rounding operations.
7355
7356 '``llvm.sin.*``' Intrinsic
7357 ^^^^^^^^^^^^^^^^^^^^^^^^^^
7358
7359 Syntax:
7360 """""""
7361
7362 This is an overloaded intrinsic. You can use ``llvm.sin`` on any
7363 floating point or vector of floating point type. Not all targets support
7364 all types however.
7365
7366 ::
7367
7368       declare float     @llvm.sin.f32(float  %Val)
7369       declare double    @llvm.sin.f64(double %Val)
7370       declare x86_fp80  @llvm.sin.f80(x86_fp80  %Val)
7371       declare fp128     @llvm.sin.f128(fp128 %Val)
7372       declare ppc_fp128 @llvm.sin.ppcf128(ppc_fp128  %Val)
7373
7374 Overview:
7375 """""""""
7376
7377 The '``llvm.sin.*``' intrinsics return the sine of the operand.
7378
7379 Arguments:
7380 """"""""""
7381
7382 The argument and return value are floating point numbers of the same
7383 type.
7384
7385 Semantics:
7386 """"""""""
7387
7388 This function returns the sine of the specified operand, returning the
7389 same values as the libm ``sin`` functions would, and handles error
7390 conditions in the same way.
7391
7392 '``llvm.cos.*``' Intrinsic
7393 ^^^^^^^^^^^^^^^^^^^^^^^^^^
7394
7395 Syntax:
7396 """""""
7397
7398 This is an overloaded intrinsic. You can use ``llvm.cos`` on any
7399 floating point or vector of floating point type. Not all targets support
7400 all types however.
7401
7402 ::
7403
7404       declare float     @llvm.cos.f32(float  %Val)
7405       declare double    @llvm.cos.f64(double %Val)
7406       declare x86_fp80  @llvm.cos.f80(x86_fp80  %Val)
7407       declare fp128     @llvm.cos.f128(fp128 %Val)
7408       declare ppc_fp128 @llvm.cos.ppcf128(ppc_fp128  %Val)
7409
7410 Overview:
7411 """""""""
7412
7413 The '``llvm.cos.*``' intrinsics return the cosine of the operand.
7414
7415 Arguments:
7416 """"""""""
7417
7418 The argument and return value are floating point numbers of the same
7419 type.
7420
7421 Semantics:
7422 """"""""""
7423
7424 This function returns the cosine of the specified operand, returning the
7425 same values as the libm ``cos`` functions would, and handles error
7426 conditions in the same way.
7427
7428 '``llvm.pow.*``' Intrinsic
7429 ^^^^^^^^^^^^^^^^^^^^^^^^^^
7430
7431 Syntax:
7432 """""""
7433
7434 This is an overloaded intrinsic. You can use ``llvm.pow`` on any
7435 floating point or vector of floating point type. Not all targets support
7436 all types however.
7437
7438 ::
7439
7440       declare float     @llvm.pow.f32(float  %Val, float %Power)
7441       declare double    @llvm.pow.f64(double %Val, double %Power)
7442       declare x86_fp80  @llvm.pow.f80(x86_fp80  %Val, x86_fp80 %Power)
7443       declare fp128     @llvm.pow.f128(fp128 %Val, fp128 %Power)
7444       declare ppc_fp128 @llvm.pow.ppcf128(ppc_fp128  %Val, ppc_fp128 Power)
7445
7446 Overview:
7447 """""""""
7448
7449 The '``llvm.pow.*``' intrinsics return the first operand raised to the
7450 specified (positive or negative) power.
7451
7452 Arguments:
7453 """"""""""
7454
7455 The second argument is a floating point power, and the first is a value
7456 to raise to that power.
7457
7458 Semantics:
7459 """"""""""
7460
7461 This function returns the first value raised to the second power,
7462 returning the same values as the libm ``pow`` functions would, and
7463 handles error conditions in the same way.
7464
7465 '``llvm.exp.*``' Intrinsic
7466 ^^^^^^^^^^^^^^^^^^^^^^^^^^
7467
7468 Syntax:
7469 """""""
7470
7471 This is an overloaded intrinsic. You can use ``llvm.exp`` on any
7472 floating point or vector of floating point type. Not all targets support
7473 all types however.
7474
7475 ::
7476
7477       declare float     @llvm.exp.f32(float  %Val)
7478       declare double    @llvm.exp.f64(double %Val)
7479       declare x86_fp80  @llvm.exp.f80(x86_fp80  %Val)
7480       declare fp128     @llvm.exp.f128(fp128 %Val)
7481       declare ppc_fp128 @llvm.exp.ppcf128(ppc_fp128  %Val)
7482
7483 Overview:
7484 """""""""
7485
7486 The '``llvm.exp.*``' intrinsics perform the exp function.
7487
7488 Arguments:
7489 """"""""""
7490
7491 The argument and return value are floating point numbers of the same
7492 type.
7493
7494 Semantics:
7495 """"""""""
7496
7497 This function returns the same values as the libm ``exp`` functions
7498 would, and handles error conditions in the same way.
7499
7500 '``llvm.exp2.*``' Intrinsic
7501 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
7502
7503 Syntax:
7504 """""""
7505
7506 This is an overloaded intrinsic. You can use ``llvm.exp2`` on any
7507 floating point or vector of floating point type. Not all targets support
7508 all types however.
7509
7510 ::
7511
7512       declare float     @llvm.exp2.f32(float  %Val)
7513       declare double    @llvm.exp2.f64(double %Val)
7514       declare x86_fp80  @llvm.exp2.f80(x86_fp80  %Val)
7515       declare fp128     @llvm.exp2.f128(fp128 %Val)
7516       declare ppc_fp128 @llvm.exp2.ppcf128(ppc_fp128  %Val)
7517
7518 Overview:
7519 """""""""
7520
7521 The '``llvm.exp2.*``' intrinsics perform the exp2 function.
7522
7523 Arguments:
7524 """"""""""
7525
7526 The argument and return value are floating point numbers of the same
7527 type.
7528
7529 Semantics:
7530 """"""""""
7531
7532 This function returns the same values as the libm ``exp2`` functions
7533 would, and handles error conditions in the same way.
7534
7535 '``llvm.log.*``' Intrinsic
7536 ^^^^^^^^^^^^^^^^^^^^^^^^^^
7537
7538 Syntax:
7539 """""""
7540
7541 This is an overloaded intrinsic. You can use ``llvm.log`` on any
7542 floating point or vector of floating point type. Not all targets support
7543 all types however.
7544
7545 ::
7546
7547       declare float     @llvm.log.f32(float  %Val)
7548       declare double    @llvm.log.f64(double %Val)
7549       declare x86_fp80  @llvm.log.f80(x86_fp80  %Val)
7550       declare fp128     @llvm.log.f128(fp128 %Val)
7551       declare ppc_fp128 @llvm.log.ppcf128(ppc_fp128  %Val)
7552
7553 Overview:
7554 """""""""
7555
7556 The '``llvm.log.*``' intrinsics perform the log function.
7557
7558 Arguments:
7559 """"""""""
7560
7561 The argument and return value are floating point numbers of the same
7562 type.
7563
7564 Semantics:
7565 """"""""""
7566
7567 This function returns the same values as the libm ``log`` functions
7568 would, and handles error conditions in the same way.
7569
7570 '``llvm.log10.*``' Intrinsic
7571 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7572
7573 Syntax:
7574 """""""
7575
7576 This is an overloaded intrinsic. You can use ``llvm.log10`` on any
7577 floating point or vector of floating point type. Not all targets support
7578 all types however.
7579
7580 ::
7581
7582       declare float     @llvm.log10.f32(float  %Val)
7583       declare double    @llvm.log10.f64(double %Val)
7584       declare x86_fp80  @llvm.log10.f80(x86_fp80  %Val)
7585       declare fp128     @llvm.log10.f128(fp128 %Val)
7586       declare ppc_fp128 @llvm.log10.ppcf128(ppc_fp128  %Val)
7587
7588 Overview:
7589 """""""""
7590
7591 The '``llvm.log10.*``' intrinsics perform the log10 function.
7592
7593 Arguments:
7594 """"""""""
7595
7596 The argument and return value are floating point numbers of the same
7597 type.
7598
7599 Semantics:
7600 """"""""""
7601
7602 This function returns the same values as the libm ``log10`` functions
7603 would, and handles error conditions in the same way.
7604
7605 '``llvm.log2.*``' Intrinsic
7606 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
7607
7608 Syntax:
7609 """""""
7610
7611 This is an overloaded intrinsic. You can use ``llvm.log2`` on any
7612 floating point or vector of floating point type. Not all targets support
7613 all types however.
7614
7615 ::
7616
7617       declare float     @llvm.log2.f32(float  %Val)
7618       declare double    @llvm.log2.f64(double %Val)
7619       declare x86_fp80  @llvm.log2.f80(x86_fp80  %Val)
7620       declare fp128     @llvm.log2.f128(fp128 %Val)
7621       declare ppc_fp128 @llvm.log2.ppcf128(ppc_fp128  %Val)
7622
7623 Overview:
7624 """""""""
7625
7626 The '``llvm.log2.*``' intrinsics perform the log2 function.
7627
7628 Arguments:
7629 """"""""""
7630
7631 The argument and return value are floating point numbers of the same
7632 type.
7633
7634 Semantics:
7635 """"""""""
7636
7637 This function returns the same values as the libm ``log2`` functions
7638 would, and handles error conditions in the same way.
7639
7640 '``llvm.fma.*``' Intrinsic
7641 ^^^^^^^^^^^^^^^^^^^^^^^^^^
7642
7643 Syntax:
7644 """""""
7645
7646 This is an overloaded intrinsic. You can use ``llvm.fma`` on any
7647 floating point or vector of floating point type. Not all targets support
7648 all types however.
7649
7650 ::
7651
7652       declare float     @llvm.fma.f32(float  %a, float  %b, float  %c)
7653       declare double    @llvm.fma.f64(double %a, double %b, double %c)
7654       declare x86_fp80  @llvm.fma.f80(x86_fp80 %a, x86_fp80 %b, x86_fp80 %c)
7655       declare fp128     @llvm.fma.f128(fp128 %a, fp128 %b, fp128 %c)
7656       declare ppc_fp128 @llvm.fma.ppcf128(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c)
7657
7658 Overview:
7659 """""""""
7660
7661 The '``llvm.fma.*``' intrinsics perform the fused multiply-add
7662 operation.
7663
7664 Arguments:
7665 """"""""""
7666
7667 The argument and return value are floating point numbers of the same
7668 type.
7669
7670 Semantics:
7671 """"""""""
7672
7673 This function returns the same values as the libm ``fma`` functions
7674 would, and does not set errno.
7675
7676 '``llvm.fabs.*``' Intrinsic
7677 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
7678
7679 Syntax:
7680 """""""
7681
7682 This is an overloaded intrinsic. You can use ``llvm.fabs`` on any
7683 floating point or vector of floating point type. Not all targets support
7684 all types however.
7685
7686 ::
7687
7688       declare float     @llvm.fabs.f32(float  %Val)
7689       declare double    @llvm.fabs.f64(double %Val)
7690       declare x86_fp80  @llvm.fabs.f80(x86_fp80  %Val)
7691       declare fp128     @llvm.fabs.f128(fp128 %Val)
7692       declare ppc_fp128 @llvm.fabs.ppcf128(ppc_fp128  %Val)
7693
7694 Overview:
7695 """""""""
7696
7697 The '``llvm.fabs.*``' intrinsics return the absolute value of the
7698 operand.
7699
7700 Arguments:
7701 """"""""""
7702
7703 The argument and return value are floating point numbers of the same
7704 type.
7705
7706 Semantics:
7707 """"""""""
7708
7709 This function returns the same values as the libm ``fabs`` functions
7710 would, and handles error conditions in the same way.
7711
7712 '``llvm.copysign.*``' Intrinsic
7713 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7714
7715 Syntax:
7716 """""""
7717
7718 This is an overloaded intrinsic. You can use ``llvm.copysign`` on any
7719 floating point or vector of floating point type. Not all targets support
7720 all types however.
7721
7722 ::
7723
7724       declare float     @llvm.copysign.f32(float  %Mag, float  %Sgn)
7725       declare double    @llvm.copysign.f64(double %Mag, double %Sgn)
7726       declare x86_fp80  @llvm.copysign.f80(x86_fp80  %Mag, x86_fp80  %Sgn)
7727       declare fp128     @llvm.copysign.f128(fp128 %Mag, fp128 %Sgn)
7728       declare ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128  %Mag, ppc_fp128  %Sgn)
7729
7730 Overview:
7731 """""""""
7732
7733 The '``llvm.copysign.*``' intrinsics return a value with the magnitude of the
7734 first operand and the sign of the second operand.
7735
7736 Arguments:
7737 """"""""""
7738
7739 The arguments and return value are floating point numbers of the same
7740 type.
7741
7742 Semantics:
7743 """"""""""
7744
7745 This function returns the same values as the libm ``copysign``
7746 functions would, and handles error conditions in the same way.
7747
7748 '``llvm.floor.*``' Intrinsic
7749 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7750
7751 Syntax:
7752 """""""
7753
7754 This is an overloaded intrinsic. You can use ``llvm.floor`` on any
7755 floating point or vector of floating point type. Not all targets support
7756 all types however.
7757
7758 ::
7759
7760       declare float     @llvm.floor.f32(float  %Val)
7761       declare double    @llvm.floor.f64(double %Val)
7762       declare x86_fp80  @llvm.floor.f80(x86_fp80  %Val)
7763       declare fp128     @llvm.floor.f128(fp128 %Val)
7764       declare ppc_fp128 @llvm.floor.ppcf128(ppc_fp128  %Val)
7765
7766 Overview:
7767 """""""""
7768
7769 The '``llvm.floor.*``' intrinsics return the floor of the operand.
7770
7771 Arguments:
7772 """"""""""
7773
7774 The argument and return value are floating point numbers of the same
7775 type.
7776
7777 Semantics:
7778 """"""""""
7779
7780 This function returns the same values as the libm ``floor`` functions
7781 would, and handles error conditions in the same way.
7782
7783 '``llvm.ceil.*``' Intrinsic
7784 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
7785
7786 Syntax:
7787 """""""
7788
7789 This is an overloaded intrinsic. You can use ``llvm.ceil`` on any
7790 floating point or vector of floating point type. Not all targets support
7791 all types however.
7792
7793 ::
7794
7795       declare float     @llvm.ceil.f32(float  %Val)
7796       declare double    @llvm.ceil.f64(double %Val)
7797       declare x86_fp80  @llvm.ceil.f80(x86_fp80  %Val)
7798       declare fp128     @llvm.ceil.f128(fp128 %Val)
7799       declare ppc_fp128 @llvm.ceil.ppcf128(ppc_fp128  %Val)
7800
7801 Overview:
7802 """""""""
7803
7804 The '``llvm.ceil.*``' intrinsics return the ceiling of the operand.
7805
7806 Arguments:
7807 """"""""""
7808
7809 The argument and return value are floating point numbers of the same
7810 type.
7811
7812 Semantics:
7813 """"""""""
7814
7815 This function returns the same values as the libm ``ceil`` functions
7816 would, and handles error conditions in the same way.
7817
7818 '``llvm.trunc.*``' Intrinsic
7819 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7820
7821 Syntax:
7822 """""""
7823
7824 This is an overloaded intrinsic. You can use ``llvm.trunc`` on any
7825 floating point or vector of floating point type. Not all targets support
7826 all types however.
7827
7828 ::
7829
7830       declare float     @llvm.trunc.f32(float  %Val)
7831       declare double    @llvm.trunc.f64(double %Val)
7832       declare x86_fp80  @llvm.trunc.f80(x86_fp80  %Val)
7833       declare fp128     @llvm.trunc.f128(fp128 %Val)
7834       declare ppc_fp128 @llvm.trunc.ppcf128(ppc_fp128  %Val)
7835
7836 Overview:
7837 """""""""
7838
7839 The '``llvm.trunc.*``' intrinsics returns the operand rounded to the
7840 nearest integer not larger in magnitude than the operand.
7841
7842 Arguments:
7843 """"""""""
7844
7845 The argument and return value are floating point numbers of the same
7846 type.
7847
7848 Semantics:
7849 """"""""""
7850
7851 This function returns the same values as the libm ``trunc`` functions
7852 would, and handles error conditions in the same way.
7853
7854 '``llvm.rint.*``' Intrinsic
7855 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
7856
7857 Syntax:
7858 """""""
7859
7860 This is an overloaded intrinsic. You can use ``llvm.rint`` on any
7861 floating point or vector of floating point type. Not all targets support
7862 all types however.
7863
7864 ::
7865
7866       declare float     @llvm.rint.f32(float  %Val)
7867       declare double    @llvm.rint.f64(double %Val)
7868       declare x86_fp80  @llvm.rint.f80(x86_fp80  %Val)
7869       declare fp128     @llvm.rint.f128(fp128 %Val)
7870       declare ppc_fp128 @llvm.rint.ppcf128(ppc_fp128  %Val)
7871
7872 Overview:
7873 """""""""
7874
7875 The '``llvm.rint.*``' intrinsics returns the operand rounded to the
7876 nearest integer. It may raise an inexact floating-point exception if the
7877 operand isn't an integer.
7878
7879 Arguments:
7880 """"""""""
7881
7882 The argument and return value are floating point numbers of the same
7883 type.
7884
7885 Semantics:
7886 """"""""""
7887
7888 This function returns the same values as the libm ``rint`` functions
7889 would, and handles error conditions in the same way.
7890
7891 '``llvm.nearbyint.*``' Intrinsic
7892 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7893
7894 Syntax:
7895 """""""
7896
7897 This is an overloaded intrinsic. You can use ``llvm.nearbyint`` on any
7898 floating point or vector of floating point type. Not all targets support
7899 all types however.
7900
7901 ::
7902
7903       declare float     @llvm.nearbyint.f32(float  %Val)
7904       declare double    @llvm.nearbyint.f64(double %Val)
7905       declare x86_fp80  @llvm.nearbyint.f80(x86_fp80  %Val)
7906       declare fp128     @llvm.nearbyint.f128(fp128 %Val)
7907       declare ppc_fp128 @llvm.nearbyint.ppcf128(ppc_fp128  %Val)
7908
7909 Overview:
7910 """""""""
7911
7912 The '``llvm.nearbyint.*``' intrinsics returns the operand rounded to the
7913 nearest integer.
7914
7915 Arguments:
7916 """"""""""
7917
7918 The argument and return value are floating point numbers of the same
7919 type.
7920
7921 Semantics:
7922 """"""""""
7923
7924 This function returns the same values as the libm ``nearbyint``
7925 functions would, and handles error conditions in the same way.
7926
7927 '``llvm.round.*``' Intrinsic
7928 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7929
7930 Syntax:
7931 """""""
7932
7933 This is an overloaded intrinsic. You can use ``llvm.round`` on any
7934 floating point or vector of floating point type. Not all targets support
7935 all types however.
7936
7937 ::
7938
7939       declare float     @llvm.round.f32(float  %Val)
7940       declare double    @llvm.round.f64(double %Val)
7941       declare x86_fp80  @llvm.round.f80(x86_fp80  %Val)
7942       declare fp128     @llvm.round.f128(fp128 %Val)
7943       declare ppc_fp128 @llvm.round.ppcf128(ppc_fp128  %Val)
7944
7945 Overview:
7946 """""""""
7947
7948 The '``llvm.round.*``' intrinsics returns the operand rounded to the
7949 nearest integer.
7950
7951 Arguments:
7952 """"""""""
7953
7954 The argument and return value are floating point numbers of the same
7955 type.
7956
7957 Semantics:
7958 """"""""""
7959
7960 This function returns the same values as the libm ``round``
7961 functions would, and handles error conditions in the same way.
7962
7963 Bit Manipulation Intrinsics
7964 ---------------------------
7965
7966 LLVM provides intrinsics for a few important bit manipulation
7967 operations. These allow efficient code generation for some algorithms.
7968
7969 '``llvm.bswap.*``' Intrinsics
7970 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7971
7972 Syntax:
7973 """""""
7974
7975 This is an overloaded intrinsic function. You can use bswap on any
7976 integer type that is an even number of bytes (i.e. BitWidth % 16 == 0).
7977
7978 ::
7979
7980       declare i16 @llvm.bswap.i16(i16 <id>)
7981       declare i32 @llvm.bswap.i32(i32 <id>)
7982       declare i64 @llvm.bswap.i64(i64 <id>)
7983
7984 Overview:
7985 """""""""
7986
7987 The '``llvm.bswap``' family of intrinsics is used to byte swap integer
7988 values with an even number of bytes (positive multiple of 16 bits).
7989 These are useful for performing operations on data that is not in the
7990 target's native byte order.
7991
7992 Semantics:
7993 """"""""""
7994
7995 The ``llvm.bswap.i16`` intrinsic returns an i16 value that has the high
7996 and low byte of the input i16 swapped. Similarly, the ``llvm.bswap.i32``
7997 intrinsic returns an i32 value that has the four bytes of the input i32
7998 swapped, so that if the input bytes are numbered 0, 1, 2, 3 then the
7999 returned i32 will have its bytes in 3, 2, 1, 0 order. The
8000 ``llvm.bswap.i48``, ``llvm.bswap.i64`` and other intrinsics extend this
8001 concept to additional even-byte lengths (6 bytes, 8 bytes and more,
8002 respectively).
8003
8004 '``llvm.ctpop.*``' Intrinsic
8005 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8006
8007 Syntax:
8008 """""""
8009
8010 This is an overloaded intrinsic. You can use llvm.ctpop on any integer
8011 bit width, or on any vector with integer elements. Not all targets
8012 support all bit widths or vector types, however.
8013
8014 ::
8015
8016       declare i8 @llvm.ctpop.i8(i8  <src>)
8017       declare i16 @llvm.ctpop.i16(i16 <src>)
8018       declare i32 @llvm.ctpop.i32(i32 <src>)
8019       declare i64 @llvm.ctpop.i64(i64 <src>)
8020       declare i256 @llvm.ctpop.i256(i256 <src>)
8021       declare <2 x i32> @llvm.ctpop.v2i32(<2 x i32> <src>)
8022
8023 Overview:
8024 """""""""
8025
8026 The '``llvm.ctpop``' family of intrinsics counts the number of bits set
8027 in a value.
8028
8029 Arguments:
8030 """"""""""
8031
8032 The only argument is the value to be counted. The argument may be of any
8033 integer type, or a vector with integer elements. The return type must
8034 match the argument type.
8035
8036 Semantics:
8037 """"""""""
8038
8039 The '``llvm.ctpop``' intrinsic counts the 1's in a variable, or within
8040 each element of a vector.
8041
8042 '``llvm.ctlz.*``' Intrinsic
8043 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
8044
8045 Syntax:
8046 """""""
8047
8048 This is an overloaded intrinsic. You can use ``llvm.ctlz`` on any
8049 integer bit width, or any vector whose elements are integers. Not all
8050 targets support all bit widths or vector types, however.
8051
8052 ::
8053
8054       declare i8   @llvm.ctlz.i8  (i8   <src>, i1 <is_zero_undef>)
8055       declare i16  @llvm.ctlz.i16 (i16  <src>, i1 <is_zero_undef>)
8056       declare i32  @llvm.ctlz.i32 (i32  <src>, i1 <is_zero_undef>)
8057       declare i64  @llvm.ctlz.i64 (i64  <src>, i1 <is_zero_undef>)
8058       declare i256 @llvm.ctlz.i256(i256 <src>, i1 <is_zero_undef>)
8059       declase <2 x i32> @llvm.ctlz.v2i32(<2 x i32> <src>, i1 <is_zero_undef>)
8060
8061 Overview:
8062 """""""""
8063
8064 The '``llvm.ctlz``' family of intrinsic functions counts the number of
8065 leading zeros in a variable.
8066
8067 Arguments:
8068 """"""""""
8069
8070 The first argument is the value to be counted. This argument may be of
8071 any integer type, or a vectory with integer element type. The return
8072 type must match the first argument type.
8073
8074 The second argument must be a constant and is a flag to indicate whether
8075 the intrinsic should ensure that a zero as the first argument produces a
8076 defined result. Historically some architectures did not provide a
8077 defined result for zero values as efficiently, and many algorithms are
8078 now predicated on avoiding zero-value inputs.
8079
8080 Semantics:
8081 """"""""""
8082
8083 The '``llvm.ctlz``' intrinsic counts the leading (most significant)
8084 zeros in a variable, or within each element of the vector. If
8085 ``src == 0`` then the result is the size in bits of the type of ``src``
8086 if ``is_zero_undef == 0`` and ``undef`` otherwise. For example,
8087 ``llvm.ctlz(i32 2) = 30``.
8088
8089 '``llvm.cttz.*``' Intrinsic
8090 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
8091
8092 Syntax:
8093 """""""
8094
8095 This is an overloaded intrinsic. You can use ``llvm.cttz`` on any
8096 integer bit width, or any vector of integer elements. Not all targets
8097 support all bit widths or vector types, however.
8098
8099 ::
8100
8101       declare i8   @llvm.cttz.i8  (i8   <src>, i1 <is_zero_undef>)
8102       declare i16  @llvm.cttz.i16 (i16  <src>, i1 <is_zero_undef>)
8103       declare i32  @llvm.cttz.i32 (i32  <src>, i1 <is_zero_undef>)
8104       declare i64  @llvm.cttz.i64 (i64  <src>, i1 <is_zero_undef>)
8105       declare i256 @llvm.cttz.i256(i256 <src>, i1 <is_zero_undef>)
8106       declase <2 x i32> @llvm.cttz.v2i32(<2 x i32> <src>, i1 <is_zero_undef>)
8107
8108 Overview:
8109 """""""""
8110
8111 The '``llvm.cttz``' family of intrinsic functions counts the number of
8112 trailing zeros.
8113
8114 Arguments:
8115 """"""""""
8116
8117 The first argument is the value to be counted. This argument may be of
8118 any integer type, or a vectory with integer element type. The return
8119 type must match the first argument type.
8120
8121 The second argument must be a constant and is a flag to indicate whether
8122 the intrinsic should ensure that a zero as the first argument produces a
8123 defined result. Historically some architectures did not provide a
8124 defined result for zero values as efficiently, and many algorithms are
8125 now predicated on avoiding zero-value inputs.
8126
8127 Semantics:
8128 """"""""""
8129
8130 The '``llvm.cttz``' intrinsic counts the trailing (least significant)
8131 zeros in a variable, or within each element of a vector. If ``src == 0``
8132 then the result is the size in bits of the type of ``src`` if
8133 ``is_zero_undef == 0`` and ``undef`` otherwise. For example,
8134 ``llvm.cttz(2) = 1``.
8135
8136 Arithmetic with Overflow Intrinsics
8137 -----------------------------------
8138
8139 LLVM provides intrinsics for some arithmetic with overflow operations.
8140
8141 '``llvm.sadd.with.overflow.*``' Intrinsics
8142 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8143
8144 Syntax:
8145 """""""
8146
8147 This is an overloaded intrinsic. You can use ``llvm.sadd.with.overflow``
8148 on any integer bit width.
8149
8150 ::
8151
8152       declare {i16, i1} @llvm.sadd.with.overflow.i16(i16 %a, i16 %b)
8153       declare {i32, i1} @llvm.sadd.with.overflow.i32(i32 %a, i32 %b)
8154       declare {i64, i1} @llvm.sadd.with.overflow.i64(i64 %a, i64 %b)
8155
8156 Overview:
8157 """""""""
8158
8159 The '``llvm.sadd.with.overflow``' family of intrinsic functions perform
8160 a signed addition of the two arguments, and indicate whether an overflow
8161 occurred during the signed summation.
8162
8163 Arguments:
8164 """"""""""
8165
8166 The arguments (%a and %b) and the first element of the result structure
8167 may be of integer types of any bit width, but they must have the same
8168 bit width. The second element of the result structure must be of type
8169 ``i1``. ``%a`` and ``%b`` are the two values that will undergo signed
8170 addition.
8171
8172 Semantics:
8173 """"""""""
8174
8175 The '``llvm.sadd.with.overflow``' family of intrinsic functions perform
8176 a signed addition of the two variables. They return a structure --- the
8177 first element of which is the signed summation, and the second element
8178 of which is a bit specifying if the signed summation resulted in an
8179 overflow.
8180
8181 Examples:
8182 """""""""
8183
8184 .. code-block:: llvm
8185
8186       %res = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 %a, i32 %b)
8187       %sum = extractvalue {i32, i1} %res, 0
8188       %obit = extractvalue {i32, i1} %res, 1
8189       br i1 %obit, label %overflow, label %normal
8190
8191 '``llvm.uadd.with.overflow.*``' Intrinsics
8192 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8193
8194 Syntax:
8195 """""""
8196
8197 This is an overloaded intrinsic. You can use ``llvm.uadd.with.overflow``
8198 on any integer bit width.
8199
8200 ::
8201
8202       declare {i16, i1} @llvm.uadd.with.overflow.i16(i16 %a, i16 %b)
8203       declare {i32, i1} @llvm.uadd.with.overflow.i32(i32 %a, i32 %b)
8204       declare {i64, i1} @llvm.uadd.with.overflow.i64(i64 %a, i64 %b)
8205
8206 Overview:
8207 """""""""
8208
8209 The '``llvm.uadd.with.overflow``' family of intrinsic functions perform
8210 an unsigned addition of the two arguments, and indicate whether a carry
8211 occurred during the unsigned summation.
8212
8213 Arguments:
8214 """"""""""
8215
8216 The arguments (%a and %b) and the first element of the result structure
8217 may be of integer types of any bit width, but they must have the same
8218 bit width. The second element of the result structure must be of type
8219 ``i1``. ``%a`` and ``%b`` are the two values that will undergo unsigned
8220 addition.
8221
8222 Semantics:
8223 """"""""""
8224
8225 The '``llvm.uadd.with.overflow``' family of intrinsic functions perform
8226 an unsigned addition of the two arguments. They return a structure --- the
8227 first element of which is the sum, and the second element of which is a
8228 bit specifying if the unsigned summation resulted in a carry.
8229
8230 Examples:
8231 """""""""
8232
8233 .. code-block:: llvm
8234
8235       %res = call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %a, i32 %b)
8236       %sum = extractvalue {i32, i1} %res, 0
8237       %obit = extractvalue {i32, i1} %res, 1
8238       br i1 %obit, label %carry, label %normal
8239
8240 '``llvm.ssub.with.overflow.*``' Intrinsics
8241 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8242
8243 Syntax:
8244 """""""
8245
8246 This is an overloaded intrinsic. You can use ``llvm.ssub.with.overflow``
8247 on any integer bit width.
8248
8249 ::
8250
8251       declare {i16, i1} @llvm.ssub.with.overflow.i16(i16 %a, i16 %b)
8252       declare {i32, i1} @llvm.ssub.with.overflow.i32(i32 %a, i32 %b)
8253       declare {i64, i1} @llvm.ssub.with.overflow.i64(i64 %a, i64 %b)
8254
8255 Overview:
8256 """""""""
8257
8258 The '``llvm.ssub.with.overflow``' family of intrinsic functions perform
8259 a signed subtraction of the two arguments, and indicate whether an
8260 overflow occurred during the signed subtraction.
8261
8262 Arguments:
8263 """"""""""
8264
8265 The arguments (%a and %b) and the first element of the result structure
8266 may be of integer types of any bit width, but they must have the same
8267 bit width. The second element of the result structure must be of type
8268 ``i1``. ``%a`` and ``%b`` are the two values that will undergo signed
8269 subtraction.
8270
8271 Semantics:
8272 """"""""""
8273
8274 The '``llvm.ssub.with.overflow``' family of intrinsic functions perform
8275 a signed subtraction of the two arguments. They return a structure --- the
8276 first element of which is the subtraction, and the second element of
8277 which is a bit specifying if the signed subtraction resulted in an
8278 overflow.
8279
8280 Examples:
8281 """""""""
8282
8283 .. code-block:: llvm
8284
8285       %res = call {i32, i1} @llvm.ssub.with.overflow.i32(i32 %a, i32 %b)
8286       %sum = extractvalue {i32, i1} %res, 0
8287       %obit = extractvalue {i32, i1} %res, 1
8288       br i1 %obit, label %overflow, label %normal
8289
8290 '``llvm.usub.with.overflow.*``' Intrinsics
8291 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8292
8293 Syntax:
8294 """""""
8295
8296 This is an overloaded intrinsic. You can use ``llvm.usub.with.overflow``
8297 on any integer bit width.
8298
8299 ::
8300
8301       declare {i16, i1} @llvm.usub.with.overflow.i16(i16 %a, i16 %b)
8302       declare {i32, i1} @llvm.usub.with.overflow.i32(i32 %a, i32 %b)
8303       declare {i64, i1} @llvm.usub.with.overflow.i64(i64 %a, i64 %b)
8304
8305 Overview:
8306 """""""""
8307
8308 The '``llvm.usub.with.overflow``' family of intrinsic functions perform
8309 an unsigned subtraction of the two arguments, and indicate whether an
8310 overflow occurred during the unsigned subtraction.
8311
8312 Arguments:
8313 """"""""""
8314
8315 The arguments (%a and %b) and the first element of the result structure
8316 may be of integer types of any bit width, but they must have the same
8317 bit width. The second element of the result structure must be of type
8318 ``i1``. ``%a`` and ``%b`` are the two values that will undergo unsigned
8319 subtraction.
8320
8321 Semantics:
8322 """"""""""
8323
8324 The '``llvm.usub.with.overflow``' family of intrinsic functions perform
8325 an unsigned subtraction of the two arguments. They return a structure ---
8326 the first element of which is the subtraction, and the second element of
8327 which is a bit specifying if the unsigned subtraction resulted in an
8328 overflow.
8329
8330 Examples:
8331 """""""""
8332
8333 .. code-block:: llvm
8334
8335       %res = call {i32, i1} @llvm.usub.with.overflow.i32(i32 %a, i32 %b)
8336       %sum = extractvalue {i32, i1} %res, 0
8337       %obit = extractvalue {i32, i1} %res, 1
8338       br i1 %obit, label %overflow, label %normal
8339
8340 '``llvm.smul.with.overflow.*``' Intrinsics
8341 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8342
8343 Syntax:
8344 """""""
8345
8346 This is an overloaded intrinsic. You can use ``llvm.smul.with.overflow``
8347 on any integer bit width.
8348
8349 ::
8350
8351       declare {i16, i1} @llvm.smul.with.overflow.i16(i16 %a, i16 %b)
8352       declare {i32, i1} @llvm.smul.with.overflow.i32(i32 %a, i32 %b)
8353       declare {i64, i1} @llvm.smul.with.overflow.i64(i64 %a, i64 %b)
8354
8355 Overview:
8356 """""""""
8357
8358 The '``llvm.smul.with.overflow``' family of intrinsic functions perform
8359 a signed multiplication of the two arguments, and indicate whether an
8360 overflow occurred during the signed multiplication.
8361
8362 Arguments:
8363 """"""""""
8364
8365 The arguments (%a and %b) and the first element of the result structure
8366 may be of integer types of any bit width, but they must have the same
8367 bit width. The second element of the result structure must be of type
8368 ``i1``. ``%a`` and ``%b`` are the two values that will undergo signed
8369 multiplication.
8370
8371 Semantics:
8372 """"""""""
8373
8374 The '``llvm.smul.with.overflow``' family of intrinsic functions perform
8375 a signed multiplication of the two arguments. They return a structure ---
8376 the first element of which is the multiplication, and the second element
8377 of which is a bit specifying if the signed multiplication resulted in an
8378 overflow.
8379
8380 Examples:
8381 """""""""
8382
8383 .. code-block:: llvm
8384
8385       %res = call {i32, i1} @llvm.smul.with.overflow.i32(i32 %a, i32 %b)
8386       %sum = extractvalue {i32, i1} %res, 0
8387       %obit = extractvalue {i32, i1} %res, 1
8388       br i1 %obit, label %overflow, label %normal
8389
8390 '``llvm.umul.with.overflow.*``' Intrinsics
8391 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8392
8393 Syntax:
8394 """""""
8395
8396 This is an overloaded intrinsic. You can use ``llvm.umul.with.overflow``
8397 on any integer bit width.
8398
8399 ::
8400
8401       declare {i16, i1} @llvm.umul.with.overflow.i16(i16 %a, i16 %b)
8402       declare {i32, i1} @llvm.umul.with.overflow.i32(i32 %a, i32 %b)
8403       declare {i64, i1} @llvm.umul.with.overflow.i64(i64 %a, i64 %b)
8404
8405 Overview:
8406 """""""""
8407
8408 The '``llvm.umul.with.overflow``' family of intrinsic functions perform
8409 a unsigned multiplication of the two arguments, and indicate whether an
8410 overflow occurred during the unsigned multiplication.
8411
8412 Arguments:
8413 """"""""""
8414
8415 The arguments (%a and %b) and the first element of the result structure
8416 may be of integer types of any bit width, but they must have the same
8417 bit width. The second element of the result structure must be of type
8418 ``i1``. ``%a`` and ``%b`` are the two values that will undergo unsigned
8419 multiplication.
8420
8421 Semantics:
8422 """"""""""
8423
8424 The '``llvm.umul.with.overflow``' family of intrinsic functions perform
8425 an unsigned multiplication of the two arguments. They return a structure ---
8426 the first element of which is the multiplication, and the second
8427 element of which is a bit specifying if the unsigned multiplication
8428 resulted in an overflow.
8429
8430 Examples:
8431 """""""""
8432
8433 .. code-block:: llvm
8434
8435       %res = call {i32, i1} @llvm.umul.with.overflow.i32(i32 %a, i32 %b)
8436       %sum = extractvalue {i32, i1} %res, 0
8437       %obit = extractvalue {i32, i1} %res, 1
8438       br i1 %obit, label %overflow, label %normal
8439
8440 Specialised Arithmetic Intrinsics
8441 ---------------------------------
8442
8443 '``llvm.fmuladd.*``' Intrinsic
8444 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8445
8446 Syntax:
8447 """""""
8448
8449 ::
8450
8451       declare float @llvm.fmuladd.f32(float %a, float %b, float %c)
8452       declare double @llvm.fmuladd.f64(double %a, double %b, double %c)
8453
8454 Overview:
8455 """""""""
8456
8457 The '``llvm.fmuladd.*``' intrinsic functions represent multiply-add
8458 expressions that can be fused if the code generator determines that (a) the
8459 target instruction set has support for a fused operation, and (b) that the
8460 fused operation is more efficient than the equivalent, separate pair of mul
8461 and add instructions.
8462
8463 Arguments:
8464 """"""""""
8465
8466 The '``llvm.fmuladd.*``' intrinsics each take three arguments: two
8467 multiplicands, a and b, and an addend c.
8468
8469 Semantics:
8470 """"""""""
8471
8472 The expression:
8473
8474 ::
8475
8476       %0 = call float @llvm.fmuladd.f32(%a, %b, %c)
8477
8478 is equivalent to the expression a \* b + c, except that rounding will
8479 not be performed between the multiplication and addition steps if the
8480 code generator fuses the operations. Fusion is not guaranteed, even if
8481 the target platform supports it. If a fused multiply-add is required the
8482 corresponding llvm.fma.\* intrinsic function should be used
8483 instead. This never sets errno, just as '``llvm.fma.*``'.
8484
8485 Examples:
8486 """""""""
8487
8488 .. code-block:: llvm
8489
8490       %r2 = call float @llvm.fmuladd.f32(float %a, float %b, float %c) ; yields {float}:r2 = (a * b) + c
8491
8492 Half Precision Floating Point Intrinsics
8493 ----------------------------------------
8494
8495 For most target platforms, half precision floating point is a
8496 storage-only format. This means that it is a dense encoding (in memory)
8497 but does not support computation in the format.
8498
8499 This means that code must first load the half-precision floating point
8500 value as an i16, then convert it to float with
8501 :ref:`llvm.convert.from.fp16 <int_convert_from_fp16>`. Computation can
8502 then be performed on the float value (including extending to double
8503 etc). To store the value back to memory, it is first converted to float
8504 if needed, then converted to i16 with
8505 :ref:`llvm.convert.to.fp16 <int_convert_to_fp16>`, then storing as an
8506 i16 value.
8507
8508 .. _int_convert_to_fp16:
8509
8510 '``llvm.convert.to.fp16``' Intrinsic
8511 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8512
8513 Syntax:
8514 """""""
8515
8516 ::
8517
8518       declare i16 @llvm.convert.to.fp16(f32 %a)
8519
8520 Overview:
8521 """""""""
8522
8523 The '``llvm.convert.to.fp16``' intrinsic function performs a conversion
8524 from single precision floating point format to half precision floating
8525 point format.
8526
8527 Arguments:
8528 """"""""""
8529
8530 The intrinsic function contains single argument - the value to be
8531 converted.
8532
8533 Semantics:
8534 """"""""""
8535
8536 The '``llvm.convert.to.fp16``' intrinsic function performs a conversion
8537 from single precision floating point format to half precision floating
8538 point format. The return value is an ``i16`` which contains the
8539 converted number.
8540
8541 Examples:
8542 """""""""
8543
8544 .. code-block:: llvm
8545
8546       %res = call i16 @llvm.convert.to.fp16(f32 %a)
8547       store i16 %res, i16* @x, align 2
8548
8549 .. _int_convert_from_fp16:
8550
8551 '``llvm.convert.from.fp16``' Intrinsic
8552 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8553
8554 Syntax:
8555 """""""
8556
8557 ::
8558
8559       declare f32 @llvm.convert.from.fp16(i16 %a)
8560
8561 Overview:
8562 """""""""
8563
8564 The '``llvm.convert.from.fp16``' intrinsic function performs a
8565 conversion from half precision floating point format to single precision
8566 floating point format.
8567
8568 Arguments:
8569 """"""""""
8570
8571 The intrinsic function contains single argument - the value to be
8572 converted.
8573
8574 Semantics:
8575 """"""""""
8576
8577 The '``llvm.convert.from.fp16``' intrinsic function performs a
8578 conversion from half single precision floating point format to single
8579 precision floating point format. The input half-float value is
8580 represented by an ``i16`` value.
8581
8582 Examples:
8583 """""""""
8584
8585 .. code-block:: llvm
8586
8587       %a = load i16* @x, align 2
8588       %res = call f32 @llvm.convert.from.fp16(i16 %a)
8589
8590 Debugger Intrinsics
8591 -------------------
8592
8593 The LLVM debugger intrinsics (which all start with ``llvm.dbg.``
8594 prefix), are described in the `LLVM Source Level
8595 Debugging <SourceLevelDebugging.html#format_common_intrinsics>`_
8596 document.
8597
8598 Exception Handling Intrinsics
8599 -----------------------------
8600
8601 The LLVM exception handling intrinsics (which all start with
8602 ``llvm.eh.`` prefix), are described in the `LLVM Exception
8603 Handling <ExceptionHandling.html#format_common_intrinsics>`_ document.
8604
8605 .. _int_trampoline:
8606
8607 Trampoline Intrinsics
8608 ---------------------
8609
8610 These intrinsics make it possible to excise one parameter, marked with
8611 the :ref:`nest <nest>` attribute, from a function. The result is a
8612 callable function pointer lacking the nest parameter - the caller does
8613 not need to provide a value for it. Instead, the value to use is stored
8614 in advance in a "trampoline", a block of memory usually allocated on the
8615 stack, which also contains code to splice the nest value into the
8616 argument list. This is used to implement the GCC nested function address
8617 extension.
8618
8619 For example, if the function is ``i32 f(i8* nest %c, i32 %x, i32 %y)``
8620 then the resulting function pointer has signature ``i32 (i32, i32)*``.
8621 It can be created as follows:
8622
8623 .. code-block:: llvm
8624
8625       %tramp = alloca [10 x i8], align 4 ; size and alignment only correct for X86
8626       %tramp1 = getelementptr [10 x i8]* %tramp, i32 0, i32 0
8627       call i8* @llvm.init.trampoline(i8* %tramp1, i8* bitcast (i32 (i8*, i32, i32)* @f to i8*), i8* %nval)
8628       %p = call i8* @llvm.adjust.trampoline(i8* %tramp1)
8629       %fp = bitcast i8* %p to i32 (i32, i32)*
8630
8631 The call ``%val = call i32 %fp(i32 %x, i32 %y)`` is then equivalent to
8632 ``%val = call i32 %f(i8* %nval, i32 %x, i32 %y)``.
8633
8634 .. _int_it:
8635
8636 '``llvm.init.trampoline``' Intrinsic
8637 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8638
8639 Syntax:
8640 """""""
8641
8642 ::
8643
8644       declare void @llvm.init.trampoline(i8* <tramp>, i8* <func>, i8* <nval>)
8645
8646 Overview:
8647 """""""""
8648
8649 This fills the memory pointed to by ``tramp`` with executable code,
8650 turning it into a trampoline.
8651
8652 Arguments:
8653 """"""""""
8654
8655 The ``llvm.init.trampoline`` intrinsic takes three arguments, all
8656 pointers. The ``tramp`` argument must point to a sufficiently large and
8657 sufficiently aligned block of memory; this memory is written to by the
8658 intrinsic. Note that the size and the alignment are target-specific -
8659 LLVM currently provides no portable way of determining them, so a
8660 front-end that generates this intrinsic needs to have some
8661 target-specific knowledge. The ``func`` argument must hold a function
8662 bitcast to an ``i8*``.
8663
8664 Semantics:
8665 """"""""""
8666
8667 The block of memory pointed to by ``tramp`` is filled with target
8668 dependent code, turning it into a function. Then ``tramp`` needs to be
8669 passed to :ref:`llvm.adjust.trampoline <int_at>` to get a pointer which can
8670 be :ref:`bitcast (to a new function) and called <int_trampoline>`. The new
8671 function's signature is the same as that of ``func`` with any arguments
8672 marked with the ``nest`` attribute removed. At most one such ``nest``
8673 argument is allowed, and it must be of pointer type. Calling the new
8674 function is equivalent to calling ``func`` with the same argument list,
8675 but with ``nval`` used for the missing ``nest`` argument. If, after
8676 calling ``llvm.init.trampoline``, the memory pointed to by ``tramp`` is
8677 modified, then the effect of any later call to the returned function
8678 pointer is undefined.
8679
8680 .. _int_at:
8681
8682 '``llvm.adjust.trampoline``' Intrinsic
8683 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8684
8685 Syntax:
8686 """""""
8687
8688 ::
8689
8690       declare i8* @llvm.adjust.trampoline(i8* <tramp>)
8691
8692 Overview:
8693 """""""""
8694
8695 This performs any required machine-specific adjustment to the address of
8696 a trampoline (passed as ``tramp``).
8697
8698 Arguments:
8699 """"""""""
8700
8701 ``tramp`` must point to a block of memory which already has trampoline
8702 code filled in by a previous call to
8703 :ref:`llvm.init.trampoline <int_it>`.
8704
8705 Semantics:
8706 """"""""""
8707
8708 On some architectures the address of the code to be executed needs to be
8709 different to the address where the trampoline is actually stored. This
8710 intrinsic returns the executable address corresponding to ``tramp``
8711 after performing the required machine specific adjustments. The pointer
8712 returned can then be :ref:`bitcast and executed <int_trampoline>`.
8713
8714 Memory Use Markers
8715 ------------------
8716
8717 This class of intrinsics exists to information about the lifetime of
8718 memory objects and ranges where variables are immutable.
8719
8720 .. _int_lifestart:
8721
8722 '``llvm.lifetime.start``' Intrinsic
8723 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8724
8725 Syntax:
8726 """""""
8727
8728 ::
8729
8730       declare void @llvm.lifetime.start(i64 <size>, i8* nocapture <ptr>)
8731
8732 Overview:
8733 """""""""
8734
8735 The '``llvm.lifetime.start``' intrinsic specifies the start of a memory
8736 object's lifetime.
8737
8738 Arguments:
8739 """"""""""
8740
8741 The first argument is a constant integer representing the size of the
8742 object, or -1 if it is variable sized. The second argument is a pointer
8743 to the object.
8744
8745 Semantics:
8746 """"""""""
8747
8748 This intrinsic indicates that before this point in the code, the value
8749 of the memory pointed to by ``ptr`` is dead. This means that it is known
8750 to never be used and has an undefined value. A load from the pointer
8751 that precedes this intrinsic can be replaced with ``'undef'``.
8752
8753 .. _int_lifeend:
8754
8755 '``llvm.lifetime.end``' Intrinsic
8756 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8757
8758 Syntax:
8759 """""""
8760
8761 ::
8762
8763       declare void @llvm.lifetime.end(i64 <size>, i8* nocapture <ptr>)
8764
8765 Overview:
8766 """""""""
8767
8768 The '``llvm.lifetime.end``' intrinsic specifies the end of a memory
8769 object's lifetime.
8770
8771 Arguments:
8772 """"""""""
8773
8774 The first argument is a constant integer representing the size of the
8775 object, or -1 if it is variable sized. The second argument is a pointer
8776 to the object.
8777
8778 Semantics:
8779 """"""""""
8780
8781 This intrinsic indicates that after this point in the code, the value of
8782 the memory pointed to by ``ptr`` is dead. This means that it is known to
8783 never be used and has an undefined value. Any stores into the memory
8784 object following this intrinsic may be removed as dead.
8785
8786 '``llvm.invariant.start``' Intrinsic
8787 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8788
8789 Syntax:
8790 """""""
8791
8792 ::
8793
8794       declare {}* @llvm.invariant.start(i64 <size>, i8* nocapture <ptr>)
8795
8796 Overview:
8797 """""""""
8798
8799 The '``llvm.invariant.start``' intrinsic specifies that the contents of
8800 a memory object will not change.
8801
8802 Arguments:
8803 """"""""""
8804
8805 The first argument is a constant integer representing the size of the
8806 object, or -1 if it is variable sized. The second argument is a pointer
8807 to the object.
8808
8809 Semantics:
8810 """"""""""
8811
8812 This intrinsic indicates that until an ``llvm.invariant.end`` that uses
8813 the return value, the referenced memory location is constant and
8814 unchanging.
8815
8816 '``llvm.invariant.end``' Intrinsic
8817 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8818
8819 Syntax:
8820 """""""
8821
8822 ::
8823
8824       declare void @llvm.invariant.end({}* <start>, i64 <size>, i8* nocapture <ptr>)
8825
8826 Overview:
8827 """""""""
8828
8829 The '``llvm.invariant.end``' intrinsic specifies that the contents of a
8830 memory object are mutable.
8831
8832 Arguments:
8833 """"""""""
8834
8835 The first argument is the matching ``llvm.invariant.start`` intrinsic.
8836 The second argument is a constant integer representing the size of the
8837 object, or -1 if it is variable sized and the third argument is a
8838 pointer to the object.
8839
8840 Semantics:
8841 """"""""""
8842
8843 This intrinsic indicates that the memory is mutable again.
8844
8845 General Intrinsics
8846 ------------------
8847
8848 This class of intrinsics is designed to be generic and has no specific
8849 purpose.
8850
8851 '``llvm.var.annotation``' Intrinsic
8852 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8853
8854 Syntax:
8855 """""""
8856
8857 ::
8858
8859       declare void @llvm.var.annotation(i8* <val>, i8* <str>, i8* <str>, i32  <int>)
8860
8861 Overview:
8862 """""""""
8863
8864 The '``llvm.var.annotation``' intrinsic.
8865
8866 Arguments:
8867 """"""""""
8868
8869 The first argument is a pointer to a value, the second is a pointer to a
8870 global string, the third is a pointer to a global string which is the
8871 source file name, and the last argument is the line number.
8872
8873 Semantics:
8874 """"""""""
8875
8876 This intrinsic allows annotation of local variables with arbitrary
8877 strings. This can be useful for special purpose optimizations that want
8878 to look for these annotations. These have no other defined use; they are
8879 ignored by code generation and optimization.
8880
8881 '``llvm.ptr.annotation.*``' Intrinsic
8882 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8883
8884 Syntax:
8885 """""""
8886
8887 This is an overloaded intrinsic. You can use '``llvm.ptr.annotation``' on a
8888 pointer to an integer of any width. *NOTE* you must specify an address space for
8889 the pointer. The identifier for the default address space is the integer
8890 '``0``'.
8891
8892 ::
8893
8894       declare i8*   @llvm.ptr.annotation.p<address space>i8(i8* <val>, i8* <str>, i8* <str>, i32  <int>)
8895       declare i16*  @llvm.ptr.annotation.p<address space>i16(i16* <val>, i8* <str>, i8* <str>, i32  <int>)
8896       declare i32*  @llvm.ptr.annotation.p<address space>i32(i32* <val>, i8* <str>, i8* <str>, i32  <int>)
8897       declare i64*  @llvm.ptr.annotation.p<address space>i64(i64* <val>, i8* <str>, i8* <str>, i32  <int>)
8898       declare i256* @llvm.ptr.annotation.p<address space>i256(i256* <val>, i8* <str>, i8* <str>, i32  <int>)
8899
8900 Overview:
8901 """""""""
8902
8903 The '``llvm.ptr.annotation``' intrinsic.
8904
8905 Arguments:
8906 """"""""""
8907
8908 The first argument is a pointer to an integer value of arbitrary bitwidth
8909 (result of some expression), the second is a pointer to a global string, the
8910 third is a pointer to a global string which is the source file name, and the
8911 last argument is the line number. It returns the value of the first argument.
8912
8913 Semantics:
8914 """"""""""
8915
8916 This intrinsic allows annotation of a pointer to an integer with arbitrary
8917 strings. This can be useful for special purpose optimizations that want to look
8918 for these annotations. These have no other defined use; they are ignored by code
8919 generation and optimization.
8920
8921 '``llvm.annotation.*``' Intrinsic
8922 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8923
8924 Syntax:
8925 """""""
8926
8927 This is an overloaded intrinsic. You can use '``llvm.annotation``' on
8928 any integer bit width.
8929
8930 ::
8931
8932       declare i8 @llvm.annotation.i8(i8 <val>, i8* <str>, i8* <str>, i32  <int>)
8933       declare i16 @llvm.annotation.i16(i16 <val>, i8* <str>, i8* <str>, i32  <int>)
8934       declare i32 @llvm.annotation.i32(i32 <val>, i8* <str>, i8* <str>, i32  <int>)
8935       declare i64 @llvm.annotation.i64(i64 <val>, i8* <str>, i8* <str>, i32  <int>)
8936       declare i256 @llvm.annotation.i256(i256 <val>, i8* <str>, i8* <str>, i32  <int>)
8937
8938 Overview:
8939 """""""""
8940
8941 The '``llvm.annotation``' intrinsic.
8942
8943 Arguments:
8944 """"""""""
8945
8946 The first argument is an integer value (result of some expression), the
8947 second is a pointer to a global string, the third is a pointer to a
8948 global string which is the source file name, and the last argument is
8949 the line number. It returns the value of the first argument.
8950
8951 Semantics:
8952 """"""""""
8953
8954 This intrinsic allows annotations to be put on arbitrary expressions
8955 with arbitrary strings. This can be useful for special purpose
8956 optimizations that want to look for these annotations. These have no
8957 other defined use; they are ignored by code generation and optimization.
8958
8959 '``llvm.trap``' Intrinsic
8960 ^^^^^^^^^^^^^^^^^^^^^^^^^
8961
8962 Syntax:
8963 """""""
8964
8965 ::
8966
8967       declare void @llvm.trap() noreturn nounwind
8968
8969 Overview:
8970 """""""""
8971
8972 The '``llvm.trap``' intrinsic.
8973
8974 Arguments:
8975 """"""""""
8976
8977 None.
8978
8979 Semantics:
8980 """"""""""
8981
8982 This intrinsic is lowered to the target dependent trap instruction. If
8983 the target does not have a trap instruction, this intrinsic will be
8984 lowered to a call of the ``abort()`` function.
8985
8986 '``llvm.debugtrap``' Intrinsic
8987 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8988
8989 Syntax:
8990 """""""
8991
8992 ::
8993
8994       declare void @llvm.debugtrap() nounwind
8995
8996 Overview:
8997 """""""""
8998
8999 The '``llvm.debugtrap``' intrinsic.
9000
9001 Arguments:
9002 """"""""""
9003
9004 None.
9005
9006 Semantics:
9007 """"""""""
9008
9009 This intrinsic is lowered to code which is intended to cause an
9010 execution trap with the intention of requesting the attention of a
9011 debugger.
9012
9013 '``llvm.stackprotector``' Intrinsic
9014 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
9015
9016 Syntax:
9017 """""""
9018
9019 ::
9020
9021       declare void @llvm.stackprotector(i8* <guard>, i8** <slot>)
9022
9023 Overview:
9024 """""""""
9025
9026 The ``llvm.stackprotector`` intrinsic takes the ``guard`` and stores it
9027 onto the stack at ``slot``. The stack slot is adjusted to ensure that it
9028 is placed on the stack before local variables.
9029
9030 Arguments:
9031 """"""""""
9032
9033 The ``llvm.stackprotector`` intrinsic requires two pointer arguments.
9034 The first argument is the value loaded from the stack guard
9035 ``@__stack_chk_guard``. The second variable is an ``alloca`` that has
9036 enough space to hold the value of the guard.
9037
9038 Semantics:
9039 """"""""""
9040
9041 This intrinsic causes the prologue/epilogue inserter to force the position of
9042 the ``AllocaInst`` stack slot to be before local variables on the stack. This is
9043 to ensure that if a local variable on the stack is overwritten, it will destroy
9044 the value of the guard. When the function exits, the guard on the stack is
9045 checked against the original guard by ``llvm.stackprotectorcheck``. If they are
9046 different, then ``llvm.stackprotectorcheck`` causes the program to abort by
9047 calling the ``__stack_chk_fail()`` function.
9048
9049 '``llvm.stackprotectorcheck``' Intrinsic
9050 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
9051
9052 Syntax:
9053 """""""
9054
9055 ::
9056
9057       declare void @llvm.stackprotectorcheck(i8** <guard>)
9058
9059 Overview:
9060 """""""""
9061
9062 The ``llvm.stackprotectorcheck`` intrinsic compares ``guard`` against an already
9063 created stack protector and if they are not equal calls the
9064 ``__stack_chk_fail()`` function.
9065
9066 Arguments:
9067 """"""""""
9068
9069 The ``llvm.stackprotectorcheck`` intrinsic requires one pointer argument, the
9070 the variable ``@__stack_chk_guard``.
9071
9072 Semantics:
9073 """"""""""
9074
9075 This intrinsic is provided to perform the stack protector check by comparing
9076 ``guard`` with the stack slot created by ``llvm.stackprotector`` and if the
9077 values do not match call the ``__stack_chk_fail()`` function.
9078
9079 The reason to provide this as an IR level intrinsic instead of implementing it
9080 via other IR operations is that in order to perform this operation at the IR
9081 level without an intrinsic, one would need to create additional basic blocks to
9082 handle the success/failure cases. This makes it difficult to stop the stack
9083 protector check from disrupting sibling tail calls in Codegen. With this
9084 intrinsic, we are able to generate the stack protector basic blocks late in
9085 codegen after the tail call decision has occurred.
9086
9087 '``llvm.objectsize``' Intrinsic
9088 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
9089
9090 Syntax:
9091 """""""
9092
9093 ::
9094
9095       declare i32 @llvm.objectsize.i32(i8* <object>, i1 <min>)
9096       declare i64 @llvm.objectsize.i64(i8* <object>, i1 <min>)
9097
9098 Overview:
9099 """""""""
9100
9101 The ``llvm.objectsize`` intrinsic is designed to provide information to
9102 the optimizers to determine at compile time whether a) an operation
9103 (like memcpy) will overflow a buffer that corresponds to an object, or
9104 b) that a runtime check for overflow isn't necessary. An object in this
9105 context means an allocation of a specific class, structure, array, or
9106 other object.
9107
9108 Arguments:
9109 """"""""""
9110
9111 The ``llvm.objectsize`` intrinsic takes two arguments. The first
9112 argument is a pointer to or into the ``object``. The second argument is
9113 a boolean and determines whether ``llvm.objectsize`` returns 0 (if true)
9114 or -1 (if false) when the object size is unknown. The second argument
9115 only accepts constants.
9116
9117 Semantics:
9118 """"""""""
9119
9120 The ``llvm.objectsize`` intrinsic is lowered to a constant representing
9121 the size of the object concerned. If the size cannot be determined at
9122 compile time, ``llvm.objectsize`` returns ``i32/i64 -1 or 0`` (depending
9123 on the ``min`` argument).
9124
9125 '``llvm.expect``' Intrinsic
9126 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
9127
9128 Syntax:
9129 """""""
9130
9131 This is an overloaded intrinsic. You can use ``llvm.expect`` on any
9132 integer bit width.
9133
9134 ::
9135
9136       declare i1 @llvm.expect.i1(i1 <val>, i1 <expected_val>)
9137       declare i32 @llvm.expect.i32(i32 <val>, i32 <expected_val>)
9138       declare i64 @llvm.expect.i64(i64 <val>, i64 <expected_val>)
9139
9140 Overview:
9141 """""""""
9142
9143 The ``llvm.expect`` intrinsic provides information about expected (the
9144 most probable) value of ``val``, which can be used by optimizers.
9145
9146 Arguments:
9147 """"""""""
9148
9149 The ``llvm.expect`` intrinsic takes two arguments. The first argument is
9150 a value. The second argument is an expected value, this needs to be a
9151 constant value, variables are not allowed.
9152
9153 Semantics:
9154 """"""""""
9155
9156 This intrinsic is lowered to the ``val``.
9157
9158 '``llvm.donothing``' Intrinsic
9159 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
9160
9161 Syntax:
9162 """""""
9163
9164 ::
9165
9166       declare void @llvm.donothing() nounwind readnone
9167
9168 Overview:
9169 """""""""
9170
9171 The ``llvm.donothing`` intrinsic doesn't perform any operation. It's the
9172 only intrinsic that can be called with an invoke instruction.
9173
9174 Arguments:
9175 """"""""""
9176
9177 None.
9178
9179 Semantics:
9180 """"""""""
9181
9182 This intrinsic does nothing, and it's removed by optimizers and ignored
9183 by codegen.
9184
9185 Stack Map Intrinsics
9186 --------------------
9187
9188 LLVM provides experimental intrinsics to support runtime patching
9189 mechanisms commonly desired in dynamic language JITs. These intrinsics
9190 are described in :doc:`StackMaps`.