Text file src/simd/archsimd/_gen/simdgen/ops/ShiftRotate/categories.yaml

     1  !sum
     2  
     3  - go: Shift
     4    commutative: false
     5    documentation: !string |-
     6      // NAME shifts each element in x by the signed value of the least significant byte
     7      // of y's corresponding element: positive values shift left, negative values shift right.
     8  - go: ShiftSaturated
     9    signed: true
    10    commutative: false
    11    documentation: !string |-
    12      // NAME shifts each element in x by the signed value of the least significant byte
    13      // of y's corresponding element (positive shifts left, negative shifts right).
    14      // Results are saturated to the signed range on overflow.
    15  - go: ShiftSaturated
    16    signed: false
    17    commutative: false
    18    documentation: !string |-
    19      // NAME shifts each element in x by the signed value of the least significant byte
    20      // of y's corresponding element (positive shifts left, negative shifts right).
    21      // Results are saturated to the unsigned range on overflow.
    22  - go: shiftLeftSaturatedConst
    23    noGenericOps: "true"
    24    signed: true
    25    commutative: false
    26    documentation: !string |-
    27      // NAME performs a saturating left shift on each element in x by the constant number of bits specified by y.
    28      // Results are saturated to the signed range on overflow.
    29  - go: shiftLeftSaturatedConst
    30    noGenericOps: "true"
    31    signed: false
    32    commutative: false
    33    documentation: !string |-
    34      // NAME performs a saturating left shift on each element in x by the constant number of bits specified by y.
    35      // Results are saturated to the unsigned range on overflow.
    36  
    37  - go: shiftRightNarrowConst
    38    noGenericOps: "true"
    39    commutative: false
    40    documentation: !string |-
    41      // NAME performs a right shift on each element in x by the constant number of bits
    42      // and narrows the result to half the element width.
    43  - go: shiftLeftWidenLoConst
    44    noGenericOps: "true"
    45    signed: false
    46    commutative: false
    47    documentation: !string |-
    48      // NAME performs a left shift on each unsigned low-indexed element in x by the constant number of bits
    49      // and widens the result to double the element width.
    50  - go: shiftLeftWidenLoConst
    51    noGenericOps: "true"
    52    signed: true
    53    commutative: false
    54    documentation: !string |-
    55      // NAME performs a left shift on each signed low-indexed element in x by the constant number of bits
    56      // and widens the result to double the element width.
    57  
    58  # Shared ops (AMD64 + ARM64)
    59  - go: ShiftAllLeft
    60    commutative: false
    61    documentation: !string |-
    62      // NAME shifts each element of x left by y bits.
    63      // If y is greater than the element width, the result is 0.
    64  - go: ShiftAllRight
    65    signed: false
    66    commutative: false
    67    documentation: !string |-
    68      // NAME logically shifts each element of x right by y bits.
    69      // If y is greater than the element width, the result is 0.
    70  - go: ShiftAllRight
    71    signed: true
    72    commutative: false
    73    documentation: !string |-
    74      // NAME arithmetically shifts each element of x right by y bits.
    75      // If y is greater than the element width, the result is 0 or -1.
    76  - go: shiftAllLeftConst # no APIs, only ssa ops.
    77    noTypes: "true"
    78    noGenericOps: "true"
    79    commutative: false
    80  - go: shiftAllRightConst # no APIs, only ssa ops.
    81    noTypes: "true"
    82    noGenericOps: "true"
    83    signed: false
    84    commutative: false
    85  - go: shiftAllRightConst # no APIs, only ssa ops.
    86    noTypes: "true"
    87    noGenericOps: "true"
    88    signed: true
    89    commutative: false
    90  
    91  - go: ShiftLeft
    92    commutative: false
    93    documentation: !string |-
    94      // NAME shifts x[i] left by y[i] bits.
    95      // If y[i] is greater than the element width, the result is 0.
    96  - go: ShiftRight
    97    signed: false
    98    commutative: false
    99    documentation: !string |-
   100      // NAME logically shifts x[i] right by y[i] bits.
   101      // If y[i] is greater than the element width, the result is 0.
   102  - go: ShiftRight
   103    signed: true
   104    commutative: false
   105    documentation: !string |-
   106      // NAME arithmetically shifts x[i] right by y[i] bits.
   107      // If y[i] is greater than the element width, the result is 0 or -1.
   108  - go: RotateAllLeft
   109    commutative: false
   110    documentation: !string |-
   111      // NAME rotates each element to the left by the number of bits specified by shift.
   112  - go: rotateAllLeft
   113    noGenericOps: "true"
   114    commutative: false
   115    documentation: !string |-
   116      // NAME rotates each element to the left by the number of bits specified by shift.
   117  - go: RotateLeft
   118    commutative: false
   119    documentation: !string |-
   120      // NAME rotates each element in x to the left by the number of bits specified by y's corresponding elements.
   121  - go: RotateAllRight
   122    commutative: false
   123    documentation: !string |-
   124      // NAME rotates each element to the right by the number of bits specified by shift.
   125  - go: rotateAllRight
   126    noGenericOps: "true"
   127    commutative: false
   128    documentation: !string |-
   129      // NAME rotates each element to the right by the number of bits specified by shift.
   130  - go: RotateRight
   131    commutative: false
   132    documentation: !string |-
   133      // NAME rotates each element in x to the right by the number of bits specified by y's corresponding elements.
   134  # Bizzare shifts
   135  - go: ShiftAllLeftConcatMod16
   136    commutative: false
   137    documentation: !string |-
   138      // NAME shifts x[i] left by shift%16, filing any empted lower bits
   139      // with the high bits of y[i].
   140      //
   141      //    z[i] = concat(x[i], y[i]) << (shift%16)
   142  - go: ShiftAllRightConcatMod16
   143    commutative: false
   144    documentation: !string |-
   145      // NAME shifts x[i] right by shift%16, filling any emptied upper bits
   146      // with the low bits of y[i].
   147      //
   148      //    z[i] = concat(y[i], x[i]) >> (shift%16)
   149  - go: ShiftLeftConcatMod16
   150    commutative: false
   151    documentation: !string |-
   152      // NAME shifts x[i] left by shift[i]%16, filing any empted lower bits
   153      // with the high bits of y[i].
   154      //
   155      //    z[i] = concat(x[i], y[i]) << (shift[i]%16)
   156  - go: ShiftRightConcatMod16
   157    commutative: false
   158    documentation: !string |-
   159      // NAME shifts x[i] right by shift[i]%16, filling any emptied upper bits
   160      // with the low bits of y[i].
   161      //
   162      //    z[i] = concat(y[i], x[i]) >> (shift[i]%16)
   163  - go: ShiftAllLeftConcatMod32
   164    commutative: false
   165    documentation: !string |-
   166      // NAME shifts x[i] left by shift%32, filing any empted lower bits
   167      // with the high bits of y[i].
   168      //
   169      //    z[i] = concat(x[i], y[i]) << (shift%32)
   170  - go: ShiftAllRightConcatMod32
   171    commutative: false
   172    documentation: !string |-
   173      // NAME shifts x[i] right by shift%32, filling any emptied upper bits
   174      // with the low bits of y[i].
   175      //
   176      //    z[i] = concat(y[i], x[i]) >> (shift%32)
   177  - go: ShiftLeftConcatMod32
   178    commutative: false
   179    documentation: !string |-
   180      // NAME shifts x[i] left by shift[i]%32, filing any empted lower bits
   181      // with the high bits of y[i].
   182      //
   183      //    z[i] = concat(x[i], y[i]) << (shift[i]%32)
   184  - go: ShiftRightConcatMod32
   185    commutative: false
   186    documentation: !string |-
   187      // NAME shifts x[i] right by shift[i]%32, filling any emptied upper bits
   188      // with the low bits of y[i].
   189      //
   190      //    z[i] = concat(y[i], x[i]) >> (shift[i]%32)
   191  - go: ShiftAllLeftConcatMod64
   192    commutative: false
   193    documentation: !string |-
   194      // NAME shifts x[i] left by shift%64, filing any empted lower bits
   195      // with the high bits of y[i].
   196      //
   197      //    z[i] = concat(x[i], y[i]) << (shift%64)
   198  - go: ShiftAllRightConcatMod64
   199    commutative: false
   200    documentation: !string |-
   201      // NAME shifts x[i] right by shift%64, filling any emptied upper bits
   202      // with the low bits of y[i].
   203      //
   204      //    z[i] = concat(y[i], x[i]) >> (shift%64)
   205  - go: ShiftLeftConcatMod64
   206    commutative: false
   207    documentation: !string |-
   208      // NAME shifts x[i] left by shift[i]%64, filing any empted lower bits
   209      // with the high bits of y[i].
   210      //
   211      //    z[i] = concat(x[i], y[i]) << (shift[i]%64)
   212  - go: ShiftRightConcatMod64
   213    commutative: false
   214    documentation: !string |-
   215      // NAME shifts x[i] right by shift[i]%64, filling any emptied upper bits
   216      // with the low bits of y[i].
   217      //
   218      //    z[i] = concat(y[i], x[i]) >> (shift[i]%64)

View as plain text