Source file src/simd/types_amd64.go

     1  // Code generated by x/arch/internal/simdgen using 'go run . -xedPath $XED_PATH -o godefs -goroot $GOROOT go.yaml types.yaml categories.yaml'; DO NOT EDIT.
     2  
     3  //go:build goexperiment.simd
     4  
     5  package simd
     6  
     7  // v128 is a tag type that tells the compiler that this is really 128-bit SIMD
     8  type v128 struct {
     9  	_128 [0]func() // uncomparable
    10  }
    11  
    12  // Float32x4 is a 128-bit SIMD vector of 4 float32
    13  type Float32x4 struct {
    14  	float32x4 v128
    15  	vals      [4]float32
    16  }
    17  
    18  // Len returns the number of elements in a Float32x4
    19  func (x Float32x4) Len() int { return 4 }
    20  
    21  // LoadFloat32x4 loads a Float32x4 from an array
    22  //
    23  //go:noescape
    24  func LoadFloat32x4(y *[4]float32) Float32x4
    25  
    26  // Store stores a Float32x4 to an array
    27  //
    28  //go:noescape
    29  func (x Float32x4) Store(y *[4]float32)
    30  
    31  // LoadMaskedFloat32x4 loads a Float32x4 from an array,
    32  // at those elements enabled by mask
    33  //
    34  // Asm: VMASKMOVD, CPU Feature: AVX2
    35  //
    36  //go:noescape
    37  func LoadMaskedFloat32x4(y *[4]float32, mask Mask32x4) Float32x4
    38  
    39  // StoreMasked stores a Float32x4 to an array,
    40  // at those elements enabled by mask
    41  //
    42  // Asm: VMASKMOVD, CPU Feature: AVX2
    43  //
    44  //go:noescape
    45  func (x Float32x4) StoreMasked(y *[4]float32, mask Mask32x4)
    46  
    47  // Float64x2 is a 128-bit SIMD vector of 2 float64
    48  type Float64x2 struct {
    49  	float64x2 v128
    50  	vals      [2]float64
    51  }
    52  
    53  // Len returns the number of elements in a Float64x2
    54  func (x Float64x2) Len() int { return 2 }
    55  
    56  // LoadFloat64x2 loads a Float64x2 from an array
    57  //
    58  //go:noescape
    59  func LoadFloat64x2(y *[2]float64) Float64x2
    60  
    61  // Store stores a Float64x2 to an array
    62  //
    63  //go:noescape
    64  func (x Float64x2) Store(y *[2]float64)
    65  
    66  // LoadMaskedFloat64x2 loads a Float64x2 from an array,
    67  // at those elements enabled by mask
    68  //
    69  // Asm: VMASKMOVQ, CPU Feature: AVX2
    70  //
    71  //go:noescape
    72  func LoadMaskedFloat64x2(y *[2]float64, mask Mask64x2) Float64x2
    73  
    74  // StoreMasked stores a Float64x2 to an array,
    75  // at those elements enabled by mask
    76  //
    77  // Asm: VMASKMOVQ, CPU Feature: AVX2
    78  //
    79  //go:noescape
    80  func (x Float64x2) StoreMasked(y *[2]float64, mask Mask64x2)
    81  
    82  // Int8x16 is a 128-bit SIMD vector of 16 int8
    83  type Int8x16 struct {
    84  	int8x16 v128
    85  	vals    [16]int8
    86  }
    87  
    88  // Len returns the number of elements in a Int8x16
    89  func (x Int8x16) Len() int { return 16 }
    90  
    91  // LoadInt8x16 loads a Int8x16 from an array
    92  //
    93  //go:noescape
    94  func LoadInt8x16(y *[16]int8) Int8x16
    95  
    96  // Store stores a Int8x16 to an array
    97  //
    98  //go:noescape
    99  func (x Int8x16) Store(y *[16]int8)
   100  
   101  // Int16x8 is a 128-bit SIMD vector of 8 int16
   102  type Int16x8 struct {
   103  	int16x8 v128
   104  	vals    [8]int16
   105  }
   106  
   107  // Len returns the number of elements in a Int16x8
   108  func (x Int16x8) Len() int { return 8 }
   109  
   110  // LoadInt16x8 loads a Int16x8 from an array
   111  //
   112  //go:noescape
   113  func LoadInt16x8(y *[8]int16) Int16x8
   114  
   115  // Store stores a Int16x8 to an array
   116  //
   117  //go:noescape
   118  func (x Int16x8) Store(y *[8]int16)
   119  
   120  // Int32x4 is a 128-bit SIMD vector of 4 int32
   121  type Int32x4 struct {
   122  	int32x4 v128
   123  	vals    [4]int32
   124  }
   125  
   126  // Len returns the number of elements in a Int32x4
   127  func (x Int32x4) Len() int { return 4 }
   128  
   129  // LoadInt32x4 loads a Int32x4 from an array
   130  //
   131  //go:noescape
   132  func LoadInt32x4(y *[4]int32) Int32x4
   133  
   134  // Store stores a Int32x4 to an array
   135  //
   136  //go:noescape
   137  func (x Int32x4) Store(y *[4]int32)
   138  
   139  // LoadMaskedInt32x4 loads a Int32x4 from an array,
   140  // at those elements enabled by mask
   141  //
   142  // Asm: VMASKMOVD, CPU Feature: AVX2
   143  //
   144  //go:noescape
   145  func LoadMaskedInt32x4(y *[4]int32, mask Mask32x4) Int32x4
   146  
   147  // StoreMasked stores a Int32x4 to an array,
   148  // at those elements enabled by mask
   149  //
   150  // Asm: VMASKMOVD, CPU Feature: AVX2
   151  //
   152  //go:noescape
   153  func (x Int32x4) StoreMasked(y *[4]int32, mask Mask32x4)
   154  
   155  // Int64x2 is a 128-bit SIMD vector of 2 int64
   156  type Int64x2 struct {
   157  	int64x2 v128
   158  	vals    [2]int64
   159  }
   160  
   161  // Len returns the number of elements in a Int64x2
   162  func (x Int64x2) Len() int { return 2 }
   163  
   164  // LoadInt64x2 loads a Int64x2 from an array
   165  //
   166  //go:noescape
   167  func LoadInt64x2(y *[2]int64) Int64x2
   168  
   169  // Store stores a Int64x2 to an array
   170  //
   171  //go:noescape
   172  func (x Int64x2) Store(y *[2]int64)
   173  
   174  // LoadMaskedInt64x2 loads a Int64x2 from an array,
   175  // at those elements enabled by mask
   176  //
   177  // Asm: VMASKMOVQ, CPU Feature: AVX2
   178  //
   179  //go:noescape
   180  func LoadMaskedInt64x2(y *[2]int64, mask Mask64x2) Int64x2
   181  
   182  // StoreMasked stores a Int64x2 to an array,
   183  // at those elements enabled by mask
   184  //
   185  // Asm: VMASKMOVQ, CPU Feature: AVX2
   186  //
   187  //go:noescape
   188  func (x Int64x2) StoreMasked(y *[2]int64, mask Mask64x2)
   189  
   190  // Uint8x16 is a 128-bit SIMD vector of 16 uint8
   191  type Uint8x16 struct {
   192  	uint8x16 v128
   193  	vals     [16]uint8
   194  }
   195  
   196  // Len returns the number of elements in a Uint8x16
   197  func (x Uint8x16) Len() int { return 16 }
   198  
   199  // LoadUint8x16 loads a Uint8x16 from an array
   200  //
   201  //go:noescape
   202  func LoadUint8x16(y *[16]uint8) Uint8x16
   203  
   204  // Store stores a Uint8x16 to an array
   205  //
   206  //go:noescape
   207  func (x Uint8x16) Store(y *[16]uint8)
   208  
   209  // Uint16x8 is a 128-bit SIMD vector of 8 uint16
   210  type Uint16x8 struct {
   211  	uint16x8 v128
   212  	vals     [8]uint16
   213  }
   214  
   215  // Len returns the number of elements in a Uint16x8
   216  func (x Uint16x8) Len() int { return 8 }
   217  
   218  // LoadUint16x8 loads a Uint16x8 from an array
   219  //
   220  //go:noescape
   221  func LoadUint16x8(y *[8]uint16) Uint16x8
   222  
   223  // Store stores a Uint16x8 to an array
   224  //
   225  //go:noescape
   226  func (x Uint16x8) Store(y *[8]uint16)
   227  
   228  // Uint32x4 is a 128-bit SIMD vector of 4 uint32
   229  type Uint32x4 struct {
   230  	uint32x4 v128
   231  	vals     [4]uint32
   232  }
   233  
   234  // Len returns the number of elements in a Uint32x4
   235  func (x Uint32x4) Len() int { return 4 }
   236  
   237  // LoadUint32x4 loads a Uint32x4 from an array
   238  //
   239  //go:noescape
   240  func LoadUint32x4(y *[4]uint32) Uint32x4
   241  
   242  // Store stores a Uint32x4 to an array
   243  //
   244  //go:noescape
   245  func (x Uint32x4) Store(y *[4]uint32)
   246  
   247  // LoadMaskedUint32x4 loads a Uint32x4 from an array,
   248  // at those elements enabled by mask
   249  //
   250  // Asm: VMASKMOVD, CPU Feature: AVX2
   251  //
   252  //go:noescape
   253  func LoadMaskedUint32x4(y *[4]uint32, mask Mask32x4) Uint32x4
   254  
   255  // StoreMasked stores a Uint32x4 to an array,
   256  // at those elements enabled by mask
   257  //
   258  // Asm: VMASKMOVD, CPU Feature: AVX2
   259  //
   260  //go:noescape
   261  func (x Uint32x4) StoreMasked(y *[4]uint32, mask Mask32x4)
   262  
   263  // Uint64x2 is a 128-bit SIMD vector of 2 uint64
   264  type Uint64x2 struct {
   265  	uint64x2 v128
   266  	vals     [2]uint64
   267  }
   268  
   269  // Len returns the number of elements in a Uint64x2
   270  func (x Uint64x2) Len() int { return 2 }
   271  
   272  // LoadUint64x2 loads a Uint64x2 from an array
   273  //
   274  //go:noescape
   275  func LoadUint64x2(y *[2]uint64) Uint64x2
   276  
   277  // Store stores a Uint64x2 to an array
   278  //
   279  //go:noescape
   280  func (x Uint64x2) Store(y *[2]uint64)
   281  
   282  // LoadMaskedUint64x2 loads a Uint64x2 from an array,
   283  // at those elements enabled by mask
   284  //
   285  // Asm: VMASKMOVQ, CPU Feature: AVX2
   286  //
   287  //go:noescape
   288  func LoadMaskedUint64x2(y *[2]uint64, mask Mask64x2) Uint64x2
   289  
   290  // StoreMasked stores a Uint64x2 to an array,
   291  // at those elements enabled by mask
   292  //
   293  // Asm: VMASKMOVQ, CPU Feature: AVX2
   294  //
   295  //go:noescape
   296  func (x Uint64x2) StoreMasked(y *[2]uint64, mask Mask64x2)
   297  
   298  // Mask8x16 is a 128-bit SIMD vector of 16 int8
   299  type Mask8x16 struct {
   300  	int8x16 v128
   301  	vals    [16]int8
   302  }
   303  
   304  // Mask8x16FromBits constructs a Mask8x16 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
   305  //
   306  // Asm: KMOVB, CPU Feature: AVX512
   307  func Mask8x16FromBits(y uint16) Mask8x16
   308  
   309  // ToBits constructs a bitmap from a Mask8x16, where 1 means set for the indexed element, 0 means unset.
   310  //
   311  // Asm: KMOVB, CPU Features: AVX512
   312  func (x Mask8x16) ToBits() uint16
   313  
   314  // Mask16x8 is a 128-bit SIMD vector of 8 int16
   315  type Mask16x8 struct {
   316  	int16x8 v128
   317  	vals    [8]int16
   318  }
   319  
   320  // Mask16x8FromBits constructs a Mask16x8 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
   321  //
   322  // Asm: KMOVW, CPU Feature: AVX512
   323  func Mask16x8FromBits(y uint8) Mask16x8
   324  
   325  // ToBits constructs a bitmap from a Mask16x8, where 1 means set for the indexed element, 0 means unset.
   326  //
   327  // Asm: KMOVW, CPU Features: AVX512
   328  func (x Mask16x8) ToBits() uint8
   329  
   330  // Mask32x4 is a 128-bit SIMD vector of 4 int32
   331  type Mask32x4 struct {
   332  	int32x4 v128
   333  	vals    [4]int32
   334  }
   335  
   336  // Mask32x4FromBits constructs a Mask32x4 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
   337  // Only the lower 4 bits of y are used.
   338  //
   339  // Asm: KMOVD, CPU Feature: AVX512
   340  func Mask32x4FromBits(y uint8) Mask32x4
   341  
   342  // ToBits constructs a bitmap from a Mask32x4, where 1 means set for the indexed element, 0 means unset.
   343  // Only the lower 4 bits of y are used.
   344  //
   345  // Asm: KMOVD, CPU Features: AVX512
   346  func (x Mask32x4) ToBits() uint8
   347  
   348  // Mask64x2 is a 128-bit SIMD vector of 2 int64
   349  type Mask64x2 struct {
   350  	int64x2 v128
   351  	vals    [2]int64
   352  }
   353  
   354  // Mask64x2FromBits constructs a Mask64x2 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
   355  // Only the lower 2 bits of y are used.
   356  //
   357  // Asm: KMOVQ, CPU Feature: AVX512
   358  func Mask64x2FromBits(y uint8) Mask64x2
   359  
   360  // ToBits constructs a bitmap from a Mask64x2, where 1 means set for the indexed element, 0 means unset.
   361  // Only the lower 2 bits of y are used.
   362  //
   363  // Asm: KMOVQ, CPU Features: AVX512
   364  func (x Mask64x2) ToBits() uint8
   365  
   366  // v256 is a tag type that tells the compiler that this is really 256-bit SIMD
   367  type v256 struct {
   368  	_256 [0]func() // uncomparable
   369  }
   370  
   371  // Float32x8 is a 256-bit SIMD vector of 8 float32
   372  type Float32x8 struct {
   373  	float32x8 v256
   374  	vals      [8]float32
   375  }
   376  
   377  // Len returns the number of elements in a Float32x8
   378  func (x Float32x8) Len() int { return 8 }
   379  
   380  // LoadFloat32x8 loads a Float32x8 from an array
   381  //
   382  //go:noescape
   383  func LoadFloat32x8(y *[8]float32) Float32x8
   384  
   385  // Store stores a Float32x8 to an array
   386  //
   387  //go:noescape
   388  func (x Float32x8) Store(y *[8]float32)
   389  
   390  // LoadMaskedFloat32x8 loads a Float32x8 from an array,
   391  // at those elements enabled by mask
   392  //
   393  // Asm: VMASKMOVD, CPU Feature: AVX2
   394  //
   395  //go:noescape
   396  func LoadMaskedFloat32x8(y *[8]float32, mask Mask32x8) Float32x8
   397  
   398  // StoreMasked stores a Float32x8 to an array,
   399  // at those elements enabled by mask
   400  //
   401  // Asm: VMASKMOVD, CPU Feature: AVX2
   402  //
   403  //go:noescape
   404  func (x Float32x8) StoreMasked(y *[8]float32, mask Mask32x8)
   405  
   406  // Float64x4 is a 256-bit SIMD vector of 4 float64
   407  type Float64x4 struct {
   408  	float64x4 v256
   409  	vals      [4]float64
   410  }
   411  
   412  // Len returns the number of elements in a Float64x4
   413  func (x Float64x4) Len() int { return 4 }
   414  
   415  // LoadFloat64x4 loads a Float64x4 from an array
   416  //
   417  //go:noescape
   418  func LoadFloat64x4(y *[4]float64) Float64x4
   419  
   420  // Store stores a Float64x4 to an array
   421  //
   422  //go:noescape
   423  func (x Float64x4) Store(y *[4]float64)
   424  
   425  // LoadMaskedFloat64x4 loads a Float64x4 from an array,
   426  // at those elements enabled by mask
   427  //
   428  // Asm: VMASKMOVQ, CPU Feature: AVX2
   429  //
   430  //go:noescape
   431  func LoadMaskedFloat64x4(y *[4]float64, mask Mask64x4) Float64x4
   432  
   433  // StoreMasked stores a Float64x4 to an array,
   434  // at those elements enabled by mask
   435  //
   436  // Asm: VMASKMOVQ, CPU Feature: AVX2
   437  //
   438  //go:noescape
   439  func (x Float64x4) StoreMasked(y *[4]float64, mask Mask64x4)
   440  
   441  // Int8x32 is a 256-bit SIMD vector of 32 int8
   442  type Int8x32 struct {
   443  	int8x32 v256
   444  	vals    [32]int8
   445  }
   446  
   447  // Len returns the number of elements in a Int8x32
   448  func (x Int8x32) Len() int { return 32 }
   449  
   450  // LoadInt8x32 loads a Int8x32 from an array
   451  //
   452  //go:noescape
   453  func LoadInt8x32(y *[32]int8) Int8x32
   454  
   455  // Store stores a Int8x32 to an array
   456  //
   457  //go:noescape
   458  func (x Int8x32) Store(y *[32]int8)
   459  
   460  // Int16x16 is a 256-bit SIMD vector of 16 int16
   461  type Int16x16 struct {
   462  	int16x16 v256
   463  	vals     [16]int16
   464  }
   465  
   466  // Len returns the number of elements in a Int16x16
   467  func (x Int16x16) Len() int { return 16 }
   468  
   469  // LoadInt16x16 loads a Int16x16 from an array
   470  //
   471  //go:noescape
   472  func LoadInt16x16(y *[16]int16) Int16x16
   473  
   474  // Store stores a Int16x16 to an array
   475  //
   476  //go:noescape
   477  func (x Int16x16) Store(y *[16]int16)
   478  
   479  // Int32x8 is a 256-bit SIMD vector of 8 int32
   480  type Int32x8 struct {
   481  	int32x8 v256
   482  	vals    [8]int32
   483  }
   484  
   485  // Len returns the number of elements in a Int32x8
   486  func (x Int32x8) Len() int { return 8 }
   487  
   488  // LoadInt32x8 loads a Int32x8 from an array
   489  //
   490  //go:noescape
   491  func LoadInt32x8(y *[8]int32) Int32x8
   492  
   493  // Store stores a Int32x8 to an array
   494  //
   495  //go:noescape
   496  func (x Int32x8) Store(y *[8]int32)
   497  
   498  // LoadMaskedInt32x8 loads a Int32x8 from an array,
   499  // at those elements enabled by mask
   500  //
   501  // Asm: VMASKMOVD, CPU Feature: AVX2
   502  //
   503  //go:noescape
   504  func LoadMaskedInt32x8(y *[8]int32, mask Mask32x8) Int32x8
   505  
   506  // StoreMasked stores a Int32x8 to an array,
   507  // at those elements enabled by mask
   508  //
   509  // Asm: VMASKMOVD, CPU Feature: AVX2
   510  //
   511  //go:noescape
   512  func (x Int32x8) StoreMasked(y *[8]int32, mask Mask32x8)
   513  
   514  // Int64x4 is a 256-bit SIMD vector of 4 int64
   515  type Int64x4 struct {
   516  	int64x4 v256
   517  	vals    [4]int64
   518  }
   519  
   520  // Len returns the number of elements in a Int64x4
   521  func (x Int64x4) Len() int { return 4 }
   522  
   523  // LoadInt64x4 loads a Int64x4 from an array
   524  //
   525  //go:noescape
   526  func LoadInt64x4(y *[4]int64) Int64x4
   527  
   528  // Store stores a Int64x4 to an array
   529  //
   530  //go:noescape
   531  func (x Int64x4) Store(y *[4]int64)
   532  
   533  // LoadMaskedInt64x4 loads a Int64x4 from an array,
   534  // at those elements enabled by mask
   535  //
   536  // Asm: VMASKMOVQ, CPU Feature: AVX2
   537  //
   538  //go:noescape
   539  func LoadMaskedInt64x4(y *[4]int64, mask Mask64x4) Int64x4
   540  
   541  // StoreMasked stores a Int64x4 to an array,
   542  // at those elements enabled by mask
   543  //
   544  // Asm: VMASKMOVQ, CPU Feature: AVX2
   545  //
   546  //go:noescape
   547  func (x Int64x4) StoreMasked(y *[4]int64, mask Mask64x4)
   548  
   549  // Uint8x32 is a 256-bit SIMD vector of 32 uint8
   550  type Uint8x32 struct {
   551  	uint8x32 v256
   552  	vals     [32]uint8
   553  }
   554  
   555  // Len returns the number of elements in a Uint8x32
   556  func (x Uint8x32) Len() int { return 32 }
   557  
   558  // LoadUint8x32 loads a Uint8x32 from an array
   559  //
   560  //go:noescape
   561  func LoadUint8x32(y *[32]uint8) Uint8x32
   562  
   563  // Store stores a Uint8x32 to an array
   564  //
   565  //go:noescape
   566  func (x Uint8x32) Store(y *[32]uint8)
   567  
   568  // Uint16x16 is a 256-bit SIMD vector of 16 uint16
   569  type Uint16x16 struct {
   570  	uint16x16 v256
   571  	vals      [16]uint16
   572  }
   573  
   574  // Len returns the number of elements in a Uint16x16
   575  func (x Uint16x16) Len() int { return 16 }
   576  
   577  // LoadUint16x16 loads a Uint16x16 from an array
   578  //
   579  //go:noescape
   580  func LoadUint16x16(y *[16]uint16) Uint16x16
   581  
   582  // Store stores a Uint16x16 to an array
   583  //
   584  //go:noescape
   585  func (x Uint16x16) Store(y *[16]uint16)
   586  
   587  // Uint32x8 is a 256-bit SIMD vector of 8 uint32
   588  type Uint32x8 struct {
   589  	uint32x8 v256
   590  	vals     [8]uint32
   591  }
   592  
   593  // Len returns the number of elements in a Uint32x8
   594  func (x Uint32x8) Len() int { return 8 }
   595  
   596  // LoadUint32x8 loads a Uint32x8 from an array
   597  //
   598  //go:noescape
   599  func LoadUint32x8(y *[8]uint32) Uint32x8
   600  
   601  // Store stores a Uint32x8 to an array
   602  //
   603  //go:noescape
   604  func (x Uint32x8) Store(y *[8]uint32)
   605  
   606  // LoadMaskedUint32x8 loads a Uint32x8 from an array,
   607  // at those elements enabled by mask
   608  //
   609  // Asm: VMASKMOVD, CPU Feature: AVX2
   610  //
   611  //go:noescape
   612  func LoadMaskedUint32x8(y *[8]uint32, mask Mask32x8) Uint32x8
   613  
   614  // StoreMasked stores a Uint32x8 to an array,
   615  // at those elements enabled by mask
   616  //
   617  // Asm: VMASKMOVD, CPU Feature: AVX2
   618  //
   619  //go:noescape
   620  func (x Uint32x8) StoreMasked(y *[8]uint32, mask Mask32x8)
   621  
   622  // Uint64x4 is a 256-bit SIMD vector of 4 uint64
   623  type Uint64x4 struct {
   624  	uint64x4 v256
   625  	vals     [4]uint64
   626  }
   627  
   628  // Len returns the number of elements in a Uint64x4
   629  func (x Uint64x4) Len() int { return 4 }
   630  
   631  // LoadUint64x4 loads a Uint64x4 from an array
   632  //
   633  //go:noescape
   634  func LoadUint64x4(y *[4]uint64) Uint64x4
   635  
   636  // Store stores a Uint64x4 to an array
   637  //
   638  //go:noescape
   639  func (x Uint64x4) Store(y *[4]uint64)
   640  
   641  // LoadMaskedUint64x4 loads a Uint64x4 from an array,
   642  // at those elements enabled by mask
   643  //
   644  // Asm: VMASKMOVQ, CPU Feature: AVX2
   645  //
   646  //go:noescape
   647  func LoadMaskedUint64x4(y *[4]uint64, mask Mask64x4) Uint64x4
   648  
   649  // StoreMasked stores a Uint64x4 to an array,
   650  // at those elements enabled by mask
   651  //
   652  // Asm: VMASKMOVQ, CPU Feature: AVX2
   653  //
   654  //go:noescape
   655  func (x Uint64x4) StoreMasked(y *[4]uint64, mask Mask64x4)
   656  
   657  // Mask8x32 is a 256-bit SIMD vector of 32 int8
   658  type Mask8x32 struct {
   659  	int8x32 v256
   660  	vals    [32]int8
   661  }
   662  
   663  // Mask8x32FromBits constructs a Mask8x32 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
   664  //
   665  // Asm: KMOVB, CPU Feature: AVX512
   666  func Mask8x32FromBits(y uint32) Mask8x32
   667  
   668  // ToBits constructs a bitmap from a Mask8x32, where 1 means set for the indexed element, 0 means unset.
   669  //
   670  // Asm: KMOVB, CPU Features: AVX512
   671  func (x Mask8x32) ToBits() uint32
   672  
   673  // Mask16x16 is a 256-bit SIMD vector of 16 int16
   674  type Mask16x16 struct {
   675  	int16x16 v256
   676  	vals     [16]int16
   677  }
   678  
   679  // Mask16x16FromBits constructs a Mask16x16 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
   680  //
   681  // Asm: KMOVW, CPU Feature: AVX512
   682  func Mask16x16FromBits(y uint16) Mask16x16
   683  
   684  // ToBits constructs a bitmap from a Mask16x16, where 1 means set for the indexed element, 0 means unset.
   685  //
   686  // Asm: KMOVW, CPU Features: AVX512
   687  func (x Mask16x16) ToBits() uint16
   688  
   689  // Mask32x8 is a 256-bit SIMD vector of 8 int32
   690  type Mask32x8 struct {
   691  	int32x8 v256
   692  	vals    [8]int32
   693  }
   694  
   695  // Mask32x8FromBits constructs a Mask32x8 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
   696  //
   697  // Asm: KMOVD, CPU Feature: AVX512
   698  func Mask32x8FromBits(y uint8) Mask32x8
   699  
   700  // ToBits constructs a bitmap from a Mask32x8, where 1 means set for the indexed element, 0 means unset.
   701  //
   702  // Asm: KMOVD, CPU Features: AVX512
   703  func (x Mask32x8) ToBits() uint8
   704  
   705  // Mask64x4 is a 256-bit SIMD vector of 4 int64
   706  type Mask64x4 struct {
   707  	int64x4 v256
   708  	vals    [4]int64
   709  }
   710  
   711  // Mask64x4FromBits constructs a Mask64x4 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
   712  // Only the lower 4 bits of y are used.
   713  //
   714  // Asm: KMOVQ, CPU Feature: AVX512
   715  func Mask64x4FromBits(y uint8) Mask64x4
   716  
   717  // ToBits constructs a bitmap from a Mask64x4, where 1 means set for the indexed element, 0 means unset.
   718  // Only the lower 4 bits of y are used.
   719  //
   720  // Asm: KMOVQ, CPU Features: AVX512
   721  func (x Mask64x4) ToBits() uint8
   722  
   723  // v512 is a tag type that tells the compiler that this is really 512-bit SIMD
   724  type v512 struct {
   725  	_512 [0]func() // uncomparable
   726  }
   727  
   728  // Float32x16 is a 512-bit SIMD vector of 16 float32
   729  type Float32x16 struct {
   730  	float32x16 v512
   731  	vals       [16]float32
   732  }
   733  
   734  // Len returns the number of elements in a Float32x16
   735  func (x Float32x16) Len() int { return 16 }
   736  
   737  // LoadFloat32x16 loads a Float32x16 from an array
   738  //
   739  //go:noescape
   740  func LoadFloat32x16(y *[16]float32) Float32x16
   741  
   742  // Store stores a Float32x16 to an array
   743  //
   744  //go:noescape
   745  func (x Float32x16) Store(y *[16]float32)
   746  
   747  // LoadMaskedFloat32x16 loads a Float32x16 from an array,
   748  // at those elements enabled by mask
   749  //
   750  // Asm: VMOVDQU32.Z, CPU Feature: AVX512
   751  //
   752  //go:noescape
   753  func LoadMaskedFloat32x16(y *[16]float32, mask Mask32x16) Float32x16
   754  
   755  // StoreMasked stores a Float32x16 to an array,
   756  // at those elements enabled by mask
   757  //
   758  // Asm: VMOVDQU32, CPU Feature: AVX512
   759  //
   760  //go:noescape
   761  func (x Float32x16) StoreMasked(y *[16]float32, mask Mask32x16)
   762  
   763  // Float64x8 is a 512-bit SIMD vector of 8 float64
   764  type Float64x8 struct {
   765  	float64x8 v512
   766  	vals      [8]float64
   767  }
   768  
   769  // Len returns the number of elements in a Float64x8
   770  func (x Float64x8) Len() int { return 8 }
   771  
   772  // LoadFloat64x8 loads a Float64x8 from an array
   773  //
   774  //go:noescape
   775  func LoadFloat64x8(y *[8]float64) Float64x8
   776  
   777  // Store stores a Float64x8 to an array
   778  //
   779  //go:noescape
   780  func (x Float64x8) Store(y *[8]float64)
   781  
   782  // LoadMaskedFloat64x8 loads a Float64x8 from an array,
   783  // at those elements enabled by mask
   784  //
   785  // Asm: VMOVDQU64.Z, CPU Feature: AVX512
   786  //
   787  //go:noescape
   788  func LoadMaskedFloat64x8(y *[8]float64, mask Mask64x8) Float64x8
   789  
   790  // StoreMasked stores a Float64x8 to an array,
   791  // at those elements enabled by mask
   792  //
   793  // Asm: VMOVDQU64, CPU Feature: AVX512
   794  //
   795  //go:noescape
   796  func (x Float64x8) StoreMasked(y *[8]float64, mask Mask64x8)
   797  
   798  // Int8x64 is a 512-bit SIMD vector of 64 int8
   799  type Int8x64 struct {
   800  	int8x64 v512
   801  	vals    [64]int8
   802  }
   803  
   804  // Len returns the number of elements in a Int8x64
   805  func (x Int8x64) Len() int { return 64 }
   806  
   807  // LoadInt8x64 loads a Int8x64 from an array
   808  //
   809  //go:noescape
   810  func LoadInt8x64(y *[64]int8) Int8x64
   811  
   812  // Store stores a Int8x64 to an array
   813  //
   814  //go:noescape
   815  func (x Int8x64) Store(y *[64]int8)
   816  
   817  // LoadMaskedInt8x64 loads a Int8x64 from an array,
   818  // at those elements enabled by mask
   819  //
   820  // Asm: VMOVDQU8.Z, CPU Feature: AVX512
   821  //
   822  //go:noescape
   823  func LoadMaskedInt8x64(y *[64]int8, mask Mask8x64) Int8x64
   824  
   825  // StoreMasked stores a Int8x64 to an array,
   826  // at those elements enabled by mask
   827  //
   828  // Asm: VMOVDQU8, CPU Feature: AVX512
   829  //
   830  //go:noescape
   831  func (x Int8x64) StoreMasked(y *[64]int8, mask Mask8x64)
   832  
   833  // Int16x32 is a 512-bit SIMD vector of 32 int16
   834  type Int16x32 struct {
   835  	int16x32 v512
   836  	vals     [32]int16
   837  }
   838  
   839  // Len returns the number of elements in a Int16x32
   840  func (x Int16x32) Len() int { return 32 }
   841  
   842  // LoadInt16x32 loads a Int16x32 from an array
   843  //
   844  //go:noescape
   845  func LoadInt16x32(y *[32]int16) Int16x32
   846  
   847  // Store stores a Int16x32 to an array
   848  //
   849  //go:noescape
   850  func (x Int16x32) Store(y *[32]int16)
   851  
   852  // LoadMaskedInt16x32 loads a Int16x32 from an array,
   853  // at those elements enabled by mask
   854  //
   855  // Asm: VMOVDQU16.Z, CPU Feature: AVX512
   856  //
   857  //go:noescape
   858  func LoadMaskedInt16x32(y *[32]int16, mask Mask16x32) Int16x32
   859  
   860  // StoreMasked stores a Int16x32 to an array,
   861  // at those elements enabled by mask
   862  //
   863  // Asm: VMOVDQU16, CPU Feature: AVX512
   864  //
   865  //go:noescape
   866  func (x Int16x32) StoreMasked(y *[32]int16, mask Mask16x32)
   867  
   868  // Int32x16 is a 512-bit SIMD vector of 16 int32
   869  type Int32x16 struct {
   870  	int32x16 v512
   871  	vals     [16]int32
   872  }
   873  
   874  // Len returns the number of elements in a Int32x16
   875  func (x Int32x16) Len() int { return 16 }
   876  
   877  // LoadInt32x16 loads a Int32x16 from an array
   878  //
   879  //go:noescape
   880  func LoadInt32x16(y *[16]int32) Int32x16
   881  
   882  // Store stores a Int32x16 to an array
   883  //
   884  //go:noescape
   885  func (x Int32x16) Store(y *[16]int32)
   886  
   887  // LoadMaskedInt32x16 loads a Int32x16 from an array,
   888  // at those elements enabled by mask
   889  //
   890  // Asm: VMOVDQU32.Z, CPU Feature: AVX512
   891  //
   892  //go:noescape
   893  func LoadMaskedInt32x16(y *[16]int32, mask Mask32x16) Int32x16
   894  
   895  // StoreMasked stores a Int32x16 to an array,
   896  // at those elements enabled by mask
   897  //
   898  // Asm: VMOVDQU32, CPU Feature: AVX512
   899  //
   900  //go:noescape
   901  func (x Int32x16) StoreMasked(y *[16]int32, mask Mask32x16)
   902  
   903  // Int64x8 is a 512-bit SIMD vector of 8 int64
   904  type Int64x8 struct {
   905  	int64x8 v512
   906  	vals    [8]int64
   907  }
   908  
   909  // Len returns the number of elements in a Int64x8
   910  func (x Int64x8) Len() int { return 8 }
   911  
   912  // LoadInt64x8 loads a Int64x8 from an array
   913  //
   914  //go:noescape
   915  func LoadInt64x8(y *[8]int64) Int64x8
   916  
   917  // Store stores a Int64x8 to an array
   918  //
   919  //go:noescape
   920  func (x Int64x8) Store(y *[8]int64)
   921  
   922  // LoadMaskedInt64x8 loads a Int64x8 from an array,
   923  // at those elements enabled by mask
   924  //
   925  // Asm: VMOVDQU64.Z, CPU Feature: AVX512
   926  //
   927  //go:noescape
   928  func LoadMaskedInt64x8(y *[8]int64, mask Mask64x8) Int64x8
   929  
   930  // StoreMasked stores a Int64x8 to an array,
   931  // at those elements enabled by mask
   932  //
   933  // Asm: VMOVDQU64, CPU Feature: AVX512
   934  //
   935  //go:noescape
   936  func (x Int64x8) StoreMasked(y *[8]int64, mask Mask64x8)
   937  
   938  // Uint8x64 is a 512-bit SIMD vector of 64 uint8
   939  type Uint8x64 struct {
   940  	uint8x64 v512
   941  	vals     [64]uint8
   942  }
   943  
   944  // Len returns the number of elements in a Uint8x64
   945  func (x Uint8x64) Len() int { return 64 }
   946  
   947  // LoadUint8x64 loads a Uint8x64 from an array
   948  //
   949  //go:noescape
   950  func LoadUint8x64(y *[64]uint8) Uint8x64
   951  
   952  // Store stores a Uint8x64 to an array
   953  //
   954  //go:noescape
   955  func (x Uint8x64) Store(y *[64]uint8)
   956  
   957  // LoadMaskedUint8x64 loads a Uint8x64 from an array,
   958  // at those elements enabled by mask
   959  //
   960  // Asm: VMOVDQU8.Z, CPU Feature: AVX512
   961  //
   962  //go:noescape
   963  func LoadMaskedUint8x64(y *[64]uint8, mask Mask8x64) Uint8x64
   964  
   965  // StoreMasked stores a Uint8x64 to an array,
   966  // at those elements enabled by mask
   967  //
   968  // Asm: VMOVDQU8, CPU Feature: AVX512
   969  //
   970  //go:noescape
   971  func (x Uint8x64) StoreMasked(y *[64]uint8, mask Mask8x64)
   972  
   973  // Uint16x32 is a 512-bit SIMD vector of 32 uint16
   974  type Uint16x32 struct {
   975  	uint16x32 v512
   976  	vals      [32]uint16
   977  }
   978  
   979  // Len returns the number of elements in a Uint16x32
   980  func (x Uint16x32) Len() int { return 32 }
   981  
   982  // LoadUint16x32 loads a Uint16x32 from an array
   983  //
   984  //go:noescape
   985  func LoadUint16x32(y *[32]uint16) Uint16x32
   986  
   987  // Store stores a Uint16x32 to an array
   988  //
   989  //go:noescape
   990  func (x Uint16x32) Store(y *[32]uint16)
   991  
   992  // LoadMaskedUint16x32 loads a Uint16x32 from an array,
   993  // at those elements enabled by mask
   994  //
   995  // Asm: VMOVDQU16.Z, CPU Feature: AVX512
   996  //
   997  //go:noescape
   998  func LoadMaskedUint16x32(y *[32]uint16, mask Mask16x32) Uint16x32
   999  
  1000  // StoreMasked stores a Uint16x32 to an array,
  1001  // at those elements enabled by mask
  1002  //
  1003  // Asm: VMOVDQU16, CPU Feature: AVX512
  1004  //
  1005  //go:noescape
  1006  func (x Uint16x32) StoreMasked(y *[32]uint16, mask Mask16x32)
  1007  
  1008  // Uint32x16 is a 512-bit SIMD vector of 16 uint32
  1009  type Uint32x16 struct {
  1010  	uint32x16 v512
  1011  	vals      [16]uint32
  1012  }
  1013  
  1014  // Len returns the number of elements in a Uint32x16
  1015  func (x Uint32x16) Len() int { return 16 }
  1016  
  1017  // LoadUint32x16 loads a Uint32x16 from an array
  1018  //
  1019  //go:noescape
  1020  func LoadUint32x16(y *[16]uint32) Uint32x16
  1021  
  1022  // Store stores a Uint32x16 to an array
  1023  //
  1024  //go:noescape
  1025  func (x Uint32x16) Store(y *[16]uint32)
  1026  
  1027  // LoadMaskedUint32x16 loads a Uint32x16 from an array,
  1028  // at those elements enabled by mask
  1029  //
  1030  // Asm: VMOVDQU32.Z, CPU Feature: AVX512
  1031  //
  1032  //go:noescape
  1033  func LoadMaskedUint32x16(y *[16]uint32, mask Mask32x16) Uint32x16
  1034  
  1035  // StoreMasked stores a Uint32x16 to an array,
  1036  // at those elements enabled by mask
  1037  //
  1038  // Asm: VMOVDQU32, CPU Feature: AVX512
  1039  //
  1040  //go:noescape
  1041  func (x Uint32x16) StoreMasked(y *[16]uint32, mask Mask32x16)
  1042  
  1043  // Uint64x8 is a 512-bit SIMD vector of 8 uint64
  1044  type Uint64x8 struct {
  1045  	uint64x8 v512
  1046  	vals     [8]uint64
  1047  }
  1048  
  1049  // Len returns the number of elements in a Uint64x8
  1050  func (x Uint64x8) Len() int { return 8 }
  1051  
  1052  // LoadUint64x8 loads a Uint64x8 from an array
  1053  //
  1054  //go:noescape
  1055  func LoadUint64x8(y *[8]uint64) Uint64x8
  1056  
  1057  // Store stores a Uint64x8 to an array
  1058  //
  1059  //go:noescape
  1060  func (x Uint64x8) Store(y *[8]uint64)
  1061  
  1062  // LoadMaskedUint64x8 loads a Uint64x8 from an array,
  1063  // at those elements enabled by mask
  1064  //
  1065  // Asm: VMOVDQU64.Z, CPU Feature: AVX512
  1066  //
  1067  //go:noescape
  1068  func LoadMaskedUint64x8(y *[8]uint64, mask Mask64x8) Uint64x8
  1069  
  1070  // StoreMasked stores a Uint64x8 to an array,
  1071  // at those elements enabled by mask
  1072  //
  1073  // Asm: VMOVDQU64, CPU Feature: AVX512
  1074  //
  1075  //go:noescape
  1076  func (x Uint64x8) StoreMasked(y *[8]uint64, mask Mask64x8)
  1077  
  1078  // Mask8x64 is a 512-bit SIMD vector of 64 int8
  1079  type Mask8x64 struct {
  1080  	int8x64 v512
  1081  	vals    [64]int8
  1082  }
  1083  
  1084  // Mask8x64FromBits constructs a Mask8x64 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
  1085  //
  1086  // Asm: KMOVB, CPU Feature: AVX512
  1087  func Mask8x64FromBits(y uint64) Mask8x64
  1088  
  1089  // ToBits constructs a bitmap from a Mask8x64, where 1 means set for the indexed element, 0 means unset.
  1090  //
  1091  // Asm: KMOVB, CPU Features: AVX512
  1092  func (x Mask8x64) ToBits() uint64
  1093  
  1094  // Mask16x32 is a 512-bit SIMD vector of 32 int16
  1095  type Mask16x32 struct {
  1096  	int16x32 v512
  1097  	vals     [32]int16
  1098  }
  1099  
  1100  // Mask16x32FromBits constructs a Mask16x32 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
  1101  //
  1102  // Asm: KMOVW, CPU Feature: AVX512
  1103  func Mask16x32FromBits(y uint32) Mask16x32
  1104  
  1105  // ToBits constructs a bitmap from a Mask16x32, where 1 means set for the indexed element, 0 means unset.
  1106  //
  1107  // Asm: KMOVW, CPU Features: AVX512
  1108  func (x Mask16x32) ToBits() uint32
  1109  
  1110  // Mask32x16 is a 512-bit SIMD vector of 16 int32
  1111  type Mask32x16 struct {
  1112  	int32x16 v512
  1113  	vals     [16]int32
  1114  }
  1115  
  1116  // Mask32x16FromBits constructs a Mask32x16 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
  1117  //
  1118  // Asm: KMOVD, CPU Feature: AVX512
  1119  func Mask32x16FromBits(y uint16) Mask32x16
  1120  
  1121  // ToBits constructs a bitmap from a Mask32x16, where 1 means set for the indexed element, 0 means unset.
  1122  //
  1123  // Asm: KMOVD, CPU Features: AVX512
  1124  func (x Mask32x16) ToBits() uint16
  1125  
  1126  // Mask64x8 is a 512-bit SIMD vector of 8 int64
  1127  type Mask64x8 struct {
  1128  	int64x8 v512
  1129  	vals    [8]int64
  1130  }
  1131  
  1132  // Mask64x8FromBits constructs a Mask64x8 from a bitmap value, where 1 means set for the indexed element, 0 means unset.
  1133  //
  1134  // Asm: KMOVQ, CPU Feature: AVX512
  1135  func Mask64x8FromBits(y uint8) Mask64x8
  1136  
  1137  // ToBits constructs a bitmap from a Mask64x8, where 1 means set for the indexed element, 0 means unset.
  1138  //
  1139  // Asm: KMOVQ, CPU Features: AVX512
  1140  func (x Mask64x8) ToBits() uint8
  1141  

View as plain text