ARM: add @llvm.arm.space intrinsic for testing ConstantIslands.
[oota-llvm.git] / docs / LangRef.rst
index 669178bf603db2aab488cd841a709ee95e08a9d0..3b7d80ba376ee7100de47be4404d732f27aad5f0 100644 (file)
@@ -6884,14 +6884,21 @@ variable argument handling intrinsic functions are used.
 
 .. code-block:: llvm
 
+    ; This struct is different for every platform. For most platforms,
+    ; it is merely an i8*.
+    %struct.va_list = type { i8* }
+
+    ; For Unix x86_64 platforms, va_list is the following struct:
+    ; %struct.va_list = type { i32, i32, i8*, i8* }
+
     define i32 @test(i32 %X, ...) {
       ; Initialize variable argument processing
-      %ap = alloca i8*
-      %ap2 = bitcast i8** %ap to i8*
+      %ap = alloca %struct.va_list
+      %ap2 = bitcast %struct.va_list* %ap to i8*
       call void @llvm.va_start(i8* %ap2)
 
       ; Read a single integer argument
-      %tmp = va_arg i8** %ap, i32
+      %tmp = va_arg i8* %ap2, i32
 
       ; Demonstrate usage of llvm.va_copy and llvm.va_end
       %aq = alloca i8*
@@ -8051,7 +8058,7 @@ This function returns the same values as the libm ``fabs`` functions
 would, and handles error conditions in the same way.
 
 '``llvm.minnum.*``' Intrinsic
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Syntax:
 """""""
@@ -8062,11 +8069,11 @@ all types however.
 
 ::
 
-      declare float     @llvm.minnum.f32(float %Val)
-      declare double    @llvm.minnum.f64(double %Val)
-      declare x86_fp80  @llvm.minnum.f80(x86_fp80 %Val)
-      declare fp128     @llvm.minnum.f128(fp128 %Val)
-      declare ppc_fp128 @llvm.minnum.ppcf128(ppc_fp128 %Val)
+      declare float     @llvm.minnum.f32(float %Val0, float %Val1)
+      declare double    @llvm.minnum.f64(double %Val0, double %Val1)
+      declare x86_fp80  @llvm.minnum.f80(x86_fp80 %Val0, x86_fp80 %Val1)
+      declare fp128     @llvm.minnum.f128(fp128 %Val0, fp128 %Val1)
+      declare ppc_fp128 @llvm.minnum.ppcf128(ppc_fp128 %Val0, ppc_fp128 %Val1)
 
 Overview:
 """""""""
@@ -8093,7 +8100,7 @@ returns a value that compares equal to both operands. This means that
 fmin(+/-0.0, +/-0.0) could return either -0.0 or 0.0.
 
 '``llvm.maxnum.*``' Intrinsic
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Syntax:
 """""""
@@ -8104,11 +8111,11 @@ all types however.
 
 ::
 
-      declare float     @llvm.maxnum.f32(float  %Val)
-      declare double    @llvm.maxnum.f64(double %Val)
-      declare x86_fp80  @llvm.maxnum.f80(x86_fp80  %Val)
-      declare fp128     @llvm.maxnum.f128(fp128 %Val)
-      declare ppc_fp128 @llvm.maxnum.ppcf128(ppc_fp128  %Val)
+      declare float     @llvm.maxnum.f32(float  %Val0, float  %Val1l)
+      declare double    @llvm.maxnum.f64(double %Val0, double %Val1)
+      declare x86_fp80  @llvm.maxnum.f80(x86_fp80  %Val0, x86_fp80  %Val1)
+      declare fp128     @llvm.maxnum.f128(fp128 %Val0, fp128 %Val1)
+      declare ppc_fp128 @llvm.maxnum.ppcf128(ppc_fp128  %Val0, ppc_fp128  %Val1)
 
 Overview:
 """""""""
@@ -9632,8 +9639,9 @@ Syntax:
 Overview:
 """""""""
 
-The ``llvm.donothing`` intrinsic doesn't perform any operation. It's the
-only intrinsic that can be called with an invoke instruction.
+The ``llvm.donothing`` intrinsic doesn't perform any operation. It's one of only
+two intrinsics (besides ``llvm.experimental.patchpoint``) that can be called
+with an invoke instruction.
 
 Arguments:
 """"""""""