Source file src/simd/internal/simdref/simdref.go

     1  // Code generated by 'refgen'. DO NOT EDIT.
     2  
     3  package simdref
     4  
     5  import "simd/internal/spec"
     6  
     7  type (
     8  	Mask16s    struct{ v []spec.Mask16 }
     9  	Mask16x8   struct{ v []spec.Mask16 }
    10  	Mask16x16  struct{ v []spec.Mask16 }
    11  	Mask16x32  struct{ v []spec.Mask16 }
    12  	Mask32s    struct{ v []spec.Mask32 }
    13  	Mask32x4   struct{ v []spec.Mask32 }
    14  	Mask32x8   struct{ v []spec.Mask32 }
    15  	Mask32x16  struct{ v []spec.Mask32 }
    16  	Mask64s    struct{ v []spec.Mask64 }
    17  	Mask64x2   struct{ v []spec.Mask64 }
    18  	Mask64x4   struct{ v []spec.Mask64 }
    19  	Mask64x8   struct{ v []spec.Mask64 }
    20  	Mask8s     struct{ v []spec.Mask8 }
    21  	Mask8x16   struct{ v []spec.Mask8 }
    22  	Mask8x32   struct{ v []spec.Mask8 }
    23  	Mask8x64   struct{ v []spec.Mask8 }
    24  	Float32s   struct{ v []float32 }
    25  	Float32x4  struct{ v []float32 }
    26  	Float32x8  struct{ v []float32 }
    27  	Float32x16 struct{ v []float32 }
    28  	Float64s   struct{ v []float64 }
    29  	Float64x2  struct{ v []float64 }
    30  	Float64x4  struct{ v []float64 }
    31  	Float64x8  struct{ v []float64 }
    32  	Int16s     struct{ v []int16 }
    33  	Int16x8    struct{ v []int16 }
    34  	Int16x16   struct{ v []int16 }
    35  	Int16x32   struct{ v []int16 }
    36  	Int32s     struct{ v []int32 }
    37  	Int32x4    struct{ v []int32 }
    38  	Int32x8    struct{ v []int32 }
    39  	Int32x16   struct{ v []int32 }
    40  	Int64s     struct{ v []int64 }
    41  	Int64x2    struct{ v []int64 }
    42  	Int64x4    struct{ v []int64 }
    43  	Int64x8    struct{ v []int64 }
    44  	Int8s      struct{ v []int8 }
    45  	Int8x16    struct{ v []int8 }
    46  	Int8x32    struct{ v []int8 }
    47  	Int8x64    struct{ v []int8 }
    48  	Uint16s    struct{ v []uint16 }
    49  	Uint16x8   struct{ v []uint16 }
    50  	Uint16x16  struct{ v []uint16 }
    51  	Uint16x32  struct{ v []uint16 }
    52  	Uint32s    struct{ v []uint32 }
    53  	Uint32x4   struct{ v []uint32 }
    54  	Uint32x8   struct{ v []uint32 }
    55  	Uint32x16  struct{ v []uint32 }
    56  	Uint64s    struct{ v []uint64 }
    57  	Uint64x2   struct{ v []uint64 }
    58  	Uint64x4   struct{ v []uint64 }
    59  	Uint64x8   struct{ v []uint64 }
    60  	Uint8s     struct{ v []uint8 }
    61  	Uint8x16   struct{ v []uint8 }
    62  	Uint8x32   struct{ v []uint8 }
    63  	Uint8x64   struct{ v []uint8 }
    64  )
    65  
    66  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
    67  func (x Float32x4) ConvertToFloat64() (z Float64x4) {
    68  	return Float64x4{spec.ConvertToZ[float32, spec.Width128, float64, spec.Width256](x.v)}
    69  }
    70  
    71  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
    72  func (x Float32x4) ConvertToInt32() (z Int32x4) {
    73  	return Int32x4{spec.ConvertToZ[float32, spec.Width128, int32, spec.Width128](x.v)}
    74  }
    75  
    76  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
    77  func (x Float32x4) ConvertToInt64() (z Int64x4) {
    78  	return Int64x4{spec.ConvertToZ[float32, spec.Width128, int64, spec.Width256](x.v)}
    79  }
    80  
    81  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
    82  func (x Float32x4) ConvertToUint32() (z Uint32x4) {
    83  	return Uint32x4{spec.ConvertToZ[float32, spec.Width128, uint32, spec.Width128](x.v)}
    84  }
    85  
    86  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
    87  func (x Float32x4) ConvertToUint64() (z Uint64x4) {
    88  	return Uint64x4{spec.ConvertToZ[float32, spec.Width128, uint64, spec.Width256](x.v)}
    89  }
    90  
    91  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
    92  func (x Float32x8) ConvertToFloat64() (z Float64x8) {
    93  	return Float64x8{spec.ConvertToZ[float32, spec.Width256, float64, spec.Width512](x.v)}
    94  }
    95  
    96  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
    97  func (x Float32x8) ConvertToInt16() (z Int16x8) {
    98  	return Int16x8{spec.ConvertToZ[float32, spec.Width256, int16, spec.Width128](x.v)}
    99  }
   100  
   101  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   102  func (x Float32x8) ConvertToInt32() (z Int32x8) {
   103  	return Int32x8{spec.ConvertToZ[float32, spec.Width256, int32, spec.Width256](x.v)}
   104  }
   105  
   106  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   107  func (x Float32x8) ConvertToInt64() (z Int64x8) {
   108  	return Int64x8{spec.ConvertToZ[float32, spec.Width256, int64, spec.Width512](x.v)}
   109  }
   110  
   111  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   112  func (x Float32x8) ConvertToUint16() (z Uint16x8) {
   113  	return Uint16x8{spec.ConvertToZ[float32, spec.Width256, uint16, spec.Width128](x.v)}
   114  }
   115  
   116  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   117  func (x Float32x8) ConvertToUint32() (z Uint32x8) {
   118  	return Uint32x8{spec.ConvertToZ[float32, spec.Width256, uint32, spec.Width256](x.v)}
   119  }
   120  
   121  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   122  func (x Float32x8) ConvertToUint64() (z Uint64x8) {
   123  	return Uint64x8{spec.ConvertToZ[float32, spec.Width256, uint64, spec.Width512](x.v)}
   124  }
   125  
   126  // ConvertToInt8 converts element values to int8. The result has the same number of lanes.
   127  func (x Float32x16) ConvertToInt8() (z Int8x16) {
   128  	return Int8x16{spec.ConvertToZ[float32, spec.Width512, int8, spec.Width128](x.v)}
   129  }
   130  
   131  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   132  func (x Float32x16) ConvertToInt16() (z Int16x16) {
   133  	return Int16x16{spec.ConvertToZ[float32, spec.Width512, int16, spec.Width256](x.v)}
   134  }
   135  
   136  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   137  func (x Float32x16) ConvertToInt32() (z Int32x16) {
   138  	return Int32x16{spec.ConvertToZ[float32, spec.Width512, int32, spec.Width512](x.v)}
   139  }
   140  
   141  // ConvertToUint8 converts element values to uint8. The result has the same number of lanes.
   142  func (x Float32x16) ConvertToUint8() (z Uint8x16) {
   143  	return Uint8x16{spec.ConvertToZ[float32, spec.Width512, uint8, spec.Width128](x.v)}
   144  }
   145  
   146  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   147  func (x Float32x16) ConvertToUint16() (z Uint16x16) {
   148  	return Uint16x16{spec.ConvertToZ[float32, spec.Width512, uint16, spec.Width256](x.v)}
   149  }
   150  
   151  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   152  func (x Float32x16) ConvertToUint32() (z Uint32x16) {
   153  	return Uint32x16{spec.ConvertToZ[float32, spec.Width512, uint32, spec.Width512](x.v)}
   154  }
   155  
   156  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   157  func (x Float32s) ConvertToInt32() (z Int32s) {
   158  	return Int32s{spec.ConvertToZ[float32, spec.WidthScalable, int32, spec.WidthScalable](x.v)}
   159  }
   160  
   161  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   162  func (x Float32s) ConvertToUint32() (z Uint32s) {
   163  	return Uint32s{spec.ConvertToZ[float32, spec.WidthScalable, uint32, spec.WidthScalable](x.v)}
   164  }
   165  
   166  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   167  func (x Float64x2) ConvertToInt64() (z Int64x2) {
   168  	return Int64x2{spec.ConvertToZ[float64, spec.Width128, int64, spec.Width128](x.v)}
   169  }
   170  
   171  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   172  func (x Float64x2) ConvertToUint64() (z Uint64x2) {
   173  	return Uint64x2{spec.ConvertToZ[float64, spec.Width128, uint64, spec.Width128](x.v)}
   174  }
   175  
   176  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   177  func (x Float64x4) ConvertToFloat32() (z Float32x4) {
   178  	return Float32x4{spec.ConvertToZ[float64, spec.Width256, float32, spec.Width128](x.v)}
   179  }
   180  
   181  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   182  func (x Float64x4) ConvertToInt32() (z Int32x4) {
   183  	return Int32x4{spec.ConvertToZ[float64, spec.Width256, int32, spec.Width128](x.v)}
   184  }
   185  
   186  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   187  func (x Float64x4) ConvertToInt64() (z Int64x4) {
   188  	return Int64x4{spec.ConvertToZ[float64, spec.Width256, int64, spec.Width256](x.v)}
   189  }
   190  
   191  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   192  func (x Float64x4) ConvertToUint32() (z Uint32x4) {
   193  	return Uint32x4{spec.ConvertToZ[float64, spec.Width256, uint32, spec.Width128](x.v)}
   194  }
   195  
   196  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   197  func (x Float64x4) ConvertToUint64() (z Uint64x4) {
   198  	return Uint64x4{spec.ConvertToZ[float64, spec.Width256, uint64, spec.Width256](x.v)}
   199  }
   200  
   201  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   202  func (x Float64x8) ConvertToFloat32() (z Float32x8) {
   203  	return Float32x8{spec.ConvertToZ[float64, spec.Width512, float32, spec.Width256](x.v)}
   204  }
   205  
   206  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   207  func (x Float64x8) ConvertToInt16() (z Int16x8) {
   208  	return Int16x8{spec.ConvertToZ[float64, spec.Width512, int16, spec.Width128](x.v)}
   209  }
   210  
   211  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   212  func (x Float64x8) ConvertToInt32() (z Int32x8) {
   213  	return Int32x8{spec.ConvertToZ[float64, spec.Width512, int32, spec.Width256](x.v)}
   214  }
   215  
   216  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   217  func (x Float64x8) ConvertToInt64() (z Int64x8) {
   218  	return Int64x8{spec.ConvertToZ[float64, spec.Width512, int64, spec.Width512](x.v)}
   219  }
   220  
   221  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   222  func (x Float64x8) ConvertToUint16() (z Uint16x8) {
   223  	return Uint16x8{spec.ConvertToZ[float64, spec.Width512, uint16, spec.Width128](x.v)}
   224  }
   225  
   226  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   227  func (x Float64x8) ConvertToUint32() (z Uint32x8) {
   228  	return Uint32x8{spec.ConvertToZ[float64, spec.Width512, uint32, spec.Width256](x.v)}
   229  }
   230  
   231  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   232  func (x Float64x8) ConvertToUint64() (z Uint64x8) {
   233  	return Uint64x8{spec.ConvertToZ[float64, spec.Width512, uint64, spec.Width512](x.v)}
   234  }
   235  
   236  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   237  func (x Float64s) ConvertToInt64() (z Int64s) {
   238  	return Int64s{spec.ConvertToZ[float64, spec.WidthScalable, int64, spec.WidthScalable](x.v)}
   239  }
   240  
   241  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   242  func (x Float64s) ConvertToUint64() (z Uint64s) {
   243  	return Uint64s{spec.ConvertToZ[float64, spec.WidthScalable, uint64, spec.WidthScalable](x.v)}
   244  }
   245  
   246  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   247  func (x Int8x16) ConvertToFloat32() (z Float32x16) {
   248  	return Float32x16{spec.ConvertToZ[int8, spec.Width128, float32, spec.Width512](x.v)}
   249  }
   250  
   251  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   252  func (x Int8x16) ConvertToInt16() (z Int16x16) {
   253  	return Int16x16{spec.ConvertToZ[int8, spec.Width128, int16, spec.Width256](x.v)}
   254  }
   255  
   256  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   257  func (x Int8x16) ConvertToInt32() (z Int32x16) {
   258  	return Int32x16{spec.ConvertToZ[int8, spec.Width128, int32, spec.Width512](x.v)}
   259  }
   260  
   261  // ConvertToUint8 converts element values to uint8. The result has the same number of lanes.
   262  func (x Int8x16) ConvertToUint8() (z Uint8x16) {
   263  	return Uint8x16{spec.ConvertToZ[int8, spec.Width128, uint8, spec.Width128](x.v)}
   264  }
   265  
   266  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   267  func (x Int8x16) ConvertToUint16() (z Uint16x16) {
   268  	return Uint16x16{spec.ConvertToZ[int8, spec.Width128, uint16, spec.Width256](x.v)}
   269  }
   270  
   271  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   272  func (x Int8x16) ConvertToUint32() (z Uint32x16) {
   273  	return Uint32x16{spec.ConvertToZ[int8, spec.Width128, uint32, spec.Width512](x.v)}
   274  }
   275  
   276  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   277  func (x Int8x32) ConvertToInt16() (z Int16x32) {
   278  	return Int16x32{spec.ConvertToZ[int8, spec.Width256, int16, spec.Width512](x.v)}
   279  }
   280  
   281  // ConvertToUint8 converts element values to uint8. The result has the same number of lanes.
   282  func (x Int8x32) ConvertToUint8() (z Uint8x32) {
   283  	return Uint8x32{spec.ConvertToZ[int8, spec.Width256, uint8, spec.Width256](x.v)}
   284  }
   285  
   286  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   287  func (x Int8x32) ConvertToUint16() (z Uint16x32) {
   288  	return Uint16x32{spec.ConvertToZ[int8, spec.Width256, uint16, spec.Width512](x.v)}
   289  }
   290  
   291  // ConvertToUint8 converts element values to uint8. The result has the same number of lanes.
   292  func (x Int8x64) ConvertToUint8() (z Uint8x64) {
   293  	return Uint8x64{spec.ConvertToZ[int8, spec.Width512, uint8, spec.Width512](x.v)}
   294  }
   295  
   296  // ConvertToUint8 converts element values to uint8. The result has the same number of lanes.
   297  func (x Int8s) ConvertToUint8() (z Uint8s) {
   298  	return Uint8s{spec.ConvertToZ[int8, spec.WidthScalable, uint8, spec.WidthScalable](x.v)}
   299  }
   300  
   301  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   302  func (x Int16x8) ConvertToFloat32() (z Float32x8) {
   303  	return Float32x8{spec.ConvertToZ[int16, spec.Width128, float32, spec.Width256](x.v)}
   304  }
   305  
   306  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   307  func (x Int16x8) ConvertToFloat64() (z Float64x8) {
   308  	return Float64x8{spec.ConvertToZ[int16, spec.Width128, float64, spec.Width512](x.v)}
   309  }
   310  
   311  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   312  func (x Int16x8) ConvertToInt32() (z Int32x8) {
   313  	return Int32x8{spec.ConvertToZ[int16, spec.Width128, int32, spec.Width256](x.v)}
   314  }
   315  
   316  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   317  func (x Int16x8) ConvertToInt64() (z Int64x8) {
   318  	return Int64x8{spec.ConvertToZ[int16, spec.Width128, int64, spec.Width512](x.v)}
   319  }
   320  
   321  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   322  func (x Int16x8) ConvertToUint16() (z Uint16x8) {
   323  	return Uint16x8{spec.ConvertToZ[int16, spec.Width128, uint16, spec.Width128](x.v)}
   324  }
   325  
   326  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   327  func (x Int16x8) ConvertToUint32() (z Uint32x8) {
   328  	return Uint32x8{spec.ConvertToZ[int16, spec.Width128, uint32, spec.Width256](x.v)}
   329  }
   330  
   331  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   332  func (x Int16x8) ConvertToUint64() (z Uint64x8) {
   333  	return Uint64x8{spec.ConvertToZ[int16, spec.Width128, uint64, spec.Width512](x.v)}
   334  }
   335  
   336  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   337  func (x Int16x16) ConvertToFloat32() (z Float32x16) {
   338  	return Float32x16{spec.ConvertToZ[int16, spec.Width256, float32, spec.Width512](x.v)}
   339  }
   340  
   341  // ConvertToInt8 converts element values to int8. The result has the same number of lanes.
   342  func (x Int16x16) ConvertToInt8() (z Int8x16) {
   343  	return Int8x16{spec.ConvertToZ[int16, spec.Width256, int8, spec.Width128](x.v)}
   344  }
   345  
   346  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   347  func (x Int16x16) ConvertToInt32() (z Int32x16) {
   348  	return Int32x16{spec.ConvertToZ[int16, spec.Width256, int32, spec.Width512](x.v)}
   349  }
   350  
   351  // ConvertToUint8 converts element values to uint8. The result has the same number of lanes.
   352  func (x Int16x16) ConvertToUint8() (z Uint8x16) {
   353  	return Uint8x16{spec.ConvertToZ[int16, spec.Width256, uint8, spec.Width128](x.v)}
   354  }
   355  
   356  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   357  func (x Int16x16) ConvertToUint16() (z Uint16x16) {
   358  	return Uint16x16{spec.ConvertToZ[int16, spec.Width256, uint16, spec.Width256](x.v)}
   359  }
   360  
   361  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   362  func (x Int16x16) ConvertToUint32() (z Uint32x16) {
   363  	return Uint32x16{spec.ConvertToZ[int16, spec.Width256, uint32, spec.Width512](x.v)}
   364  }
   365  
   366  // ConvertToInt8 converts element values to int8. The result has the same number of lanes.
   367  func (x Int16x32) ConvertToInt8() (z Int8x32) {
   368  	return Int8x32{spec.ConvertToZ[int16, spec.Width512, int8, spec.Width256](x.v)}
   369  }
   370  
   371  // ConvertToUint8 converts element values to uint8. The result has the same number of lanes.
   372  func (x Int16x32) ConvertToUint8() (z Uint8x32) {
   373  	return Uint8x32{spec.ConvertToZ[int16, spec.Width512, uint8, spec.Width256](x.v)}
   374  }
   375  
   376  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   377  func (x Int16x32) ConvertToUint16() (z Uint16x32) {
   378  	return Uint16x32{spec.ConvertToZ[int16, spec.Width512, uint16, spec.Width512](x.v)}
   379  }
   380  
   381  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   382  func (x Int16s) ConvertToUint16() (z Uint16s) {
   383  	return Uint16s{spec.ConvertToZ[int16, spec.WidthScalable, uint16, spec.WidthScalable](x.v)}
   384  }
   385  
   386  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   387  func (x Int32x4) ConvertToFloat32() (z Float32x4) {
   388  	return Float32x4{spec.ConvertToZ[int32, spec.Width128, float32, spec.Width128](x.v)}
   389  }
   390  
   391  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   392  func (x Int32x4) ConvertToFloat64() (z Float64x4) {
   393  	return Float64x4{spec.ConvertToZ[int32, spec.Width128, float64, spec.Width256](x.v)}
   394  }
   395  
   396  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   397  func (x Int32x4) ConvertToInt64() (z Int64x4) {
   398  	return Int64x4{spec.ConvertToZ[int32, spec.Width128, int64, spec.Width256](x.v)}
   399  }
   400  
   401  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   402  func (x Int32x4) ConvertToUint32() (z Uint32x4) {
   403  	return Uint32x4{spec.ConvertToZ[int32, spec.Width128, uint32, spec.Width128](x.v)}
   404  }
   405  
   406  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   407  func (x Int32x4) ConvertToUint64() (z Uint64x4) {
   408  	return Uint64x4{spec.ConvertToZ[int32, spec.Width128, uint64, spec.Width256](x.v)}
   409  }
   410  
   411  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   412  func (x Int32x8) ConvertToFloat32() (z Float32x8) {
   413  	return Float32x8{spec.ConvertToZ[int32, spec.Width256, float32, spec.Width256](x.v)}
   414  }
   415  
   416  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   417  func (x Int32x8) ConvertToFloat64() (z Float64x8) {
   418  	return Float64x8{spec.ConvertToZ[int32, spec.Width256, float64, spec.Width512](x.v)}
   419  }
   420  
   421  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   422  func (x Int32x8) ConvertToInt16() (z Int16x8) {
   423  	return Int16x8{spec.ConvertToZ[int32, spec.Width256, int16, spec.Width128](x.v)}
   424  }
   425  
   426  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   427  func (x Int32x8) ConvertToInt64() (z Int64x8) {
   428  	return Int64x8{spec.ConvertToZ[int32, spec.Width256, int64, spec.Width512](x.v)}
   429  }
   430  
   431  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   432  func (x Int32x8) ConvertToUint16() (z Uint16x8) {
   433  	return Uint16x8{spec.ConvertToZ[int32, spec.Width256, uint16, spec.Width128](x.v)}
   434  }
   435  
   436  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   437  func (x Int32x8) ConvertToUint32() (z Uint32x8) {
   438  	return Uint32x8{spec.ConvertToZ[int32, spec.Width256, uint32, spec.Width256](x.v)}
   439  }
   440  
   441  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   442  func (x Int32x8) ConvertToUint64() (z Uint64x8) {
   443  	return Uint64x8{spec.ConvertToZ[int32, spec.Width256, uint64, spec.Width512](x.v)}
   444  }
   445  
   446  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   447  func (x Int32x16) ConvertToFloat32() (z Float32x16) {
   448  	return Float32x16{spec.ConvertToZ[int32, spec.Width512, float32, spec.Width512](x.v)}
   449  }
   450  
   451  // ConvertToInt8 converts element values to int8. The result has the same number of lanes.
   452  func (x Int32x16) ConvertToInt8() (z Int8x16) {
   453  	return Int8x16{spec.ConvertToZ[int32, spec.Width512, int8, spec.Width128](x.v)}
   454  }
   455  
   456  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   457  func (x Int32x16) ConvertToInt16() (z Int16x16) {
   458  	return Int16x16{spec.ConvertToZ[int32, spec.Width512, int16, spec.Width256](x.v)}
   459  }
   460  
   461  // ConvertToUint8 converts element values to uint8. The result has the same number of lanes.
   462  func (x Int32x16) ConvertToUint8() (z Uint8x16) {
   463  	return Uint8x16{spec.ConvertToZ[int32, spec.Width512, uint8, spec.Width128](x.v)}
   464  }
   465  
   466  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   467  func (x Int32x16) ConvertToUint16() (z Uint16x16) {
   468  	return Uint16x16{spec.ConvertToZ[int32, spec.Width512, uint16, spec.Width256](x.v)}
   469  }
   470  
   471  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   472  func (x Int32x16) ConvertToUint32() (z Uint32x16) {
   473  	return Uint32x16{spec.ConvertToZ[int32, spec.Width512, uint32, spec.Width512](x.v)}
   474  }
   475  
   476  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   477  func (x Int32s) ConvertToFloat32() (z Float32s) {
   478  	return Float32s{spec.ConvertToZ[int32, spec.WidthScalable, float32, spec.WidthScalable](x.v)}
   479  }
   480  
   481  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   482  func (x Int32s) ConvertToUint32() (z Uint32s) {
   483  	return Uint32s{spec.ConvertToZ[int32, spec.WidthScalable, uint32, spec.WidthScalable](x.v)}
   484  }
   485  
   486  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   487  func (x Int64x2) ConvertToFloat64() (z Float64x2) {
   488  	return Float64x2{spec.ConvertToZ[int64, spec.Width128, float64, spec.Width128](x.v)}
   489  }
   490  
   491  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   492  func (x Int64x2) ConvertToUint64() (z Uint64x2) {
   493  	return Uint64x2{spec.ConvertToZ[int64, spec.Width128, uint64, spec.Width128](x.v)}
   494  }
   495  
   496  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   497  func (x Int64x4) ConvertToFloat32() (z Float32x4) {
   498  	return Float32x4{spec.ConvertToZ[int64, spec.Width256, float32, spec.Width128](x.v)}
   499  }
   500  
   501  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   502  func (x Int64x4) ConvertToFloat64() (z Float64x4) {
   503  	return Float64x4{spec.ConvertToZ[int64, spec.Width256, float64, spec.Width256](x.v)}
   504  }
   505  
   506  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   507  func (x Int64x4) ConvertToInt32() (z Int32x4) {
   508  	return Int32x4{spec.ConvertToZ[int64, spec.Width256, int32, spec.Width128](x.v)}
   509  }
   510  
   511  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   512  func (x Int64x4) ConvertToUint32() (z Uint32x4) {
   513  	return Uint32x4{spec.ConvertToZ[int64, spec.Width256, uint32, spec.Width128](x.v)}
   514  }
   515  
   516  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   517  func (x Int64x4) ConvertToUint64() (z Uint64x4) {
   518  	return Uint64x4{spec.ConvertToZ[int64, spec.Width256, uint64, spec.Width256](x.v)}
   519  }
   520  
   521  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   522  func (x Int64x8) ConvertToFloat32() (z Float32x8) {
   523  	return Float32x8{spec.ConvertToZ[int64, spec.Width512, float32, spec.Width256](x.v)}
   524  }
   525  
   526  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   527  func (x Int64x8) ConvertToFloat64() (z Float64x8) {
   528  	return Float64x8{spec.ConvertToZ[int64, spec.Width512, float64, spec.Width512](x.v)}
   529  }
   530  
   531  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   532  func (x Int64x8) ConvertToInt16() (z Int16x8) {
   533  	return Int16x8{spec.ConvertToZ[int64, spec.Width512, int16, spec.Width128](x.v)}
   534  }
   535  
   536  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   537  func (x Int64x8) ConvertToInt32() (z Int32x8) {
   538  	return Int32x8{spec.ConvertToZ[int64, spec.Width512, int32, spec.Width256](x.v)}
   539  }
   540  
   541  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   542  func (x Int64x8) ConvertToUint16() (z Uint16x8) {
   543  	return Uint16x8{spec.ConvertToZ[int64, spec.Width512, uint16, spec.Width128](x.v)}
   544  }
   545  
   546  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   547  func (x Int64x8) ConvertToUint32() (z Uint32x8) {
   548  	return Uint32x8{spec.ConvertToZ[int64, spec.Width512, uint32, spec.Width256](x.v)}
   549  }
   550  
   551  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   552  func (x Int64x8) ConvertToUint64() (z Uint64x8) {
   553  	return Uint64x8{spec.ConvertToZ[int64, spec.Width512, uint64, spec.Width512](x.v)}
   554  }
   555  
   556  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   557  func (x Int64s) ConvertToFloat64() (z Float64s) {
   558  	return Float64s{spec.ConvertToZ[int64, spec.WidthScalable, float64, spec.WidthScalable](x.v)}
   559  }
   560  
   561  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   562  func (x Int64s) ConvertToUint64() (z Uint64s) {
   563  	return Uint64s{spec.ConvertToZ[int64, spec.WidthScalable, uint64, spec.WidthScalable](x.v)}
   564  }
   565  
   566  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   567  func (x Uint8x16) ConvertToFloat32() (z Float32x16) {
   568  	return Float32x16{spec.ConvertToZ[uint8, spec.Width128, float32, spec.Width512](x.v)}
   569  }
   570  
   571  // ConvertToInt8 converts element values to int8. The result has the same number of lanes.
   572  func (x Uint8x16) ConvertToInt8() (z Int8x16) {
   573  	return Int8x16{spec.ConvertToZ[uint8, spec.Width128, int8, spec.Width128](x.v)}
   574  }
   575  
   576  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   577  func (x Uint8x16) ConvertToInt16() (z Int16x16) {
   578  	return Int16x16{spec.ConvertToZ[uint8, spec.Width128, int16, spec.Width256](x.v)}
   579  }
   580  
   581  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   582  func (x Uint8x16) ConvertToInt32() (z Int32x16) {
   583  	return Int32x16{spec.ConvertToZ[uint8, spec.Width128, int32, spec.Width512](x.v)}
   584  }
   585  
   586  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   587  func (x Uint8x16) ConvertToUint16() (z Uint16x16) {
   588  	return Uint16x16{spec.ConvertToZ[uint8, spec.Width128, uint16, spec.Width256](x.v)}
   589  }
   590  
   591  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   592  func (x Uint8x16) ConvertToUint32() (z Uint32x16) {
   593  	return Uint32x16{spec.ConvertToZ[uint8, spec.Width128, uint32, spec.Width512](x.v)}
   594  }
   595  
   596  // ConvertToInt8 converts element values to int8. The result has the same number of lanes.
   597  func (x Uint8x32) ConvertToInt8() (z Int8x32) {
   598  	return Int8x32{spec.ConvertToZ[uint8, spec.Width256, int8, spec.Width256](x.v)}
   599  }
   600  
   601  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   602  func (x Uint8x32) ConvertToInt16() (z Int16x32) {
   603  	return Int16x32{spec.ConvertToZ[uint8, spec.Width256, int16, spec.Width512](x.v)}
   604  }
   605  
   606  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   607  func (x Uint8x32) ConvertToUint16() (z Uint16x32) {
   608  	return Uint16x32{spec.ConvertToZ[uint8, spec.Width256, uint16, spec.Width512](x.v)}
   609  }
   610  
   611  // ConvertToInt8 converts element values to int8. The result has the same number of lanes.
   612  func (x Uint8x64) ConvertToInt8() (z Int8x64) {
   613  	return Int8x64{spec.ConvertToZ[uint8, spec.Width512, int8, spec.Width512](x.v)}
   614  }
   615  
   616  // ConvertToInt8 converts element values to int8. The result has the same number of lanes.
   617  func (x Uint8s) ConvertToInt8() (z Int8s) {
   618  	return Int8s{spec.ConvertToZ[uint8, spec.WidthScalable, int8, spec.WidthScalable](x.v)}
   619  }
   620  
   621  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   622  func (x Uint16x8) ConvertToFloat32() (z Float32x8) {
   623  	return Float32x8{spec.ConvertToZ[uint16, spec.Width128, float32, spec.Width256](x.v)}
   624  }
   625  
   626  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   627  func (x Uint16x8) ConvertToFloat64() (z Float64x8) {
   628  	return Float64x8{spec.ConvertToZ[uint16, spec.Width128, float64, spec.Width512](x.v)}
   629  }
   630  
   631  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   632  func (x Uint16x8) ConvertToInt16() (z Int16x8) {
   633  	return Int16x8{spec.ConvertToZ[uint16, spec.Width128, int16, spec.Width128](x.v)}
   634  }
   635  
   636  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   637  func (x Uint16x8) ConvertToInt32() (z Int32x8) {
   638  	return Int32x8{spec.ConvertToZ[uint16, spec.Width128, int32, spec.Width256](x.v)}
   639  }
   640  
   641  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   642  func (x Uint16x8) ConvertToInt64() (z Int64x8) {
   643  	return Int64x8{spec.ConvertToZ[uint16, spec.Width128, int64, spec.Width512](x.v)}
   644  }
   645  
   646  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   647  func (x Uint16x8) ConvertToUint32() (z Uint32x8) {
   648  	return Uint32x8{spec.ConvertToZ[uint16, spec.Width128, uint32, spec.Width256](x.v)}
   649  }
   650  
   651  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   652  func (x Uint16x8) ConvertToUint64() (z Uint64x8) {
   653  	return Uint64x8{spec.ConvertToZ[uint16, spec.Width128, uint64, spec.Width512](x.v)}
   654  }
   655  
   656  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   657  func (x Uint16x16) ConvertToFloat32() (z Float32x16) {
   658  	return Float32x16{spec.ConvertToZ[uint16, spec.Width256, float32, spec.Width512](x.v)}
   659  }
   660  
   661  // ConvertToInt8 converts element values to int8. The result has the same number of lanes.
   662  func (x Uint16x16) ConvertToInt8() (z Int8x16) {
   663  	return Int8x16{spec.ConvertToZ[uint16, spec.Width256, int8, spec.Width128](x.v)}
   664  }
   665  
   666  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   667  func (x Uint16x16) ConvertToInt16() (z Int16x16) {
   668  	return Int16x16{spec.ConvertToZ[uint16, spec.Width256, int16, spec.Width256](x.v)}
   669  }
   670  
   671  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   672  func (x Uint16x16) ConvertToInt32() (z Int32x16) {
   673  	return Int32x16{spec.ConvertToZ[uint16, spec.Width256, int32, spec.Width512](x.v)}
   674  }
   675  
   676  // ConvertToUint8 converts element values to uint8. The result has the same number of lanes.
   677  func (x Uint16x16) ConvertToUint8() (z Uint8x16) {
   678  	return Uint8x16{spec.ConvertToZ[uint16, spec.Width256, uint8, spec.Width128](x.v)}
   679  }
   680  
   681  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   682  func (x Uint16x16) ConvertToUint32() (z Uint32x16) {
   683  	return Uint32x16{spec.ConvertToZ[uint16, spec.Width256, uint32, spec.Width512](x.v)}
   684  }
   685  
   686  // ConvertToInt8 converts element values to int8. The result has the same number of lanes.
   687  func (x Uint16x32) ConvertToInt8() (z Int8x32) {
   688  	return Int8x32{spec.ConvertToZ[uint16, spec.Width512, int8, spec.Width256](x.v)}
   689  }
   690  
   691  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   692  func (x Uint16x32) ConvertToInt16() (z Int16x32) {
   693  	return Int16x32{spec.ConvertToZ[uint16, spec.Width512, int16, spec.Width512](x.v)}
   694  }
   695  
   696  // ConvertToUint8 converts element values to uint8. The result has the same number of lanes.
   697  func (x Uint16x32) ConvertToUint8() (z Uint8x32) {
   698  	return Uint8x32{spec.ConvertToZ[uint16, spec.Width512, uint8, spec.Width256](x.v)}
   699  }
   700  
   701  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   702  func (x Uint16s) ConvertToInt16() (z Int16s) {
   703  	return Int16s{spec.ConvertToZ[uint16, spec.WidthScalable, int16, spec.WidthScalable](x.v)}
   704  }
   705  
   706  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   707  func (x Uint32x4) ConvertToFloat32() (z Float32x4) {
   708  	return Float32x4{spec.ConvertToZ[uint32, spec.Width128, float32, spec.Width128](x.v)}
   709  }
   710  
   711  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   712  func (x Uint32x4) ConvertToFloat64() (z Float64x4) {
   713  	return Float64x4{spec.ConvertToZ[uint32, spec.Width128, float64, spec.Width256](x.v)}
   714  }
   715  
   716  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   717  func (x Uint32x4) ConvertToInt32() (z Int32x4) {
   718  	return Int32x4{spec.ConvertToZ[uint32, spec.Width128, int32, spec.Width128](x.v)}
   719  }
   720  
   721  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   722  func (x Uint32x4) ConvertToInt64() (z Int64x4) {
   723  	return Int64x4{spec.ConvertToZ[uint32, spec.Width128, int64, spec.Width256](x.v)}
   724  }
   725  
   726  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   727  func (x Uint32x4) ConvertToUint64() (z Uint64x4) {
   728  	return Uint64x4{spec.ConvertToZ[uint32, spec.Width128, uint64, spec.Width256](x.v)}
   729  }
   730  
   731  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   732  func (x Uint32x8) ConvertToFloat32() (z Float32x8) {
   733  	return Float32x8{spec.ConvertToZ[uint32, spec.Width256, float32, spec.Width256](x.v)}
   734  }
   735  
   736  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   737  func (x Uint32x8) ConvertToFloat64() (z Float64x8) {
   738  	return Float64x8{spec.ConvertToZ[uint32, spec.Width256, float64, spec.Width512](x.v)}
   739  }
   740  
   741  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   742  func (x Uint32x8) ConvertToInt16() (z Int16x8) {
   743  	return Int16x8{spec.ConvertToZ[uint32, spec.Width256, int16, spec.Width128](x.v)}
   744  }
   745  
   746  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   747  func (x Uint32x8) ConvertToInt32() (z Int32x8) {
   748  	return Int32x8{spec.ConvertToZ[uint32, spec.Width256, int32, spec.Width256](x.v)}
   749  }
   750  
   751  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   752  func (x Uint32x8) ConvertToInt64() (z Int64x8) {
   753  	return Int64x8{spec.ConvertToZ[uint32, spec.Width256, int64, spec.Width512](x.v)}
   754  }
   755  
   756  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   757  func (x Uint32x8) ConvertToUint16() (z Uint16x8) {
   758  	return Uint16x8{spec.ConvertToZ[uint32, spec.Width256, uint16, spec.Width128](x.v)}
   759  }
   760  
   761  // ConvertToUint64 converts element values to uint64. The result has the same number of lanes.
   762  func (x Uint32x8) ConvertToUint64() (z Uint64x8) {
   763  	return Uint64x8{spec.ConvertToZ[uint32, spec.Width256, uint64, spec.Width512](x.v)}
   764  }
   765  
   766  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   767  func (x Uint32x16) ConvertToFloat32() (z Float32x16) {
   768  	return Float32x16{spec.ConvertToZ[uint32, spec.Width512, float32, spec.Width512](x.v)}
   769  }
   770  
   771  // ConvertToInt8 converts element values to int8. The result has the same number of lanes.
   772  func (x Uint32x16) ConvertToInt8() (z Int8x16) {
   773  	return Int8x16{spec.ConvertToZ[uint32, spec.Width512, int8, spec.Width128](x.v)}
   774  }
   775  
   776  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   777  func (x Uint32x16) ConvertToInt16() (z Int16x16) {
   778  	return Int16x16{spec.ConvertToZ[uint32, spec.Width512, int16, spec.Width256](x.v)}
   779  }
   780  
   781  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   782  func (x Uint32x16) ConvertToInt32() (z Int32x16) {
   783  	return Int32x16{spec.ConvertToZ[uint32, spec.Width512, int32, spec.Width512](x.v)}
   784  }
   785  
   786  // ConvertToUint8 converts element values to uint8. The result has the same number of lanes.
   787  func (x Uint32x16) ConvertToUint8() (z Uint8x16) {
   788  	return Uint8x16{spec.ConvertToZ[uint32, spec.Width512, uint8, spec.Width128](x.v)}
   789  }
   790  
   791  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   792  func (x Uint32x16) ConvertToUint16() (z Uint16x16) {
   793  	return Uint16x16{spec.ConvertToZ[uint32, spec.Width512, uint16, spec.Width256](x.v)}
   794  }
   795  
   796  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   797  func (x Uint32s) ConvertToFloat32() (z Float32s) {
   798  	return Float32s{spec.ConvertToZ[uint32, spec.WidthScalable, float32, spec.WidthScalable](x.v)}
   799  }
   800  
   801  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   802  func (x Uint32s) ConvertToInt32() (z Int32s) {
   803  	return Int32s{spec.ConvertToZ[uint32, spec.WidthScalable, int32, spec.WidthScalable](x.v)}
   804  }
   805  
   806  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   807  func (x Uint64x2) ConvertToFloat64() (z Float64x2) {
   808  	return Float64x2{spec.ConvertToZ[uint64, spec.Width128, float64, spec.Width128](x.v)}
   809  }
   810  
   811  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   812  func (x Uint64x2) ConvertToInt64() (z Int64x2) {
   813  	return Int64x2{spec.ConvertToZ[uint64, spec.Width128, int64, spec.Width128](x.v)}
   814  }
   815  
   816  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   817  func (x Uint64x4) ConvertToFloat32() (z Float32x4) {
   818  	return Float32x4{spec.ConvertToZ[uint64, spec.Width256, float32, spec.Width128](x.v)}
   819  }
   820  
   821  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   822  func (x Uint64x4) ConvertToFloat64() (z Float64x4) {
   823  	return Float64x4{spec.ConvertToZ[uint64, spec.Width256, float64, spec.Width256](x.v)}
   824  }
   825  
   826  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   827  func (x Uint64x4) ConvertToInt32() (z Int32x4) {
   828  	return Int32x4{spec.ConvertToZ[uint64, spec.Width256, int32, spec.Width128](x.v)}
   829  }
   830  
   831  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   832  func (x Uint64x4) ConvertToInt64() (z Int64x4) {
   833  	return Int64x4{spec.ConvertToZ[uint64, spec.Width256, int64, spec.Width256](x.v)}
   834  }
   835  
   836  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   837  func (x Uint64x4) ConvertToUint32() (z Uint32x4) {
   838  	return Uint32x4{spec.ConvertToZ[uint64, spec.Width256, uint32, spec.Width128](x.v)}
   839  }
   840  
   841  // ConvertToFloat32 converts element values to float32. The result has the same number of lanes.
   842  func (x Uint64x8) ConvertToFloat32() (z Float32x8) {
   843  	return Float32x8{spec.ConvertToZ[uint64, spec.Width512, float32, spec.Width256](x.v)}
   844  }
   845  
   846  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   847  func (x Uint64x8) ConvertToFloat64() (z Float64x8) {
   848  	return Float64x8{spec.ConvertToZ[uint64, spec.Width512, float64, spec.Width512](x.v)}
   849  }
   850  
   851  // ConvertToInt16 converts element values to int16. The result has the same number of lanes.
   852  func (x Uint64x8) ConvertToInt16() (z Int16x8) {
   853  	return Int16x8{spec.ConvertToZ[uint64, spec.Width512, int16, spec.Width128](x.v)}
   854  }
   855  
   856  // ConvertToInt32 converts element values to int32. The result has the same number of lanes.
   857  func (x Uint64x8) ConvertToInt32() (z Int32x8) {
   858  	return Int32x8{spec.ConvertToZ[uint64, spec.Width512, int32, spec.Width256](x.v)}
   859  }
   860  
   861  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   862  func (x Uint64x8) ConvertToInt64() (z Int64x8) {
   863  	return Int64x8{spec.ConvertToZ[uint64, spec.Width512, int64, spec.Width512](x.v)}
   864  }
   865  
   866  // ConvertToUint16 converts element values to uint16. The result has the same number of lanes.
   867  func (x Uint64x8) ConvertToUint16() (z Uint16x8) {
   868  	return Uint16x8{spec.ConvertToZ[uint64, spec.Width512, uint16, spec.Width128](x.v)}
   869  }
   870  
   871  // ConvertToUint32 converts element values to uint32. The result has the same number of lanes.
   872  func (x Uint64x8) ConvertToUint32() (z Uint32x8) {
   873  	return Uint32x8{spec.ConvertToZ[uint64, spec.Width512, uint32, spec.Width256](x.v)}
   874  }
   875  
   876  // ConvertToFloat64 converts element values to float64. The result has the same number of lanes.
   877  func (x Uint64s) ConvertToFloat64() (z Float64s) {
   878  	return Float64s{spec.ConvertToZ[uint64, spec.WidthScalable, float64, spec.WidthScalable](x.v)}
   879  }
   880  
   881  // ConvertToInt64 converts element values to int64. The result has the same number of lanes.
   882  func (x Uint64s) ConvertToInt64() (z Int64s) {
   883  	return Int64s{spec.ConvertToZ[uint64, spec.WidthScalable, int64, spec.WidthScalable](x.v)}
   884  }
   885  
   886  // ExtendLo8ToInt16 extends the lowest 8 vector elements to int16.
   887  func (x Int8x16) ExtendLo8ToInt16() (z Int16x8) {
   888  	return Int16x8{spec.ExtendLoLToZ[int8, spec.Width128, int16](x.v)}
   889  }
   890  
   891  // ExtendLo4ToInt32 extends the lowest 4 vector elements to int32.
   892  func (x Int8x16) ExtendLo4ToInt32() (z Int32x4) {
   893  	return Int32x4{spec.ExtendLoLToZ[int8, spec.Width128, int32](x.v)}
   894  }
   895  
   896  // ExtendLo2ToInt64 extends the lowest 2 vector elements to int64.
   897  func (x Int8x16) ExtendLo2ToInt64() (z Int64x2) {
   898  	return Int64x2{spec.ExtendLoLToZ[int8, spec.Width128, int64](x.v)}
   899  }
   900  
   901  // ExtendLo16ToInt16 extends the lowest 16 vector elements to int16.
   902  func (x Int8x32) ExtendLo16ToInt16() (z Int16x16) {
   903  	return Int16x16{spec.ExtendLoLToZ[int8, spec.Width256, int16](x.v)}
   904  }
   905  
   906  // ExtendLo8ToInt32 extends the lowest 8 vector elements to int32.
   907  func (x Int8x32) ExtendLo8ToInt32() (z Int32x8) {
   908  	return Int32x8{spec.ExtendLoLToZ[int8, spec.Width256, int32](x.v)}
   909  }
   910  
   911  // ExtendLo4ToInt64 extends the lowest 4 vector elements to int64.
   912  func (x Int8x32) ExtendLo4ToInt64() (z Int64x4) {
   913  	return Int64x4{spec.ExtendLoLToZ[int8, spec.Width256, int64](x.v)}
   914  }
   915  
   916  // ExtendLo32ToInt16 extends the lowest 32 vector elements to int16.
   917  func (x Int8x64) ExtendLo32ToInt16() (z Int16x32) {
   918  	return Int16x32{spec.ExtendLoLToZ[int8, spec.Width512, int16](x.v)}
   919  }
   920  
   921  // ExtendLo16ToInt32 extends the lowest 16 vector elements to int32.
   922  func (x Int8x64) ExtendLo16ToInt32() (z Int32x16) {
   923  	return Int32x16{spec.ExtendLoLToZ[int8, spec.Width512, int32](x.v)}
   924  }
   925  
   926  // ExtendLo8ToInt64 extends the lowest 8 vector elements to int64.
   927  func (x Int8x64) ExtendLo8ToInt64() (z Int64x8) {
   928  	return Int64x8{spec.ExtendLoLToZ[int8, spec.Width512, int64](x.v)}
   929  }
   930  
   931  // ExtendLo4ToInt32 extends the lowest 4 vector elements to int32.
   932  func (x Int16x8) ExtendLo4ToInt32() (z Int32x4) {
   933  	return Int32x4{spec.ExtendLoLToZ[int16, spec.Width128, int32](x.v)}
   934  }
   935  
   936  // ExtendLo2ToInt64 extends the lowest 2 vector elements to int64.
   937  func (x Int16x8) ExtendLo2ToInt64() (z Int64x2) {
   938  	return Int64x2{spec.ExtendLoLToZ[int16, spec.Width128, int64](x.v)}
   939  }
   940  
   941  // ExtendLo8ToInt32 extends the lowest 8 vector elements to int32.
   942  func (x Int16x16) ExtendLo8ToInt32() (z Int32x8) {
   943  	return Int32x8{spec.ExtendLoLToZ[int16, spec.Width256, int32](x.v)}
   944  }
   945  
   946  // ExtendLo4ToInt64 extends the lowest 4 vector elements to int64.
   947  func (x Int16x16) ExtendLo4ToInt64() (z Int64x4) {
   948  	return Int64x4{spec.ExtendLoLToZ[int16, spec.Width256, int64](x.v)}
   949  }
   950  
   951  // ExtendLo16ToInt32 extends the lowest 16 vector elements to int32.
   952  func (x Int16x32) ExtendLo16ToInt32() (z Int32x16) {
   953  	return Int32x16{spec.ExtendLoLToZ[int16, spec.Width512, int32](x.v)}
   954  }
   955  
   956  // ExtendLo8ToInt64 extends the lowest 8 vector elements to int64.
   957  func (x Int16x32) ExtendLo8ToInt64() (z Int64x8) {
   958  	return Int64x8{spec.ExtendLoLToZ[int16, spec.Width512, int64](x.v)}
   959  }
   960  
   961  // ExtendLo2ToInt64 extends the lowest 2 vector elements to int64.
   962  func (x Int32x4) ExtendLo2ToInt64() (z Int64x2) {
   963  	return Int64x2{spec.ExtendLoLToZ[int32, spec.Width128, int64](x.v)}
   964  }
   965  
   966  // ExtendLo4ToInt64 extends the lowest 4 vector elements to int64.
   967  func (x Int32x8) ExtendLo4ToInt64() (z Int64x4) {
   968  	return Int64x4{spec.ExtendLoLToZ[int32, spec.Width256, int64](x.v)}
   969  }
   970  
   971  // ExtendLo8ToInt64 extends the lowest 8 vector elements to int64.
   972  func (x Int32x16) ExtendLo8ToInt64() (z Int64x8) {
   973  	return Int64x8{spec.ExtendLoLToZ[int32, spec.Width512, int64](x.v)}
   974  }
   975  
   976  // ExtendLo8ToUint16 extends the lowest 8 vector elements to uint16.
   977  func (x Uint8x16) ExtendLo8ToUint16() (z Uint16x8) {
   978  	return Uint16x8{spec.ExtendLoLToZ[uint8, spec.Width128, uint16](x.v)}
   979  }
   980  
   981  // ExtendLo4ToUint32 extends the lowest 4 vector elements to uint32.
   982  func (x Uint8x16) ExtendLo4ToUint32() (z Uint32x4) {
   983  	return Uint32x4{spec.ExtendLoLToZ[uint8, spec.Width128, uint32](x.v)}
   984  }
   985  
   986  // ExtendLo2ToUint64 extends the lowest 2 vector elements to uint64.
   987  func (x Uint8x16) ExtendLo2ToUint64() (z Uint64x2) {
   988  	return Uint64x2{spec.ExtendLoLToZ[uint8, spec.Width128, uint64](x.v)}
   989  }
   990  
   991  // ExtendLo16ToUint16 extends the lowest 16 vector elements to uint16.
   992  func (x Uint8x32) ExtendLo16ToUint16() (z Uint16x16) {
   993  	return Uint16x16{spec.ExtendLoLToZ[uint8, spec.Width256, uint16](x.v)}
   994  }
   995  
   996  // ExtendLo8ToUint32 extends the lowest 8 vector elements to uint32.
   997  func (x Uint8x32) ExtendLo8ToUint32() (z Uint32x8) {
   998  	return Uint32x8{spec.ExtendLoLToZ[uint8, spec.Width256, uint32](x.v)}
   999  }
  1000  
  1001  // ExtendLo4ToUint64 extends the lowest 4 vector elements to uint64.
  1002  func (x Uint8x32) ExtendLo4ToUint64() (z Uint64x4) {
  1003  	return Uint64x4{spec.ExtendLoLToZ[uint8, spec.Width256, uint64](x.v)}
  1004  }
  1005  
  1006  // ExtendLo32ToUint16 extends the lowest 32 vector elements to uint16.
  1007  func (x Uint8x64) ExtendLo32ToUint16() (z Uint16x32) {
  1008  	return Uint16x32{spec.ExtendLoLToZ[uint8, spec.Width512, uint16](x.v)}
  1009  }
  1010  
  1011  // ExtendLo16ToUint32 extends the lowest 16 vector elements to uint32.
  1012  func (x Uint8x64) ExtendLo16ToUint32() (z Uint32x16) {
  1013  	return Uint32x16{spec.ExtendLoLToZ[uint8, spec.Width512, uint32](x.v)}
  1014  }
  1015  
  1016  // ExtendLo8ToUint64 extends the lowest 8 vector elements to uint64.
  1017  func (x Uint8x64) ExtendLo8ToUint64() (z Uint64x8) {
  1018  	return Uint64x8{spec.ExtendLoLToZ[uint8, spec.Width512, uint64](x.v)}
  1019  }
  1020  
  1021  // ExtendLo4ToUint32 extends the lowest 4 vector elements to uint32.
  1022  func (x Uint16x8) ExtendLo4ToUint32() (z Uint32x4) {
  1023  	return Uint32x4{spec.ExtendLoLToZ[uint16, spec.Width128, uint32](x.v)}
  1024  }
  1025  
  1026  // ExtendLo2ToUint64 extends the lowest 2 vector elements to uint64.
  1027  func (x Uint16x8) ExtendLo2ToUint64() (z Uint64x2) {
  1028  	return Uint64x2{spec.ExtendLoLToZ[uint16, spec.Width128, uint64](x.v)}
  1029  }
  1030  
  1031  // ExtendLo8ToUint32 extends the lowest 8 vector elements to uint32.
  1032  func (x Uint16x16) ExtendLo8ToUint32() (z Uint32x8) {
  1033  	return Uint32x8{spec.ExtendLoLToZ[uint16, spec.Width256, uint32](x.v)}
  1034  }
  1035  
  1036  // ExtendLo4ToUint64 extends the lowest 4 vector elements to uint64.
  1037  func (x Uint16x16) ExtendLo4ToUint64() (z Uint64x4) {
  1038  	return Uint64x4{spec.ExtendLoLToZ[uint16, spec.Width256, uint64](x.v)}
  1039  }
  1040  
  1041  // ExtendLo16ToUint32 extends the lowest 16 vector elements to uint32.
  1042  func (x Uint16x32) ExtendLo16ToUint32() (z Uint32x16) {
  1043  	return Uint32x16{spec.ExtendLoLToZ[uint16, spec.Width512, uint32](x.v)}
  1044  }
  1045  
  1046  // ExtendLo8ToUint64 extends the lowest 8 vector elements to uint64.
  1047  func (x Uint16x32) ExtendLo8ToUint64() (z Uint64x8) {
  1048  	return Uint64x8{spec.ExtendLoLToZ[uint16, spec.Width512, uint64](x.v)}
  1049  }
  1050  
  1051  // ExtendLo2ToUint64 extends the lowest 2 vector elements to uint64.
  1052  func (x Uint32x4) ExtendLo2ToUint64() (z Uint64x2) {
  1053  	return Uint64x2{spec.ExtendLoLToZ[uint32, spec.Width128, uint64](x.v)}
  1054  }
  1055  
  1056  // ExtendLo4ToUint64 extends the lowest 4 vector elements to uint64.
  1057  func (x Uint32x8) ExtendLo4ToUint64() (z Uint64x4) {
  1058  	return Uint64x4{spec.ExtendLoLToZ[uint32, spec.Width256, uint64](x.v)}
  1059  }
  1060  
  1061  // ExtendLo8ToUint64 extends the lowest 8 vector elements to uint64.
  1062  func (x Uint32x16) ExtendLo8ToUint64() (z Uint64x8) {
  1063  	return Uint64x8{spec.ExtendLoLToZ[uint32, spec.Width512, uint64](x.v)}
  1064  }
  1065  
  1066  // ConvertLo2ToFloat64 converts the low-indexed 2 elements of x to float64.
  1067  func (x Float32x4) ConvertLo2ToFloat64() (z Float64x2) {
  1068  	return Float64x2{spec.ConvertLoLToZ[float32, spec.Width128, float64](x.v)}
  1069  }
  1070  
  1071  // ConvertLo4ToFloat64 converts the low-indexed 4 elements of x to float64.
  1072  func (x Float32x8) ConvertLo4ToFloat64() (z Float64x4) {
  1073  	return Float64x4{spec.ConvertLoLToZ[float32, spec.Width256, float64](x.v)}
  1074  }
  1075  
  1076  // ConvertLo8ToFloat64 converts the low-indexed 8 elements of x to float64.
  1077  func (x Float32x16) ConvertLo8ToFloat64() (z Float64x8) {
  1078  	return Float64x8{spec.ConvertLoLToZ[float32, spec.Width512, float64](x.v)}
  1079  }
  1080  
  1081  // ConvertLo4ToFloat32 converts the low-indexed 4 elements of x to float32.
  1082  func (x Int8x16) ConvertLo4ToFloat32() (z Float32x4) {
  1083  	return Float32x4{spec.ConvertLoLToZ[int8, spec.Width128, float32](x.v)}
  1084  }
  1085  
  1086  // ConvertLo2ToFloat64 converts the low-indexed 2 elements of x to float64.
  1087  func (x Int8x16) ConvertLo2ToFloat64() (z Float64x2) {
  1088  	return Float64x2{spec.ConvertLoLToZ[int8, spec.Width128, float64](x.v)}
  1089  }
  1090  
  1091  // ConvertLo8ToFloat32 converts the low-indexed 8 elements of x to float32.
  1092  func (x Int8x32) ConvertLo8ToFloat32() (z Float32x8) {
  1093  	return Float32x8{spec.ConvertLoLToZ[int8, spec.Width256, float32](x.v)}
  1094  }
  1095  
  1096  // ConvertLo4ToFloat64 converts the low-indexed 4 elements of x to float64.
  1097  func (x Int8x32) ConvertLo4ToFloat64() (z Float64x4) {
  1098  	return Float64x4{spec.ConvertLoLToZ[int8, spec.Width256, float64](x.v)}
  1099  }
  1100  
  1101  // ConvertLo16ToFloat32 converts the low-indexed 16 elements of x to float32.
  1102  func (x Int8x64) ConvertLo16ToFloat32() (z Float32x16) {
  1103  	return Float32x16{spec.ConvertLoLToZ[int8, spec.Width512, float32](x.v)}
  1104  }
  1105  
  1106  // ConvertLo8ToFloat64 converts the low-indexed 8 elements of x to float64.
  1107  func (x Int8x64) ConvertLo8ToFloat64() (z Float64x8) {
  1108  	return Float64x8{spec.ConvertLoLToZ[int8, spec.Width512, float64](x.v)}
  1109  }
  1110  
  1111  // ConvertLo4ToFloat32 converts the low-indexed 4 elements of x to float32.
  1112  func (x Int16x8) ConvertLo4ToFloat32() (z Float32x4) {
  1113  	return Float32x4{spec.ConvertLoLToZ[int16, spec.Width128, float32](x.v)}
  1114  }
  1115  
  1116  // ConvertLo2ToFloat64 converts the low-indexed 2 elements of x to float64.
  1117  func (x Int16x8) ConvertLo2ToFloat64() (z Float64x2) {
  1118  	return Float64x2{spec.ConvertLoLToZ[int16, spec.Width128, float64](x.v)}
  1119  }
  1120  
  1121  // ConvertLo8ToFloat32 converts the low-indexed 8 elements of x to float32.
  1122  func (x Int16x16) ConvertLo8ToFloat32() (z Float32x8) {
  1123  	return Float32x8{spec.ConvertLoLToZ[int16, spec.Width256, float32](x.v)}
  1124  }
  1125  
  1126  // ConvertLo4ToFloat64 converts the low-indexed 4 elements of x to float64.
  1127  func (x Int16x16) ConvertLo4ToFloat64() (z Float64x4) {
  1128  	return Float64x4{spec.ConvertLoLToZ[int16, spec.Width256, float64](x.v)}
  1129  }
  1130  
  1131  // ConvertLo16ToFloat32 converts the low-indexed 16 elements of x to float32.
  1132  func (x Int16x32) ConvertLo16ToFloat32() (z Float32x16) {
  1133  	return Float32x16{spec.ConvertLoLToZ[int16, spec.Width512, float32](x.v)}
  1134  }
  1135  
  1136  // ConvertLo8ToFloat64 converts the low-indexed 8 elements of x to float64.
  1137  func (x Int16x32) ConvertLo8ToFloat64() (z Float64x8) {
  1138  	return Float64x8{spec.ConvertLoLToZ[int16, spec.Width512, float64](x.v)}
  1139  }
  1140  
  1141  // ConvertLo2ToFloat64 converts the low-indexed 2 elements of x to float64.
  1142  func (x Int32x4) ConvertLo2ToFloat64() (z Float64x2) {
  1143  	return Float64x2{spec.ConvertLoLToZ[int32, spec.Width128, float64](x.v)}
  1144  }
  1145  
  1146  // ConvertLo4ToFloat64 converts the low-indexed 4 elements of x to float64.
  1147  func (x Int32x8) ConvertLo4ToFloat64() (z Float64x4) {
  1148  	return Float64x4{spec.ConvertLoLToZ[int32, spec.Width256, float64](x.v)}
  1149  }
  1150  
  1151  // ConvertLo8ToFloat64 converts the low-indexed 8 elements of x to float64.
  1152  func (x Int32x16) ConvertLo8ToFloat64() (z Float64x8) {
  1153  	return Float64x8{spec.ConvertLoLToZ[int32, spec.Width512, float64](x.v)}
  1154  }
  1155  
  1156  // ConvertLo4ToFloat32 converts the low-indexed 4 elements of x to float32.
  1157  func (x Uint8x16) ConvertLo4ToFloat32() (z Float32x4) {
  1158  	return Float32x4{spec.ConvertLoLToZ[uint8, spec.Width128, float32](x.v)}
  1159  }
  1160  
  1161  // ConvertLo2ToFloat64 converts the low-indexed 2 elements of x to float64.
  1162  func (x Uint8x16) ConvertLo2ToFloat64() (z Float64x2) {
  1163  	return Float64x2{spec.ConvertLoLToZ[uint8, spec.Width128, float64](x.v)}
  1164  }
  1165  
  1166  // ConvertLo8ToFloat32 converts the low-indexed 8 elements of x to float32.
  1167  func (x Uint8x32) ConvertLo8ToFloat32() (z Float32x8) {
  1168  	return Float32x8{spec.ConvertLoLToZ[uint8, spec.Width256, float32](x.v)}
  1169  }
  1170  
  1171  // ConvertLo4ToFloat64 converts the low-indexed 4 elements of x to float64.
  1172  func (x Uint8x32) ConvertLo4ToFloat64() (z Float64x4) {
  1173  	return Float64x4{spec.ConvertLoLToZ[uint8, spec.Width256, float64](x.v)}
  1174  }
  1175  
  1176  // ConvertLo16ToFloat32 converts the low-indexed 16 elements of x to float32.
  1177  func (x Uint8x64) ConvertLo16ToFloat32() (z Float32x16) {
  1178  	return Float32x16{spec.ConvertLoLToZ[uint8, spec.Width512, float32](x.v)}
  1179  }
  1180  
  1181  // ConvertLo8ToFloat64 converts the low-indexed 8 elements of x to float64.
  1182  func (x Uint8x64) ConvertLo8ToFloat64() (z Float64x8) {
  1183  	return Float64x8{spec.ConvertLoLToZ[uint8, spec.Width512, float64](x.v)}
  1184  }
  1185  
  1186  // ConvertLo4ToFloat32 converts the low-indexed 4 elements of x to float32.
  1187  func (x Uint16x8) ConvertLo4ToFloat32() (z Float32x4) {
  1188  	return Float32x4{spec.ConvertLoLToZ[uint16, spec.Width128, float32](x.v)}
  1189  }
  1190  
  1191  // ConvertLo2ToFloat64 converts the low-indexed 2 elements of x to float64.
  1192  func (x Uint16x8) ConvertLo2ToFloat64() (z Float64x2) {
  1193  	return Float64x2{spec.ConvertLoLToZ[uint16, spec.Width128, float64](x.v)}
  1194  }
  1195  
  1196  // ConvertLo8ToFloat32 converts the low-indexed 8 elements of x to float32.
  1197  func (x Uint16x16) ConvertLo8ToFloat32() (z Float32x8) {
  1198  	return Float32x8{spec.ConvertLoLToZ[uint16, spec.Width256, float32](x.v)}
  1199  }
  1200  
  1201  // ConvertLo4ToFloat64 converts the low-indexed 4 elements of x to float64.
  1202  func (x Uint16x16) ConvertLo4ToFloat64() (z Float64x4) {
  1203  	return Float64x4{spec.ConvertLoLToZ[uint16, spec.Width256, float64](x.v)}
  1204  }
  1205  
  1206  // ConvertLo16ToFloat32 converts the low-indexed 16 elements of x to float32.
  1207  func (x Uint16x32) ConvertLo16ToFloat32() (z Float32x16) {
  1208  	return Float32x16{spec.ConvertLoLToZ[uint16, spec.Width512, float32](x.v)}
  1209  }
  1210  
  1211  // ConvertLo8ToFloat64 converts the low-indexed 8 elements of x to float64.
  1212  func (x Uint16x32) ConvertLo8ToFloat64() (z Float64x8) {
  1213  	return Float64x8{spec.ConvertLoLToZ[uint16, spec.Width512, float64](x.v)}
  1214  }
  1215  
  1216  // ConvertLo2ToFloat64 converts the low-indexed 2 elements of x to float64.
  1217  func (x Uint32x4) ConvertLo2ToFloat64() (z Float64x2) {
  1218  	return Float64x2{spec.ConvertLoLToZ[uint32, spec.Width128, float64](x.v)}
  1219  }
  1220  
  1221  // ConvertLo4ToFloat64 converts the low-indexed 4 elements of x to float64.
  1222  func (x Uint32x8) ConvertLo4ToFloat64() (z Float64x4) {
  1223  	return Float64x4{spec.ConvertLoLToZ[uint32, spec.Width256, float64](x.v)}
  1224  }
  1225  
  1226  // ConvertLo8ToFloat64 converts the low-indexed 8 elements of x to float64.
  1227  func (x Uint32x16) ConvertLo8ToFloat64() (z Float64x8) {
  1228  	return Float64x8{spec.ConvertLoLToZ[uint32, spec.Width512, float64](x.v)}
  1229  }
  1230  
  1231  // BroadcastFloat32x4 returns a vector with the input x assigned to all elements of the
  1232  // result.
  1233  func BroadcastFloat32x4(x float32) (z Float32x4) {
  1234  	return Float32x4{spec.BroadcastZ[float32, spec.Width128](x)}
  1235  }
  1236  
  1237  // BroadcastFloat32x8 returns a vector with the input x assigned to all elements of the
  1238  // result.
  1239  func BroadcastFloat32x8(x float32) (z Float32x8) {
  1240  	return Float32x8{spec.BroadcastZ[float32, spec.Width256](x)}
  1241  }
  1242  
  1243  // BroadcastFloat32x16 returns a vector with the input x assigned to all elements of the
  1244  // result.
  1245  func BroadcastFloat32x16(x float32) (z Float32x16) {
  1246  	return Float32x16{spec.BroadcastZ[float32, spec.Width512](x)}
  1247  }
  1248  
  1249  // BroadcastFloat32s returns a vector with the input x assigned to all elements of the
  1250  // result.
  1251  func BroadcastFloat32s(x float32) (z Float32s) {
  1252  	return Float32s{spec.BroadcastZ[float32, spec.WidthScalable](x)}
  1253  }
  1254  
  1255  // BroadcastFloat64x2 returns a vector with the input x assigned to all elements of the
  1256  // result.
  1257  func BroadcastFloat64x2(x float64) (z Float64x2) {
  1258  	return Float64x2{spec.BroadcastZ[float64, spec.Width128](x)}
  1259  }
  1260  
  1261  // BroadcastFloat64x4 returns a vector with the input x assigned to all elements of the
  1262  // result.
  1263  func BroadcastFloat64x4(x float64) (z Float64x4) {
  1264  	return Float64x4{spec.BroadcastZ[float64, spec.Width256](x)}
  1265  }
  1266  
  1267  // BroadcastFloat64x8 returns a vector with the input x assigned to all elements of the
  1268  // result.
  1269  func BroadcastFloat64x8(x float64) (z Float64x8) {
  1270  	return Float64x8{spec.BroadcastZ[float64, spec.Width512](x)}
  1271  }
  1272  
  1273  // BroadcastFloat64s returns a vector with the input x assigned to all elements of the
  1274  // result.
  1275  func BroadcastFloat64s(x float64) (z Float64s) {
  1276  	return Float64s{spec.BroadcastZ[float64, spec.WidthScalable](x)}
  1277  }
  1278  
  1279  // BroadcastInt8x16 returns a vector with the input x assigned to all elements of the
  1280  // result.
  1281  func BroadcastInt8x16(x int8) (z Int8x16) {
  1282  	return Int8x16{spec.BroadcastZ[int8, spec.Width128](x)}
  1283  }
  1284  
  1285  // BroadcastInt8x32 returns a vector with the input x assigned to all elements of the
  1286  // result.
  1287  func BroadcastInt8x32(x int8) (z Int8x32) {
  1288  	return Int8x32{spec.BroadcastZ[int8, spec.Width256](x)}
  1289  }
  1290  
  1291  // BroadcastInt8x64 returns a vector with the input x assigned to all elements of the
  1292  // result.
  1293  func BroadcastInt8x64(x int8) (z Int8x64) {
  1294  	return Int8x64{spec.BroadcastZ[int8, spec.Width512](x)}
  1295  }
  1296  
  1297  // BroadcastInt8s returns a vector with the input x assigned to all elements of the
  1298  // result.
  1299  func BroadcastInt8s(x int8) (z Int8s) {
  1300  	return Int8s{spec.BroadcastZ[int8, spec.WidthScalable](x)}
  1301  }
  1302  
  1303  // BroadcastInt16x8 returns a vector with the input x assigned to all elements of the
  1304  // result.
  1305  func BroadcastInt16x8(x int16) (z Int16x8) {
  1306  	return Int16x8{spec.BroadcastZ[int16, spec.Width128](x)}
  1307  }
  1308  
  1309  // BroadcastInt16x16 returns a vector with the input x assigned to all elements of the
  1310  // result.
  1311  func BroadcastInt16x16(x int16) (z Int16x16) {
  1312  	return Int16x16{spec.BroadcastZ[int16, spec.Width256](x)}
  1313  }
  1314  
  1315  // BroadcastInt16x32 returns a vector with the input x assigned to all elements of the
  1316  // result.
  1317  func BroadcastInt16x32(x int16) (z Int16x32) {
  1318  	return Int16x32{spec.BroadcastZ[int16, spec.Width512](x)}
  1319  }
  1320  
  1321  // BroadcastInt16s returns a vector with the input x assigned to all elements of the
  1322  // result.
  1323  func BroadcastInt16s(x int16) (z Int16s) {
  1324  	return Int16s{spec.BroadcastZ[int16, spec.WidthScalable](x)}
  1325  }
  1326  
  1327  // BroadcastInt32x4 returns a vector with the input x assigned to all elements of the
  1328  // result.
  1329  func BroadcastInt32x4(x int32) (z Int32x4) {
  1330  	return Int32x4{spec.BroadcastZ[int32, spec.Width128](x)}
  1331  }
  1332  
  1333  // BroadcastInt32x8 returns a vector with the input x assigned to all elements of the
  1334  // result.
  1335  func BroadcastInt32x8(x int32) (z Int32x8) {
  1336  	return Int32x8{spec.BroadcastZ[int32, spec.Width256](x)}
  1337  }
  1338  
  1339  // BroadcastInt32x16 returns a vector with the input x assigned to all elements of the
  1340  // result.
  1341  func BroadcastInt32x16(x int32) (z Int32x16) {
  1342  	return Int32x16{spec.BroadcastZ[int32, spec.Width512](x)}
  1343  }
  1344  
  1345  // BroadcastInt32s returns a vector with the input x assigned to all elements of the
  1346  // result.
  1347  func BroadcastInt32s(x int32) (z Int32s) {
  1348  	return Int32s{spec.BroadcastZ[int32, spec.WidthScalable](x)}
  1349  }
  1350  
  1351  // BroadcastInt64x2 returns a vector with the input x assigned to all elements of the
  1352  // result.
  1353  func BroadcastInt64x2(x int64) (z Int64x2) {
  1354  	return Int64x2{spec.BroadcastZ[int64, spec.Width128](x)}
  1355  }
  1356  
  1357  // BroadcastInt64x4 returns a vector with the input x assigned to all elements of the
  1358  // result.
  1359  func BroadcastInt64x4(x int64) (z Int64x4) {
  1360  	return Int64x4{spec.BroadcastZ[int64, spec.Width256](x)}
  1361  }
  1362  
  1363  // BroadcastInt64x8 returns a vector with the input x assigned to all elements of the
  1364  // result.
  1365  func BroadcastInt64x8(x int64) (z Int64x8) {
  1366  	return Int64x8{spec.BroadcastZ[int64, spec.Width512](x)}
  1367  }
  1368  
  1369  // BroadcastInt64s returns a vector with the input x assigned to all elements of the
  1370  // result.
  1371  func BroadcastInt64s(x int64) (z Int64s) {
  1372  	return Int64s{spec.BroadcastZ[int64, spec.WidthScalable](x)}
  1373  }
  1374  
  1375  // BroadcastUint8x16 returns a vector with the input x assigned to all elements of the
  1376  // result.
  1377  func BroadcastUint8x16(x uint8) (z Uint8x16) {
  1378  	return Uint8x16{spec.BroadcastZ[uint8, spec.Width128](x)}
  1379  }
  1380  
  1381  // BroadcastUint8x32 returns a vector with the input x assigned to all elements of the
  1382  // result.
  1383  func BroadcastUint8x32(x uint8) (z Uint8x32) {
  1384  	return Uint8x32{spec.BroadcastZ[uint8, spec.Width256](x)}
  1385  }
  1386  
  1387  // BroadcastUint8x64 returns a vector with the input x assigned to all elements of the
  1388  // result.
  1389  func BroadcastUint8x64(x uint8) (z Uint8x64) {
  1390  	return Uint8x64{spec.BroadcastZ[uint8, spec.Width512](x)}
  1391  }
  1392  
  1393  // BroadcastUint8s returns a vector with the input x assigned to all elements of the
  1394  // result.
  1395  func BroadcastUint8s(x uint8) (z Uint8s) {
  1396  	return Uint8s{spec.BroadcastZ[uint8, spec.WidthScalable](x)}
  1397  }
  1398  
  1399  // BroadcastUint16x8 returns a vector with the input x assigned to all elements of the
  1400  // result.
  1401  func BroadcastUint16x8(x uint16) (z Uint16x8) {
  1402  	return Uint16x8{spec.BroadcastZ[uint16, spec.Width128](x)}
  1403  }
  1404  
  1405  // BroadcastUint16x16 returns a vector with the input x assigned to all elements of the
  1406  // result.
  1407  func BroadcastUint16x16(x uint16) (z Uint16x16) {
  1408  	return Uint16x16{spec.BroadcastZ[uint16, spec.Width256](x)}
  1409  }
  1410  
  1411  // BroadcastUint16x32 returns a vector with the input x assigned to all elements of the
  1412  // result.
  1413  func BroadcastUint16x32(x uint16) (z Uint16x32) {
  1414  	return Uint16x32{spec.BroadcastZ[uint16, spec.Width512](x)}
  1415  }
  1416  
  1417  // BroadcastUint16s returns a vector with the input x assigned to all elements of the
  1418  // result.
  1419  func BroadcastUint16s(x uint16) (z Uint16s) {
  1420  	return Uint16s{spec.BroadcastZ[uint16, spec.WidthScalable](x)}
  1421  }
  1422  
  1423  // BroadcastUint32x4 returns a vector with the input x assigned to all elements of the
  1424  // result.
  1425  func BroadcastUint32x4(x uint32) (z Uint32x4) {
  1426  	return Uint32x4{spec.BroadcastZ[uint32, spec.Width128](x)}
  1427  }
  1428  
  1429  // BroadcastUint32x8 returns a vector with the input x assigned to all elements of the
  1430  // result.
  1431  func BroadcastUint32x8(x uint32) (z Uint32x8) {
  1432  	return Uint32x8{spec.BroadcastZ[uint32, spec.Width256](x)}
  1433  }
  1434  
  1435  // BroadcastUint32x16 returns a vector with the input x assigned to all elements of the
  1436  // result.
  1437  func BroadcastUint32x16(x uint32) (z Uint32x16) {
  1438  	return Uint32x16{spec.BroadcastZ[uint32, spec.Width512](x)}
  1439  }
  1440  
  1441  // BroadcastUint32s returns a vector with the input x assigned to all elements of the
  1442  // result.
  1443  func BroadcastUint32s(x uint32) (z Uint32s) {
  1444  	return Uint32s{spec.BroadcastZ[uint32, spec.WidthScalable](x)}
  1445  }
  1446  
  1447  // BroadcastUint64x2 returns a vector with the input x assigned to all elements of the
  1448  // result.
  1449  func BroadcastUint64x2(x uint64) (z Uint64x2) {
  1450  	return Uint64x2{spec.BroadcastZ[uint64, spec.Width128](x)}
  1451  }
  1452  
  1453  // BroadcastUint64x4 returns a vector with the input x assigned to all elements of the
  1454  // result.
  1455  func BroadcastUint64x4(x uint64) (z Uint64x4) {
  1456  	return Uint64x4{spec.BroadcastZ[uint64, spec.Width256](x)}
  1457  }
  1458  
  1459  // BroadcastUint64x8 returns a vector with the input x assigned to all elements of the
  1460  // result.
  1461  func BroadcastUint64x8(x uint64) (z Uint64x8) {
  1462  	return Uint64x8{spec.BroadcastZ[uint64, spec.Width512](x)}
  1463  }
  1464  
  1465  // BroadcastUint64s returns a vector with the input x assigned to all elements of the
  1466  // result.
  1467  func BroadcastUint64s(x uint64) (z Uint64s) {
  1468  	return Uint64s{spec.BroadcastZ[uint64, spec.WidthScalable](x)}
  1469  }
  1470  
  1471  // LoadFloat32x4 loads a slice into a vector. If len(s) is less than the number of
  1472  // elements in the vector, it panics.
  1473  func LoadFloat32x4(s []float32) (z Float32x4) {
  1474  	return Float32x4{spec.LoadZ[float32, spec.Width128](s)}
  1475  }
  1476  
  1477  // LoadFloat32x8 loads a slice into a vector. If len(s) is less than the number of
  1478  // elements in the vector, it panics.
  1479  func LoadFloat32x8(s []float32) (z Float32x8) {
  1480  	return Float32x8{spec.LoadZ[float32, spec.Width256](s)}
  1481  }
  1482  
  1483  // LoadFloat32x16 loads a slice into a vector. If len(s) is less than the number of
  1484  // elements in the vector, it panics.
  1485  func LoadFloat32x16(s []float32) (z Float32x16) {
  1486  	return Float32x16{spec.LoadZ[float32, spec.Width512](s)}
  1487  }
  1488  
  1489  // LoadFloat32s loads a slice into a vector. If len(s) is less than the number of
  1490  // elements in the vector, it panics.
  1491  func LoadFloat32s(s []float32) (z Float32s) {
  1492  	return Float32s{spec.LoadZ[float32, spec.WidthScalable](s)}
  1493  }
  1494  
  1495  // LoadFloat64x2 loads a slice into a vector. If len(s) is less than the number of
  1496  // elements in the vector, it panics.
  1497  func LoadFloat64x2(s []float64) (z Float64x2) {
  1498  	return Float64x2{spec.LoadZ[float64, spec.Width128](s)}
  1499  }
  1500  
  1501  // LoadFloat64x4 loads a slice into a vector. If len(s) is less than the number of
  1502  // elements in the vector, it panics.
  1503  func LoadFloat64x4(s []float64) (z Float64x4) {
  1504  	return Float64x4{spec.LoadZ[float64, spec.Width256](s)}
  1505  }
  1506  
  1507  // LoadFloat64x8 loads a slice into a vector. If len(s) is less than the number of
  1508  // elements in the vector, it panics.
  1509  func LoadFloat64x8(s []float64) (z Float64x8) {
  1510  	return Float64x8{spec.LoadZ[float64, spec.Width512](s)}
  1511  }
  1512  
  1513  // LoadFloat64s loads a slice into a vector. If len(s) is less than the number of
  1514  // elements in the vector, it panics.
  1515  func LoadFloat64s(s []float64) (z Float64s) {
  1516  	return Float64s{spec.LoadZ[float64, spec.WidthScalable](s)}
  1517  }
  1518  
  1519  // LoadInt8x16 loads a slice into a vector. If len(s) is less than the number of
  1520  // elements in the vector, it panics.
  1521  func LoadInt8x16(s []int8) (z Int8x16) {
  1522  	return Int8x16{spec.LoadZ[int8, spec.Width128](s)}
  1523  }
  1524  
  1525  // LoadInt8x32 loads a slice into a vector. If len(s) is less than the number of
  1526  // elements in the vector, it panics.
  1527  func LoadInt8x32(s []int8) (z Int8x32) {
  1528  	return Int8x32{spec.LoadZ[int8, spec.Width256](s)}
  1529  }
  1530  
  1531  // LoadInt8x64 loads a slice into a vector. If len(s) is less than the number of
  1532  // elements in the vector, it panics.
  1533  func LoadInt8x64(s []int8) (z Int8x64) {
  1534  	return Int8x64{spec.LoadZ[int8, spec.Width512](s)}
  1535  }
  1536  
  1537  // LoadInt8s loads a slice into a vector. If len(s) is less than the number of
  1538  // elements in the vector, it panics.
  1539  func LoadInt8s(s []int8) (z Int8s) {
  1540  	return Int8s{spec.LoadZ[int8, spec.WidthScalable](s)}
  1541  }
  1542  
  1543  // LoadInt16x8 loads a slice into a vector. If len(s) is less than the number of
  1544  // elements in the vector, it panics.
  1545  func LoadInt16x8(s []int16) (z Int16x8) {
  1546  	return Int16x8{spec.LoadZ[int16, spec.Width128](s)}
  1547  }
  1548  
  1549  // LoadInt16x16 loads a slice into a vector. If len(s) is less than the number of
  1550  // elements in the vector, it panics.
  1551  func LoadInt16x16(s []int16) (z Int16x16) {
  1552  	return Int16x16{spec.LoadZ[int16, spec.Width256](s)}
  1553  }
  1554  
  1555  // LoadInt16x32 loads a slice into a vector. If len(s) is less than the number of
  1556  // elements in the vector, it panics.
  1557  func LoadInt16x32(s []int16) (z Int16x32) {
  1558  	return Int16x32{spec.LoadZ[int16, spec.Width512](s)}
  1559  }
  1560  
  1561  // LoadInt16s loads a slice into a vector. If len(s) is less than the number of
  1562  // elements in the vector, it panics.
  1563  func LoadInt16s(s []int16) (z Int16s) {
  1564  	return Int16s{spec.LoadZ[int16, spec.WidthScalable](s)}
  1565  }
  1566  
  1567  // LoadInt32x4 loads a slice into a vector. If len(s) is less than the number of
  1568  // elements in the vector, it panics.
  1569  func LoadInt32x4(s []int32) (z Int32x4) {
  1570  	return Int32x4{spec.LoadZ[int32, spec.Width128](s)}
  1571  }
  1572  
  1573  // LoadInt32x8 loads a slice into a vector. If len(s) is less than the number of
  1574  // elements in the vector, it panics.
  1575  func LoadInt32x8(s []int32) (z Int32x8) {
  1576  	return Int32x8{spec.LoadZ[int32, spec.Width256](s)}
  1577  }
  1578  
  1579  // LoadInt32x16 loads a slice into a vector. If len(s) is less than the number of
  1580  // elements in the vector, it panics.
  1581  func LoadInt32x16(s []int32) (z Int32x16) {
  1582  	return Int32x16{spec.LoadZ[int32, spec.Width512](s)}
  1583  }
  1584  
  1585  // LoadInt32s loads a slice into a vector. If len(s) is less than the number of
  1586  // elements in the vector, it panics.
  1587  func LoadInt32s(s []int32) (z Int32s) {
  1588  	return Int32s{spec.LoadZ[int32, spec.WidthScalable](s)}
  1589  }
  1590  
  1591  // LoadInt64x2 loads a slice into a vector. If len(s) is less than the number of
  1592  // elements in the vector, it panics.
  1593  func LoadInt64x2(s []int64) (z Int64x2) {
  1594  	return Int64x2{spec.LoadZ[int64, spec.Width128](s)}
  1595  }
  1596  
  1597  // LoadInt64x4 loads a slice into a vector. If len(s) is less than the number of
  1598  // elements in the vector, it panics.
  1599  func LoadInt64x4(s []int64) (z Int64x4) {
  1600  	return Int64x4{spec.LoadZ[int64, spec.Width256](s)}
  1601  }
  1602  
  1603  // LoadInt64x8 loads a slice into a vector. If len(s) is less than the number of
  1604  // elements in the vector, it panics.
  1605  func LoadInt64x8(s []int64) (z Int64x8) {
  1606  	return Int64x8{spec.LoadZ[int64, spec.Width512](s)}
  1607  }
  1608  
  1609  // LoadInt64s loads a slice into a vector. If len(s) is less than the number of
  1610  // elements in the vector, it panics.
  1611  func LoadInt64s(s []int64) (z Int64s) {
  1612  	return Int64s{spec.LoadZ[int64, spec.WidthScalable](s)}
  1613  }
  1614  
  1615  // LoadUint8x16 loads a slice into a vector. If len(s) is less than the number of
  1616  // elements in the vector, it panics.
  1617  func LoadUint8x16(s []uint8) (z Uint8x16) {
  1618  	return Uint8x16{spec.LoadZ[uint8, spec.Width128](s)}
  1619  }
  1620  
  1621  // LoadUint8x32 loads a slice into a vector. If len(s) is less than the number of
  1622  // elements in the vector, it panics.
  1623  func LoadUint8x32(s []uint8) (z Uint8x32) {
  1624  	return Uint8x32{spec.LoadZ[uint8, spec.Width256](s)}
  1625  }
  1626  
  1627  // LoadUint8x64 loads a slice into a vector. If len(s) is less than the number of
  1628  // elements in the vector, it panics.
  1629  func LoadUint8x64(s []uint8) (z Uint8x64) {
  1630  	return Uint8x64{spec.LoadZ[uint8, spec.Width512](s)}
  1631  }
  1632  
  1633  // LoadUint8s loads a slice into a vector. If len(s) is less than the number of
  1634  // elements in the vector, it panics.
  1635  func LoadUint8s(s []uint8) (z Uint8s) {
  1636  	return Uint8s{spec.LoadZ[uint8, spec.WidthScalable](s)}
  1637  }
  1638  
  1639  // LoadUint16x8 loads a slice into a vector. If len(s) is less than the number of
  1640  // elements in the vector, it panics.
  1641  func LoadUint16x8(s []uint16) (z Uint16x8) {
  1642  	return Uint16x8{spec.LoadZ[uint16, spec.Width128](s)}
  1643  }
  1644  
  1645  // LoadUint16x16 loads a slice into a vector. If len(s) is less than the number of
  1646  // elements in the vector, it panics.
  1647  func LoadUint16x16(s []uint16) (z Uint16x16) {
  1648  	return Uint16x16{spec.LoadZ[uint16, spec.Width256](s)}
  1649  }
  1650  
  1651  // LoadUint16x32 loads a slice into a vector. If len(s) is less than the number of
  1652  // elements in the vector, it panics.
  1653  func LoadUint16x32(s []uint16) (z Uint16x32) {
  1654  	return Uint16x32{spec.LoadZ[uint16, spec.Width512](s)}
  1655  }
  1656  
  1657  // LoadUint16s loads a slice into a vector. If len(s) is less than the number of
  1658  // elements in the vector, it panics.
  1659  func LoadUint16s(s []uint16) (z Uint16s) {
  1660  	return Uint16s{spec.LoadZ[uint16, spec.WidthScalable](s)}
  1661  }
  1662  
  1663  // LoadUint32x4 loads a slice into a vector. If len(s) is less than the number of
  1664  // elements in the vector, it panics.
  1665  func LoadUint32x4(s []uint32) (z Uint32x4) {
  1666  	return Uint32x4{spec.LoadZ[uint32, spec.Width128](s)}
  1667  }
  1668  
  1669  // LoadUint32x8 loads a slice into a vector. If len(s) is less than the number of
  1670  // elements in the vector, it panics.
  1671  func LoadUint32x8(s []uint32) (z Uint32x8) {
  1672  	return Uint32x8{spec.LoadZ[uint32, spec.Width256](s)}
  1673  }
  1674  
  1675  // LoadUint32x16 loads a slice into a vector. If len(s) is less than the number of
  1676  // elements in the vector, it panics.
  1677  func LoadUint32x16(s []uint32) (z Uint32x16) {
  1678  	return Uint32x16{spec.LoadZ[uint32, spec.Width512](s)}
  1679  }
  1680  
  1681  // LoadUint32s loads a slice into a vector. If len(s) is less than the number of
  1682  // elements in the vector, it panics.
  1683  func LoadUint32s(s []uint32) (z Uint32s) {
  1684  	return Uint32s{spec.LoadZ[uint32, spec.WidthScalable](s)}
  1685  }
  1686  
  1687  // LoadUint64x2 loads a slice into a vector. If len(s) is less than the number of
  1688  // elements in the vector, it panics.
  1689  func LoadUint64x2(s []uint64) (z Uint64x2) {
  1690  	return Uint64x2{spec.LoadZ[uint64, spec.Width128](s)}
  1691  }
  1692  
  1693  // LoadUint64x4 loads a slice into a vector. If len(s) is less than the number of
  1694  // elements in the vector, it panics.
  1695  func LoadUint64x4(s []uint64) (z Uint64x4) {
  1696  	return Uint64x4{spec.LoadZ[uint64, spec.Width256](s)}
  1697  }
  1698  
  1699  // LoadUint64x8 loads a slice into a vector. If len(s) is less than the number of
  1700  // elements in the vector, it panics.
  1701  func LoadUint64x8(s []uint64) (z Uint64x8) {
  1702  	return Uint64x8{spec.LoadZ[uint64, spec.Width512](s)}
  1703  }
  1704  
  1705  // LoadUint64s loads a slice into a vector. If len(s) is less than the number of
  1706  // elements in the vector, it panics.
  1707  func LoadUint64s(s []uint64) (z Uint64s) {
  1708  	return Uint64s{spec.LoadZ[uint64, spec.WidthScalable](s)}
  1709  }
  1710  
  1711  // LoadFloat32x4Array loads an array into a vector.
  1712  func LoadFloat32x4Array(x *[4]float32) (z Float32x4) {
  1713  	var tmp0 spec.Array[float32, spec.Width128] = x[:]
  1714  	return Float32x4{spec.LoadZArray[float32, spec.Width128](&tmp0)}
  1715  }
  1716  
  1717  // LoadFloat32x8Array loads an array into a vector.
  1718  func LoadFloat32x8Array(x *[8]float32) (z Float32x8) {
  1719  	var tmp0 spec.Array[float32, spec.Width256] = x[:]
  1720  	return Float32x8{spec.LoadZArray[float32, spec.Width256](&tmp0)}
  1721  }
  1722  
  1723  // LoadFloat32x16Array loads an array into a vector.
  1724  func LoadFloat32x16Array(x *[16]float32) (z Float32x16) {
  1725  	var tmp0 spec.Array[float32, spec.Width512] = x[:]
  1726  	return Float32x16{spec.LoadZArray[float32, spec.Width512](&tmp0)}
  1727  }
  1728  
  1729  // LoadFloat64x2Array loads an array into a vector.
  1730  func LoadFloat64x2Array(x *[2]float64) (z Float64x2) {
  1731  	var tmp0 spec.Array[float64, spec.Width128] = x[:]
  1732  	return Float64x2{spec.LoadZArray[float64, spec.Width128](&tmp0)}
  1733  }
  1734  
  1735  // LoadFloat64x4Array loads an array into a vector.
  1736  func LoadFloat64x4Array(x *[4]float64) (z Float64x4) {
  1737  	var tmp0 spec.Array[float64, spec.Width256] = x[:]
  1738  	return Float64x4{spec.LoadZArray[float64, spec.Width256](&tmp0)}
  1739  }
  1740  
  1741  // LoadFloat64x8Array loads an array into a vector.
  1742  func LoadFloat64x8Array(x *[8]float64) (z Float64x8) {
  1743  	var tmp0 spec.Array[float64, spec.Width512] = x[:]
  1744  	return Float64x8{spec.LoadZArray[float64, spec.Width512](&tmp0)}
  1745  }
  1746  
  1747  // LoadInt8x16Array loads an array into a vector.
  1748  func LoadInt8x16Array(x *[16]int8) (z Int8x16) {
  1749  	var tmp0 spec.Array[int8, spec.Width128] = x[:]
  1750  	return Int8x16{spec.LoadZArray[int8, spec.Width128](&tmp0)}
  1751  }
  1752  
  1753  // LoadInt8x32Array loads an array into a vector.
  1754  func LoadInt8x32Array(x *[32]int8) (z Int8x32) {
  1755  	var tmp0 spec.Array[int8, spec.Width256] = x[:]
  1756  	return Int8x32{spec.LoadZArray[int8, spec.Width256](&tmp0)}
  1757  }
  1758  
  1759  // LoadInt8x64Array loads an array into a vector.
  1760  func LoadInt8x64Array(x *[64]int8) (z Int8x64) {
  1761  	var tmp0 spec.Array[int8, spec.Width512] = x[:]
  1762  	return Int8x64{spec.LoadZArray[int8, spec.Width512](&tmp0)}
  1763  }
  1764  
  1765  // LoadInt16x8Array loads an array into a vector.
  1766  func LoadInt16x8Array(x *[8]int16) (z Int16x8) {
  1767  	var tmp0 spec.Array[int16, spec.Width128] = x[:]
  1768  	return Int16x8{spec.LoadZArray[int16, spec.Width128](&tmp0)}
  1769  }
  1770  
  1771  // LoadInt16x16Array loads an array into a vector.
  1772  func LoadInt16x16Array(x *[16]int16) (z Int16x16) {
  1773  	var tmp0 spec.Array[int16, spec.Width256] = x[:]
  1774  	return Int16x16{spec.LoadZArray[int16, spec.Width256](&tmp0)}
  1775  }
  1776  
  1777  // LoadInt16x32Array loads an array into a vector.
  1778  func LoadInt16x32Array(x *[32]int16) (z Int16x32) {
  1779  	var tmp0 spec.Array[int16, spec.Width512] = x[:]
  1780  	return Int16x32{spec.LoadZArray[int16, spec.Width512](&tmp0)}
  1781  }
  1782  
  1783  // LoadInt32x4Array loads an array into a vector.
  1784  func LoadInt32x4Array(x *[4]int32) (z Int32x4) {
  1785  	var tmp0 spec.Array[int32, spec.Width128] = x[:]
  1786  	return Int32x4{spec.LoadZArray[int32, spec.Width128](&tmp0)}
  1787  }
  1788  
  1789  // LoadInt32x8Array loads an array into a vector.
  1790  func LoadInt32x8Array(x *[8]int32) (z Int32x8) {
  1791  	var tmp0 spec.Array[int32, spec.Width256] = x[:]
  1792  	return Int32x8{spec.LoadZArray[int32, spec.Width256](&tmp0)}
  1793  }
  1794  
  1795  // LoadInt32x16Array loads an array into a vector.
  1796  func LoadInt32x16Array(x *[16]int32) (z Int32x16) {
  1797  	var tmp0 spec.Array[int32, spec.Width512] = x[:]
  1798  	return Int32x16{spec.LoadZArray[int32, spec.Width512](&tmp0)}
  1799  }
  1800  
  1801  // LoadInt64x2Array loads an array into a vector.
  1802  func LoadInt64x2Array(x *[2]int64) (z Int64x2) {
  1803  	var tmp0 spec.Array[int64, spec.Width128] = x[:]
  1804  	return Int64x2{spec.LoadZArray[int64, spec.Width128](&tmp0)}
  1805  }
  1806  
  1807  // LoadInt64x4Array loads an array into a vector.
  1808  func LoadInt64x4Array(x *[4]int64) (z Int64x4) {
  1809  	var tmp0 spec.Array[int64, spec.Width256] = x[:]
  1810  	return Int64x4{spec.LoadZArray[int64, spec.Width256](&tmp0)}
  1811  }
  1812  
  1813  // LoadInt64x8Array loads an array into a vector.
  1814  func LoadInt64x8Array(x *[8]int64) (z Int64x8) {
  1815  	var tmp0 spec.Array[int64, spec.Width512] = x[:]
  1816  	return Int64x8{spec.LoadZArray[int64, spec.Width512](&tmp0)}
  1817  }
  1818  
  1819  // LoadUint8x16Array loads an array into a vector.
  1820  func LoadUint8x16Array(x *[16]uint8) (z Uint8x16) {
  1821  	var tmp0 spec.Array[uint8, spec.Width128] = x[:]
  1822  	return Uint8x16{spec.LoadZArray[uint8, spec.Width128](&tmp0)}
  1823  }
  1824  
  1825  // LoadUint8x32Array loads an array into a vector.
  1826  func LoadUint8x32Array(x *[32]uint8) (z Uint8x32) {
  1827  	var tmp0 spec.Array[uint8, spec.Width256] = x[:]
  1828  	return Uint8x32{spec.LoadZArray[uint8, spec.Width256](&tmp0)}
  1829  }
  1830  
  1831  // LoadUint8x64Array loads an array into a vector.
  1832  func LoadUint8x64Array(x *[64]uint8) (z Uint8x64) {
  1833  	var tmp0 spec.Array[uint8, spec.Width512] = x[:]
  1834  	return Uint8x64{spec.LoadZArray[uint8, spec.Width512](&tmp0)}
  1835  }
  1836  
  1837  // LoadUint16x8Array loads an array into a vector.
  1838  func LoadUint16x8Array(x *[8]uint16) (z Uint16x8) {
  1839  	var tmp0 spec.Array[uint16, spec.Width128] = x[:]
  1840  	return Uint16x8{spec.LoadZArray[uint16, spec.Width128](&tmp0)}
  1841  }
  1842  
  1843  // LoadUint16x16Array loads an array into a vector.
  1844  func LoadUint16x16Array(x *[16]uint16) (z Uint16x16) {
  1845  	var tmp0 spec.Array[uint16, spec.Width256] = x[:]
  1846  	return Uint16x16{spec.LoadZArray[uint16, spec.Width256](&tmp0)}
  1847  }
  1848  
  1849  // LoadUint16x32Array loads an array into a vector.
  1850  func LoadUint16x32Array(x *[32]uint16) (z Uint16x32) {
  1851  	var tmp0 spec.Array[uint16, spec.Width512] = x[:]
  1852  	return Uint16x32{spec.LoadZArray[uint16, spec.Width512](&tmp0)}
  1853  }
  1854  
  1855  // LoadUint32x4Array loads an array into a vector.
  1856  func LoadUint32x4Array(x *[4]uint32) (z Uint32x4) {
  1857  	var tmp0 spec.Array[uint32, spec.Width128] = x[:]
  1858  	return Uint32x4{spec.LoadZArray[uint32, spec.Width128](&tmp0)}
  1859  }
  1860  
  1861  // LoadUint32x8Array loads an array into a vector.
  1862  func LoadUint32x8Array(x *[8]uint32) (z Uint32x8) {
  1863  	var tmp0 spec.Array[uint32, spec.Width256] = x[:]
  1864  	return Uint32x8{spec.LoadZArray[uint32, spec.Width256](&tmp0)}
  1865  }
  1866  
  1867  // LoadUint32x16Array loads an array into a vector.
  1868  func LoadUint32x16Array(x *[16]uint32) (z Uint32x16) {
  1869  	var tmp0 spec.Array[uint32, spec.Width512] = x[:]
  1870  	return Uint32x16{spec.LoadZArray[uint32, spec.Width512](&tmp0)}
  1871  }
  1872  
  1873  // LoadUint64x2Array loads an array into a vector.
  1874  func LoadUint64x2Array(x *[2]uint64) (z Uint64x2) {
  1875  	var tmp0 spec.Array[uint64, spec.Width128] = x[:]
  1876  	return Uint64x2{spec.LoadZArray[uint64, spec.Width128](&tmp0)}
  1877  }
  1878  
  1879  // LoadUint64x4Array loads an array into a vector.
  1880  func LoadUint64x4Array(x *[4]uint64) (z Uint64x4) {
  1881  	var tmp0 spec.Array[uint64, spec.Width256] = x[:]
  1882  	return Uint64x4{spec.LoadZArray[uint64, spec.Width256](&tmp0)}
  1883  }
  1884  
  1885  // LoadUint64x8Array loads an array into a vector.
  1886  func LoadUint64x8Array(x *[8]uint64) (z Uint64x8) {
  1887  	var tmp0 spec.Array[uint64, spec.Width512] = x[:]
  1888  	return Uint64x8{spec.LoadZArray[uint64, spec.Width512](&tmp0)}
  1889  }
  1890  
  1891  // LoadFloat32x4Part loads a slice into a vector and returns the vector and the number
  1892  // of elements loaded from s. If len(s) is less than the number of elements in
  1893  // the vector, the remaining vector elements will be zero-filled.
  1894  func LoadFloat32x4Part(s []float32) (z Float32x4, n int) {
  1895  	r1, r2 := spec.LoadZPart[float32, spec.Width128](s)
  1896  	return Float32x4{r1}, r2
  1897  }
  1898  
  1899  // LoadFloat32x8Part loads a slice into a vector and returns the vector and the number
  1900  // of elements loaded from s. If len(s) is less than the number of elements in
  1901  // the vector, the remaining vector elements will be zero-filled.
  1902  func LoadFloat32x8Part(s []float32) (z Float32x8, n int) {
  1903  	r1, r2 := spec.LoadZPart[float32, spec.Width256](s)
  1904  	return Float32x8{r1}, r2
  1905  }
  1906  
  1907  // LoadFloat32x16Part loads a slice into a vector and returns the vector and the number
  1908  // of elements loaded from s. If len(s) is less than the number of elements in
  1909  // the vector, the remaining vector elements will be zero-filled.
  1910  func LoadFloat32x16Part(s []float32) (z Float32x16, n int) {
  1911  	r1, r2 := spec.LoadZPart[float32, spec.Width512](s)
  1912  	return Float32x16{r1}, r2
  1913  }
  1914  
  1915  // LoadFloat32sPart loads a slice into a vector and returns the vector and the number
  1916  // of elements loaded from s. If len(s) is less than the number of elements in
  1917  // the vector, the remaining vector elements will be zero-filled.
  1918  func LoadFloat32sPart(s []float32) (z Float32s, n int) {
  1919  	r1, r2 := spec.LoadZPart[float32, spec.WidthScalable](s)
  1920  	return Float32s{r1}, r2
  1921  }
  1922  
  1923  // LoadFloat64x2Part loads a slice into a vector and returns the vector and the number
  1924  // of elements loaded from s. If len(s) is less than the number of elements in
  1925  // the vector, the remaining vector elements will be zero-filled.
  1926  func LoadFloat64x2Part(s []float64) (z Float64x2, n int) {
  1927  	r1, r2 := spec.LoadZPart[float64, spec.Width128](s)
  1928  	return Float64x2{r1}, r2
  1929  }
  1930  
  1931  // LoadFloat64x4Part loads a slice into a vector and returns the vector and the number
  1932  // of elements loaded from s. If len(s) is less than the number of elements in
  1933  // the vector, the remaining vector elements will be zero-filled.
  1934  func LoadFloat64x4Part(s []float64) (z Float64x4, n int) {
  1935  	r1, r2 := spec.LoadZPart[float64, spec.Width256](s)
  1936  	return Float64x4{r1}, r2
  1937  }
  1938  
  1939  // LoadFloat64x8Part loads a slice into a vector and returns the vector and the number
  1940  // of elements loaded from s. If len(s) is less than the number of elements in
  1941  // the vector, the remaining vector elements will be zero-filled.
  1942  func LoadFloat64x8Part(s []float64) (z Float64x8, n int) {
  1943  	r1, r2 := spec.LoadZPart[float64, spec.Width512](s)
  1944  	return Float64x8{r1}, r2
  1945  }
  1946  
  1947  // LoadFloat64sPart loads a slice into a vector and returns the vector and the number
  1948  // of elements loaded from s. If len(s) is less than the number of elements in
  1949  // the vector, the remaining vector elements will be zero-filled.
  1950  func LoadFloat64sPart(s []float64) (z Float64s, n int) {
  1951  	r1, r2 := spec.LoadZPart[float64, spec.WidthScalable](s)
  1952  	return Float64s{r1}, r2
  1953  }
  1954  
  1955  // LoadInt8x16Part loads a slice into a vector and returns the vector and the number
  1956  // of elements loaded from s. If len(s) is less than the number of elements in
  1957  // the vector, the remaining vector elements will be zero-filled.
  1958  func LoadInt8x16Part(s []int8) (z Int8x16, n int) {
  1959  	r1, r2 := spec.LoadZPart[int8, spec.Width128](s)
  1960  	return Int8x16{r1}, r2
  1961  }
  1962  
  1963  // LoadInt8x32Part loads a slice into a vector and returns the vector and the number
  1964  // of elements loaded from s. If len(s) is less than the number of elements in
  1965  // the vector, the remaining vector elements will be zero-filled.
  1966  func LoadInt8x32Part(s []int8) (z Int8x32, n int) {
  1967  	r1, r2 := spec.LoadZPart[int8, spec.Width256](s)
  1968  	return Int8x32{r1}, r2
  1969  }
  1970  
  1971  // LoadInt8x64Part loads a slice into a vector and returns the vector and the number
  1972  // of elements loaded from s. If len(s) is less than the number of elements in
  1973  // the vector, the remaining vector elements will be zero-filled.
  1974  func LoadInt8x64Part(s []int8) (z Int8x64, n int) {
  1975  	r1, r2 := spec.LoadZPart[int8, spec.Width512](s)
  1976  	return Int8x64{r1}, r2
  1977  }
  1978  
  1979  // LoadInt8sPart loads a slice into a vector and returns the vector and the number
  1980  // of elements loaded from s. If len(s) is less than the number of elements in
  1981  // the vector, the remaining vector elements will be zero-filled.
  1982  func LoadInt8sPart(s []int8) (z Int8s, n int) {
  1983  	r1, r2 := spec.LoadZPart[int8, spec.WidthScalable](s)
  1984  	return Int8s{r1}, r2
  1985  }
  1986  
  1987  // LoadInt16x8Part loads a slice into a vector and returns the vector and the number
  1988  // of elements loaded from s. If len(s) is less than the number of elements in
  1989  // the vector, the remaining vector elements will be zero-filled.
  1990  func LoadInt16x8Part(s []int16) (z Int16x8, n int) {
  1991  	r1, r2 := spec.LoadZPart[int16, spec.Width128](s)
  1992  	return Int16x8{r1}, r2
  1993  }
  1994  
  1995  // LoadInt16x16Part loads a slice into a vector and returns the vector and the number
  1996  // of elements loaded from s. If len(s) is less than the number of elements in
  1997  // the vector, the remaining vector elements will be zero-filled.
  1998  func LoadInt16x16Part(s []int16) (z Int16x16, n int) {
  1999  	r1, r2 := spec.LoadZPart[int16, spec.Width256](s)
  2000  	return Int16x16{r1}, r2
  2001  }
  2002  
  2003  // LoadInt16x32Part loads a slice into a vector and returns the vector and the number
  2004  // of elements loaded from s. If len(s) is less than the number of elements in
  2005  // the vector, the remaining vector elements will be zero-filled.
  2006  func LoadInt16x32Part(s []int16) (z Int16x32, n int) {
  2007  	r1, r2 := spec.LoadZPart[int16, spec.Width512](s)
  2008  	return Int16x32{r1}, r2
  2009  }
  2010  
  2011  // LoadInt16sPart loads a slice into a vector and returns the vector and the number
  2012  // of elements loaded from s. If len(s) is less than the number of elements in
  2013  // the vector, the remaining vector elements will be zero-filled.
  2014  func LoadInt16sPart(s []int16) (z Int16s, n int) {
  2015  	r1, r2 := spec.LoadZPart[int16, spec.WidthScalable](s)
  2016  	return Int16s{r1}, r2
  2017  }
  2018  
  2019  // LoadInt32x4Part loads a slice into a vector and returns the vector and the number
  2020  // of elements loaded from s. If len(s) is less than the number of elements in
  2021  // the vector, the remaining vector elements will be zero-filled.
  2022  func LoadInt32x4Part(s []int32) (z Int32x4, n int) {
  2023  	r1, r2 := spec.LoadZPart[int32, spec.Width128](s)
  2024  	return Int32x4{r1}, r2
  2025  }
  2026  
  2027  // LoadInt32x8Part loads a slice into a vector and returns the vector and the number
  2028  // of elements loaded from s. If len(s) is less than the number of elements in
  2029  // the vector, the remaining vector elements will be zero-filled.
  2030  func LoadInt32x8Part(s []int32) (z Int32x8, n int) {
  2031  	r1, r2 := spec.LoadZPart[int32, spec.Width256](s)
  2032  	return Int32x8{r1}, r2
  2033  }
  2034  
  2035  // LoadInt32x16Part loads a slice into a vector and returns the vector and the number
  2036  // of elements loaded from s. If len(s) is less than the number of elements in
  2037  // the vector, the remaining vector elements will be zero-filled.
  2038  func LoadInt32x16Part(s []int32) (z Int32x16, n int) {
  2039  	r1, r2 := spec.LoadZPart[int32, spec.Width512](s)
  2040  	return Int32x16{r1}, r2
  2041  }
  2042  
  2043  // LoadInt32sPart loads a slice into a vector and returns the vector and the number
  2044  // of elements loaded from s. If len(s) is less than the number of elements in
  2045  // the vector, the remaining vector elements will be zero-filled.
  2046  func LoadInt32sPart(s []int32) (z Int32s, n int) {
  2047  	r1, r2 := spec.LoadZPart[int32, spec.WidthScalable](s)
  2048  	return Int32s{r1}, r2
  2049  }
  2050  
  2051  // LoadInt64x2Part loads a slice into a vector and returns the vector and the number
  2052  // of elements loaded from s. If len(s) is less than the number of elements in
  2053  // the vector, the remaining vector elements will be zero-filled.
  2054  func LoadInt64x2Part(s []int64) (z Int64x2, n int) {
  2055  	r1, r2 := spec.LoadZPart[int64, spec.Width128](s)
  2056  	return Int64x2{r1}, r2
  2057  }
  2058  
  2059  // LoadInt64x4Part loads a slice into a vector and returns the vector and the number
  2060  // of elements loaded from s. If len(s) is less than the number of elements in
  2061  // the vector, the remaining vector elements will be zero-filled.
  2062  func LoadInt64x4Part(s []int64) (z Int64x4, n int) {
  2063  	r1, r2 := spec.LoadZPart[int64, spec.Width256](s)
  2064  	return Int64x4{r1}, r2
  2065  }
  2066  
  2067  // LoadInt64x8Part loads a slice into a vector and returns the vector and the number
  2068  // of elements loaded from s. If len(s) is less than the number of elements in
  2069  // the vector, the remaining vector elements will be zero-filled.
  2070  func LoadInt64x8Part(s []int64) (z Int64x8, n int) {
  2071  	r1, r2 := spec.LoadZPart[int64, spec.Width512](s)
  2072  	return Int64x8{r1}, r2
  2073  }
  2074  
  2075  // LoadInt64sPart loads a slice into a vector and returns the vector and the number
  2076  // of elements loaded from s. If len(s) is less than the number of elements in
  2077  // the vector, the remaining vector elements will be zero-filled.
  2078  func LoadInt64sPart(s []int64) (z Int64s, n int) {
  2079  	r1, r2 := spec.LoadZPart[int64, spec.WidthScalable](s)
  2080  	return Int64s{r1}, r2
  2081  }
  2082  
  2083  // LoadUint8x16Part loads a slice into a vector and returns the vector and the number
  2084  // of elements loaded from s. If len(s) is less than the number of elements in
  2085  // the vector, the remaining vector elements will be zero-filled.
  2086  func LoadUint8x16Part(s []uint8) (z Uint8x16, n int) {
  2087  	r1, r2 := spec.LoadZPart[uint8, spec.Width128](s)
  2088  	return Uint8x16{r1}, r2
  2089  }
  2090  
  2091  // LoadUint8x32Part loads a slice into a vector and returns the vector and the number
  2092  // of elements loaded from s. If len(s) is less than the number of elements in
  2093  // the vector, the remaining vector elements will be zero-filled.
  2094  func LoadUint8x32Part(s []uint8) (z Uint8x32, n int) {
  2095  	r1, r2 := spec.LoadZPart[uint8, spec.Width256](s)
  2096  	return Uint8x32{r1}, r2
  2097  }
  2098  
  2099  // LoadUint8x64Part loads a slice into a vector and returns the vector and the number
  2100  // of elements loaded from s. If len(s) is less than the number of elements in
  2101  // the vector, the remaining vector elements will be zero-filled.
  2102  func LoadUint8x64Part(s []uint8) (z Uint8x64, n int) {
  2103  	r1, r2 := spec.LoadZPart[uint8, spec.Width512](s)
  2104  	return Uint8x64{r1}, r2
  2105  }
  2106  
  2107  // LoadUint8sPart loads a slice into a vector and returns the vector and the number
  2108  // of elements loaded from s. If len(s) is less than the number of elements in
  2109  // the vector, the remaining vector elements will be zero-filled.
  2110  func LoadUint8sPart(s []uint8) (z Uint8s, n int) {
  2111  	r1, r2 := spec.LoadZPart[uint8, spec.WidthScalable](s)
  2112  	return Uint8s{r1}, r2
  2113  }
  2114  
  2115  // LoadUint16x8Part loads a slice into a vector and returns the vector and the number
  2116  // of elements loaded from s. If len(s) is less than the number of elements in
  2117  // the vector, the remaining vector elements will be zero-filled.
  2118  func LoadUint16x8Part(s []uint16) (z Uint16x8, n int) {
  2119  	r1, r2 := spec.LoadZPart[uint16, spec.Width128](s)
  2120  	return Uint16x8{r1}, r2
  2121  }
  2122  
  2123  // LoadUint16x16Part loads a slice into a vector and returns the vector and the number
  2124  // of elements loaded from s. If len(s) is less than the number of elements in
  2125  // the vector, the remaining vector elements will be zero-filled.
  2126  func LoadUint16x16Part(s []uint16) (z Uint16x16, n int) {
  2127  	r1, r2 := spec.LoadZPart[uint16, spec.Width256](s)
  2128  	return Uint16x16{r1}, r2
  2129  }
  2130  
  2131  // LoadUint16x32Part loads a slice into a vector and returns the vector and the number
  2132  // of elements loaded from s. If len(s) is less than the number of elements in
  2133  // the vector, the remaining vector elements will be zero-filled.
  2134  func LoadUint16x32Part(s []uint16) (z Uint16x32, n int) {
  2135  	r1, r2 := spec.LoadZPart[uint16, spec.Width512](s)
  2136  	return Uint16x32{r1}, r2
  2137  }
  2138  
  2139  // LoadUint16sPart loads a slice into a vector and returns the vector and the number
  2140  // of elements loaded from s. If len(s) is less than the number of elements in
  2141  // the vector, the remaining vector elements will be zero-filled.
  2142  func LoadUint16sPart(s []uint16) (z Uint16s, n int) {
  2143  	r1, r2 := spec.LoadZPart[uint16, spec.WidthScalable](s)
  2144  	return Uint16s{r1}, r2
  2145  }
  2146  
  2147  // LoadUint32x4Part loads a slice into a vector and returns the vector and the number
  2148  // of elements loaded from s. If len(s) is less than the number of elements in
  2149  // the vector, the remaining vector elements will be zero-filled.
  2150  func LoadUint32x4Part(s []uint32) (z Uint32x4, n int) {
  2151  	r1, r2 := spec.LoadZPart[uint32, spec.Width128](s)
  2152  	return Uint32x4{r1}, r2
  2153  }
  2154  
  2155  // LoadUint32x8Part loads a slice into a vector and returns the vector and the number
  2156  // of elements loaded from s. If len(s) is less than the number of elements in
  2157  // the vector, the remaining vector elements will be zero-filled.
  2158  func LoadUint32x8Part(s []uint32) (z Uint32x8, n int) {
  2159  	r1, r2 := spec.LoadZPart[uint32, spec.Width256](s)
  2160  	return Uint32x8{r1}, r2
  2161  }
  2162  
  2163  // LoadUint32x16Part loads a slice into a vector and returns the vector and the number
  2164  // of elements loaded from s. If len(s) is less than the number of elements in
  2165  // the vector, the remaining vector elements will be zero-filled.
  2166  func LoadUint32x16Part(s []uint32) (z Uint32x16, n int) {
  2167  	r1, r2 := spec.LoadZPart[uint32, spec.Width512](s)
  2168  	return Uint32x16{r1}, r2
  2169  }
  2170  
  2171  // LoadUint32sPart loads a slice into a vector and returns the vector and the number
  2172  // of elements loaded from s. If len(s) is less than the number of elements in
  2173  // the vector, the remaining vector elements will be zero-filled.
  2174  func LoadUint32sPart(s []uint32) (z Uint32s, n int) {
  2175  	r1, r2 := spec.LoadZPart[uint32, spec.WidthScalable](s)
  2176  	return Uint32s{r1}, r2
  2177  }
  2178  
  2179  // LoadUint64x2Part loads a slice into a vector and returns the vector and the number
  2180  // of elements loaded from s. If len(s) is less than the number of elements in
  2181  // the vector, the remaining vector elements will be zero-filled.
  2182  func LoadUint64x2Part(s []uint64) (z Uint64x2, n int) {
  2183  	r1, r2 := spec.LoadZPart[uint64, spec.Width128](s)
  2184  	return Uint64x2{r1}, r2
  2185  }
  2186  
  2187  // LoadUint64x4Part loads a slice into a vector and returns the vector and the number
  2188  // of elements loaded from s. If len(s) is less than the number of elements in
  2189  // the vector, the remaining vector elements will be zero-filled.
  2190  func LoadUint64x4Part(s []uint64) (z Uint64x4, n int) {
  2191  	r1, r2 := spec.LoadZPart[uint64, spec.Width256](s)
  2192  	return Uint64x4{r1}, r2
  2193  }
  2194  
  2195  // LoadUint64x8Part loads a slice into a vector and returns the vector and the number
  2196  // of elements loaded from s. If len(s) is less than the number of elements in
  2197  // the vector, the remaining vector elements will be zero-filled.
  2198  func LoadUint64x8Part(s []uint64) (z Uint64x8, n int) {
  2199  	r1, r2 := spec.LoadZPart[uint64, spec.Width512](s)
  2200  	return Uint64x8{r1}, r2
  2201  }
  2202  
  2203  // LoadUint64sPart loads a slice into a vector and returns the vector and the number
  2204  // of elements loaded from s. If len(s) is less than the number of elements in
  2205  // the vector, the remaining vector elements will be zero-filled.
  2206  func LoadUint64sPart(s []uint64) (z Uint64s, n int) {
  2207  	r1, r2 := spec.LoadZPart[uint64, spec.WidthScalable](s)
  2208  	return Uint64s{r1}, r2
  2209  }
  2210  
  2211  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2212  // it panics.
  2213  func (x Float32x4) Store(s []float32) {
  2214  	spec.Store[float32, spec.Width128](x.v, s)
  2215  }
  2216  
  2217  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2218  // it panics.
  2219  func (x Float32x8) Store(s []float32) {
  2220  	spec.Store[float32, spec.Width256](x.v, s)
  2221  }
  2222  
  2223  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2224  // it panics.
  2225  func (x Float32x16) Store(s []float32) {
  2226  	spec.Store[float32, spec.Width512](x.v, s)
  2227  }
  2228  
  2229  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2230  // it panics.
  2231  func (x Float32s) Store(s []float32) {
  2232  	spec.Store[float32, spec.WidthScalable](x.v, s)
  2233  }
  2234  
  2235  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2236  // it panics.
  2237  func (x Float64x2) Store(s []float64) {
  2238  	spec.Store[float64, spec.Width128](x.v, s)
  2239  }
  2240  
  2241  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2242  // it panics.
  2243  func (x Float64x4) Store(s []float64) {
  2244  	spec.Store[float64, spec.Width256](x.v, s)
  2245  }
  2246  
  2247  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2248  // it panics.
  2249  func (x Float64x8) Store(s []float64) {
  2250  	spec.Store[float64, spec.Width512](x.v, s)
  2251  }
  2252  
  2253  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2254  // it panics.
  2255  func (x Float64s) Store(s []float64) {
  2256  	spec.Store[float64, spec.WidthScalable](x.v, s)
  2257  }
  2258  
  2259  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2260  // it panics.
  2261  func (x Int8x16) Store(s []int8) {
  2262  	spec.Store[int8, spec.Width128](x.v, s)
  2263  }
  2264  
  2265  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2266  // it panics.
  2267  func (x Int8x32) Store(s []int8) {
  2268  	spec.Store[int8, spec.Width256](x.v, s)
  2269  }
  2270  
  2271  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2272  // it panics.
  2273  func (x Int8x64) Store(s []int8) {
  2274  	spec.Store[int8, spec.Width512](x.v, s)
  2275  }
  2276  
  2277  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2278  // it panics.
  2279  func (x Int8s) Store(s []int8) {
  2280  	spec.Store[int8, spec.WidthScalable](x.v, s)
  2281  }
  2282  
  2283  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2284  // it panics.
  2285  func (x Int16x8) Store(s []int16) {
  2286  	spec.Store[int16, spec.Width128](x.v, s)
  2287  }
  2288  
  2289  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2290  // it panics.
  2291  func (x Int16x16) Store(s []int16) {
  2292  	spec.Store[int16, spec.Width256](x.v, s)
  2293  }
  2294  
  2295  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2296  // it panics.
  2297  func (x Int16x32) Store(s []int16) {
  2298  	spec.Store[int16, spec.Width512](x.v, s)
  2299  }
  2300  
  2301  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2302  // it panics.
  2303  func (x Int16s) Store(s []int16) {
  2304  	spec.Store[int16, spec.WidthScalable](x.v, s)
  2305  }
  2306  
  2307  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2308  // it panics.
  2309  func (x Int32x4) Store(s []int32) {
  2310  	spec.Store[int32, spec.Width128](x.v, s)
  2311  }
  2312  
  2313  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2314  // it panics.
  2315  func (x Int32x8) Store(s []int32) {
  2316  	spec.Store[int32, spec.Width256](x.v, s)
  2317  }
  2318  
  2319  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2320  // it panics.
  2321  func (x Int32x16) Store(s []int32) {
  2322  	spec.Store[int32, spec.Width512](x.v, s)
  2323  }
  2324  
  2325  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2326  // it panics.
  2327  func (x Int32s) Store(s []int32) {
  2328  	spec.Store[int32, spec.WidthScalable](x.v, s)
  2329  }
  2330  
  2331  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2332  // it panics.
  2333  func (x Int64x2) Store(s []int64) {
  2334  	spec.Store[int64, spec.Width128](x.v, s)
  2335  }
  2336  
  2337  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2338  // it panics.
  2339  func (x Int64x4) Store(s []int64) {
  2340  	spec.Store[int64, spec.Width256](x.v, s)
  2341  }
  2342  
  2343  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2344  // it panics.
  2345  func (x Int64x8) Store(s []int64) {
  2346  	spec.Store[int64, spec.Width512](x.v, s)
  2347  }
  2348  
  2349  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2350  // it panics.
  2351  func (x Int64s) Store(s []int64) {
  2352  	spec.Store[int64, spec.WidthScalable](x.v, s)
  2353  }
  2354  
  2355  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2356  // it panics.
  2357  func (x Uint8x16) Store(s []uint8) {
  2358  	spec.Store[uint8, spec.Width128](x.v, s)
  2359  }
  2360  
  2361  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2362  // it panics.
  2363  func (x Uint8x32) Store(s []uint8) {
  2364  	spec.Store[uint8, spec.Width256](x.v, s)
  2365  }
  2366  
  2367  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2368  // it panics.
  2369  func (x Uint8x64) Store(s []uint8) {
  2370  	spec.Store[uint8, spec.Width512](x.v, s)
  2371  }
  2372  
  2373  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2374  // it panics.
  2375  func (x Uint8s) Store(s []uint8) {
  2376  	spec.Store[uint8, spec.WidthScalable](x.v, s)
  2377  }
  2378  
  2379  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2380  // it panics.
  2381  func (x Uint16x8) Store(s []uint16) {
  2382  	spec.Store[uint16, spec.Width128](x.v, s)
  2383  }
  2384  
  2385  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2386  // it panics.
  2387  func (x Uint16x16) Store(s []uint16) {
  2388  	spec.Store[uint16, spec.Width256](x.v, s)
  2389  }
  2390  
  2391  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2392  // it panics.
  2393  func (x Uint16x32) Store(s []uint16) {
  2394  	spec.Store[uint16, spec.Width512](x.v, s)
  2395  }
  2396  
  2397  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2398  // it panics.
  2399  func (x Uint16s) Store(s []uint16) {
  2400  	spec.Store[uint16, spec.WidthScalable](x.v, s)
  2401  }
  2402  
  2403  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2404  // it panics.
  2405  func (x Uint32x4) Store(s []uint32) {
  2406  	spec.Store[uint32, spec.Width128](x.v, s)
  2407  }
  2408  
  2409  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2410  // it panics.
  2411  func (x Uint32x8) Store(s []uint32) {
  2412  	spec.Store[uint32, spec.Width256](x.v, s)
  2413  }
  2414  
  2415  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2416  // it panics.
  2417  func (x Uint32x16) Store(s []uint32) {
  2418  	spec.Store[uint32, spec.Width512](x.v, s)
  2419  }
  2420  
  2421  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2422  // it panics.
  2423  func (x Uint32s) Store(s []uint32) {
  2424  	spec.Store[uint32, spec.WidthScalable](x.v, s)
  2425  }
  2426  
  2427  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2428  // it panics.
  2429  func (x Uint64x2) Store(s []uint64) {
  2430  	spec.Store[uint64, spec.Width128](x.v, s)
  2431  }
  2432  
  2433  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2434  // it panics.
  2435  func (x Uint64x4) Store(s []uint64) {
  2436  	spec.Store[uint64, spec.Width256](x.v, s)
  2437  }
  2438  
  2439  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2440  // it panics.
  2441  func (x Uint64x8) Store(s []uint64) {
  2442  	spec.Store[uint64, spec.Width512](x.v, s)
  2443  }
  2444  
  2445  // Store stores the elements of x into a slice. If len(s) is less than x.Len(),
  2446  // it panics.
  2447  func (x Uint64s) Store(s []uint64) {
  2448  	spec.Store[uint64, spec.WidthScalable](x.v, s)
  2449  }
  2450  
  2451  // StoreArray stores the elements of x to an array.
  2452  func (x Float32x4) StoreArray(y *[4]float32) {
  2453  	var tmp0 spec.Array[float32, spec.Width128] = y[:]
  2454  	spec.StoreArray[float32, spec.Width128](x.v, &tmp0)
  2455  }
  2456  
  2457  // StoreArray stores the elements of x to an array.
  2458  func (x Float32x8) StoreArray(y *[8]float32) {
  2459  	var tmp0 spec.Array[float32, spec.Width256] = y[:]
  2460  	spec.StoreArray[float32, spec.Width256](x.v, &tmp0)
  2461  }
  2462  
  2463  // StoreArray stores the elements of x to an array.
  2464  func (x Float32x16) StoreArray(y *[16]float32) {
  2465  	var tmp0 spec.Array[float32, spec.Width512] = y[:]
  2466  	spec.StoreArray[float32, spec.Width512](x.v, &tmp0)
  2467  }
  2468  
  2469  // StoreArray stores the elements of x to an array.
  2470  func (x Float64x2) StoreArray(y *[2]float64) {
  2471  	var tmp0 spec.Array[float64, spec.Width128] = y[:]
  2472  	spec.StoreArray[float64, spec.Width128](x.v, &tmp0)
  2473  }
  2474  
  2475  // StoreArray stores the elements of x to an array.
  2476  func (x Float64x4) StoreArray(y *[4]float64) {
  2477  	var tmp0 spec.Array[float64, spec.Width256] = y[:]
  2478  	spec.StoreArray[float64, spec.Width256](x.v, &tmp0)
  2479  }
  2480  
  2481  // StoreArray stores the elements of x to an array.
  2482  func (x Float64x8) StoreArray(y *[8]float64) {
  2483  	var tmp0 spec.Array[float64, spec.Width512] = y[:]
  2484  	spec.StoreArray[float64, spec.Width512](x.v, &tmp0)
  2485  }
  2486  
  2487  // StoreArray stores the elements of x to an array.
  2488  func (x Int8x16) StoreArray(y *[16]int8) {
  2489  	var tmp0 spec.Array[int8, spec.Width128] = y[:]
  2490  	spec.StoreArray[int8, spec.Width128](x.v, &tmp0)
  2491  }
  2492  
  2493  // StoreArray stores the elements of x to an array.
  2494  func (x Int8x32) StoreArray(y *[32]int8) {
  2495  	var tmp0 spec.Array[int8, spec.Width256] = y[:]
  2496  	spec.StoreArray[int8, spec.Width256](x.v, &tmp0)
  2497  }
  2498  
  2499  // StoreArray stores the elements of x to an array.
  2500  func (x Int8x64) StoreArray(y *[64]int8) {
  2501  	var tmp0 spec.Array[int8, spec.Width512] = y[:]
  2502  	spec.StoreArray[int8, spec.Width512](x.v, &tmp0)
  2503  }
  2504  
  2505  // StoreArray stores the elements of x to an array.
  2506  func (x Int16x8) StoreArray(y *[8]int16) {
  2507  	var tmp0 spec.Array[int16, spec.Width128] = y[:]
  2508  	spec.StoreArray[int16, spec.Width128](x.v, &tmp0)
  2509  }
  2510  
  2511  // StoreArray stores the elements of x to an array.
  2512  func (x Int16x16) StoreArray(y *[16]int16) {
  2513  	var tmp0 spec.Array[int16, spec.Width256] = y[:]
  2514  	spec.StoreArray[int16, spec.Width256](x.v, &tmp0)
  2515  }
  2516  
  2517  // StoreArray stores the elements of x to an array.
  2518  func (x Int16x32) StoreArray(y *[32]int16) {
  2519  	var tmp0 spec.Array[int16, spec.Width512] = y[:]
  2520  	spec.StoreArray[int16, spec.Width512](x.v, &tmp0)
  2521  }
  2522  
  2523  // StoreArray stores the elements of x to an array.
  2524  func (x Int32x4) StoreArray(y *[4]int32) {
  2525  	var tmp0 spec.Array[int32, spec.Width128] = y[:]
  2526  	spec.StoreArray[int32, spec.Width128](x.v, &tmp0)
  2527  }
  2528  
  2529  // StoreArray stores the elements of x to an array.
  2530  func (x Int32x8) StoreArray(y *[8]int32) {
  2531  	var tmp0 spec.Array[int32, spec.Width256] = y[:]
  2532  	spec.StoreArray[int32, spec.Width256](x.v, &tmp0)
  2533  }
  2534  
  2535  // StoreArray stores the elements of x to an array.
  2536  func (x Int32x16) StoreArray(y *[16]int32) {
  2537  	var tmp0 spec.Array[int32, spec.Width512] = y[:]
  2538  	spec.StoreArray[int32, spec.Width512](x.v, &tmp0)
  2539  }
  2540  
  2541  // StoreArray stores the elements of x to an array.
  2542  func (x Int64x2) StoreArray(y *[2]int64) {
  2543  	var tmp0 spec.Array[int64, spec.Width128] = y[:]
  2544  	spec.StoreArray[int64, spec.Width128](x.v, &tmp0)
  2545  }
  2546  
  2547  // StoreArray stores the elements of x to an array.
  2548  func (x Int64x4) StoreArray(y *[4]int64) {
  2549  	var tmp0 spec.Array[int64, spec.Width256] = y[:]
  2550  	spec.StoreArray[int64, spec.Width256](x.v, &tmp0)
  2551  }
  2552  
  2553  // StoreArray stores the elements of x to an array.
  2554  func (x Int64x8) StoreArray(y *[8]int64) {
  2555  	var tmp0 spec.Array[int64, spec.Width512] = y[:]
  2556  	spec.StoreArray[int64, spec.Width512](x.v, &tmp0)
  2557  }
  2558  
  2559  // StoreArray stores the elements of x to an array.
  2560  func (x Uint8x16) StoreArray(y *[16]uint8) {
  2561  	var tmp0 spec.Array[uint8, spec.Width128] = y[:]
  2562  	spec.StoreArray[uint8, spec.Width128](x.v, &tmp0)
  2563  }
  2564  
  2565  // StoreArray stores the elements of x to an array.
  2566  func (x Uint8x32) StoreArray(y *[32]uint8) {
  2567  	var tmp0 spec.Array[uint8, spec.Width256] = y[:]
  2568  	spec.StoreArray[uint8, spec.Width256](x.v, &tmp0)
  2569  }
  2570  
  2571  // StoreArray stores the elements of x to an array.
  2572  func (x Uint8x64) StoreArray(y *[64]uint8) {
  2573  	var tmp0 spec.Array[uint8, spec.Width512] = y[:]
  2574  	spec.StoreArray[uint8, spec.Width512](x.v, &tmp0)
  2575  }
  2576  
  2577  // StoreArray stores the elements of x to an array.
  2578  func (x Uint16x8) StoreArray(y *[8]uint16) {
  2579  	var tmp0 spec.Array[uint16, spec.Width128] = y[:]
  2580  	spec.StoreArray[uint16, spec.Width128](x.v, &tmp0)
  2581  }
  2582  
  2583  // StoreArray stores the elements of x to an array.
  2584  func (x Uint16x16) StoreArray(y *[16]uint16) {
  2585  	var tmp0 spec.Array[uint16, spec.Width256] = y[:]
  2586  	spec.StoreArray[uint16, spec.Width256](x.v, &tmp0)
  2587  }
  2588  
  2589  // StoreArray stores the elements of x to an array.
  2590  func (x Uint16x32) StoreArray(y *[32]uint16) {
  2591  	var tmp0 spec.Array[uint16, spec.Width512] = y[:]
  2592  	spec.StoreArray[uint16, spec.Width512](x.v, &tmp0)
  2593  }
  2594  
  2595  // StoreArray stores the elements of x to an array.
  2596  func (x Uint32x4) StoreArray(y *[4]uint32) {
  2597  	var tmp0 spec.Array[uint32, spec.Width128] = y[:]
  2598  	spec.StoreArray[uint32, spec.Width128](x.v, &tmp0)
  2599  }
  2600  
  2601  // StoreArray stores the elements of x to an array.
  2602  func (x Uint32x8) StoreArray(y *[8]uint32) {
  2603  	var tmp0 spec.Array[uint32, spec.Width256] = y[:]
  2604  	spec.StoreArray[uint32, spec.Width256](x.v, &tmp0)
  2605  }
  2606  
  2607  // StoreArray stores the elements of x to an array.
  2608  func (x Uint32x16) StoreArray(y *[16]uint32) {
  2609  	var tmp0 spec.Array[uint32, spec.Width512] = y[:]
  2610  	spec.StoreArray[uint32, spec.Width512](x.v, &tmp0)
  2611  }
  2612  
  2613  // StoreArray stores the elements of x to an array.
  2614  func (x Uint64x2) StoreArray(y *[2]uint64) {
  2615  	var tmp0 spec.Array[uint64, spec.Width128] = y[:]
  2616  	spec.StoreArray[uint64, spec.Width128](x.v, &tmp0)
  2617  }
  2618  
  2619  // StoreArray stores the elements of x to an array.
  2620  func (x Uint64x4) StoreArray(y *[4]uint64) {
  2621  	var tmp0 spec.Array[uint64, spec.Width256] = y[:]
  2622  	spec.StoreArray[uint64, spec.Width256](x.v, &tmp0)
  2623  }
  2624  
  2625  // StoreArray stores the elements of x to an array.
  2626  func (x Uint64x8) StoreArray(y *[8]uint64) {
  2627  	var tmp0 spec.Array[uint64, spec.Width512] = y[:]
  2628  	spec.StoreArray[uint64, spec.Width512](x.v, &tmp0)
  2629  }
  2630  
  2631  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2632  // modify elements of y that are false in the mask.
  2633  func (x Float32x4) StoreArrayMasked(y *[4]float32, mask Mask32x4) {
  2634  	var tmp0 spec.Array[float32, spec.Width128] = y[:]
  2635  	spec.StoreArrayMasked[float32, spec.Width128, spec.Mask32](x.v, &tmp0, mask.v)
  2636  }
  2637  
  2638  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2639  // modify elements of y that are false in the mask.
  2640  func (x Float32x8) StoreArrayMasked(y *[8]float32, mask Mask32x8) {
  2641  	var tmp0 spec.Array[float32, spec.Width256] = y[:]
  2642  	spec.StoreArrayMasked[float32, spec.Width256, spec.Mask32](x.v, &tmp0, mask.v)
  2643  }
  2644  
  2645  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2646  // modify elements of y that are false in the mask.
  2647  func (x Float32x16) StoreArrayMasked(y *[16]float32, mask Mask32x16) {
  2648  	var tmp0 spec.Array[float32, spec.Width512] = y[:]
  2649  	spec.StoreArrayMasked[float32, spec.Width512, spec.Mask32](x.v, &tmp0, mask.v)
  2650  }
  2651  
  2652  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2653  // modify elements of y that are false in the mask.
  2654  func (x Float64x2) StoreArrayMasked(y *[2]float64, mask Mask64x2) {
  2655  	var tmp0 spec.Array[float64, spec.Width128] = y[:]
  2656  	spec.StoreArrayMasked[float64, spec.Width128, spec.Mask64](x.v, &tmp0, mask.v)
  2657  }
  2658  
  2659  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2660  // modify elements of y that are false in the mask.
  2661  func (x Float64x4) StoreArrayMasked(y *[4]float64, mask Mask64x4) {
  2662  	var tmp0 spec.Array[float64, spec.Width256] = y[:]
  2663  	spec.StoreArrayMasked[float64, spec.Width256, spec.Mask64](x.v, &tmp0, mask.v)
  2664  }
  2665  
  2666  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2667  // modify elements of y that are false in the mask.
  2668  func (x Float64x8) StoreArrayMasked(y *[8]float64, mask Mask64x8) {
  2669  	var tmp0 spec.Array[float64, spec.Width512] = y[:]
  2670  	spec.StoreArrayMasked[float64, spec.Width512, spec.Mask64](x.v, &tmp0, mask.v)
  2671  }
  2672  
  2673  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2674  // modify elements of y that are false in the mask.
  2675  func (x Int8x16) StoreArrayMasked(y *[16]int8, mask Mask8x16) {
  2676  	var tmp0 spec.Array[int8, spec.Width128] = y[:]
  2677  	spec.StoreArrayMasked[int8, spec.Width128, spec.Mask8](x.v, &tmp0, mask.v)
  2678  }
  2679  
  2680  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2681  // modify elements of y that are false in the mask.
  2682  func (x Int8x32) StoreArrayMasked(y *[32]int8, mask Mask8x32) {
  2683  	var tmp0 spec.Array[int8, spec.Width256] = y[:]
  2684  	spec.StoreArrayMasked[int8, spec.Width256, spec.Mask8](x.v, &tmp0, mask.v)
  2685  }
  2686  
  2687  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2688  // modify elements of y that are false in the mask.
  2689  func (x Int8x64) StoreArrayMasked(y *[64]int8, mask Mask8x64) {
  2690  	var tmp0 spec.Array[int8, spec.Width512] = y[:]
  2691  	spec.StoreArrayMasked[int8, spec.Width512, spec.Mask8](x.v, &tmp0, mask.v)
  2692  }
  2693  
  2694  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2695  // modify elements of y that are false in the mask.
  2696  func (x Int16x8) StoreArrayMasked(y *[8]int16, mask Mask16x8) {
  2697  	var tmp0 spec.Array[int16, spec.Width128] = y[:]
  2698  	spec.StoreArrayMasked[int16, spec.Width128, spec.Mask16](x.v, &tmp0, mask.v)
  2699  }
  2700  
  2701  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2702  // modify elements of y that are false in the mask.
  2703  func (x Int16x16) StoreArrayMasked(y *[16]int16, mask Mask16x16) {
  2704  	var tmp0 spec.Array[int16, spec.Width256] = y[:]
  2705  	spec.StoreArrayMasked[int16, spec.Width256, spec.Mask16](x.v, &tmp0, mask.v)
  2706  }
  2707  
  2708  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2709  // modify elements of y that are false in the mask.
  2710  func (x Int16x32) StoreArrayMasked(y *[32]int16, mask Mask16x32) {
  2711  	var tmp0 spec.Array[int16, spec.Width512] = y[:]
  2712  	spec.StoreArrayMasked[int16, spec.Width512, spec.Mask16](x.v, &tmp0, mask.v)
  2713  }
  2714  
  2715  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2716  // modify elements of y that are false in the mask.
  2717  func (x Int32x4) StoreArrayMasked(y *[4]int32, mask Mask32x4) {
  2718  	var tmp0 spec.Array[int32, spec.Width128] = y[:]
  2719  	spec.StoreArrayMasked[int32, spec.Width128, spec.Mask32](x.v, &tmp0, mask.v)
  2720  }
  2721  
  2722  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2723  // modify elements of y that are false in the mask.
  2724  func (x Int32x8) StoreArrayMasked(y *[8]int32, mask Mask32x8) {
  2725  	var tmp0 spec.Array[int32, spec.Width256] = y[:]
  2726  	spec.StoreArrayMasked[int32, spec.Width256, spec.Mask32](x.v, &tmp0, mask.v)
  2727  }
  2728  
  2729  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2730  // modify elements of y that are false in the mask.
  2731  func (x Int32x16) StoreArrayMasked(y *[16]int32, mask Mask32x16) {
  2732  	var tmp0 spec.Array[int32, spec.Width512] = y[:]
  2733  	spec.StoreArrayMasked[int32, spec.Width512, spec.Mask32](x.v, &tmp0, mask.v)
  2734  }
  2735  
  2736  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2737  // modify elements of y that are false in the mask.
  2738  func (x Int64x2) StoreArrayMasked(y *[2]int64, mask Mask64x2) {
  2739  	var tmp0 spec.Array[int64, spec.Width128] = y[:]
  2740  	spec.StoreArrayMasked[int64, spec.Width128, spec.Mask64](x.v, &tmp0, mask.v)
  2741  }
  2742  
  2743  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2744  // modify elements of y that are false in the mask.
  2745  func (x Int64x4) StoreArrayMasked(y *[4]int64, mask Mask64x4) {
  2746  	var tmp0 spec.Array[int64, spec.Width256] = y[:]
  2747  	spec.StoreArrayMasked[int64, spec.Width256, spec.Mask64](x.v, &tmp0, mask.v)
  2748  }
  2749  
  2750  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2751  // modify elements of y that are false in the mask.
  2752  func (x Int64x8) StoreArrayMasked(y *[8]int64, mask Mask64x8) {
  2753  	var tmp0 spec.Array[int64, spec.Width512] = y[:]
  2754  	spec.StoreArrayMasked[int64, spec.Width512, spec.Mask64](x.v, &tmp0, mask.v)
  2755  }
  2756  
  2757  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2758  // modify elements of y that are false in the mask.
  2759  func (x Uint8x16) StoreArrayMasked(y *[16]uint8, mask Mask8x16) {
  2760  	var tmp0 spec.Array[uint8, spec.Width128] = y[:]
  2761  	spec.StoreArrayMasked[uint8, spec.Width128, spec.Mask8](x.v, &tmp0, mask.v)
  2762  }
  2763  
  2764  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2765  // modify elements of y that are false in the mask.
  2766  func (x Uint8x32) StoreArrayMasked(y *[32]uint8, mask Mask8x32) {
  2767  	var tmp0 spec.Array[uint8, spec.Width256] = y[:]
  2768  	spec.StoreArrayMasked[uint8, spec.Width256, spec.Mask8](x.v, &tmp0, mask.v)
  2769  }
  2770  
  2771  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2772  // modify elements of y that are false in the mask.
  2773  func (x Uint8x64) StoreArrayMasked(y *[64]uint8, mask Mask8x64) {
  2774  	var tmp0 spec.Array[uint8, spec.Width512] = y[:]
  2775  	spec.StoreArrayMasked[uint8, spec.Width512, spec.Mask8](x.v, &tmp0, mask.v)
  2776  }
  2777  
  2778  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2779  // modify elements of y that are false in the mask.
  2780  func (x Uint16x8) StoreArrayMasked(y *[8]uint16, mask Mask16x8) {
  2781  	var tmp0 spec.Array[uint16, spec.Width128] = y[:]
  2782  	spec.StoreArrayMasked[uint16, spec.Width128, spec.Mask16](x.v, &tmp0, mask.v)
  2783  }
  2784  
  2785  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2786  // modify elements of y that are false in the mask.
  2787  func (x Uint16x16) StoreArrayMasked(y *[16]uint16, mask Mask16x16) {
  2788  	var tmp0 spec.Array[uint16, spec.Width256] = y[:]
  2789  	spec.StoreArrayMasked[uint16, spec.Width256, spec.Mask16](x.v, &tmp0, mask.v)
  2790  }
  2791  
  2792  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2793  // modify elements of y that are false in the mask.
  2794  func (x Uint16x32) StoreArrayMasked(y *[32]uint16, mask Mask16x32) {
  2795  	var tmp0 spec.Array[uint16, spec.Width512] = y[:]
  2796  	spec.StoreArrayMasked[uint16, spec.Width512, spec.Mask16](x.v, &tmp0, mask.v)
  2797  }
  2798  
  2799  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2800  // modify elements of y that are false in the mask.
  2801  func (x Uint32x4) StoreArrayMasked(y *[4]uint32, mask Mask32x4) {
  2802  	var tmp0 spec.Array[uint32, spec.Width128] = y[:]
  2803  	spec.StoreArrayMasked[uint32, spec.Width128, spec.Mask32](x.v, &tmp0, mask.v)
  2804  }
  2805  
  2806  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2807  // modify elements of y that are false in the mask.
  2808  func (x Uint32x8) StoreArrayMasked(y *[8]uint32, mask Mask32x8) {
  2809  	var tmp0 spec.Array[uint32, spec.Width256] = y[:]
  2810  	spec.StoreArrayMasked[uint32, spec.Width256, spec.Mask32](x.v, &tmp0, mask.v)
  2811  }
  2812  
  2813  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2814  // modify elements of y that are false in the mask.
  2815  func (x Uint32x16) StoreArrayMasked(y *[16]uint32, mask Mask32x16) {
  2816  	var tmp0 spec.Array[uint32, spec.Width512] = y[:]
  2817  	spec.StoreArrayMasked[uint32, spec.Width512, spec.Mask32](x.v, &tmp0, mask.v)
  2818  }
  2819  
  2820  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2821  // modify elements of y that are false in the mask.
  2822  func (x Uint64x2) StoreArrayMasked(y *[2]uint64, mask Mask64x2) {
  2823  	var tmp0 spec.Array[uint64, spec.Width128] = y[:]
  2824  	spec.StoreArrayMasked[uint64, spec.Width128, spec.Mask64](x.v, &tmp0, mask.v)
  2825  }
  2826  
  2827  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2828  // modify elements of y that are false in the mask.
  2829  func (x Uint64x4) StoreArrayMasked(y *[4]uint64, mask Mask64x4) {
  2830  	var tmp0 spec.Array[uint64, spec.Width256] = y[:]
  2831  	spec.StoreArrayMasked[uint64, spec.Width256, spec.Mask64](x.v, &tmp0, mask.v)
  2832  }
  2833  
  2834  // StoreArrayMasked stores the masked elements of x to an array. It does not
  2835  // modify elements of y that are false in the mask.
  2836  func (x Uint64x8) StoreArrayMasked(y *[8]uint64, mask Mask64x8) {
  2837  	var tmp0 spec.Array[uint64, spec.Width512] = y[:]
  2838  	spec.StoreArrayMasked[uint64, spec.Width512, spec.Mask64](x.v, &tmp0, mask.v)
  2839  }
  2840  
  2841  // StorePart stores at most len(s) elements of x into s and returns the number
  2842  // of elements stored.
  2843  func (x Float32x4) StorePart(s []float32) int {
  2844  	return spec.StorePart[float32, spec.Width128](x.v, s)
  2845  }
  2846  
  2847  // StorePart stores at most len(s) elements of x into s and returns the number
  2848  // of elements stored.
  2849  func (x Float32x8) StorePart(s []float32) int {
  2850  	return spec.StorePart[float32, spec.Width256](x.v, s)
  2851  }
  2852  
  2853  // StorePart stores at most len(s) elements of x into s and returns the number
  2854  // of elements stored.
  2855  func (x Float32x16) StorePart(s []float32) int {
  2856  	return spec.StorePart[float32, spec.Width512](x.v, s)
  2857  }
  2858  
  2859  // StorePart stores at most len(s) elements of x into s and returns the number
  2860  // of elements stored.
  2861  func (x Float32s) StorePart(s []float32) int {
  2862  	return spec.StorePart[float32, spec.WidthScalable](x.v, s)
  2863  }
  2864  
  2865  // StorePart stores at most len(s) elements of x into s and returns the number
  2866  // of elements stored.
  2867  func (x Float64x2) StorePart(s []float64) int {
  2868  	return spec.StorePart[float64, spec.Width128](x.v, s)
  2869  }
  2870  
  2871  // StorePart stores at most len(s) elements of x into s and returns the number
  2872  // of elements stored.
  2873  func (x Float64x4) StorePart(s []float64) int {
  2874  	return spec.StorePart[float64, spec.Width256](x.v, s)
  2875  }
  2876  
  2877  // StorePart stores at most len(s) elements of x into s and returns the number
  2878  // of elements stored.
  2879  func (x Float64x8) StorePart(s []float64) int {
  2880  	return spec.StorePart[float64, spec.Width512](x.v, s)
  2881  }
  2882  
  2883  // StorePart stores at most len(s) elements of x into s and returns the number
  2884  // of elements stored.
  2885  func (x Float64s) StorePart(s []float64) int {
  2886  	return spec.StorePart[float64, spec.WidthScalable](x.v, s)
  2887  }
  2888  
  2889  // StorePart stores at most len(s) elements of x into s and returns the number
  2890  // of elements stored.
  2891  func (x Int8x16) StorePart(s []int8) int {
  2892  	return spec.StorePart[int8, spec.Width128](x.v, s)
  2893  }
  2894  
  2895  // StorePart stores at most len(s) elements of x into s and returns the number
  2896  // of elements stored.
  2897  func (x Int8x32) StorePart(s []int8) int {
  2898  	return spec.StorePart[int8, spec.Width256](x.v, s)
  2899  }
  2900  
  2901  // StorePart stores at most len(s) elements of x into s and returns the number
  2902  // of elements stored.
  2903  func (x Int8x64) StorePart(s []int8) int {
  2904  	return spec.StorePart[int8, spec.Width512](x.v, s)
  2905  }
  2906  
  2907  // StorePart stores at most len(s) elements of x into s and returns the number
  2908  // of elements stored.
  2909  func (x Int8s) StorePart(s []int8) int {
  2910  	return spec.StorePart[int8, spec.WidthScalable](x.v, s)
  2911  }
  2912  
  2913  // StorePart stores at most len(s) elements of x into s and returns the number
  2914  // of elements stored.
  2915  func (x Int16x8) StorePart(s []int16) int {
  2916  	return spec.StorePart[int16, spec.Width128](x.v, s)
  2917  }
  2918  
  2919  // StorePart stores at most len(s) elements of x into s and returns the number
  2920  // of elements stored.
  2921  func (x Int16x16) StorePart(s []int16) int {
  2922  	return spec.StorePart[int16, spec.Width256](x.v, s)
  2923  }
  2924  
  2925  // StorePart stores at most len(s) elements of x into s and returns the number
  2926  // of elements stored.
  2927  func (x Int16x32) StorePart(s []int16) int {
  2928  	return spec.StorePart[int16, spec.Width512](x.v, s)
  2929  }
  2930  
  2931  // StorePart stores at most len(s) elements of x into s and returns the number
  2932  // of elements stored.
  2933  func (x Int16s) StorePart(s []int16) int {
  2934  	return spec.StorePart[int16, spec.WidthScalable](x.v, s)
  2935  }
  2936  
  2937  // StorePart stores at most len(s) elements of x into s and returns the number
  2938  // of elements stored.
  2939  func (x Int32x4) StorePart(s []int32) int {
  2940  	return spec.StorePart[int32, spec.Width128](x.v, s)
  2941  }
  2942  
  2943  // StorePart stores at most len(s) elements of x into s and returns the number
  2944  // of elements stored.
  2945  func (x Int32x8) StorePart(s []int32) int {
  2946  	return spec.StorePart[int32, spec.Width256](x.v, s)
  2947  }
  2948  
  2949  // StorePart stores at most len(s) elements of x into s and returns the number
  2950  // of elements stored.
  2951  func (x Int32x16) StorePart(s []int32) int {
  2952  	return spec.StorePart[int32, spec.Width512](x.v, s)
  2953  }
  2954  
  2955  // StorePart stores at most len(s) elements of x into s and returns the number
  2956  // of elements stored.
  2957  func (x Int32s) StorePart(s []int32) int {
  2958  	return spec.StorePart[int32, spec.WidthScalable](x.v, s)
  2959  }
  2960  
  2961  // StorePart stores at most len(s) elements of x into s and returns the number
  2962  // of elements stored.
  2963  func (x Int64x2) StorePart(s []int64) int {
  2964  	return spec.StorePart[int64, spec.Width128](x.v, s)
  2965  }
  2966  
  2967  // StorePart stores at most len(s) elements of x into s and returns the number
  2968  // of elements stored.
  2969  func (x Int64x4) StorePart(s []int64) int {
  2970  	return spec.StorePart[int64, spec.Width256](x.v, s)
  2971  }
  2972  
  2973  // StorePart stores at most len(s) elements of x into s and returns the number
  2974  // of elements stored.
  2975  func (x Int64x8) StorePart(s []int64) int {
  2976  	return spec.StorePart[int64, spec.Width512](x.v, s)
  2977  }
  2978  
  2979  // StorePart stores at most len(s) elements of x into s and returns the number
  2980  // of elements stored.
  2981  func (x Int64s) StorePart(s []int64) int {
  2982  	return spec.StorePart[int64, spec.WidthScalable](x.v, s)
  2983  }
  2984  
  2985  // StorePart stores at most len(s) elements of x into s and returns the number
  2986  // of elements stored.
  2987  func (x Uint8x16) StorePart(s []uint8) int {
  2988  	return spec.StorePart[uint8, spec.Width128](x.v, s)
  2989  }
  2990  
  2991  // StorePart stores at most len(s) elements of x into s and returns the number
  2992  // of elements stored.
  2993  func (x Uint8x32) StorePart(s []uint8) int {
  2994  	return spec.StorePart[uint8, spec.Width256](x.v, s)
  2995  }
  2996  
  2997  // StorePart stores at most len(s) elements of x into s and returns the number
  2998  // of elements stored.
  2999  func (x Uint8x64) StorePart(s []uint8) int {
  3000  	return spec.StorePart[uint8, spec.Width512](x.v, s)
  3001  }
  3002  
  3003  // StorePart stores at most len(s) elements of x into s and returns the number
  3004  // of elements stored.
  3005  func (x Uint8s) StorePart(s []uint8) int {
  3006  	return spec.StorePart[uint8, spec.WidthScalable](x.v, s)
  3007  }
  3008  
  3009  // StorePart stores at most len(s) elements of x into s and returns the number
  3010  // of elements stored.
  3011  func (x Uint16x8) StorePart(s []uint16) int {
  3012  	return spec.StorePart[uint16, spec.Width128](x.v, s)
  3013  }
  3014  
  3015  // StorePart stores at most len(s) elements of x into s and returns the number
  3016  // of elements stored.
  3017  func (x Uint16x16) StorePart(s []uint16) int {
  3018  	return spec.StorePart[uint16, spec.Width256](x.v, s)
  3019  }
  3020  
  3021  // StorePart stores at most len(s) elements of x into s and returns the number
  3022  // of elements stored.
  3023  func (x Uint16x32) StorePart(s []uint16) int {
  3024  	return spec.StorePart[uint16, spec.Width512](x.v, s)
  3025  }
  3026  
  3027  // StorePart stores at most len(s) elements of x into s and returns the number
  3028  // of elements stored.
  3029  func (x Uint16s) StorePart(s []uint16) int {
  3030  	return spec.StorePart[uint16, spec.WidthScalable](x.v, s)
  3031  }
  3032  
  3033  // StorePart stores at most len(s) elements of x into s and returns the number
  3034  // of elements stored.
  3035  func (x Uint32x4) StorePart(s []uint32) int {
  3036  	return spec.StorePart[uint32, spec.Width128](x.v, s)
  3037  }
  3038  
  3039  // StorePart stores at most len(s) elements of x into s and returns the number
  3040  // of elements stored.
  3041  func (x Uint32x8) StorePart(s []uint32) int {
  3042  	return spec.StorePart[uint32, spec.Width256](x.v, s)
  3043  }
  3044  
  3045  // StorePart stores at most len(s) elements of x into s and returns the number
  3046  // of elements stored.
  3047  func (x Uint32x16) StorePart(s []uint32) int {
  3048  	return spec.StorePart[uint32, spec.Width512](x.v, s)
  3049  }
  3050  
  3051  // StorePart stores at most len(s) elements of x into s and returns the number
  3052  // of elements stored.
  3053  func (x Uint32s) StorePart(s []uint32) int {
  3054  	return spec.StorePart[uint32, spec.WidthScalable](x.v, s)
  3055  }
  3056  
  3057  // StorePart stores at most len(s) elements of x into s and returns the number
  3058  // of elements stored.
  3059  func (x Uint64x2) StorePart(s []uint64) int {
  3060  	return spec.StorePart[uint64, spec.Width128](x.v, s)
  3061  }
  3062  
  3063  // StorePart stores at most len(s) elements of x into s and returns the number
  3064  // of elements stored.
  3065  func (x Uint64x4) StorePart(s []uint64) int {
  3066  	return spec.StorePart[uint64, spec.Width256](x.v, s)
  3067  }
  3068  
  3069  // StorePart stores at most len(s) elements of x into s and returns the number
  3070  // of elements stored.
  3071  func (x Uint64x8) StorePart(s []uint64) int {
  3072  	return spec.StorePart[uint64, spec.Width512](x.v, s)
  3073  }
  3074  
  3075  // StorePart stores at most len(s) elements of x into s and returns the number
  3076  // of elements stored.
  3077  func (x Uint64s) StorePart(s []uint64) int {
  3078  	return spec.StorePart[uint64, spec.WidthScalable](x.v, s)
  3079  }
  3080  
  3081  // Mask8x16FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3082  // then mask element i of the result is set.
  3083  func Mask8x16FromBits(x uint16) (z Mask8x16) {
  3084  	return Mask8x16{spec.MaskFromBits[spec.Mask8, spec.Width128](spec.UintN(x))}
  3085  }
  3086  
  3087  // Mask8x32FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3088  // then mask element i of the result is set.
  3089  func Mask8x32FromBits(x uint32) (z Mask8x32) {
  3090  	return Mask8x32{spec.MaskFromBits[spec.Mask8, spec.Width256](spec.UintN(x))}
  3091  }
  3092  
  3093  // Mask8x64FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3094  // then mask element i of the result is set.
  3095  func Mask8x64FromBits(x uint64) (z Mask8x64) {
  3096  	return Mask8x64{spec.MaskFromBits[spec.Mask8, spec.Width512](spec.UintN(x))}
  3097  }
  3098  
  3099  // Mask16x8FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3100  // then mask element i of the result is set.
  3101  func Mask16x8FromBits(x uint8) (z Mask16x8) {
  3102  	return Mask16x8{spec.MaskFromBits[spec.Mask16, spec.Width128](spec.UintN(x))}
  3103  }
  3104  
  3105  // Mask16x16FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3106  // then mask element i of the result is set.
  3107  func Mask16x16FromBits(x uint16) (z Mask16x16) {
  3108  	return Mask16x16{spec.MaskFromBits[spec.Mask16, spec.Width256](spec.UintN(x))}
  3109  }
  3110  
  3111  // Mask16x32FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3112  // then mask element i of the result is set.
  3113  func Mask16x32FromBits(x uint32) (z Mask16x32) {
  3114  	return Mask16x32{spec.MaskFromBits[spec.Mask16, spec.Width512](spec.UintN(x))}
  3115  }
  3116  
  3117  // Mask32x4FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3118  // then mask element i of the result is set.
  3119  func Mask32x4FromBits(x uint8) (z Mask32x4) {
  3120  	return Mask32x4{spec.MaskFromBits[spec.Mask32, spec.Width128](spec.UintN(x))}
  3121  }
  3122  
  3123  // Mask32x8FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3124  // then mask element i of the result is set.
  3125  func Mask32x8FromBits(x uint8) (z Mask32x8) {
  3126  	return Mask32x8{spec.MaskFromBits[spec.Mask32, spec.Width256](spec.UintN(x))}
  3127  }
  3128  
  3129  // Mask32x16FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3130  // then mask element i of the result is set.
  3131  func Mask32x16FromBits(x uint16) (z Mask32x16) {
  3132  	return Mask32x16{spec.MaskFromBits[spec.Mask32, spec.Width512](spec.UintN(x))}
  3133  }
  3134  
  3135  // Mask64x2FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3136  // then mask element i of the result is set.
  3137  func Mask64x2FromBits(x uint8) (z Mask64x2) {
  3138  	return Mask64x2{spec.MaskFromBits[spec.Mask64, spec.Width128](spec.UintN(x))}
  3139  }
  3140  
  3141  // Mask64x4FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3142  // then mask element i of the result is set.
  3143  func Mask64x4FromBits(x uint8) (z Mask64x4) {
  3144  	return Mask64x4{spec.MaskFromBits[spec.Mask64, spec.Width256](spec.UintN(x))}
  3145  }
  3146  
  3147  // Mask64x8FromBits constructs a mask from a bitmap value. If bit i of y is set,
  3148  // then mask element i of the result is set.
  3149  func Mask64x8FromBits(x uint8) (z Mask64x8) {
  3150  	return Mask64x8{spec.MaskFromBits[spec.Mask64, spec.Width512](spec.UintN(x))}
  3151  }
  3152  
  3153  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3154  // element i is set.
  3155  func (x Mask8x16) ToBits() (z uint16) {
  3156  	return uint16(spec.MaskToBits[spec.Mask8, spec.Width128](x.v))
  3157  }
  3158  
  3159  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3160  // element i is set.
  3161  func (x Mask8x32) ToBits() (z uint32) {
  3162  	return uint32(spec.MaskToBits[spec.Mask8, spec.Width256](x.v))
  3163  }
  3164  
  3165  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3166  // element i is set.
  3167  func (x Mask8x64) ToBits() (z uint64) {
  3168  	return uint64(spec.MaskToBits[spec.Mask8, spec.Width512](x.v))
  3169  }
  3170  
  3171  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3172  // element i is set.
  3173  func (x Mask16x8) ToBits() (z uint8) {
  3174  	return uint8(spec.MaskToBits[spec.Mask16, spec.Width128](x.v))
  3175  }
  3176  
  3177  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3178  // element i is set.
  3179  func (x Mask16x16) ToBits() (z uint16) {
  3180  	return uint16(spec.MaskToBits[spec.Mask16, spec.Width256](x.v))
  3181  }
  3182  
  3183  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3184  // element i is set.
  3185  func (x Mask16x32) ToBits() (z uint32) {
  3186  	return uint32(spec.MaskToBits[spec.Mask16, spec.Width512](x.v))
  3187  }
  3188  
  3189  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3190  // element i is set.
  3191  func (x Mask32x4) ToBits() (z uint8) {
  3192  	return uint8(spec.MaskToBits[spec.Mask32, spec.Width128](x.v))
  3193  }
  3194  
  3195  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3196  // element i is set.
  3197  func (x Mask32x8) ToBits() (z uint8) {
  3198  	return uint8(spec.MaskToBits[spec.Mask32, spec.Width256](x.v))
  3199  }
  3200  
  3201  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3202  // element i is set.
  3203  func (x Mask32x16) ToBits() (z uint16) {
  3204  	return uint16(spec.MaskToBits[spec.Mask32, spec.Width512](x.v))
  3205  }
  3206  
  3207  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3208  // element i is set.
  3209  func (x Mask64x2) ToBits() (z uint8) {
  3210  	return uint8(spec.MaskToBits[spec.Mask64, spec.Width128](x.v))
  3211  }
  3212  
  3213  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3214  // element i is set.
  3215  func (x Mask64x4) ToBits() (z uint8) {
  3216  	return uint8(spec.MaskToBits[spec.Mask64, spec.Width256](x.v))
  3217  }
  3218  
  3219  // ToBits constructs a bitmap from mask x, where bit i is set if mask
  3220  // element i is set.
  3221  func (x Mask64x8) ToBits() (z uint8) {
  3222  	return uint8(spec.MaskToBits[spec.Mask64, spec.Width512](x.v))
  3223  }
  3224  
  3225  // ToInt8x16 converts the mask to a vector, where element i is set to ^0 (all bits
  3226  // set, e.g., -1) if mask element i is "true".
  3227  func (x Mask8x16) ToInt8x16() (z Int8x16) {
  3228  	return Int8x16{spec.MaskToZ[spec.Mask8, spec.Width128, int8](x.v)}
  3229  }
  3230  
  3231  // ToInt8x32 converts the mask to a vector, where element i is set to ^0 (all bits
  3232  // set, e.g., -1) if mask element i is "true".
  3233  func (x Mask8x32) ToInt8x32() (z Int8x32) {
  3234  	return Int8x32{spec.MaskToZ[spec.Mask8, spec.Width256, int8](x.v)}
  3235  }
  3236  
  3237  // ToInt8x64 converts the mask to a vector, where element i is set to ^0 (all bits
  3238  // set, e.g., -1) if mask element i is "true".
  3239  func (x Mask8x64) ToInt8x64() (z Int8x64) {
  3240  	return Int8x64{spec.MaskToZ[spec.Mask8, spec.Width512, int8](x.v)}
  3241  }
  3242  
  3243  // ToInt8s converts the mask to a vector, where element i is set to ^0 (all bits
  3244  // set, e.g., -1) if mask element i is "true".
  3245  func (x Mask8s) ToInt8s() (z Int8s) {
  3246  	return Int8s{spec.MaskToZ[spec.Mask8, spec.WidthScalable, int8](x.v)}
  3247  }
  3248  
  3249  // ToInt16x8 converts the mask to a vector, where element i is set to ^0 (all bits
  3250  // set, e.g., -1) if mask element i is "true".
  3251  func (x Mask16x8) ToInt16x8() (z Int16x8) {
  3252  	return Int16x8{spec.MaskToZ[spec.Mask16, spec.Width128, int16](x.v)}
  3253  }
  3254  
  3255  // ToInt16x16 converts the mask to a vector, where element i is set to ^0 (all bits
  3256  // set, e.g., -1) if mask element i is "true".
  3257  func (x Mask16x16) ToInt16x16() (z Int16x16) {
  3258  	return Int16x16{spec.MaskToZ[spec.Mask16, spec.Width256, int16](x.v)}
  3259  }
  3260  
  3261  // ToInt16x32 converts the mask to a vector, where element i is set to ^0 (all bits
  3262  // set, e.g., -1) if mask element i is "true".
  3263  func (x Mask16x32) ToInt16x32() (z Int16x32) {
  3264  	return Int16x32{spec.MaskToZ[spec.Mask16, spec.Width512, int16](x.v)}
  3265  }
  3266  
  3267  // ToInt16s converts the mask to a vector, where element i is set to ^0 (all bits
  3268  // set, e.g., -1) if mask element i is "true".
  3269  func (x Mask16s) ToInt16s() (z Int16s) {
  3270  	return Int16s{spec.MaskToZ[spec.Mask16, spec.WidthScalable, int16](x.v)}
  3271  }
  3272  
  3273  // ToInt32x4 converts the mask to a vector, where element i is set to ^0 (all bits
  3274  // set, e.g., -1) if mask element i is "true".
  3275  func (x Mask32x4) ToInt32x4() (z Int32x4) {
  3276  	return Int32x4{spec.MaskToZ[spec.Mask32, spec.Width128, int32](x.v)}
  3277  }
  3278  
  3279  // ToInt32x8 converts the mask to a vector, where element i is set to ^0 (all bits
  3280  // set, e.g., -1) if mask element i is "true".
  3281  func (x Mask32x8) ToInt32x8() (z Int32x8) {
  3282  	return Int32x8{spec.MaskToZ[spec.Mask32, spec.Width256, int32](x.v)}
  3283  }
  3284  
  3285  // ToInt32x16 converts the mask to a vector, where element i is set to ^0 (all bits
  3286  // set, e.g., -1) if mask element i is "true".
  3287  func (x Mask32x16) ToInt32x16() (z Int32x16) {
  3288  	return Int32x16{spec.MaskToZ[spec.Mask32, spec.Width512, int32](x.v)}
  3289  }
  3290  
  3291  // ToInt32s converts the mask to a vector, where element i is set to ^0 (all bits
  3292  // set, e.g., -1) if mask element i is "true".
  3293  func (x Mask32s) ToInt32s() (z Int32s) {
  3294  	return Int32s{spec.MaskToZ[spec.Mask32, spec.WidthScalable, int32](x.v)}
  3295  }
  3296  
  3297  // ToInt64x2 converts the mask to a vector, where element i is set to ^0 (all bits
  3298  // set, e.g., -1) if mask element i is "true".
  3299  func (x Mask64x2) ToInt64x2() (z Int64x2) {
  3300  	return Int64x2{spec.MaskToZ[spec.Mask64, spec.Width128, int64](x.v)}
  3301  }
  3302  
  3303  // ToInt64x4 converts the mask to a vector, where element i is set to ^0 (all bits
  3304  // set, e.g., -1) if mask element i is "true".
  3305  func (x Mask64x4) ToInt64x4() (z Int64x4) {
  3306  	return Int64x4{spec.MaskToZ[spec.Mask64, spec.Width256, int64](x.v)}
  3307  }
  3308  
  3309  // ToInt64x8 converts the mask to a vector, where element i is set to ^0 (all bits
  3310  // set, e.g., -1) if mask element i is "true".
  3311  func (x Mask64x8) ToInt64x8() (z Int64x8) {
  3312  	return Int64x8{spec.MaskToZ[spec.Mask64, spec.Width512, int64](x.v)}
  3313  }
  3314  
  3315  // ToInt64s converts the mask to a vector, where element i is set to ^0 (all bits
  3316  // set, e.g., -1) if mask element i is "true".
  3317  func (x Mask64s) ToInt64s() (z Int64s) {
  3318  	return Int64s{spec.MaskToZ[spec.Mask64, spec.WidthScalable, int64](x.v)}
  3319  }
  3320  
  3321  // Add adds corresponding elements of two vectors.
  3322  //
  3323  //	z[i] = x[i] + y[i]
  3324  func (x Float32x4) Add(y Float32x4) (z Float32x4) {
  3325  	return Float32x4{spec.Add[float32, spec.Width128](x.v, y.v)}
  3326  }
  3327  
  3328  // Add adds corresponding elements of two vectors.
  3329  //
  3330  //	z[i] = x[i] + y[i]
  3331  func (x Float32x8) Add(y Float32x8) (z Float32x8) {
  3332  	return Float32x8{spec.Add[float32, spec.Width256](x.v, y.v)}
  3333  }
  3334  
  3335  // Add adds corresponding elements of two vectors.
  3336  //
  3337  //	z[i] = x[i] + y[i]
  3338  func (x Float32x16) Add(y Float32x16) (z Float32x16) {
  3339  	return Float32x16{spec.Add[float32, spec.Width512](x.v, y.v)}
  3340  }
  3341  
  3342  // Add adds corresponding elements of two vectors.
  3343  //
  3344  //	z[i] = x[i] + y[i]
  3345  func (x Float32s) Add(y Float32s) (z Float32s) {
  3346  	return Float32s{spec.Add[float32, spec.WidthScalable](x.v, y.v)}
  3347  }
  3348  
  3349  // Add adds corresponding elements of two vectors.
  3350  //
  3351  //	z[i] = x[i] + y[i]
  3352  func (x Float64x2) Add(y Float64x2) (z Float64x2) {
  3353  	return Float64x2{spec.Add[float64, spec.Width128](x.v, y.v)}
  3354  }
  3355  
  3356  // Add adds corresponding elements of two vectors.
  3357  //
  3358  //	z[i] = x[i] + y[i]
  3359  func (x Float64x4) Add(y Float64x4) (z Float64x4) {
  3360  	return Float64x4{spec.Add[float64, spec.Width256](x.v, y.v)}
  3361  }
  3362  
  3363  // Add adds corresponding elements of two vectors.
  3364  //
  3365  //	z[i] = x[i] + y[i]
  3366  func (x Float64x8) Add(y Float64x8) (z Float64x8) {
  3367  	return Float64x8{spec.Add[float64, spec.Width512](x.v, y.v)}
  3368  }
  3369  
  3370  // Add adds corresponding elements of two vectors.
  3371  //
  3372  //	z[i] = x[i] + y[i]
  3373  func (x Float64s) Add(y Float64s) (z Float64s) {
  3374  	return Float64s{spec.Add[float64, spec.WidthScalable](x.v, y.v)}
  3375  }
  3376  
  3377  // Add adds corresponding elements of two vectors.
  3378  //
  3379  //	z[i] = x[i] + y[i]
  3380  func (x Int8x16) Add(y Int8x16) (z Int8x16) {
  3381  	return Int8x16{spec.Add[int8, spec.Width128](x.v, y.v)}
  3382  }
  3383  
  3384  // Add adds corresponding elements of two vectors.
  3385  //
  3386  //	z[i] = x[i] + y[i]
  3387  func (x Int8x32) Add(y Int8x32) (z Int8x32) {
  3388  	return Int8x32{spec.Add[int8, spec.Width256](x.v, y.v)}
  3389  }
  3390  
  3391  // Add adds corresponding elements of two vectors.
  3392  //
  3393  //	z[i] = x[i] + y[i]
  3394  func (x Int8x64) Add(y Int8x64) (z Int8x64) {
  3395  	return Int8x64{spec.Add[int8, spec.Width512](x.v, y.v)}
  3396  }
  3397  
  3398  // Add adds corresponding elements of two vectors.
  3399  //
  3400  //	z[i] = x[i] + y[i]
  3401  func (x Int8s) Add(y Int8s) (z Int8s) {
  3402  	return Int8s{spec.Add[int8, spec.WidthScalable](x.v, y.v)}
  3403  }
  3404  
  3405  // Add adds corresponding elements of two vectors.
  3406  //
  3407  //	z[i] = x[i] + y[i]
  3408  func (x Int16x8) Add(y Int16x8) (z Int16x8) {
  3409  	return Int16x8{spec.Add[int16, spec.Width128](x.v, y.v)}
  3410  }
  3411  
  3412  // Add adds corresponding elements of two vectors.
  3413  //
  3414  //	z[i] = x[i] + y[i]
  3415  func (x Int16x16) Add(y Int16x16) (z Int16x16) {
  3416  	return Int16x16{spec.Add[int16, spec.Width256](x.v, y.v)}
  3417  }
  3418  
  3419  // Add adds corresponding elements of two vectors.
  3420  //
  3421  //	z[i] = x[i] + y[i]
  3422  func (x Int16x32) Add(y Int16x32) (z Int16x32) {
  3423  	return Int16x32{spec.Add[int16, spec.Width512](x.v, y.v)}
  3424  }
  3425  
  3426  // Add adds corresponding elements of two vectors.
  3427  //
  3428  //	z[i] = x[i] + y[i]
  3429  func (x Int16s) Add(y Int16s) (z Int16s) {
  3430  	return Int16s{spec.Add[int16, spec.WidthScalable](x.v, y.v)}
  3431  }
  3432  
  3433  // Add adds corresponding elements of two vectors.
  3434  //
  3435  //	z[i] = x[i] + y[i]
  3436  func (x Int32x4) Add(y Int32x4) (z Int32x4) {
  3437  	return Int32x4{spec.Add[int32, spec.Width128](x.v, y.v)}
  3438  }
  3439  
  3440  // Add adds corresponding elements of two vectors.
  3441  //
  3442  //	z[i] = x[i] + y[i]
  3443  func (x Int32x8) Add(y Int32x8) (z Int32x8) {
  3444  	return Int32x8{spec.Add[int32, spec.Width256](x.v, y.v)}
  3445  }
  3446  
  3447  // Add adds corresponding elements of two vectors.
  3448  //
  3449  //	z[i] = x[i] + y[i]
  3450  func (x Int32x16) Add(y Int32x16) (z Int32x16) {
  3451  	return Int32x16{spec.Add[int32, spec.Width512](x.v, y.v)}
  3452  }
  3453  
  3454  // Add adds corresponding elements of two vectors.
  3455  //
  3456  //	z[i] = x[i] + y[i]
  3457  func (x Int32s) Add(y Int32s) (z Int32s) {
  3458  	return Int32s{spec.Add[int32, spec.WidthScalable](x.v, y.v)}
  3459  }
  3460  
  3461  // Add adds corresponding elements of two vectors.
  3462  //
  3463  //	z[i] = x[i] + y[i]
  3464  func (x Int64x2) Add(y Int64x2) (z Int64x2) {
  3465  	return Int64x2{spec.Add[int64, spec.Width128](x.v, y.v)}
  3466  }
  3467  
  3468  // Add adds corresponding elements of two vectors.
  3469  //
  3470  //	z[i] = x[i] + y[i]
  3471  func (x Int64x4) Add(y Int64x4) (z Int64x4) {
  3472  	return Int64x4{spec.Add[int64, spec.Width256](x.v, y.v)}
  3473  }
  3474  
  3475  // Add adds corresponding elements of two vectors.
  3476  //
  3477  //	z[i] = x[i] + y[i]
  3478  func (x Int64x8) Add(y Int64x8) (z Int64x8) {
  3479  	return Int64x8{spec.Add[int64, spec.Width512](x.v, y.v)}
  3480  }
  3481  
  3482  // Add adds corresponding elements of two vectors.
  3483  //
  3484  //	z[i] = x[i] + y[i]
  3485  func (x Int64s) Add(y Int64s) (z Int64s) {
  3486  	return Int64s{spec.Add[int64, spec.WidthScalable](x.v, y.v)}
  3487  }
  3488  
  3489  // Add adds corresponding elements of two vectors.
  3490  //
  3491  //	z[i] = x[i] + y[i]
  3492  func (x Uint8x16) Add(y Uint8x16) (z Uint8x16) {
  3493  	return Uint8x16{spec.Add[uint8, spec.Width128](x.v, y.v)}
  3494  }
  3495  
  3496  // Add adds corresponding elements of two vectors.
  3497  //
  3498  //	z[i] = x[i] + y[i]
  3499  func (x Uint8x32) Add(y Uint8x32) (z Uint8x32) {
  3500  	return Uint8x32{spec.Add[uint8, spec.Width256](x.v, y.v)}
  3501  }
  3502  
  3503  // Add adds corresponding elements of two vectors.
  3504  //
  3505  //	z[i] = x[i] + y[i]
  3506  func (x Uint8x64) Add(y Uint8x64) (z Uint8x64) {
  3507  	return Uint8x64{spec.Add[uint8, spec.Width512](x.v, y.v)}
  3508  }
  3509  
  3510  // Add adds corresponding elements of two vectors.
  3511  //
  3512  //	z[i] = x[i] + y[i]
  3513  func (x Uint8s) Add(y Uint8s) (z Uint8s) {
  3514  	return Uint8s{spec.Add[uint8, spec.WidthScalable](x.v, y.v)}
  3515  }
  3516  
  3517  // Add adds corresponding elements of two vectors.
  3518  //
  3519  //	z[i] = x[i] + y[i]
  3520  func (x Uint16x8) Add(y Uint16x8) (z Uint16x8) {
  3521  	return Uint16x8{spec.Add[uint16, spec.Width128](x.v, y.v)}
  3522  }
  3523  
  3524  // Add adds corresponding elements of two vectors.
  3525  //
  3526  //	z[i] = x[i] + y[i]
  3527  func (x Uint16x16) Add(y Uint16x16) (z Uint16x16) {
  3528  	return Uint16x16{spec.Add[uint16, spec.Width256](x.v, y.v)}
  3529  }
  3530  
  3531  // Add adds corresponding elements of two vectors.
  3532  //
  3533  //	z[i] = x[i] + y[i]
  3534  func (x Uint16x32) Add(y Uint16x32) (z Uint16x32) {
  3535  	return Uint16x32{spec.Add[uint16, spec.Width512](x.v, y.v)}
  3536  }
  3537  
  3538  // Add adds corresponding elements of two vectors.
  3539  //
  3540  //	z[i] = x[i] + y[i]
  3541  func (x Uint16s) Add(y Uint16s) (z Uint16s) {
  3542  	return Uint16s{spec.Add[uint16, spec.WidthScalable](x.v, y.v)}
  3543  }
  3544  
  3545  // Add adds corresponding elements of two vectors.
  3546  //
  3547  //	z[i] = x[i] + y[i]
  3548  func (x Uint32x4) Add(y Uint32x4) (z Uint32x4) {
  3549  	return Uint32x4{spec.Add[uint32, spec.Width128](x.v, y.v)}
  3550  }
  3551  
  3552  // Add adds corresponding elements of two vectors.
  3553  //
  3554  //	z[i] = x[i] + y[i]
  3555  func (x Uint32x8) Add(y Uint32x8) (z Uint32x8) {
  3556  	return Uint32x8{spec.Add[uint32, spec.Width256](x.v, y.v)}
  3557  }
  3558  
  3559  // Add adds corresponding elements of two vectors.
  3560  //
  3561  //	z[i] = x[i] + y[i]
  3562  func (x Uint32x16) Add(y Uint32x16) (z Uint32x16) {
  3563  	return Uint32x16{spec.Add[uint32, spec.Width512](x.v, y.v)}
  3564  }
  3565  
  3566  // Add adds corresponding elements of two vectors.
  3567  //
  3568  //	z[i] = x[i] + y[i]
  3569  func (x Uint32s) Add(y Uint32s) (z Uint32s) {
  3570  	return Uint32s{spec.Add[uint32, spec.WidthScalable](x.v, y.v)}
  3571  }
  3572  
  3573  // Add adds corresponding elements of two vectors.
  3574  //
  3575  //	z[i] = x[i] + y[i]
  3576  func (x Uint64x2) Add(y Uint64x2) (z Uint64x2) {
  3577  	return Uint64x2{spec.Add[uint64, spec.Width128](x.v, y.v)}
  3578  }
  3579  
  3580  // Add adds corresponding elements of two vectors.
  3581  //
  3582  //	z[i] = x[i] + y[i]
  3583  func (x Uint64x4) Add(y Uint64x4) (z Uint64x4) {
  3584  	return Uint64x4{spec.Add[uint64, spec.Width256](x.v, y.v)}
  3585  }
  3586  
  3587  // Add adds corresponding elements of two vectors.
  3588  //
  3589  //	z[i] = x[i] + y[i]
  3590  func (x Uint64x8) Add(y Uint64x8) (z Uint64x8) {
  3591  	return Uint64x8{spec.Add[uint64, spec.Width512](x.v, y.v)}
  3592  }
  3593  
  3594  // Add adds corresponding elements of two vectors.
  3595  //
  3596  //	z[i] = x[i] + y[i]
  3597  func (x Uint64s) Add(y Uint64s) (z Uint64s) {
  3598  	return Uint64s{spec.Add[uint64, spec.WidthScalable](x.v, y.v)}
  3599  }
  3600  
  3601  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3602  // adjacent pairs, yielding a vector of half as many elements with twice the
  3603  // input element size.
  3604  //
  3605  //	w[i] = x[i] * y[i]        // Double width
  3606  //	z[i] = w[2*i] + w[2*i+1]
  3607  func (x Float32x4) DotProductPairs(y Float32x4) (z Float64x2) {
  3608  	return Float64x2{spec.DotProductPairs[float32, spec.Width128, float64](x.v, y.v)}
  3609  }
  3610  
  3611  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3612  // adjacent pairs, yielding a vector of half as many elements with twice the
  3613  // input element size.
  3614  //
  3615  //	w[i] = x[i] * y[i]        // Double width
  3616  //	z[i] = w[2*i] + w[2*i+1]
  3617  func (x Float32x8) DotProductPairs(y Float32x8) (z Float64x4) {
  3618  	return Float64x4{spec.DotProductPairs[float32, spec.Width256, float64](x.v, y.v)}
  3619  }
  3620  
  3621  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3622  // adjacent pairs, yielding a vector of half as many elements with twice the
  3623  // input element size.
  3624  //
  3625  //	w[i] = x[i] * y[i]        // Double width
  3626  //	z[i] = w[2*i] + w[2*i+1]
  3627  func (x Float32x16) DotProductPairs(y Float32x16) (z Float64x8) {
  3628  	return Float64x8{spec.DotProductPairs[float32, spec.Width512, float64](x.v, y.v)}
  3629  }
  3630  
  3631  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3632  // adjacent pairs, yielding a vector of half as many elements with twice the
  3633  // input element size.
  3634  //
  3635  //	w[i] = x[i] * y[i]        // Double width
  3636  //	z[i] = w[2*i] + w[2*i+1]
  3637  func (x Float32s) DotProductPairs(y Float32s) (z Float64s) {
  3638  	return Float64s{spec.DotProductPairs[float32, spec.WidthScalable, float64](x.v, y.v)}
  3639  }
  3640  
  3641  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3642  // adjacent pairs, yielding a vector of half as many elements with twice the
  3643  // input element size.
  3644  //
  3645  //	w[i] = x[i] * y[i]        // Double width
  3646  //	z[i] = w[2*i] + w[2*i+1]
  3647  func (x Int8x16) DotProductPairs(y Int8x16) (z Int16x8) {
  3648  	return Int16x8{spec.DotProductPairs[int8, spec.Width128, int16](x.v, y.v)}
  3649  }
  3650  
  3651  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3652  // adjacent pairs, yielding a vector of half as many elements with twice the
  3653  // input element size.
  3654  //
  3655  //	w[i] = x[i] * y[i]        // Double width
  3656  //	z[i] = w[2*i] + w[2*i+1]
  3657  func (x Int8x32) DotProductPairs(y Int8x32) (z Int16x16) {
  3658  	return Int16x16{spec.DotProductPairs[int8, spec.Width256, int16](x.v, y.v)}
  3659  }
  3660  
  3661  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3662  // adjacent pairs, yielding a vector of half as many elements with twice the
  3663  // input element size.
  3664  //
  3665  //	w[i] = x[i] * y[i]        // Double width
  3666  //	z[i] = w[2*i] + w[2*i+1]
  3667  func (x Int8x64) DotProductPairs(y Int8x64) (z Int16x32) {
  3668  	return Int16x32{spec.DotProductPairs[int8, spec.Width512, int16](x.v, y.v)}
  3669  }
  3670  
  3671  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3672  // adjacent pairs, yielding a vector of half as many elements with twice the
  3673  // input element size.
  3674  //
  3675  //	w[i] = x[i] * y[i]        // Double width
  3676  //	z[i] = w[2*i] + w[2*i+1]
  3677  func (x Int8s) DotProductPairs(y Int8s) (z Int16s) {
  3678  	return Int16s{spec.DotProductPairs[int8, spec.WidthScalable, int16](x.v, y.v)}
  3679  }
  3680  
  3681  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3682  // adjacent pairs, yielding a vector of half as many elements with twice the
  3683  // input element size.
  3684  //
  3685  //	w[i] = x[i] * y[i]        // Double width
  3686  //	z[i] = w[2*i] + w[2*i+1]
  3687  func (x Int16x8) DotProductPairs(y Int16x8) (z Int32x4) {
  3688  	return Int32x4{spec.DotProductPairs[int16, spec.Width128, int32](x.v, y.v)}
  3689  }
  3690  
  3691  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3692  // adjacent pairs, yielding a vector of half as many elements with twice the
  3693  // input element size.
  3694  //
  3695  //	w[i] = x[i] * y[i]        // Double width
  3696  //	z[i] = w[2*i] + w[2*i+1]
  3697  func (x Int16x16) DotProductPairs(y Int16x16) (z Int32x8) {
  3698  	return Int32x8{spec.DotProductPairs[int16, spec.Width256, int32](x.v, y.v)}
  3699  }
  3700  
  3701  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3702  // adjacent pairs, yielding a vector of half as many elements with twice the
  3703  // input element size.
  3704  //
  3705  //	w[i] = x[i] * y[i]        // Double width
  3706  //	z[i] = w[2*i] + w[2*i+1]
  3707  func (x Int16x32) DotProductPairs(y Int16x32) (z Int32x16) {
  3708  	return Int32x16{spec.DotProductPairs[int16, spec.Width512, int32](x.v, y.v)}
  3709  }
  3710  
  3711  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3712  // adjacent pairs, yielding a vector of half as many elements with twice the
  3713  // input element size.
  3714  //
  3715  //	w[i] = x[i] * y[i]        // Double width
  3716  //	z[i] = w[2*i] + w[2*i+1]
  3717  func (x Int16s) DotProductPairs(y Int16s) (z Int32s) {
  3718  	return Int32s{spec.DotProductPairs[int16, spec.WidthScalable, int32](x.v, y.v)}
  3719  }
  3720  
  3721  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3722  // adjacent pairs, yielding a vector of half as many elements with twice the
  3723  // input element size.
  3724  //
  3725  //	w[i] = x[i] * y[i]        // Double width
  3726  //	z[i] = w[2*i] + w[2*i+1]
  3727  func (x Int32x4) DotProductPairs(y Int32x4) (z Int64x2) {
  3728  	return Int64x2{spec.DotProductPairs[int32, spec.Width128, int64](x.v, y.v)}
  3729  }
  3730  
  3731  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3732  // adjacent pairs, yielding a vector of half as many elements with twice the
  3733  // input element size.
  3734  //
  3735  //	w[i] = x[i] * y[i]        // Double width
  3736  //	z[i] = w[2*i] + w[2*i+1]
  3737  func (x Int32x8) DotProductPairs(y Int32x8) (z Int64x4) {
  3738  	return Int64x4{spec.DotProductPairs[int32, spec.Width256, int64](x.v, y.v)}
  3739  }
  3740  
  3741  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3742  // adjacent pairs, yielding a vector of half as many elements with twice the
  3743  // input element size.
  3744  //
  3745  //	w[i] = x[i] * y[i]        // Double width
  3746  //	z[i] = w[2*i] + w[2*i+1]
  3747  func (x Int32x16) DotProductPairs(y Int32x16) (z Int64x8) {
  3748  	return Int64x8{spec.DotProductPairs[int32, spec.Width512, int64](x.v, y.v)}
  3749  }
  3750  
  3751  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3752  // adjacent pairs, yielding a vector of half as many elements with twice the
  3753  // input element size.
  3754  //
  3755  //	w[i] = x[i] * y[i]        // Double width
  3756  //	z[i] = w[2*i] + w[2*i+1]
  3757  func (x Int32s) DotProductPairs(y Int32s) (z Int64s) {
  3758  	return Int64s{spec.DotProductPairs[int32, spec.WidthScalable, int64](x.v, y.v)}
  3759  }
  3760  
  3761  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3762  // adjacent pairs, yielding a vector of half as many elements with twice the
  3763  // input element size.
  3764  //
  3765  //	w[i] = x[i] * y[i]        // Double width
  3766  //	z[i] = w[2*i] + w[2*i+1]
  3767  func (x Uint8x16) DotProductPairs(y Uint8x16) (z Uint16x8) {
  3768  	return Uint16x8{spec.DotProductPairs[uint8, spec.Width128, uint16](x.v, y.v)}
  3769  }
  3770  
  3771  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3772  // adjacent pairs, yielding a vector of half as many elements with twice the
  3773  // input element size.
  3774  //
  3775  //	w[i] = x[i] * y[i]        // Double width
  3776  //	z[i] = w[2*i] + w[2*i+1]
  3777  func (x Uint8x32) DotProductPairs(y Uint8x32) (z Uint16x16) {
  3778  	return Uint16x16{spec.DotProductPairs[uint8, spec.Width256, uint16](x.v, y.v)}
  3779  }
  3780  
  3781  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3782  // adjacent pairs, yielding a vector of half as many elements with twice the
  3783  // input element size.
  3784  //
  3785  //	w[i] = x[i] * y[i]        // Double width
  3786  //	z[i] = w[2*i] + w[2*i+1]
  3787  func (x Uint8x64) DotProductPairs(y Uint8x64) (z Uint16x32) {
  3788  	return Uint16x32{spec.DotProductPairs[uint8, spec.Width512, uint16](x.v, y.v)}
  3789  }
  3790  
  3791  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3792  // adjacent pairs, yielding a vector of half as many elements with twice the
  3793  // input element size.
  3794  //
  3795  //	w[i] = x[i] * y[i]        // Double width
  3796  //	z[i] = w[2*i] + w[2*i+1]
  3797  func (x Uint8s) DotProductPairs(y Uint8s) (z Uint16s) {
  3798  	return Uint16s{spec.DotProductPairs[uint8, spec.WidthScalable, uint16](x.v, y.v)}
  3799  }
  3800  
  3801  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3802  // adjacent pairs, yielding a vector of half as many elements with twice the
  3803  // input element size.
  3804  //
  3805  //	w[i] = x[i] * y[i]        // Double width
  3806  //	z[i] = w[2*i] + w[2*i+1]
  3807  func (x Uint16x8) DotProductPairs(y Uint16x8) (z Uint32x4) {
  3808  	return Uint32x4{spec.DotProductPairs[uint16, spec.Width128, uint32](x.v, y.v)}
  3809  }
  3810  
  3811  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3812  // adjacent pairs, yielding a vector of half as many elements with twice the
  3813  // input element size.
  3814  //
  3815  //	w[i] = x[i] * y[i]        // Double width
  3816  //	z[i] = w[2*i] + w[2*i+1]
  3817  func (x Uint16x16) DotProductPairs(y Uint16x16) (z Uint32x8) {
  3818  	return Uint32x8{spec.DotProductPairs[uint16, spec.Width256, uint32](x.v, y.v)}
  3819  }
  3820  
  3821  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3822  // adjacent pairs, yielding a vector of half as many elements with twice the
  3823  // input element size.
  3824  //
  3825  //	w[i] = x[i] * y[i]        // Double width
  3826  //	z[i] = w[2*i] + w[2*i+1]
  3827  func (x Uint16x32) DotProductPairs(y Uint16x32) (z Uint32x16) {
  3828  	return Uint32x16{spec.DotProductPairs[uint16, spec.Width512, uint32](x.v, y.v)}
  3829  }
  3830  
  3831  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3832  // adjacent pairs, yielding a vector of half as many elements with twice the
  3833  // input element size.
  3834  //
  3835  //	w[i] = x[i] * y[i]        // Double width
  3836  //	z[i] = w[2*i] + w[2*i+1]
  3837  func (x Uint16s) DotProductPairs(y Uint16s) (z Uint32s) {
  3838  	return Uint32s{spec.DotProductPairs[uint16, spec.WidthScalable, uint32](x.v, y.v)}
  3839  }
  3840  
  3841  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3842  // adjacent pairs, yielding a vector of half as many elements with twice the
  3843  // input element size.
  3844  //
  3845  //	w[i] = x[i] * y[i]        // Double width
  3846  //	z[i] = w[2*i] + w[2*i+1]
  3847  func (x Uint32x4) DotProductPairs(y Uint32x4) (z Uint64x2) {
  3848  	return Uint64x2{spec.DotProductPairs[uint32, spec.Width128, uint64](x.v, y.v)}
  3849  }
  3850  
  3851  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3852  // adjacent pairs, yielding a vector of half as many elements with twice the
  3853  // input element size.
  3854  //
  3855  //	w[i] = x[i] * y[i]        // Double width
  3856  //	z[i] = w[2*i] + w[2*i+1]
  3857  func (x Uint32x8) DotProductPairs(y Uint32x8) (z Uint64x4) {
  3858  	return Uint64x4{spec.DotProductPairs[uint32, spec.Width256, uint64](x.v, y.v)}
  3859  }
  3860  
  3861  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3862  // adjacent pairs, yielding a vector of half as many elements with twice the
  3863  // input element size.
  3864  //
  3865  //	w[i] = x[i] * y[i]        // Double width
  3866  //	z[i] = w[2*i] + w[2*i+1]
  3867  func (x Uint32x16) DotProductPairs(y Uint32x16) (z Uint64x8) {
  3868  	return Uint64x8{spec.DotProductPairs[uint32, spec.Width512, uint64](x.v, y.v)}
  3869  }
  3870  
  3871  // DotProductPairs multiplies corresponding elements of x and y, and sums
  3872  // adjacent pairs, yielding a vector of half as many elements with twice the
  3873  // input element size.
  3874  //
  3875  //	w[i] = x[i] * y[i]        // Double width
  3876  //	z[i] = w[2*i] + w[2*i+1]
  3877  func (x Uint32s) DotProductPairs(y Uint32s) (z Uint64s) {
  3878  	return Uint64s{spec.DotProductPairs[uint32, spec.WidthScalable, uint64](x.v, y.v)}
  3879  }
  3880  
  3881  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3882  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3883  // elements with twice the input element size.
  3884  //
  3885  //	w[i] = x[i] * y[i]        // Double width, saturated
  3886  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3887  func (x Uint8x16) DotProductPairsSaturated(y Int8x16) (z Int16x8) {
  3888  	return Int16x8{spec.DotProductPairsSaturated[uint8, spec.Width128, int8, int16](x.v, y.v)}
  3889  }
  3890  
  3891  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3892  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3893  // elements with twice the input element size.
  3894  //
  3895  //	w[i] = x[i] * y[i]        // Double width, saturated
  3896  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3897  func (x Uint8x32) DotProductPairsSaturated(y Int8x32) (z Int16x16) {
  3898  	return Int16x16{spec.DotProductPairsSaturated[uint8, spec.Width256, int8, int16](x.v, y.v)}
  3899  }
  3900  
  3901  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3902  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3903  // elements with twice the input element size.
  3904  //
  3905  //	w[i] = x[i] * y[i]        // Double width, saturated
  3906  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3907  func (x Uint8x64) DotProductPairsSaturated(y Int8x64) (z Int16x32) {
  3908  	return Int16x32{spec.DotProductPairsSaturated[uint8, spec.Width512, int8, int16](x.v, y.v)}
  3909  }
  3910  
  3911  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3912  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3913  // elements with twice the input element size.
  3914  //
  3915  //	w[i] = x[i] * y[i]        // Double width, saturated
  3916  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3917  func (x Uint8s) DotProductPairsSaturated(y Int8s) (z Int16s) {
  3918  	return Int16s{spec.DotProductPairsSaturated[uint8, spec.WidthScalable, int8, int16](x.v, y.v)}
  3919  }
  3920  
  3921  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3922  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3923  // elements with twice the input element size.
  3924  //
  3925  //	w[i] = x[i] * y[i]        // Double width, saturated
  3926  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3927  func (x Uint16x8) DotProductPairsSaturated(y Int16x8) (z Int32x4) {
  3928  	return Int32x4{spec.DotProductPairsSaturated[uint16, spec.Width128, int16, int32](x.v, y.v)}
  3929  }
  3930  
  3931  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3932  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3933  // elements with twice the input element size.
  3934  //
  3935  //	w[i] = x[i] * y[i]        // Double width, saturated
  3936  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3937  func (x Uint16x16) DotProductPairsSaturated(y Int16x16) (z Int32x8) {
  3938  	return Int32x8{spec.DotProductPairsSaturated[uint16, spec.Width256, int16, int32](x.v, y.v)}
  3939  }
  3940  
  3941  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3942  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3943  // elements with twice the input element size.
  3944  //
  3945  //	w[i] = x[i] * y[i]        // Double width, saturated
  3946  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3947  func (x Uint16x32) DotProductPairsSaturated(y Int16x32) (z Int32x16) {
  3948  	return Int32x16{spec.DotProductPairsSaturated[uint16, spec.Width512, int16, int32](x.v, y.v)}
  3949  }
  3950  
  3951  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3952  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3953  // elements with twice the input element size.
  3954  //
  3955  //	w[i] = x[i] * y[i]        // Double width, saturated
  3956  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3957  func (x Uint16s) DotProductPairsSaturated(y Int16s) (z Int32s) {
  3958  	return Int32s{spec.DotProductPairsSaturated[uint16, spec.WidthScalable, int16, int32](x.v, y.v)}
  3959  }
  3960  
  3961  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3962  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3963  // elements with twice the input element size.
  3964  //
  3965  //	w[i] = x[i] * y[i]        // Double width, saturated
  3966  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3967  func (x Uint32x4) DotProductPairsSaturated(y Int32x4) (z Int64x2) {
  3968  	return Int64x2{spec.DotProductPairsSaturated[uint32, spec.Width128, int32, int64](x.v, y.v)}
  3969  }
  3970  
  3971  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3972  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3973  // elements with twice the input element size.
  3974  //
  3975  //	w[i] = x[i] * y[i]        // Double width, saturated
  3976  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3977  func (x Uint32x8) DotProductPairsSaturated(y Int32x8) (z Int64x4) {
  3978  	return Int64x4{spec.DotProductPairsSaturated[uint32, spec.Width256, int32, int64](x.v, y.v)}
  3979  }
  3980  
  3981  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3982  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3983  // elements with twice the input element size.
  3984  //
  3985  //	w[i] = x[i] * y[i]        // Double width, saturated
  3986  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3987  func (x Uint32x16) DotProductPairsSaturated(y Int32x16) (z Int64x8) {
  3988  	return Int64x8{spec.DotProductPairsSaturated[uint32, spec.Width512, int32, int64](x.v, y.v)}
  3989  }
  3990  
  3991  // DotProductPairsSaturated multiplies corresponding elements of x and y, and
  3992  // sums adjacent pairs, all with saturation. It yields a vector of half as many
  3993  // elements with twice the input element size.
  3994  //
  3995  //	w[i] = x[i] * y[i]        // Double width, saturated
  3996  //	z[i] = w[2*i] + w[2*i+1]  // Saturated
  3997  func (x Uint32s) DotProductPairsSaturated(y Int32s) (z Int64s) {
  3998  	return Int64s{spec.DotProductPairsSaturated[uint32, spec.WidthScalable, int32, int64](x.v, y.v)}
  3999  }
  4000  
  4001  // ReshapeToUint16s reinterprets the bits of x as a Uint16x8 vector. The least
  4002  // significant bit of element 0 is bit 0
  4003  func (x Uint8x16) ReshapeToUint16s() (z Uint16x8) {
  4004  	return Uint16x8{spec.ReshapeToUints[uint8, spec.Width128, uint16](x.v)}
  4005  }
  4006  
  4007  // ReshapeToUint32s reinterprets the bits of x as a Uint32x4 vector. The least
  4008  // significant bit of element 0 is bit 0
  4009  func (x Uint8x16) ReshapeToUint32s() (z Uint32x4) {
  4010  	return Uint32x4{spec.ReshapeToUints[uint8, spec.Width128, uint32](x.v)}
  4011  }
  4012  
  4013  // ReshapeToUint64s reinterprets the bits of x as a Uint64x2 vector. The least
  4014  // significant bit of element 0 is bit 0
  4015  func (x Uint8x16) ReshapeToUint64s() (z Uint64x2) {
  4016  	return Uint64x2{spec.ReshapeToUints[uint8, spec.Width128, uint64](x.v)}
  4017  }
  4018  
  4019  // ReshapeToUint16s reinterprets the bits of x as a Uint16x16 vector. The least
  4020  // significant bit of element 0 is bit 0
  4021  func (x Uint8x32) ReshapeToUint16s() (z Uint16x16) {
  4022  	return Uint16x16{spec.ReshapeToUints[uint8, spec.Width256, uint16](x.v)}
  4023  }
  4024  
  4025  // ReshapeToUint32s reinterprets the bits of x as a Uint32x8 vector. The least
  4026  // significant bit of element 0 is bit 0
  4027  func (x Uint8x32) ReshapeToUint32s() (z Uint32x8) {
  4028  	return Uint32x8{spec.ReshapeToUints[uint8, spec.Width256, uint32](x.v)}
  4029  }
  4030  
  4031  // ReshapeToUint64s reinterprets the bits of x as a Uint64x4 vector. The least
  4032  // significant bit of element 0 is bit 0
  4033  func (x Uint8x32) ReshapeToUint64s() (z Uint64x4) {
  4034  	return Uint64x4{spec.ReshapeToUints[uint8, spec.Width256, uint64](x.v)}
  4035  }
  4036  
  4037  // ReshapeToUint16s reinterprets the bits of x as a Uint16x32 vector. The least
  4038  // significant bit of element 0 is bit 0
  4039  func (x Uint8x64) ReshapeToUint16s() (z Uint16x32) {
  4040  	return Uint16x32{spec.ReshapeToUints[uint8, spec.Width512, uint16](x.v)}
  4041  }
  4042  
  4043  // ReshapeToUint32s reinterprets the bits of x as a Uint32x16 vector. The least
  4044  // significant bit of element 0 is bit 0
  4045  func (x Uint8x64) ReshapeToUint32s() (z Uint32x16) {
  4046  	return Uint32x16{spec.ReshapeToUints[uint8, spec.Width512, uint32](x.v)}
  4047  }
  4048  
  4049  // ReshapeToUint64s reinterprets the bits of x as a Uint64x8 vector. The least
  4050  // significant bit of element 0 is bit 0
  4051  func (x Uint8x64) ReshapeToUint64s() (z Uint64x8) {
  4052  	return Uint64x8{spec.ReshapeToUints[uint8, spec.Width512, uint64](x.v)}
  4053  }
  4054  
  4055  // ReshapeToUint16s reinterprets the bits of x as a Uint16s vector. The least
  4056  // significant bit of element 0 is bit 0
  4057  func (x Uint8s) ReshapeToUint16s() (z Uint16s) {
  4058  	return Uint16s{spec.ReshapeToUints[uint8, spec.WidthScalable, uint16](x.v)}
  4059  }
  4060  
  4061  // ReshapeToUint32s reinterprets the bits of x as a Uint32s vector. The least
  4062  // significant bit of element 0 is bit 0
  4063  func (x Uint8s) ReshapeToUint32s() (z Uint32s) {
  4064  	return Uint32s{spec.ReshapeToUints[uint8, spec.WidthScalable, uint32](x.v)}
  4065  }
  4066  
  4067  // ReshapeToUint64s reinterprets the bits of x as a Uint64s vector. The least
  4068  // significant bit of element 0 is bit 0
  4069  func (x Uint8s) ReshapeToUint64s() (z Uint64s) {
  4070  	return Uint64s{spec.ReshapeToUints[uint8, spec.WidthScalable, uint64](x.v)}
  4071  }
  4072  
  4073  // ReshapeToUint8s reinterprets the bits of x as a Uint8x16 vector. The least
  4074  // significant bit of element 0 is bit 0
  4075  func (x Uint16x8) ReshapeToUint8s() (z Uint8x16) {
  4076  	return Uint8x16{spec.ReshapeToUints[uint16, spec.Width128, uint8](x.v)}
  4077  }
  4078  
  4079  // ReshapeToUint32s reinterprets the bits of x as a Uint32x4 vector. The least
  4080  // significant bit of element 0 is bit 0
  4081  func (x Uint16x8) ReshapeToUint32s() (z Uint32x4) {
  4082  	return Uint32x4{spec.ReshapeToUints[uint16, spec.Width128, uint32](x.v)}
  4083  }
  4084  
  4085  // ReshapeToUint64s reinterprets the bits of x as a Uint64x2 vector. The least
  4086  // significant bit of element 0 is bit 0
  4087  func (x Uint16x8) ReshapeToUint64s() (z Uint64x2) {
  4088  	return Uint64x2{spec.ReshapeToUints[uint16, spec.Width128, uint64](x.v)}
  4089  }
  4090  
  4091  // ReshapeToUint8s reinterprets the bits of x as a Uint8x32 vector. The least
  4092  // significant bit of element 0 is bit 0
  4093  func (x Uint16x16) ReshapeToUint8s() (z Uint8x32) {
  4094  	return Uint8x32{spec.ReshapeToUints[uint16, spec.Width256, uint8](x.v)}
  4095  }
  4096  
  4097  // ReshapeToUint32s reinterprets the bits of x as a Uint32x8 vector. The least
  4098  // significant bit of element 0 is bit 0
  4099  func (x Uint16x16) ReshapeToUint32s() (z Uint32x8) {
  4100  	return Uint32x8{spec.ReshapeToUints[uint16, spec.Width256, uint32](x.v)}
  4101  }
  4102  
  4103  // ReshapeToUint64s reinterprets the bits of x as a Uint64x4 vector. The least
  4104  // significant bit of element 0 is bit 0
  4105  func (x Uint16x16) ReshapeToUint64s() (z Uint64x4) {
  4106  	return Uint64x4{spec.ReshapeToUints[uint16, spec.Width256, uint64](x.v)}
  4107  }
  4108  
  4109  // ReshapeToUint8s reinterprets the bits of x as a Uint8x64 vector. The least
  4110  // significant bit of element 0 is bit 0
  4111  func (x Uint16x32) ReshapeToUint8s() (z Uint8x64) {
  4112  	return Uint8x64{spec.ReshapeToUints[uint16, spec.Width512, uint8](x.v)}
  4113  }
  4114  
  4115  // ReshapeToUint32s reinterprets the bits of x as a Uint32x16 vector. The least
  4116  // significant bit of element 0 is bit 0
  4117  func (x Uint16x32) ReshapeToUint32s() (z Uint32x16) {
  4118  	return Uint32x16{spec.ReshapeToUints[uint16, spec.Width512, uint32](x.v)}
  4119  }
  4120  
  4121  // ReshapeToUint64s reinterprets the bits of x as a Uint64x8 vector. The least
  4122  // significant bit of element 0 is bit 0
  4123  func (x Uint16x32) ReshapeToUint64s() (z Uint64x8) {
  4124  	return Uint64x8{spec.ReshapeToUints[uint16, spec.Width512, uint64](x.v)}
  4125  }
  4126  
  4127  // ReshapeToUint8s reinterprets the bits of x as a Uint8s vector. The least
  4128  // significant bit of element 0 is bit 0
  4129  func (x Uint16s) ReshapeToUint8s() (z Uint8s) {
  4130  	return Uint8s{spec.ReshapeToUints[uint16, spec.WidthScalable, uint8](x.v)}
  4131  }
  4132  
  4133  // ReshapeToUint32s reinterprets the bits of x as a Uint32s vector. The least
  4134  // significant bit of element 0 is bit 0
  4135  func (x Uint16s) ReshapeToUint32s() (z Uint32s) {
  4136  	return Uint32s{spec.ReshapeToUints[uint16, spec.WidthScalable, uint32](x.v)}
  4137  }
  4138  
  4139  // ReshapeToUint64s reinterprets the bits of x as a Uint64s vector. The least
  4140  // significant bit of element 0 is bit 0
  4141  func (x Uint16s) ReshapeToUint64s() (z Uint64s) {
  4142  	return Uint64s{spec.ReshapeToUints[uint16, spec.WidthScalable, uint64](x.v)}
  4143  }
  4144  
  4145  // ReshapeToUint8s reinterprets the bits of x as a Uint8x16 vector. The least
  4146  // significant bit of element 0 is bit 0
  4147  func (x Uint32x4) ReshapeToUint8s() (z Uint8x16) {
  4148  	return Uint8x16{spec.ReshapeToUints[uint32, spec.Width128, uint8](x.v)}
  4149  }
  4150  
  4151  // ReshapeToUint16s reinterprets the bits of x as a Uint16x8 vector. The least
  4152  // significant bit of element 0 is bit 0
  4153  func (x Uint32x4) ReshapeToUint16s() (z Uint16x8) {
  4154  	return Uint16x8{spec.ReshapeToUints[uint32, spec.Width128, uint16](x.v)}
  4155  }
  4156  
  4157  // ReshapeToUint64s reinterprets the bits of x as a Uint64x2 vector. The least
  4158  // significant bit of element 0 is bit 0
  4159  func (x Uint32x4) ReshapeToUint64s() (z Uint64x2) {
  4160  	return Uint64x2{spec.ReshapeToUints[uint32, spec.Width128, uint64](x.v)}
  4161  }
  4162  
  4163  // ReshapeToUint8s reinterprets the bits of x as a Uint8x32 vector. The least
  4164  // significant bit of element 0 is bit 0
  4165  func (x Uint32x8) ReshapeToUint8s() (z Uint8x32) {
  4166  	return Uint8x32{spec.ReshapeToUints[uint32, spec.Width256, uint8](x.v)}
  4167  }
  4168  
  4169  // ReshapeToUint16s reinterprets the bits of x as a Uint16x16 vector. The least
  4170  // significant bit of element 0 is bit 0
  4171  func (x Uint32x8) ReshapeToUint16s() (z Uint16x16) {
  4172  	return Uint16x16{spec.ReshapeToUints[uint32, spec.Width256, uint16](x.v)}
  4173  }
  4174  
  4175  // ReshapeToUint64s reinterprets the bits of x as a Uint64x4 vector. The least
  4176  // significant bit of element 0 is bit 0
  4177  func (x Uint32x8) ReshapeToUint64s() (z Uint64x4) {
  4178  	return Uint64x4{spec.ReshapeToUints[uint32, spec.Width256, uint64](x.v)}
  4179  }
  4180  
  4181  // ReshapeToUint8s reinterprets the bits of x as a Uint8x64 vector. The least
  4182  // significant bit of element 0 is bit 0
  4183  func (x Uint32x16) ReshapeToUint8s() (z Uint8x64) {
  4184  	return Uint8x64{spec.ReshapeToUints[uint32, spec.Width512, uint8](x.v)}
  4185  }
  4186  
  4187  // ReshapeToUint16s reinterprets the bits of x as a Uint16x32 vector. The least
  4188  // significant bit of element 0 is bit 0
  4189  func (x Uint32x16) ReshapeToUint16s() (z Uint16x32) {
  4190  	return Uint16x32{spec.ReshapeToUints[uint32, spec.Width512, uint16](x.v)}
  4191  }
  4192  
  4193  // ReshapeToUint64s reinterprets the bits of x as a Uint64x8 vector. The least
  4194  // significant bit of element 0 is bit 0
  4195  func (x Uint32x16) ReshapeToUint64s() (z Uint64x8) {
  4196  	return Uint64x8{spec.ReshapeToUints[uint32, spec.Width512, uint64](x.v)}
  4197  }
  4198  
  4199  // ReshapeToUint8s reinterprets the bits of x as a Uint8s vector. The least
  4200  // significant bit of element 0 is bit 0
  4201  func (x Uint32s) ReshapeToUint8s() (z Uint8s) {
  4202  	return Uint8s{spec.ReshapeToUints[uint32, spec.WidthScalable, uint8](x.v)}
  4203  }
  4204  
  4205  // ReshapeToUint16s reinterprets the bits of x as a Uint16s vector. The least
  4206  // significant bit of element 0 is bit 0
  4207  func (x Uint32s) ReshapeToUint16s() (z Uint16s) {
  4208  	return Uint16s{spec.ReshapeToUints[uint32, spec.WidthScalable, uint16](x.v)}
  4209  }
  4210  
  4211  // ReshapeToUint64s reinterprets the bits of x as a Uint64s vector. The least
  4212  // significant bit of element 0 is bit 0
  4213  func (x Uint32s) ReshapeToUint64s() (z Uint64s) {
  4214  	return Uint64s{spec.ReshapeToUints[uint32, spec.WidthScalable, uint64](x.v)}
  4215  }
  4216  
  4217  // ReshapeToUint8s reinterprets the bits of x as a Uint8x16 vector. The least
  4218  // significant bit of element 0 is bit 0
  4219  func (x Uint64x2) ReshapeToUint8s() (z Uint8x16) {
  4220  	return Uint8x16{spec.ReshapeToUints[uint64, spec.Width128, uint8](x.v)}
  4221  }
  4222  
  4223  // ReshapeToUint16s reinterprets the bits of x as a Uint16x8 vector. The least
  4224  // significant bit of element 0 is bit 0
  4225  func (x Uint64x2) ReshapeToUint16s() (z Uint16x8) {
  4226  	return Uint16x8{spec.ReshapeToUints[uint64, spec.Width128, uint16](x.v)}
  4227  }
  4228  
  4229  // ReshapeToUint32s reinterprets the bits of x as a Uint32x4 vector. The least
  4230  // significant bit of element 0 is bit 0
  4231  func (x Uint64x2) ReshapeToUint32s() (z Uint32x4) {
  4232  	return Uint32x4{spec.ReshapeToUints[uint64, spec.Width128, uint32](x.v)}
  4233  }
  4234  
  4235  // ReshapeToUint8s reinterprets the bits of x as a Uint8x32 vector. The least
  4236  // significant bit of element 0 is bit 0
  4237  func (x Uint64x4) ReshapeToUint8s() (z Uint8x32) {
  4238  	return Uint8x32{spec.ReshapeToUints[uint64, spec.Width256, uint8](x.v)}
  4239  }
  4240  
  4241  // ReshapeToUint16s reinterprets the bits of x as a Uint16x16 vector. The least
  4242  // significant bit of element 0 is bit 0
  4243  func (x Uint64x4) ReshapeToUint16s() (z Uint16x16) {
  4244  	return Uint16x16{spec.ReshapeToUints[uint64, spec.Width256, uint16](x.v)}
  4245  }
  4246  
  4247  // ReshapeToUint32s reinterprets the bits of x as a Uint32x8 vector. The least
  4248  // significant bit of element 0 is bit 0
  4249  func (x Uint64x4) ReshapeToUint32s() (z Uint32x8) {
  4250  	return Uint32x8{spec.ReshapeToUints[uint64, spec.Width256, uint32](x.v)}
  4251  }
  4252  
  4253  // ReshapeToUint8s reinterprets the bits of x as a Uint8x64 vector. The least
  4254  // significant bit of element 0 is bit 0
  4255  func (x Uint64x8) ReshapeToUint8s() (z Uint8x64) {
  4256  	return Uint8x64{spec.ReshapeToUints[uint64, spec.Width512, uint8](x.v)}
  4257  }
  4258  
  4259  // ReshapeToUint16s reinterprets the bits of x as a Uint16x32 vector. The least
  4260  // significant bit of element 0 is bit 0
  4261  func (x Uint64x8) ReshapeToUint16s() (z Uint16x32) {
  4262  	return Uint16x32{spec.ReshapeToUints[uint64, spec.Width512, uint16](x.v)}
  4263  }
  4264  
  4265  // ReshapeToUint32s reinterprets the bits of x as a Uint32x16 vector. The least
  4266  // significant bit of element 0 is bit 0
  4267  func (x Uint64x8) ReshapeToUint32s() (z Uint32x16) {
  4268  	return Uint32x16{spec.ReshapeToUints[uint64, spec.Width512, uint32](x.v)}
  4269  }
  4270  
  4271  // ReshapeToUint8s reinterprets the bits of x as a Uint8s vector. The least
  4272  // significant bit of element 0 is bit 0
  4273  func (x Uint64s) ReshapeToUint8s() (z Uint8s) {
  4274  	return Uint8s{spec.ReshapeToUints[uint64, spec.WidthScalable, uint8](x.v)}
  4275  }
  4276  
  4277  // ReshapeToUint16s reinterprets the bits of x as a Uint16s vector. The least
  4278  // significant bit of element 0 is bit 0
  4279  func (x Uint64s) ReshapeToUint16s() (z Uint16s) {
  4280  	return Uint16s{spec.ReshapeToUints[uint64, spec.WidthScalable, uint16](x.v)}
  4281  }
  4282  
  4283  // ReshapeToUint32s reinterprets the bits of x as a Uint32s vector. The least
  4284  // significant bit of element 0 is bit 0
  4285  func (x Uint64s) ReshapeToUint32s() (z Uint32s) {
  4286  	return Uint32s{spec.ReshapeToUints[uint64, spec.WidthScalable, uint32](x.v)}
  4287  }
  4288  
  4289  // Permute permutes x.
  4290  //
  4291  //	z[i] = x[indices[i] % len(x)]
  4292  func (x Float32x4) Permute(indices Uint32x4) (z Float32x4) {
  4293  	return Float32x4{spec.Permute[float32, spec.Width128, uint32](x.v, indices.v)}
  4294  }
  4295  
  4296  // Permute permutes x.
  4297  //
  4298  //	z[i] = x[indices[i] % len(x)]
  4299  func (x Float32x8) Permute(indices Uint32x8) (z Float32x8) {
  4300  	return Float32x8{spec.Permute[float32, spec.Width256, uint32](x.v, indices.v)}
  4301  }
  4302  
  4303  // Permute permutes x.
  4304  //
  4305  //	z[i] = x[indices[i] % len(x)]
  4306  func (x Float32x16) Permute(indices Uint32x16) (z Float32x16) {
  4307  	return Float32x16{spec.Permute[float32, spec.Width512, uint32](x.v, indices.v)}
  4308  }
  4309  
  4310  // Permute permutes x.
  4311  //
  4312  //	z[i] = x[indices[i] % len(x)]
  4313  func (x Float32s) Permute(indices Uint32s) (z Float32s) {
  4314  	return Float32s{spec.Permute[float32, spec.WidthScalable, uint32](x.v, indices.v)}
  4315  }
  4316  
  4317  // Permute permutes x.
  4318  //
  4319  //	z[i] = x[indices[i] % len(x)]
  4320  func (x Float64x2) Permute(indices Uint64x2) (z Float64x2) {
  4321  	return Float64x2{spec.Permute[float64, spec.Width128, uint64](x.v, indices.v)}
  4322  }
  4323  
  4324  // Permute permutes x.
  4325  //
  4326  //	z[i] = x[indices[i] % len(x)]
  4327  func (x Float64x4) Permute(indices Uint64x4) (z Float64x4) {
  4328  	return Float64x4{spec.Permute[float64, spec.Width256, uint64](x.v, indices.v)}
  4329  }
  4330  
  4331  // Permute permutes x.
  4332  //
  4333  //	z[i] = x[indices[i] % len(x)]
  4334  func (x Float64x8) Permute(indices Uint64x8) (z Float64x8) {
  4335  	return Float64x8{spec.Permute[float64, spec.Width512, uint64](x.v, indices.v)}
  4336  }
  4337  
  4338  // Permute permutes x.
  4339  //
  4340  //	z[i] = x[indices[i] % len(x)]
  4341  func (x Float64s) Permute(indices Uint64s) (z Float64s) {
  4342  	return Float64s{spec.Permute[float64, spec.WidthScalable, uint64](x.v, indices.v)}
  4343  }
  4344  
  4345  // Permute permutes x.
  4346  //
  4347  //	z[i] = x[indices[i] % len(x)]
  4348  func (x Int8x16) Permute(indices Uint8x16) (z Int8x16) {
  4349  	return Int8x16{spec.Permute[int8, spec.Width128, uint8](x.v, indices.v)}
  4350  }
  4351  
  4352  // Permute permutes x.
  4353  //
  4354  //	z[i] = x[indices[i] % len(x)]
  4355  func (x Int8x32) Permute(indices Uint8x32) (z Int8x32) {
  4356  	return Int8x32{spec.Permute[int8, spec.Width256, uint8](x.v, indices.v)}
  4357  }
  4358  
  4359  // Permute permutes x.
  4360  //
  4361  //	z[i] = x[indices[i] % len(x)]
  4362  func (x Int8x64) Permute(indices Uint8x64) (z Int8x64) {
  4363  	return Int8x64{spec.Permute[int8, spec.Width512, uint8](x.v, indices.v)}
  4364  }
  4365  
  4366  // Permute permutes x.
  4367  //
  4368  //	z[i] = x[indices[i] % len(x)]
  4369  func (x Int8s) Permute(indices Uint8s) (z Int8s) {
  4370  	return Int8s{spec.Permute[int8, spec.WidthScalable, uint8](x.v, indices.v)}
  4371  }
  4372  
  4373  // Permute permutes x.
  4374  //
  4375  //	z[i] = x[indices[i] % len(x)]
  4376  func (x Int16x8) Permute(indices Uint16x8) (z Int16x8) {
  4377  	return Int16x8{spec.Permute[int16, spec.Width128, uint16](x.v, indices.v)}
  4378  }
  4379  
  4380  // Permute permutes x.
  4381  //
  4382  //	z[i] = x[indices[i] % len(x)]
  4383  func (x Int16x16) Permute(indices Uint16x16) (z Int16x16) {
  4384  	return Int16x16{spec.Permute[int16, spec.Width256, uint16](x.v, indices.v)}
  4385  }
  4386  
  4387  // Permute permutes x.
  4388  //
  4389  //	z[i] = x[indices[i] % len(x)]
  4390  func (x Int16x32) Permute(indices Uint16x32) (z Int16x32) {
  4391  	return Int16x32{spec.Permute[int16, spec.Width512, uint16](x.v, indices.v)}
  4392  }
  4393  
  4394  // Permute permutes x.
  4395  //
  4396  //	z[i] = x[indices[i] % len(x)]
  4397  func (x Int16s) Permute(indices Uint16s) (z Int16s) {
  4398  	return Int16s{spec.Permute[int16, spec.WidthScalable, uint16](x.v, indices.v)}
  4399  }
  4400  
  4401  // Permute permutes x.
  4402  //
  4403  //	z[i] = x[indices[i] % len(x)]
  4404  func (x Int32x4) Permute(indices Uint32x4) (z Int32x4) {
  4405  	return Int32x4{spec.Permute[int32, spec.Width128, uint32](x.v, indices.v)}
  4406  }
  4407  
  4408  // Permute permutes x.
  4409  //
  4410  //	z[i] = x[indices[i] % len(x)]
  4411  func (x Int32x8) Permute(indices Uint32x8) (z Int32x8) {
  4412  	return Int32x8{spec.Permute[int32, spec.Width256, uint32](x.v, indices.v)}
  4413  }
  4414  
  4415  // Permute permutes x.
  4416  //
  4417  //	z[i] = x[indices[i] % len(x)]
  4418  func (x Int32x16) Permute(indices Uint32x16) (z Int32x16) {
  4419  	return Int32x16{spec.Permute[int32, spec.Width512, uint32](x.v, indices.v)}
  4420  }
  4421  
  4422  // Permute permutes x.
  4423  //
  4424  //	z[i] = x[indices[i] % len(x)]
  4425  func (x Int32s) Permute(indices Uint32s) (z Int32s) {
  4426  	return Int32s{spec.Permute[int32, spec.WidthScalable, uint32](x.v, indices.v)}
  4427  }
  4428  
  4429  // Permute permutes x.
  4430  //
  4431  //	z[i] = x[indices[i] % len(x)]
  4432  func (x Int64x2) Permute(indices Uint64x2) (z Int64x2) {
  4433  	return Int64x2{spec.Permute[int64, spec.Width128, uint64](x.v, indices.v)}
  4434  }
  4435  
  4436  // Permute permutes x.
  4437  //
  4438  //	z[i] = x[indices[i] % len(x)]
  4439  func (x Int64x4) Permute(indices Uint64x4) (z Int64x4) {
  4440  	return Int64x4{spec.Permute[int64, spec.Width256, uint64](x.v, indices.v)}
  4441  }
  4442  
  4443  // Permute permutes x.
  4444  //
  4445  //	z[i] = x[indices[i] % len(x)]
  4446  func (x Int64x8) Permute(indices Uint64x8) (z Int64x8) {
  4447  	return Int64x8{spec.Permute[int64, spec.Width512, uint64](x.v, indices.v)}
  4448  }
  4449  
  4450  // Permute permutes x.
  4451  //
  4452  //	z[i] = x[indices[i] % len(x)]
  4453  func (x Int64s) Permute(indices Uint64s) (z Int64s) {
  4454  	return Int64s{spec.Permute[int64, spec.WidthScalable, uint64](x.v, indices.v)}
  4455  }
  4456  
  4457  // Permute permutes x.
  4458  //
  4459  //	z[i] = x[indices[i] % len(x)]
  4460  func (x Uint8x16) Permute(indices Uint8x16) (z Uint8x16) {
  4461  	return Uint8x16{spec.Permute[uint8, spec.Width128, uint8](x.v, indices.v)}
  4462  }
  4463  
  4464  // Permute permutes x.
  4465  //
  4466  //	z[i] = x[indices[i] % len(x)]
  4467  func (x Uint8x32) Permute(indices Uint8x32) (z Uint8x32) {
  4468  	return Uint8x32{spec.Permute[uint8, spec.Width256, uint8](x.v, indices.v)}
  4469  }
  4470  
  4471  // Permute permutes x.
  4472  //
  4473  //	z[i] = x[indices[i] % len(x)]
  4474  func (x Uint8x64) Permute(indices Uint8x64) (z Uint8x64) {
  4475  	return Uint8x64{spec.Permute[uint8, spec.Width512, uint8](x.v, indices.v)}
  4476  }
  4477  
  4478  // Permute permutes x.
  4479  //
  4480  //	z[i] = x[indices[i] % len(x)]
  4481  func (x Uint8s) Permute(indices Uint8s) (z Uint8s) {
  4482  	return Uint8s{spec.Permute[uint8, spec.WidthScalable, uint8](x.v, indices.v)}
  4483  }
  4484  
  4485  // Permute permutes x.
  4486  //
  4487  //	z[i] = x[indices[i] % len(x)]
  4488  func (x Uint16x8) Permute(indices Uint16x8) (z Uint16x8) {
  4489  	return Uint16x8{spec.Permute[uint16, spec.Width128, uint16](x.v, indices.v)}
  4490  }
  4491  
  4492  // Permute permutes x.
  4493  //
  4494  //	z[i] = x[indices[i] % len(x)]
  4495  func (x Uint16x16) Permute(indices Uint16x16) (z Uint16x16) {
  4496  	return Uint16x16{spec.Permute[uint16, spec.Width256, uint16](x.v, indices.v)}
  4497  }
  4498  
  4499  // Permute permutes x.
  4500  //
  4501  //	z[i] = x[indices[i] % len(x)]
  4502  func (x Uint16x32) Permute(indices Uint16x32) (z Uint16x32) {
  4503  	return Uint16x32{spec.Permute[uint16, spec.Width512, uint16](x.v, indices.v)}
  4504  }
  4505  
  4506  // Permute permutes x.
  4507  //
  4508  //	z[i] = x[indices[i] % len(x)]
  4509  func (x Uint16s) Permute(indices Uint16s) (z Uint16s) {
  4510  	return Uint16s{spec.Permute[uint16, spec.WidthScalable, uint16](x.v, indices.v)}
  4511  }
  4512  
  4513  // Permute permutes x.
  4514  //
  4515  //	z[i] = x[indices[i] % len(x)]
  4516  func (x Uint32x4) Permute(indices Uint32x4) (z Uint32x4) {
  4517  	return Uint32x4{spec.Permute[uint32, spec.Width128, uint32](x.v, indices.v)}
  4518  }
  4519  
  4520  // Permute permutes x.
  4521  //
  4522  //	z[i] = x[indices[i] % len(x)]
  4523  func (x Uint32x8) Permute(indices Uint32x8) (z Uint32x8) {
  4524  	return Uint32x8{spec.Permute[uint32, spec.Width256, uint32](x.v, indices.v)}
  4525  }
  4526  
  4527  // Permute permutes x.
  4528  //
  4529  //	z[i] = x[indices[i] % len(x)]
  4530  func (x Uint32x16) Permute(indices Uint32x16) (z Uint32x16) {
  4531  	return Uint32x16{spec.Permute[uint32, spec.Width512, uint32](x.v, indices.v)}
  4532  }
  4533  
  4534  // Permute permutes x.
  4535  //
  4536  //	z[i] = x[indices[i] % len(x)]
  4537  func (x Uint32s) Permute(indices Uint32s) (z Uint32s) {
  4538  	return Uint32s{spec.Permute[uint32, spec.WidthScalable, uint32](x.v, indices.v)}
  4539  }
  4540  
  4541  // Permute permutes x.
  4542  //
  4543  //	z[i] = x[indices[i] % len(x)]
  4544  func (x Uint64x2) Permute(indices Uint64x2) (z Uint64x2) {
  4545  	return Uint64x2{spec.Permute[uint64, spec.Width128, uint64](x.v, indices.v)}
  4546  }
  4547  
  4548  // Permute permutes x.
  4549  //
  4550  //	z[i] = x[indices[i] % len(x)]
  4551  func (x Uint64x4) Permute(indices Uint64x4) (z Uint64x4) {
  4552  	return Uint64x4{spec.Permute[uint64, spec.Width256, uint64](x.v, indices.v)}
  4553  }
  4554  
  4555  // Permute permutes x.
  4556  //
  4557  //	z[i] = x[indices[i] % len(x)]
  4558  func (x Uint64x8) Permute(indices Uint64x8) (z Uint64x8) {
  4559  	return Uint64x8{spec.Permute[uint64, spec.Width512, uint64](x.v, indices.v)}
  4560  }
  4561  
  4562  // Permute permutes x.
  4563  //
  4564  //	z[i] = x[indices[i] % len(x)]
  4565  func (x Uint64s) Permute(indices Uint64s) (z Uint64s) {
  4566  	return Uint64s{spec.Permute[uint64, spec.WidthScalable, uint64](x.v, indices.v)}
  4567  }
  4568  

View as plain text