From eaff5246707cc620736e895c239ff78298b3d95e Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 12 Jul 2009 21:08:53 +0000 Subject: remove llvm.part.set.* and llvm.part.select.*. They have never been implemented in codegen, have no frontend to generate them, and are better implemented with pattern matching (like the ppc backend does to generate rlwimi/rlwinm etc). PR4543 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75430 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/LangRef.html | 106 ------------------------------------------------------ 1 file changed, 106 deletions(-) (limited to 'docs') diff --git a/docs/LangRef.html b/docs/LangRef.html index 416b105cd7..15f95e2a11 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -208,8 +208,6 @@
  • 'llvm.ctpop.*' Intrinsic
  • 'llvm.ctlz.*' Intrinsic
  • 'llvm.cttz.*' Intrinsic
  • -
  • 'llvm.part.select.*' Intrinsic
  • -
  • 'llvm.part.set.*' Intrinsic
  • Arithmetic with Overflow Intrinsics @@ -5942,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
    -
    - -
    -- cgit v1.2.3