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

     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.
   269  

View as plain text