X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FLangRef.html;h=15f95e2a11c477052022048040e426d6bb0ed6f2;hb=445c89a83c97176179c54bf5fbc344a597f0ed38;hp=de31e35674bf166b01154e5382fa27682fa710d7;hpb=7ed5d56541575c4a02c9a29a6bfde0d018a7801b;p=oota-llvm.git diff --git a/docs/LangRef.html b/docs/LangRef.html index de31e35674b..15f95e2a11c 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -155,8 +155,6 @@
  1. 'icmp' Instruction
  2. 'fcmp' Instruction
  3. -
  4. 'vicmp' Instruction
  5. -
  6. 'vfcmp' Instruction
  7. 'phi' Instruction
  8. 'select' Instruction
  9. 'call' Instruction
  10. @@ -210,8 +208,6 @@
  11. 'llvm.ctpop.*' Intrinsic
  12. 'llvm.ctlz.*' Intrinsic
  13. 'llvm.cttz.*' Intrinsic
  14. -
  15. 'llvm.part.select.*' Intrinsic
  16. -
  17. 'llvm.part.set.*' Intrinsic
  • Arithmetic with Overflow Intrinsics @@ -2042,12 +2038,6 @@ following is the syntax for constant expressions:

    fcmp COND ( VAL1, VAL2 )
    Performs the fcmp operation on constants.
    -
    vicmp COND ( VAL1, VAL2 )
    -
    Performs the vicmp operation on constants.
    - -
    vfcmp COND ( VAL1, VAL2 )
    -
    Performs the vfcmp operation on constants.
    -
    extractelement ( VAL, IDX )
    Perform the extractelement @@ -3532,9 +3522,10 @@ address space (address space zero).

    bytes of memory from the operating system and returns a pointer of the appropriate type to the program. If "NumElements" is specified, it is the number of elements allocated, otherwise "NumElements" is defaulted to be one. -If a constant alignment is specified, the value result of the allocation is guaranteed to -be aligned to at least that boundary. If not specified, or if zero, the target can -choose to align the allocation on any convenient boundary.

    +If a constant alignment is specified, the value result of the allocation is +guaranteed to be aligned to at least that boundary. If not specified, or if +zero, the target can choose to align the allocation on any convenient boundary +compatible with the type.

    'type' must be a sized type.

    @@ -3625,9 +3616,10 @@ space (address space zero).

    bytes of memory on the runtime stack, returning a pointer of the appropriate type to the program. If "NumElements" is specified, it is the number of elements allocated, otherwise "NumElements" is defaulted to be one. -If a constant alignment is specified, the value result of the allocation is guaranteed -to be aligned to at least that boundary. If not specified, or if zero, the target -can choose to align the allocation on any convenient boundary.

    +If a constant alignment is specified, the value result of the allocation is +guaranteed to be aligned to at least that boundary. If not specified, or if +zero, the target can choose to align the allocation on any convenient boundary +compatible with the type.

    'type' may be any sized type.

    @@ -4502,109 +4494,6 @@ always yields an
    i1 result, as follows:

    - - -
    -
    Syntax:
    -
      <result> = vicmp <cond> <ty> <op1>, <op2>   ; yields {ty}:result
    -
    -
    Overview:
    -

    The 'vicmp' instruction returns an integer vector value based on -element-wise comparison of its two integer vector operands.

    -
    Arguments:
    -

    The 'vicmp' instruction takes three operands. The first operand is -the condition code indicating the kind of comparison to perform. It is not -a value, just a keyword. The possible condition code are:

    -
      -
    1. eq: equal
    2. -
    3. ne: not equal
    4. -
    5. ugt: unsigned greater than
    6. -
    7. uge: unsigned greater or equal
    8. -
    9. ult: unsigned less than
    10. -
    11. ule: unsigned less or equal
    12. -
    13. sgt: signed greater than
    14. -
    15. sge: signed greater or equal
    16. -
    17. slt: signed less than
    18. -
    19. sle: signed less or equal
    20. -
    -

    The remaining two arguments must be vector or -integer typed. They must also be identical types.

    -
    Semantics:
    -

    The 'vicmp' instruction compares op1 and op2 -according to the condition code given as cond. The comparison yields a -vector of integer result, of -identical type as the values being compared. The most significant bit in each -element is 1 if the element-wise comparison evaluates to true, and is 0 -otherwise. All other bits of the result are undefined. The condition codes -are evaluated identically to the 'icmp' -instruction.

    - -
    Example:
    -
    -  <result> = vicmp eq <2 x i32> < i32 4, i32 0>, < i32 5, i32 0>   ; yields: result=<2 x i32> < i32 0, i32 -1 >
    -  <result> = vicmp ult <2 x i8 > < i8 1, i8 2>, < i8 2, i8 2 >        ; yields: result=<2 x i8> < i8 -1, i8 0 >
    -
    -
    - - - -
    -
    Syntax:
    -
      <result> = vfcmp <cond> <ty> <op1>, <op2>
    -
    Overview:
    -

    The 'vfcmp' instruction returns an integer vector value based on -element-wise comparison of its two floating point vector operands. The output -elements have the same width as the input elements.

    -
    Arguments:
    -

    The 'vfcmp' instruction takes three operands. The first operand is -the condition code indicating the kind of comparison to perform. It is not -a value, just a keyword. The possible condition code are:

    -
      -
    1. false: no comparison, always returns false
    2. -
    3. oeq: ordered and equal
    4. -
    5. ogt: ordered and greater than
    6. -
    7. oge: ordered and greater than or equal
    8. -
    9. olt: ordered and less than
    10. -
    11. ole: ordered and less than or equal
    12. -
    13. one: ordered and not equal
    14. -
    15. ord: ordered (no nans)
    16. -
    17. ueq: unordered or equal
    18. -
    19. ugt: unordered or greater than
    20. -
    21. uge: unordered or greater than or equal
    22. -
    23. ult: unordered or less than
    24. -
    25. ule: unordered or less than or equal
    26. -
    27. une: unordered or not equal
    28. -
    29. uno: unordered (either nans)
    30. -
    31. true: no comparison, always returns true
    32. -
    -

    The remaining two arguments must be vector of -floating point typed. They must also be identical -types.

    -
    Semantics:
    -

    The 'vfcmp' instruction compares op1 and op2 -according to the condition code given as cond. The comparison yields a -vector of integer result, with -an identical number of elements as the values being compared, and each element -having identical with to the width of the floating point elements. The most -significant bit in each element is 1 if the element-wise comparison evaluates to -true, and is 0 otherwise. All other bits of the result are undefined. The -condition codes are evaluated identically to the -'fcmp' instruction.

    - -
    Example:
    -
    -  ; yields: result=<2 x i32> < i32 0, i32 -1 >
    -  <result> = vfcmp oeq <2 x float> < float 4, float 0 >, < float 5, float 0 >
    -  
    -  ; yields: result=<2 x i64> < i64 -1, i64 0 >
    -  <result> = vfcmp ult <2 x double> < double 1, double 2 >, < double 2, double 2>
    -
    -
    -
    'phi' Instruction @@ -6051,110 +5940,6 @@ of src. For example, llvm.cttz(2) = 1.

    - - - -
    - -
    Syntax:
    -

    This is an overloaded intrinsic. You can use llvm.part.select -on any integer bit width.

    -
    -  declare i17 @llvm.part.select.i17 (i17 %val, i32 %loBit, i32 %hiBit)
    -  declare i29 @llvm.part.select.i29 (i29 %val, i32 %loBit, i32 %hiBit)
    -
    - -
    Overview:
    -

    The 'llvm.part.select' family of intrinsic functions selects a -range of bits from an integer value and returns them in the same bit width as -the original value.

    - -
    Arguments:
    -

    The first argument, %val and the result may be integer types of -any bit width but they must have the same bit width. The second and third -arguments must be i32 type since they specify only a bit index.

    - -
    Semantics:
    -

    The operation of the 'llvm.part.select' intrinsic has two modes -of operation: forwards and reverse. If %loBit is greater than -%hiBits then the intrinsic operates in reverse mode. Otherwise it -operates in forward mode.

    -

    In forward mode, this intrinsic is the equivalent of shifting %val -right by %loBit bits and then ANDing it with a mask with -only the %hiBit - %loBit bits set, as follows:

    -
      -
    1. The %val is shifted right (LSHR) by the number of bits specified - by %loBits. This normalizes the value to the low order bits.
    2. -
    3. The %loBits value is subtracted from the %hiBits value - to determine the number of bits to retain.
    4. -
    5. A mask of the retained bits is created by shifting a -1 value.
    6. -
    7. The mask is ANDed with %val to produce the result.
    8. -
    -

    In reverse mode, a similar computation is made except that the bits are -returned in the reverse order. So, for example, if X has the value -i16 0x0ACF (101011001111) and we apply -part.select(i16 X, 8, 3) to it, we get back the value -i16 0x0026 (000000100110).

    -
    - - - -
    - -
    Syntax:
    -

    This is an overloaded intrinsic. You can use llvm.part.set -on any integer bit width.

    -
    -  declare i17 @llvm.part.set.i17.i9 (i17 %val, i9 %repl, i32 %lo, i32 %hi)
    -  declare i29 @llvm.part.set.i29.i9 (i29 %val, i9 %repl, i32 %lo, i32 %hi)
    -
    - -
    Overview:
    -

    The 'llvm.part.set' family of intrinsic functions replaces a range -of bits in an integer value with another integer value. It returns the integer -with the replaced bits.

    - -
    Arguments:
    -

    The first argument, %val, and the result may be integer types of -any bit width, but they must have the same bit width. %val is the value -whose bits will be replaced. The second argument, %repl may be an -integer of any bit width. The third and fourth arguments must be i32 -type since they specify only a bit index.

    - -
    Semantics:
    -

    The operation of the 'llvm.part.set' intrinsic has two modes -of operation: forwards and reverse. If %lo is greater than -%hi then the intrinsic operates in reverse mode. Otherwise it -operates in forward mode.

    - -

    For both modes, the %repl value is prepared for use by either -truncating it down to the size of the replacement area or zero extending it -up to that size.

    - -

    In forward mode, the bits between %lo and %hi (inclusive) -are replaced with corresponding bits from %repl. That is the 0th bit -in %repl replaces the %loth bit in %val and etc. up -to the %hith bit.

    - -

    In reverse mode, a similar computation is made except that the bits are -reversed. That is, the 0th bit in %repl replaces the -%hi bit in %val and etc. down to the %loth bit.

    - -
    Examples:
    - -
    -  llvm.part.set(0xFFFF, 0, 4, 7) -> 0xFF0F
    -  llvm.part.set(0xFFFF, 0, 7, 4) -> 0xFF0F
    -  llvm.part.set(0xFFFF, 1, 7, 4) -> 0xFF8F
    -  llvm.part.set(0xFFFF, F, 8, 3) -> 0xFFE7
    -  llvm.part.set(0xFFFF, 0, 3, 8) -> 0xFE07
    -
    - -