Source file src/simd/archsimd/ops_internal_arm64.go

     1  // Code generated by 'simdgen -o godefs -goroot $GOROOT -arch arm64 -arm64Path $ARM64_ISA_PATH go_arm64.yaml types.yaml categories.yaml'; DO NOT EDIT.
     2  
     3  //go:build goexperiment.simd
     4  
     5  package archsimd
     6  
     7  /* bitSelect */
     8  
     9  // bitSelect selects bits from y where mask is 1, keeps bits from x where mask is 0.
    10  //
    11  // Asm: VBIT, CPU Feature: NEON
    12  func (x Int8x16) bitSelect(y Int8x16, mask Int8x16) Int8x16
    13  
    14  /* bitSelectNot */
    15  
    16  // bitSelectNot selects bits from y where mask is 0, keeps bits from x where mask is 1.
    17  //
    18  // Asm: VBIF, CPU Feature: NEON
    19  func (x Int8x16) bitSelectNot(y Int8x16, mask Int8x16) Int8x16
    20  
    21  /* broadcast1To2 */
    22  
    23  // broadcast1To2 copies the lowest element of its input to all 2 elements of
    24  // the output vector.
    25  //
    26  // Asm: VDUP, CPU Feature: NEON
    27  func (x Float64x2) broadcast1To2() Float64x2
    28  
    29  // broadcast1To2 copies the lowest element of its input to all 2 elements of
    30  // the output vector.
    31  //
    32  // Asm: VDUP, CPU Feature: NEON
    33  func (x Int64x2) broadcast1To2() Int64x2
    34  
    35  // broadcast1To2 copies the lowest element of its input to all 2 elements of
    36  // the output vector.
    37  //
    38  // Asm: VDUP, CPU Feature: NEON
    39  func (x Uint64x2) broadcast1To2() Uint64x2
    40  
    41  /* broadcast1To4 */
    42  
    43  // broadcast1To4 copies the lowest element of its input to all 4 elements of
    44  // the output vector.
    45  //
    46  // Asm: VDUP, CPU Feature: NEON
    47  func (x Float32x4) broadcast1To4() Float32x4
    48  
    49  // broadcast1To4 copies the lowest element of its input to all 4 elements of
    50  // the output vector.
    51  //
    52  // Asm: VDUP, CPU Feature: NEON
    53  func (x Int32x4) broadcast1To4() Int32x4
    54  
    55  // broadcast1To4 copies the lowest element of its input to all 4 elements of
    56  // the output vector.
    57  //
    58  // Asm: VDUP, CPU Feature: NEON
    59  func (x Uint32x4) broadcast1To4() Uint32x4
    60  
    61  /* broadcast1To8 */
    62  
    63  // broadcast1To8 copies the lowest element of its input to all 8 elements of
    64  // the output vector.
    65  //
    66  // Asm: VDUP, CPU Feature: NEON
    67  func (x Int16x8) broadcast1To8() Int16x8
    68  
    69  // broadcast1To8 copies the lowest element of its input to all 8 elements of
    70  // the output vector.
    71  //
    72  // Asm: VDUP, CPU Feature: NEON
    73  func (x Uint16x8) broadcast1To8() Uint16x8
    74  
    75  /* broadcast1To16 */
    76  
    77  // broadcast1To16 copies the lowest element of its input to all 16 elements of
    78  // the output vector.
    79  //
    80  // Asm: VDUP, CPU Feature: NEON
    81  func (x Int8x16) broadcast1To16() Int8x16
    82  
    83  // broadcast1To16 copies the lowest element of its input to all 16 elements of
    84  // the output vector.
    85  //
    86  // Asm: VDUP, CPU Feature: NEON
    87  func (x Uint8x16) broadcast1To16() Uint8x16
    88  
    89  /* carrylessMultiplyWidenLo */
    90  
    91  // carrylessMultiplyWidenLo returns the carryless (polynomial) product of the low halves
    92  // of x and y.
    93  //
    94  // A carryless multiplication uses bitwise XOR instead of
    95  // add-with-carry, for example (in base two):
    96  //
    97  //	11 * 11 = 11 * (10 ^ 1) = (11 * 10) ^ (11 * 1) = 110 ^ 11 = 101
    98  //
    99  // This also models multiplication of polynomials with coefficients
   100  // from GF(2) -- 11 * 11 models (x+1)*(x+1) = x**2 + (1^1)x + 1 =
   101  // x**2 + 0x + 1 = x**2 + 1 modeled by 101.  (Note that "+" adds
   102  // polynomial terms, but coefficients "add" with XOR.)
   103  // For the high-indexed elements, use HiToLo:
   104  //
   105  //	x.HiToLo().carrylessMultiplyWidenLo(y.HiToLo())
   106  //
   107  // Asm: VPMULL, CPU Feature: NEON
   108  func (x Uint64x2) carrylessMultiplyWidenLo(y Uint64x2) Uint64x2
   109  
   110  /* reduceMax */
   111  
   112  // reduceMax reduces x by taking the maximum of all elements. The maximum is placed
   113  // in element 0 of the result; other elements are zeroed.
   114  //
   115  // Asm: VFMAXV, CPU Feature: NEON
   116  func (x Float32x4) reduceMax() Float32x4
   117  
   118  // reduceMax reduces x by taking the maximum of all elements. The maximum is placed
   119  // in element 0 of the result; other elements are zeroed.
   120  //
   121  // Asm: VSMAXV, CPU Feature: NEON
   122  func (x Int8x16) reduceMax() Int8x16
   123  
   124  // reduceMax reduces x by taking the maximum of all elements. The maximum is placed
   125  // in element 0 of the result; other elements are zeroed.
   126  //
   127  // Asm: VSMAXV, CPU Feature: NEON
   128  func (x Int16x8) reduceMax() Int16x8
   129  
   130  // reduceMax reduces x by taking the maximum of all elements. The maximum is placed
   131  // in element 0 of the result; other elements are zeroed.
   132  //
   133  // Asm: VSMAXV, CPU Feature: NEON
   134  func (x Int32x4) reduceMax() Int32x4
   135  
   136  // reduceMax reduces x by taking the maximum of all elements. The maximum is placed
   137  // in element 0 of the result; other elements are zeroed.
   138  //
   139  // Asm: VUMAXV, CPU Feature: NEON
   140  func (x Uint8x16) reduceMax() Uint8x16
   141  
   142  // reduceMax reduces x by taking the maximum of all elements. The maximum is placed
   143  // in element 0 of the result; other elements are zeroed.
   144  //
   145  // Asm: VUMAXV, CPU Feature: NEON
   146  func (x Uint16x8) reduceMax() Uint16x8
   147  
   148  // reduceMax reduces x by taking the maximum of all elements. The maximum is placed
   149  // in element 0 of the result; other elements are zeroed.
   150  //
   151  // Asm: VUMAXV, CPU Feature: NEON
   152  func (x Uint32x4) reduceMax() Uint32x4
   153  
   154  /* reduceMin */
   155  
   156  // reduceMin reduces x by taking the minimum of all elements. The minimum is placed
   157  // in element 0 of the result; other elements are zeroed.
   158  //
   159  // Asm: VFMINV, CPU Feature: NEON
   160  func (x Float32x4) reduceMin() Float32x4
   161  
   162  // reduceMin reduces x by taking the minimum of all elements. The minimum is placed
   163  // in element 0 of the result; other elements are zeroed.
   164  //
   165  // Asm: VSMINV, CPU Feature: NEON
   166  func (x Int8x16) reduceMin() Int8x16
   167  
   168  // reduceMin reduces x by taking the minimum of all elements. The minimum is placed
   169  // in element 0 of the result; other elements are zeroed.
   170  //
   171  // Asm: VSMINV, CPU Feature: NEON
   172  func (x Int16x8) reduceMin() Int16x8
   173  
   174  // reduceMin reduces x by taking the minimum of all elements. The minimum is placed
   175  // in element 0 of the result; other elements are zeroed.
   176  //
   177  // Asm: VSMINV, CPU Feature: NEON
   178  func (x Int32x4) reduceMin() Int32x4
   179  
   180  // reduceMin reduces x by taking the minimum of all elements. The minimum is placed
   181  // in element 0 of the result; other elements are zeroed.
   182  //
   183  // Asm: VUMINV, CPU Feature: NEON
   184  func (x Uint8x16) reduceMin() Uint8x16
   185  
   186  // reduceMin reduces x by taking the minimum of all elements. The minimum is placed
   187  // in element 0 of the result; other elements are zeroed.
   188  //
   189  // Asm: VUMINV, CPU Feature: NEON
   190  func (x Uint16x8) reduceMin() Uint16x8
   191  
   192  // reduceMin reduces x by taking the minimum of all elements. The minimum is placed
   193  // in element 0 of the result; other elements are zeroed.
   194  //
   195  // Asm: VUMINV, CPU Feature: NEON
   196  func (x Uint32x4) reduceMin() Uint32x4
   197  
   198  /* reduceSum */
   199  
   200  // reduceSum reduces x by summing all elements. The sum is placed in element 0
   201  // of the result; other elements are zeroed.
   202  //
   203  // Asm: VADDV, CPU Feature: NEON
   204  func (x Int8x16) reduceSum() Int8x16
   205  
   206  // reduceSum reduces x by summing all elements. The sum is placed in element 0
   207  // of the result; other elements are zeroed.
   208  //
   209  // Asm: VADDV, CPU Feature: NEON
   210  func (x Int16x8) reduceSum() Int16x8
   211  
   212  // reduceSum reduces x by summing all elements. The sum is placed in element 0
   213  // of the result; other elements are zeroed.
   214  //
   215  // Asm: VADDV, CPU Feature: NEON
   216  func (x Int32x4) reduceSum() Int32x4
   217  
   218  // reduceSum reduces x by summing all elements. The sum is placed in element 0
   219  // of the result; other elements are zeroed.
   220  //
   221  // Asm: VADDV, CPU Feature: NEON
   222  func (x Uint8x16) reduceSum() Uint8x16
   223  
   224  // reduceSum reduces x by summing all elements. The sum is placed in element 0
   225  // of the result; other elements are zeroed.
   226  //
   227  // Asm: VADDV, CPU Feature: NEON
   228  func (x Uint16x8) reduceSum() Uint16x8
   229  
   230  // reduceSum reduces x by summing all elements. The sum is placed in element 0
   231  // of the result; other elements are zeroed.
   232  //
   233  // Asm: VADDV, CPU Feature: NEON
   234  func (x Uint32x4) reduceSum() Uint32x4
   235  

View as plain text