...
Run Format

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

Documentation: simd/archsimd/_gen/simdgen/ops/Moves

     1!sum
     2- go: SetElem
     3  commutative: false
     4  documentation: !string |-
     5    // NAME sets a single constant-indexed element's value.
     6- go: GetElem
     7  commutative: false
     8  documentation: !string |-
     9    // NAME retrieves a single constant-indexed element's value.
    10- go: SetLo
    11  commutative: false
    12  constImm: 0
    13  documentation: !string |-
    14    // NAME returns x with its lower half set to y.
    15- go: GetLo
    16  commutative: false
    17  constImm: 0
    18  documentation: !string |-
    19    // NAME returns the lower half of x.
    20- go: SetHi
    21  commutative: false
    22  constImm: 1
    23  documentation: !string |-
    24    // NAME returns x with its upper half set to y.
    25- go: GetHi
    26  commutative: false
    27  constImm: 1
    28  documentation: !string |-
    29    // NAME returns the upper half of x.
    30- go: PermuteOrZero
    31  commutative: false
    32  documentation: !string |-
    33    // NAME performs a full permutation of vector x using indices:
    34    //
    35    //   result = {x[indices[0]], x[indices[1]], ..., x[indices[n]]}
    36    //
    37- go: Permute
    38  commutative: false
    39  documentation: !string |-
    40    // NAME performs a full permutation of vector x using indices:
    41    //
    42    //   result = {x[indices[0]], x[indices[1]], ..., x[indices[n]]}
    43    //
    44- go: ConcatPermute # ConcatPermute is only available on or after AVX512
    45  commutative: false
    46  documentation: !string |-
    47    // NAME performs a full permutation of vector x, y using indices:
    48    //
    49    //   result = {xy[indices[0]], xy[indices[1]], ..., xy[indices[n]]}
    50    //
    51    // where xy is the concatenation of x (lower half) and y (upper half).
    52    // Only the needed bits to represent xy's index are used in indices' elements.
    53- go: Compress
    54  commutative: false
    55  documentation: !string |-
    56    // NAME performs a compression on vector x using mask by
    57    // selecting elements as indicated by mask, and pack them to lower indexed elements.
    58- go: blend
    59  commutative: false
    60  documentation: !string |-
    61    // NAME blends two vectors based on mask values, choosing either
    62    // the first or the second based on whether the third is false or true
    63- go: move
    64  commutative: false
    65  noTypes: "true"
    66  noGenericOps: "true"
    67- go: Expand
    68  commutative: false
    69  documentation: !string |-
    70    // NAME performs an expansion on a vector x whose elements are packed to lower parts.
    71    // The expansion is to distribute elements as indexed by mask, from lower mask elements to upper in order.
    72- go: Broadcast1To2
    73  commutative: false
    74  documentation: !string |-
    75    // NAME copies the lowest element of its input to all 2 elements of
    76    // the output vector.
    77- go: Broadcast1To4
    78  commutative: false
    79  documentation: !string |-
    80    // NAME copies the lowest element of its input to all 4 elements of
    81    // the output vector.
    82- go: Broadcast1To8
    83  commutative: false
    84  documentation: !string |-
    85    // NAME copies the lowest element of its input to all 8 elements of
    86    // the output vector.
    87- go: Broadcast1To16
    88  commutative: false
    89  documentation: !string |-
    90    // NAME copies the lowest element of its input to all 16 elements of
    91    // the output vector.
    92- go: Broadcast1To32
    93  commutative: false
    94  documentation: !string |-
    95    // NAME copies the lowest element of its input to all 32 elements of
    96    // the output vector.
    97- go: Broadcast1To64
    98  commutative: false
    99  documentation: !string |-
   100    // NAME copies the lowest element of its input to all 64 elements of
   101    // the output vector.
   102- go: PermuteOrZeroGrouped
   103  commutative: false
   104  documentation: !string |- # Detailed documentation will rely on the specific ops.
   105    // NAME performs a grouped permutation of vector x using indices:
   106- go: PermuteGrouped
   107  commutative: false
   108  documentation: !string |- # Detailed documentation will rely on the specific ops.
   109    // NAME performs a grouped permutation of vector x using indices:
   110- go: permuteScalars
   111  commutative: false
   112  documentation: !string |- # Detailed documentation will rely on the specific ops.
   113    // NAME performs a permutation of vector x using constant indices:
   114- go: permuteScalarsGrouped
   115  commutative: false
   116  documentation: !string |- # Detailed documentation will rely on the specific ops.
   117    // NAME performs a grouped permutation of vector x using constant indices:
   118- go: permuteScalarsLo
   119  commutative: false
   120  documentation: !string |- # Detailed documentation will rely on the specific ops.
   121    // NAME performs a permutation of vector x using constant indices:
   122- go: permuteScalarsLoGrouped
   123  commutative: false
   124  documentation: !string |- # Detailed documentation will rely on the specific ops.
   125    // NAME performs a grouped permutation of vector x using constant indices:
   126- go: permuteScalarsHi
   127  commutative: false
   128  documentation: !string |- # Detailed documentation will rely on the specific ops.
   129    // NAME performs a permutation of vector x using constant indices:
   130- go: permuteScalarsHiGrouped
   131  commutative: false
   132  documentation: !string |- # Detailed documentation will rely on the specific ops.
   133    // NAME performs a grouped permutation of vector x using constant indices:
   134- go: InterleaveHi
   135  commutative: false
   136  documentation: !string |-
   137    // NAME interleaves the elements of the high halves of x and y.
   138- go: InterleaveLo
   139  commutative: false
   140  documentation: !string |-
   141    // NAME interleaves the elements of the low halves of x and y.
   142- go: InterleaveHiGrouped
   143  commutative: false
   144  documentation: !string |-
   145    // NAME interleaves the elements of the high half of each 128-bit subvector of x and y.
   146- go: InterleaveLoGrouped
   147  commutative: false
   148  documentation: !string |-
   149    // NAME interleaves the elements of the low half of each 128-bit subvector of x and y.
   150
   151- go: concatSelectedConstant
   152  commutative: false
   153  out:
   154    - elemBits: 32
   155  documentation: !string |-
   156    // NAME concatenates selected elements from x and y into the lower and upper
   157    // halves of the output.  The selection is chosen by the constant parameter h1h0l1l0
   158    // where each {h,l}{1,0} is two bits specify which element from y or x to select.
   159    // For example, {0,1,2,3}.NAME(0b_11_01_00_10, {4,5,6,7}) returns
   160    // {2, 0, 5, 7} (don't forget that the binary constant is written big-endian).
   161
   162- go: concatSelectedConstant
   163  commutative: false
   164  out:
   165    - elemBits: 64
   166  documentation: !string |-
   167    // NAME concatenates selected elements from x and y into the lower and upper
   168    // halves of the output.  The selection is chosen by the constant parameter hilo
   169    // where hi and lo are each one bit specifying which 64-bit element to select
   170    // from y and x.  For example {4,5}.NAME(0b10, {6,7})
   171    // returns {4,7}; bit 0, selecting from x, is zero, and selects 4, and bit 1,
   172    // selecting from y, is 1, and selects 7.
   173
   174- go: concatSelectedConstantGrouped
   175  commutative: false
   176  out:
   177    - elemBits: 32
   178      bits: 256
   179  documentation: !string |-
   180    // NAME concatenates selected elements from 128-bit subvectors of x and y
   181    // into the lower and upper halves of corresponding subvectors of the output.
   182    // The selection is chosen by the constant parameter h1h0l1l0
   183    // where each {h,l}{1,0} is two bits specifying which element from y or x to select.
   184    // For example,
   185    // {0,1,2,3,8,9,10,11}.NAME(0b_11_01_00_10, {4,5,6,7,12,13,14,15})
   186    // returns {2,0,5,7,10,8,13,15}
   187    // (don't forget that the binary constant is written big-endian).
   188
   189- go: concatSelectedConstantGrouped
   190  commutative: false
   191  out:
   192    - elemBits: 64
   193      bits: 256
   194  documentation: !string |-
   195    // NAME concatenates selected elements from 128-bit subvectors of x and y
   196    // into the lower and upper halves of corresponding subvectors of the output.
   197    // The selections are specified by the constant parameter hilos where each
   198    // hi and lo pair select 64-bit elements from the corresponding 128-bit
   199    // subvectors of x and y.
   200    //
   201    // For example {4,5,8,9}.NAME(0b_11_10, {6,7,10,11})
   202    // returns {4,7,9,11}; bit 0 is zero, selecting element 0 from x's least
   203    // 128-bits (4), then 1, selects the element 1 from y's least 128-bits (7),
   204    // then 1, selecting element 1 from x's upper 128 bits (9), then 1,
   205    // selecting element 1 from y's upper 128 bits (11).
   206    // This differs from the same method applied to a 32x8 vector, where
   207    // the 8-bit constant performs the same selection on both subvectors.
   208
   209- go: concatSelectedConstantGrouped
   210  commutative: false
   211  out:
   212    - elemBits: 32
   213      bits: 512
   214  documentation: !string |-
   215    // NAME concatenates selected elements from 128-bit subvectors of x and y
   216    // into the lower and upper halves of corresponding subvectors of the output.
   217    // The selection is chosen by the constant parameter h1h0l1l0
   218    // where each {h,l}{1,0} is two bits specifying which element from y or x to select.
   219    // For example,
   220    //
   221    //   {0,1,2,3,8,9,10,11, 20,21,22,23,28,29,210,211}.NAME(
   222    //    0b_11_01_00_10, {4,5,6,7,12,13,14,15, 24,25,26,27,212,213,214,215})
   223    //
   224    // returns {2,0,5,7,10,8,13,15, 22,20,25,27,210,28,213,215}
   225    //
   226    // (don't forget that the binary constant is written big-endian).
   227
   228- go: concatSelectedConstantGrouped
   229  commutative: false
   230  out:
   231    - elemBits: 64
   232      bits: 512
   233  documentation: !string |-
   234    // NAME concatenates selected elements from 128-bit subvectors of x and y
   235    // into the lower and upper halves of corresponding subvectors of the output.
   236    // The selections are specified by the constant parameter hilos where each
   237    // hi and lo pair select 64-bit elements from the corresponding 128-bit
   238    // subvectors of x and y.
   239    //
   240    // For example {4,5,8,9,12,13,16,17}.NAME(0b11_00_11_10, {6,7,10,11,14,15,18,19})
   241    // returns {4,7,9,11,12,14,17,19}; bit 0 is zero, selecting element 0 from x's
   242    // least 128-bits (4), then 1, selects the element 1 from y's least 128-bits (7),
   243    // then 1, selecting element 1 from x's next 128 bits (9), then 1,
   244    // selecting element 1 from y's upper 128 bits (11).  The next two 0 bits select
   245    // the lower elements from x and y's 3rd 128 bit groups (12, 14), the last two
   246    // 1 bits select the upper elements from x and y's last 128 bits (17, 19).
   247    // This differs from the same method applied to a 32x8 or 32x16 vector, where
   248    // the 8-bit constant performs the same selection on all the subvectors.
   249
   250- go: Select128FromPair
   251  commutative: false
   252  documentation: !string |-
   253    // NAME treats the 256-bit vectors x and y as a single vector of four
   254    // 128-bit elements, and returns a 256-bit result formed by
   255    // concatenating the two elements specified by lo and hi.
   256
   257- go: ConcatShiftBytesRight
   258  commutative: false
   259  documentation: !string |-
   260    // NAME concatenates x and y and shift it right by shift bytes.
   261    // The result vector will be the lower half of the concatenated vector.
   262
   263- go: ConcatShiftBytesRightGrouped
   264  commutative: false
   265  documentation: !string |-
   266    // NAME concatenates x and y and shift it right by shift bytes.
   267    // The result vector will be the lower half of the concatenated vector.
   268    // This operation is performed grouped by each 16 byte.

View as plain text