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

View as plain text