From 6f1cc770e28b67f1a61f05700c090c1f4068f2df Mon Sep 17 00:00:00 2001
From: Jeff Cohen
- { i32, i32, i32 } - { float, i32 (i32) * } - |
-
- a triple of three i32 values - A pair, where the first element is a float and the second element - is a pointer to a function - that takes an i32, returning an i32. - |
+ { i32, i32, i32 } | +A triple of three i32 values | +
{ float, i32 (i32) * } | +A pair, where the first element is a float and the + second element is a pointer to a + function that takes an i32, returning + an i32. |
- < { i32, i32, i32 } > - < { float, i32 (i32) * } > - |
-
- a triple of three i32 values - A pair, where the first element is a float and the second element - is a pointer to a function - that takes an i32, returning an i32. - |
+ < { i32, i32, i32 } > | +A triple of three i32 values | +
< { float, i32 (i32) * } > | +A pair, where the first element is a float and the + second element is a pointer to a + function that takes an i32, returning + an i32. |
- %retval = invoke i32 %Test(i32 15) to label %Continue - unwind label %TestCleanup ; {i32}:retval set - %retval = invoke coldcc i32 %Test(i32 15) to label %Continue - unwind label %TestCleanup ; {i32}:retval set + %retval = invoke i32 %Test(i32 15) to label %Continue + unwind label %TestCleanup ; {i32}:retval set + %retval = invoke coldcc i32 %Test(i32 15) to label %Continue + unwind label %TestCleanup ; {i32}:retval set@@ -1950,10 +1946,10 @@ Instruction
The 'fdiv' instruction returns the quotient of its two operands.
The two arguments to the 'div' instruction must be +
The two arguments to the 'fdiv' instruction must be floating point values. Both arguments must have identical types. This instruction can also take vector -versions of the values in which case the elements must be floating point.
+versions of floating point values.The value produced is the floating point quotient of the two operands.
The 'lshr' instruction (logical shift right) returns the first -operand shifted to the right a specified number of bits.
+operand shifted to the right a specified number of bits with zero fill.Both arguments to the 'lshr' instruction must be the same @@ -2106,7 +2102,7 @@ Instruction
The 'ashr' instruction (arithmetic shift right) returns the first -operand shifted to the right a specified number of bits.
+operand shifted to the right a specified number of bits with sign extension.Both arguments to the 'ashr' instruction must be the same @@ -2299,7 +2295,7 @@ identical types.
LLVM supports several instructions to represent vector operations in a -target-independent manner. This instructions cover the element-access and +target-independent manner. These instructions cover the element-access and vector-specific operations needed to process vectors effectively. While LLVM does directly support these vector operations, many sophisticated algorithms will want to use target-specific intrinsics to take full advantage of a specific @@ -2447,7 +2443,7 @@ operand may be undef if performing a shuffle from only one vector.
%result = shufflevector <4 x i32> %v1, <4 x i32> %v2, - <4 x i32> <i32 0, i32 4, i32 1, i32 5> ; yields <4 x i32> + <4 x i32> <i32 0, i32 4, i32 1, i32 5> ; yields <4 x i32> %result = shufflevector <4 x i32> %v1, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> ; yields <4 x i32> - Identity shuffle.@@ -2569,8 +2565,8 @@ after this instruction executes.
The 'alloca' instruction allocates memory on the current -stack frame of the procedure that is live until the current function +
The 'alloca' instruction allocates memory on the stack frame of the +currently executing function, to be automatically released when this function returns to its caller.
The 'store' instruction is used to write to memory.
There are two arguments to the 'store' instruction: a value -to store and an address in which to store it. The type of the '<pointer>' +to store and an address at which to store it. The type of the '<pointer>' operand must be a pointer to the type of the '<value>' operand. If the store is marked as volatile, then the optimizer is not allowed to modify the number or order of execution of @@ -2725,7 +2721,7 @@ compiled to LLVM:
on the pointer type that is being indexed into. Pointer and array types can use a 32-bit or 64-bit integer type but the value will always be sign extended -to 64-bits. Structure types, require i32 +to 64-bits. Structure types require i32 constants.In the example above, the first index is indexing into the '%ST*' @@ -2745,8 +2741,8 @@ the LLVM code for the given testcase is equivalent to:
define i32* %foo(%ST* %s) { %t1 = getelementptr %ST* %s, i32 1 ; yields %ST*:%t1 - %t2 = getelementptr %ST* %t1, i32 0, i32 2 ; yields %RT*:%t2 - %t3 = getelementptr %RT* %t2, i32 0, i32 1 ; yields [10 x [20 x i32]]*:%t3 + %t2 = getelementptr %ST* %t1, i32 0, i32 2 ; yields %RT*:%t2 + %t3 = getelementptr %RT* %t2, i32 0, i32 1 ; yields [10 x [20 x i32]]*:%t3 %t4 = getelementptr [10 x [20 x i32]]* %t3, i32 0, i32 5 ; yields [20 x i32]*:%t4 %t5 = getelementptr [20 x i32]* %t4, i32 0, i32 13 ; yields i32*:%t5 ret i32* %t5 @@ -3073,7 +3069,7 @@ be a floating point type.Semantics:
The 'uitofp' instruction interprets its operand as an unsigned integer quantity and converts it to the corresponding floating point value. If -the value cannot fit in the floating point value, the results are undefined.
+the value cannot fit in the floating point value, precision may be lost.Example:
@@ -3106,7 +3102,7 @@ a floating point type.Semantics:
The 'sitofp' instruction interprets its operand as a signed integer quantity and converts it to the corresponding floating point value. If -the value cannot fit in the floating point value, the results are undefined.
+the value cannot fit in the floating point value, precision may be lost.Example: