Source file src/simd/archsimd/maskmerge_gen_amd64.go

     1  // Code generated by 'tmplgen'; DO NOT EDIT.
     2  
     3  //go:build goexperiment.simd
     4  
     5  package archsimd
     6  
     7  // Masked returns x but with elements zeroed where mask is false.
     8  //
     9  // Emulated, CPU Feature: AVX
    10  func (x Int8x16) Masked(mask Mask8x16) Int8x16 {
    11  	im := mask.ToInt8x16()
    12  	return im.And(x)
    13  }
    14  
    15  // Merge returns x but with elements set to y where mask is false.
    16  //
    17  // Emulated, CPU Feature: AVX
    18  //
    19  // Deprecated: use x.IfElse(mask, y)
    20  //
    21  //go:fix inline
    22  func (x Int8x16) Merge(y Int8x16, mask Mask8x16) Int8x16 {
    23  	return x.IfElse(mask, y)
    24  }
    25  
    26  // IfElse returns x but with elements set to y where mask is false.
    27  //
    28  // Emulated, CPU Feature: AVX
    29  func (x Int8x16) IfElse(mask Mask8x16, y Int8x16) Int8x16 {
    30  	im := mask.ToInt8x16()
    31  	return y.blend(x, im)
    32  }
    33  
    34  // Masked returns x but with elements zeroed where mask is false.
    35  //
    36  // Emulated, CPU Feature: AVX
    37  func (x Int16x8) Masked(mask Mask16x8) Int16x8 {
    38  	im := mask.ToInt16x8()
    39  	return im.And(x)
    40  }
    41  
    42  // Merge returns x but with elements set to y where mask is false.
    43  //
    44  // Emulated, CPU Feature: AVX
    45  //
    46  // Deprecated: use x.IfElse(mask, y)
    47  //
    48  //go:fix inline
    49  func (x Int16x8) Merge(y Int16x8, mask Mask16x8) Int16x8 {
    50  	return x.IfElse(mask, y)
    51  }
    52  
    53  // IfElse returns x but with elements set to y where mask is false.
    54  //
    55  // Emulated, CPU Feature: AVX
    56  func (x Int16x8) IfElse(mask Mask16x8, y Int16x8) Int16x8 {
    57  	im := mask.ToInt16x8().AsInt8x16()
    58  	ix := x.AsInt8x16()
    59  	iy := y.AsInt8x16()
    60  	return iy.blend(ix, im).AsInt16x8()
    61  }
    62  
    63  // Masked returns x but with elements zeroed where mask is false.
    64  //
    65  // Emulated, CPU Feature: AVX
    66  func (x Int32x4) Masked(mask Mask32x4) Int32x4 {
    67  	im := mask.ToInt32x4()
    68  	return im.And(x)
    69  }
    70  
    71  // Merge returns x but with elements set to y where mask is false.
    72  //
    73  // Emulated, CPU Feature: AVX
    74  //
    75  // Deprecated: use x.IfElse(mask, y)
    76  //
    77  //go:fix inline
    78  func (x Int32x4) Merge(y Int32x4, mask Mask32x4) Int32x4 {
    79  	return x.IfElse(mask, y)
    80  }
    81  
    82  // IfElse returns x but with elements set to y where mask is false.
    83  //
    84  // Emulated, CPU Feature: AVX
    85  func (x Int32x4) IfElse(mask Mask32x4, y Int32x4) Int32x4 {
    86  	im := mask.ToInt32x4().AsInt8x16()
    87  	ix := x.AsInt8x16()
    88  	iy := y.AsInt8x16()
    89  	return iy.blend(ix, im).AsInt32x4()
    90  }
    91  
    92  // Masked returns x but with elements zeroed where mask is false.
    93  //
    94  // Emulated, CPU Feature: AVX
    95  func (x Int64x2) Masked(mask Mask64x2) Int64x2 {
    96  	im := mask.ToInt64x2()
    97  	return im.And(x)
    98  }
    99  
   100  // Merge returns x but with elements set to y where mask is false.
   101  //
   102  // Emulated, CPU Feature: AVX
   103  //
   104  // Deprecated: use x.IfElse(mask, y)
   105  //
   106  //go:fix inline
   107  func (x Int64x2) Merge(y Int64x2, mask Mask64x2) Int64x2 {
   108  	return x.IfElse(mask, y)
   109  }
   110  
   111  // IfElse returns x but with elements set to y where mask is false.
   112  //
   113  // Emulated, CPU Feature: AVX
   114  func (x Int64x2) IfElse(mask Mask64x2, y Int64x2) Int64x2 {
   115  	im := mask.ToInt64x2().AsInt8x16()
   116  	ix := x.AsInt8x16()
   117  	iy := y.AsInt8x16()
   118  	return iy.blend(ix, im).AsInt64x2()
   119  }
   120  
   121  // Masked returns x but with elements zeroed where mask is false.
   122  //
   123  // Emulated, CPU Feature: AVX
   124  func (x Uint8x16) Masked(mask Mask8x16) Uint8x16 {
   125  	im := mask.ToInt8x16()
   126  	return x.AsInt8x16().And(im).AsUint8x16()
   127  }
   128  
   129  // Merge returns x but with elements set to y where mask is false.
   130  //
   131  // Emulated, CPU Feature: AVX
   132  //
   133  // Deprecated: use x.IfElse(mask, y)
   134  //
   135  //go:fix inline
   136  func (x Uint8x16) Merge(y Uint8x16, mask Mask8x16) Uint8x16 {
   137  	return x.IfElse(mask, y)
   138  }
   139  
   140  // IfElse returns x but with elements set to y where mask is false.
   141  //
   142  // Emulated, CPU Feature: AVX
   143  func (x Uint8x16) IfElse(mask Mask8x16, y Uint8x16) Uint8x16 {
   144  	im := mask.ToInt8x16()
   145  	ix := x.AsInt8x16()
   146  	iy := y.AsInt8x16()
   147  	return iy.blend(ix, im).AsUint8x16()
   148  }
   149  
   150  // Masked returns x but with elements zeroed where mask is false.
   151  //
   152  // Emulated, CPU Feature: AVX
   153  func (x Uint16x8) Masked(mask Mask16x8) Uint16x8 {
   154  	im := mask.ToInt16x8()
   155  	return x.AsInt16x8().And(im).AsUint16x8()
   156  }
   157  
   158  // Merge returns x but with elements set to y where mask is false.
   159  //
   160  // Emulated, CPU Feature: AVX
   161  //
   162  // Deprecated: use x.IfElse(mask, y)
   163  //
   164  //go:fix inline
   165  func (x Uint16x8) Merge(y Uint16x8, mask Mask16x8) Uint16x8 {
   166  	return x.IfElse(mask, y)
   167  }
   168  
   169  // IfElse returns x but with elements set to y where mask is false.
   170  //
   171  // Emulated, CPU Feature: AVX
   172  func (x Uint16x8) IfElse(mask Mask16x8, y Uint16x8) Uint16x8 {
   173  	im := mask.ToInt16x8().AsInt8x16()
   174  	ix := x.AsInt8x16()
   175  	iy := y.AsInt8x16()
   176  	return iy.blend(ix, im).AsUint16x8()
   177  }
   178  
   179  // Masked returns x but with elements zeroed where mask is false.
   180  //
   181  // Emulated, CPU Feature: AVX
   182  func (x Uint32x4) Masked(mask Mask32x4) Uint32x4 {
   183  	im := mask.ToInt32x4()
   184  	return x.AsInt32x4().And(im).AsUint32x4()
   185  }
   186  
   187  // Merge returns x but with elements set to y where mask is false.
   188  //
   189  // Emulated, CPU Feature: AVX
   190  //
   191  // Deprecated: use x.IfElse(mask, y)
   192  //
   193  //go:fix inline
   194  func (x Uint32x4) Merge(y Uint32x4, mask Mask32x4) Uint32x4 {
   195  	return x.IfElse(mask, y)
   196  }
   197  
   198  // IfElse returns x but with elements set to y where mask is false.
   199  //
   200  // Emulated, CPU Feature: AVX
   201  func (x Uint32x4) IfElse(mask Mask32x4, y Uint32x4) Uint32x4 {
   202  	im := mask.ToInt32x4().AsInt8x16()
   203  	ix := x.AsInt8x16()
   204  	iy := y.AsInt8x16()
   205  	return iy.blend(ix, im).AsUint32x4()
   206  }
   207  
   208  // Masked returns x but with elements zeroed where mask is false.
   209  //
   210  // Emulated, CPU Feature: AVX
   211  func (x Uint64x2) Masked(mask Mask64x2) Uint64x2 {
   212  	im := mask.ToInt64x2()
   213  	return x.AsInt64x2().And(im).AsUint64x2()
   214  }
   215  
   216  // Merge returns x but with elements set to y where mask is false.
   217  //
   218  // Emulated, CPU Feature: AVX
   219  //
   220  // Deprecated: use x.IfElse(mask, y)
   221  //
   222  //go:fix inline
   223  func (x Uint64x2) Merge(y Uint64x2, mask Mask64x2) Uint64x2 {
   224  	return x.IfElse(mask, y)
   225  }
   226  
   227  // IfElse returns x but with elements set to y where mask is false.
   228  //
   229  // Emulated, CPU Feature: AVX
   230  func (x Uint64x2) IfElse(mask Mask64x2, y Uint64x2) Uint64x2 {
   231  	im := mask.ToInt64x2().AsInt8x16()
   232  	ix := x.AsInt8x16()
   233  	iy := y.AsInt8x16()
   234  	return iy.blend(ix, im).AsUint64x2()
   235  }
   236  
   237  // Masked returns x but with elements zeroed where mask is false.
   238  //
   239  // Emulated, CPU Feature: AVX
   240  func (x Float32x4) Masked(mask Mask32x4) Float32x4 {
   241  	im := mask.ToInt32x4()
   242  	return x.AsInt32x4().And(im).AsFloat32x4()
   243  }
   244  
   245  // Merge returns x but with elements set to y where mask is false.
   246  //
   247  // Emulated, CPU Feature: AVX
   248  //
   249  // Deprecated: use x.IfElse(mask, y)
   250  //
   251  //go:fix inline
   252  func (x Float32x4) Merge(y Float32x4, mask Mask32x4) Float32x4 {
   253  	return x.IfElse(mask, y)
   254  }
   255  
   256  // IfElse returns x but with elements set to y where mask is false.
   257  //
   258  // Emulated, CPU Feature: AVX
   259  func (x Float32x4) IfElse(mask Mask32x4, y Float32x4) Float32x4 {
   260  	im := mask.ToInt32x4().AsInt8x16()
   261  	ix := x.AsInt8x16()
   262  	iy := y.AsInt8x16()
   263  	return iy.blend(ix, im).AsFloat32x4()
   264  }
   265  
   266  // Masked returns x but with elements zeroed where mask is false.
   267  //
   268  // Emulated, CPU Feature: AVX
   269  func (x Float64x2) Masked(mask Mask64x2) Float64x2 {
   270  	im := mask.ToInt64x2()
   271  	return x.AsInt64x2().And(im).AsFloat64x2()
   272  }
   273  
   274  // Merge returns x but with elements set to y where mask is false.
   275  //
   276  // Emulated, CPU Feature: AVX
   277  //
   278  // Deprecated: use x.IfElse(mask, y)
   279  //
   280  //go:fix inline
   281  func (x Float64x2) Merge(y Float64x2, mask Mask64x2) Float64x2 {
   282  	return x.IfElse(mask, y)
   283  }
   284  
   285  // IfElse returns x but with elements set to y where mask is false.
   286  //
   287  // Emulated, CPU Feature: AVX
   288  func (x Float64x2) IfElse(mask Mask64x2, y Float64x2) Float64x2 {
   289  	im := mask.ToInt64x2().AsInt8x16()
   290  	ix := x.AsInt8x16()
   291  	iy := y.AsInt8x16()
   292  	return iy.blend(ix, im).AsFloat64x2()
   293  }
   294  
   295  // Masked returns x but with elements zeroed where mask is false.
   296  //
   297  // Emulated, CPU Feature: AVX2
   298  func (x Int8x32) Masked(mask Mask8x32) Int8x32 {
   299  	im := mask.ToInt8x32()
   300  	return im.And(x)
   301  }
   302  
   303  // Merge returns x but with elements set to y where mask is false.
   304  //
   305  // Emulated, CPU Feature: AVX2
   306  //
   307  // Deprecated: use x.IfElse(mask, y)
   308  //
   309  //go:fix inline
   310  func (x Int8x32) Merge(y Int8x32, mask Mask8x32) Int8x32 {
   311  	return x.IfElse(mask, y)
   312  }
   313  
   314  // IfElse returns x but with elements set to y where mask is false.
   315  //
   316  // Emulated, CPU Feature: AVX2
   317  func (x Int8x32) IfElse(mask Mask8x32, y Int8x32) Int8x32 {
   318  	im := mask.ToInt8x32()
   319  	return y.blend(x, im)
   320  }
   321  
   322  // Masked returns x but with elements zeroed where mask is false.
   323  //
   324  // Emulated, CPU Feature: AVX2
   325  func (x Int16x16) Masked(mask Mask16x16) Int16x16 {
   326  	im := mask.ToInt16x16()
   327  	return im.And(x)
   328  }
   329  
   330  // Merge returns x but with elements set to y where mask is false.
   331  //
   332  // Emulated, CPU Feature: AVX2
   333  //
   334  // Deprecated: use x.IfElse(mask, y)
   335  //
   336  //go:fix inline
   337  func (x Int16x16) Merge(y Int16x16, mask Mask16x16) Int16x16 {
   338  	return x.IfElse(mask, y)
   339  }
   340  
   341  // IfElse returns x but with elements set to y where mask is false.
   342  //
   343  // Emulated, CPU Feature: AVX2
   344  func (x Int16x16) IfElse(mask Mask16x16, y Int16x16) Int16x16 {
   345  	im := mask.ToInt16x16().AsInt8x32()
   346  	ix := x.AsInt8x32()
   347  	iy := y.AsInt8x32()
   348  	return iy.blend(ix, im).AsInt16x16()
   349  }
   350  
   351  // Masked returns x but with elements zeroed where mask is false.
   352  //
   353  // Emulated, CPU Feature: AVX2
   354  func (x Int32x8) Masked(mask Mask32x8) Int32x8 {
   355  	im := mask.ToInt32x8()
   356  	return im.And(x)
   357  }
   358  
   359  // Merge returns x but with elements set to y where mask is false.
   360  //
   361  // Emulated, CPU Feature: AVX2
   362  //
   363  // Deprecated: use x.IfElse(mask, y)
   364  //
   365  //go:fix inline
   366  func (x Int32x8) Merge(y Int32x8, mask Mask32x8) Int32x8 {
   367  	return x.IfElse(mask, y)
   368  }
   369  
   370  // IfElse returns x but with elements set to y where mask is false.
   371  //
   372  // Emulated, CPU Feature: AVX2
   373  func (x Int32x8) IfElse(mask Mask32x8, y Int32x8) Int32x8 {
   374  	im := mask.ToInt32x8().AsInt8x32()
   375  	ix := x.AsInt8x32()
   376  	iy := y.AsInt8x32()
   377  	return iy.blend(ix, im).AsInt32x8()
   378  }
   379  
   380  // Masked returns x but with elements zeroed where mask is false.
   381  //
   382  // Emulated, CPU Feature: AVX2
   383  func (x Int64x4) Masked(mask Mask64x4) Int64x4 {
   384  	im := mask.ToInt64x4()
   385  	return im.And(x)
   386  }
   387  
   388  // Merge returns x but with elements set to y where mask is false.
   389  //
   390  // Emulated, CPU Feature: AVX2
   391  //
   392  // Deprecated: use x.IfElse(mask, y)
   393  //
   394  //go:fix inline
   395  func (x Int64x4) Merge(y Int64x4, mask Mask64x4) Int64x4 {
   396  	return x.IfElse(mask, y)
   397  }
   398  
   399  // IfElse returns x but with elements set to y where mask is false.
   400  //
   401  // Emulated, CPU Feature: AVX2
   402  func (x Int64x4) IfElse(mask Mask64x4, y Int64x4) Int64x4 {
   403  	im := mask.ToInt64x4().AsInt8x32()
   404  	ix := x.AsInt8x32()
   405  	iy := y.AsInt8x32()
   406  	return iy.blend(ix, im).AsInt64x4()
   407  }
   408  
   409  // Masked returns x but with elements zeroed where mask is false.
   410  //
   411  // Emulated, CPU Feature: AVX2
   412  func (x Uint8x32) Masked(mask Mask8x32) Uint8x32 {
   413  	im := mask.ToInt8x32()
   414  	return x.AsInt8x32().And(im).AsUint8x32()
   415  }
   416  
   417  // Merge returns x but with elements set to y where mask is false.
   418  //
   419  // Emulated, CPU Feature: AVX2
   420  //
   421  // Deprecated: use x.IfElse(mask, y)
   422  //
   423  //go:fix inline
   424  func (x Uint8x32) Merge(y Uint8x32, mask Mask8x32) Uint8x32 {
   425  	return x.IfElse(mask, y)
   426  }
   427  
   428  // IfElse returns x but with elements set to y where mask is false.
   429  //
   430  // Emulated, CPU Feature: AVX2
   431  func (x Uint8x32) IfElse(mask Mask8x32, y Uint8x32) Uint8x32 {
   432  	im := mask.ToInt8x32()
   433  	ix := x.AsInt8x32()
   434  	iy := y.AsInt8x32()
   435  	return iy.blend(ix, im).AsUint8x32()
   436  }
   437  
   438  // Masked returns x but with elements zeroed where mask is false.
   439  //
   440  // Emulated, CPU Feature: AVX2
   441  func (x Uint16x16) Masked(mask Mask16x16) Uint16x16 {
   442  	im := mask.ToInt16x16()
   443  	return x.AsInt16x16().And(im).AsUint16x16()
   444  }
   445  
   446  // Merge returns x but with elements set to y where mask is false.
   447  //
   448  // Emulated, CPU Feature: AVX2
   449  //
   450  // Deprecated: use x.IfElse(mask, y)
   451  //
   452  //go:fix inline
   453  func (x Uint16x16) Merge(y Uint16x16, mask Mask16x16) Uint16x16 {
   454  	return x.IfElse(mask, y)
   455  }
   456  
   457  // IfElse returns x but with elements set to y where mask is false.
   458  //
   459  // Emulated, CPU Feature: AVX2
   460  func (x Uint16x16) IfElse(mask Mask16x16, y Uint16x16) Uint16x16 {
   461  	im := mask.ToInt16x16().AsInt8x32()
   462  	ix := x.AsInt8x32()
   463  	iy := y.AsInt8x32()
   464  	return iy.blend(ix, im).AsUint16x16()
   465  }
   466  
   467  // Masked returns x but with elements zeroed where mask is false.
   468  //
   469  // Emulated, CPU Feature: AVX2
   470  func (x Uint32x8) Masked(mask Mask32x8) Uint32x8 {
   471  	im := mask.ToInt32x8()
   472  	return x.AsInt32x8().And(im).AsUint32x8()
   473  }
   474  
   475  // Merge returns x but with elements set to y where mask is false.
   476  //
   477  // Emulated, CPU Feature: AVX2
   478  //
   479  // Deprecated: use x.IfElse(mask, y)
   480  //
   481  //go:fix inline
   482  func (x Uint32x8) Merge(y Uint32x8, mask Mask32x8) Uint32x8 {
   483  	return x.IfElse(mask, y)
   484  }
   485  
   486  // IfElse returns x but with elements set to y where mask is false.
   487  //
   488  // Emulated, CPU Feature: AVX2
   489  func (x Uint32x8) IfElse(mask Mask32x8, y Uint32x8) Uint32x8 {
   490  	im := mask.ToInt32x8().AsInt8x32()
   491  	ix := x.AsInt8x32()
   492  	iy := y.AsInt8x32()
   493  	return iy.blend(ix, im).AsUint32x8()
   494  }
   495  
   496  // Masked returns x but with elements zeroed where mask is false.
   497  //
   498  // Emulated, CPU Feature: AVX2
   499  func (x Uint64x4) Masked(mask Mask64x4) Uint64x4 {
   500  	im := mask.ToInt64x4()
   501  	return x.AsInt64x4().And(im).AsUint64x4()
   502  }
   503  
   504  // Merge returns x but with elements set to y where mask is false.
   505  //
   506  // Emulated, CPU Feature: AVX2
   507  //
   508  // Deprecated: use x.IfElse(mask, y)
   509  //
   510  //go:fix inline
   511  func (x Uint64x4) Merge(y Uint64x4, mask Mask64x4) Uint64x4 {
   512  	return x.IfElse(mask, y)
   513  }
   514  
   515  // IfElse returns x but with elements set to y where mask is false.
   516  //
   517  // Emulated, CPU Feature: AVX2
   518  func (x Uint64x4) IfElse(mask Mask64x4, y Uint64x4) Uint64x4 {
   519  	im := mask.ToInt64x4().AsInt8x32()
   520  	ix := x.AsInt8x32()
   521  	iy := y.AsInt8x32()
   522  	return iy.blend(ix, im).AsUint64x4()
   523  }
   524  
   525  // Masked returns x but with elements zeroed where mask is false.
   526  //
   527  // Emulated, CPU Feature: AVX2
   528  func (x Float32x8) Masked(mask Mask32x8) Float32x8 {
   529  	im := mask.ToInt32x8()
   530  	return x.AsInt32x8().And(im).AsFloat32x8()
   531  }
   532  
   533  // Merge returns x but with elements set to y where mask is false.
   534  //
   535  // Emulated, CPU Feature: AVX2
   536  //
   537  // Deprecated: use x.IfElse(mask, y)
   538  //
   539  //go:fix inline
   540  func (x Float32x8) Merge(y Float32x8, mask Mask32x8) Float32x8 {
   541  	return x.IfElse(mask, y)
   542  }
   543  
   544  // IfElse returns x but with elements set to y where mask is false.
   545  //
   546  // Emulated, CPU Feature: AVX2
   547  func (x Float32x8) IfElse(mask Mask32x8, y Float32x8) Float32x8 {
   548  	im := mask.ToInt32x8().AsInt8x32()
   549  	ix := x.AsInt8x32()
   550  	iy := y.AsInt8x32()
   551  	return iy.blend(ix, im).AsFloat32x8()
   552  }
   553  
   554  // Masked returns x but with elements zeroed where mask is false.
   555  //
   556  // Emulated, CPU Feature: AVX2
   557  func (x Float64x4) Masked(mask Mask64x4) Float64x4 {
   558  	im := mask.ToInt64x4()
   559  	return x.AsInt64x4().And(im).AsFloat64x4()
   560  }
   561  
   562  // Merge returns x but with elements set to y where mask is false.
   563  //
   564  // Emulated, CPU Feature: AVX2
   565  //
   566  // Deprecated: use x.IfElse(mask, y)
   567  //
   568  //go:fix inline
   569  func (x Float64x4) Merge(y Float64x4, mask Mask64x4) Float64x4 {
   570  	return x.IfElse(mask, y)
   571  }
   572  
   573  // IfElse returns x but with elements set to y where mask is false.
   574  //
   575  // Emulated, CPU Feature: AVX2
   576  func (x Float64x4) IfElse(mask Mask64x4, y Float64x4) Float64x4 {
   577  	im := mask.ToInt64x4().AsInt8x32()
   578  	ix := x.AsInt8x32()
   579  	iy := y.AsInt8x32()
   580  	return iy.blend(ix, im).AsFloat64x4()
   581  }
   582  
   583  // Masked returns x but with elements zeroed where mask is false.
   584  //
   585  // Emulated, CPU Feature: AVX512
   586  func (x Int8x64) Masked(mask Mask8x64) Int8x64 {
   587  	im := mask.ToInt8x64()
   588  	return im.And(x)
   589  }
   590  
   591  // Merge returns x but with elements set to y where mask is false.
   592  //
   593  // Emulated, CPU Feature: AVX512
   594  //
   595  // Deprecated: use x.IfElse(mask, y)
   596  //
   597  //go:fix inline
   598  func (x Int8x64) Merge(y Int8x64, mask Mask8x64) Int8x64 {
   599  	return x.IfElse(mask, y)
   600  }
   601  
   602  // IfElse returns x but with elements set to y where mask is false.
   603  //
   604  // Emulated, CPU Feature: AVX512
   605  func (x Int8x64) IfElse(mask Mask8x64, y Int8x64) Int8x64 {
   606  	return y.blendMasked(x, mask)
   607  }
   608  
   609  // Masked returns x but with elements zeroed where mask is false.
   610  //
   611  // Emulated, CPU Feature: AVX512
   612  func (x Int16x32) Masked(mask Mask16x32) Int16x32 {
   613  	im := mask.ToInt16x32()
   614  	return im.And(x)
   615  }
   616  
   617  // Merge returns x but with elements set to y where mask is false.
   618  //
   619  // Emulated, CPU Feature: AVX512
   620  //
   621  // Deprecated: use x.IfElse(mask, y)
   622  //
   623  //go:fix inline
   624  func (x Int16x32) Merge(y Int16x32, mask Mask16x32) Int16x32 {
   625  	return x.IfElse(mask, y)
   626  }
   627  
   628  // IfElse returns x but with elements set to y where mask is false.
   629  //
   630  // Emulated, CPU Feature: AVX512
   631  func (x Int16x32) IfElse(mask Mask16x32, y Int16x32) Int16x32 {
   632  	return y.blendMasked(x, mask)
   633  }
   634  
   635  // Masked returns x but with elements zeroed where mask is false.
   636  //
   637  // Emulated, CPU Feature: AVX512
   638  func (x Int32x16) Masked(mask Mask32x16) Int32x16 {
   639  	im := mask.ToInt32x16()
   640  	return im.And(x)
   641  }
   642  
   643  // Merge returns x but with elements set to y where mask is false.
   644  //
   645  // Emulated, CPU Feature: AVX512
   646  //
   647  // Deprecated: use x.IfElse(mask, y)
   648  //
   649  //go:fix inline
   650  func (x Int32x16) Merge(y Int32x16, mask Mask32x16) Int32x16 {
   651  	return x.IfElse(mask, y)
   652  }
   653  
   654  // IfElse returns x but with elements set to y where mask is false.
   655  //
   656  // Emulated, CPU Feature: AVX512
   657  func (x Int32x16) IfElse(mask Mask32x16, y Int32x16) Int32x16 {
   658  	return y.blendMasked(x, mask)
   659  }
   660  
   661  // Masked returns x but with elements zeroed where mask is false.
   662  //
   663  // Emulated, CPU Feature: AVX512
   664  func (x Int64x8) Masked(mask Mask64x8) Int64x8 {
   665  	im := mask.ToInt64x8()
   666  	return im.And(x)
   667  }
   668  
   669  // Merge returns x but with elements set to y where mask is false.
   670  //
   671  // Emulated, CPU Feature: AVX512
   672  //
   673  // Deprecated: use x.IfElse(mask, y)
   674  //
   675  //go:fix inline
   676  func (x Int64x8) Merge(y Int64x8, mask Mask64x8) Int64x8 {
   677  	return x.IfElse(mask, y)
   678  }
   679  
   680  // IfElse returns x but with elements set to y where mask is false.
   681  //
   682  // Emulated, CPU Feature: AVX512
   683  func (x Int64x8) IfElse(mask Mask64x8, y Int64x8) Int64x8 {
   684  	return y.blendMasked(x, mask)
   685  }
   686  
   687  // Masked returns x but with elements zeroed where mask is false.
   688  //
   689  // Emulated, CPU Feature: AVX512
   690  func (x Uint8x64) Masked(mask Mask8x64) Uint8x64 {
   691  	im := mask.ToInt8x64()
   692  	return x.AsInt8x64().And(im).AsUint8x64()
   693  }
   694  
   695  // Merge returns x but with elements set to y where mask is false.
   696  //
   697  // Emulated, CPU Feature: AVX512
   698  //
   699  // Deprecated: use x.IfElse(mask, y)
   700  //
   701  //go:fix inline
   702  func (x Uint8x64) Merge(y Uint8x64, mask Mask8x64) Uint8x64 {
   703  	return x.IfElse(mask, y)
   704  }
   705  
   706  // IfElse returns x but with elements set to y where mask is false.
   707  //
   708  // Emulated, CPU Feature: AVX512
   709  func (x Uint8x64) IfElse(mask Mask8x64, y Uint8x64) Uint8x64 {
   710  	ix := x.AsInt8x64()
   711  	iy := y.AsInt8x64()
   712  	return iy.blendMasked(ix, mask).AsUint8x64()
   713  }
   714  
   715  // Masked returns x but with elements zeroed where mask is false.
   716  //
   717  // Emulated, CPU Feature: AVX512
   718  func (x Uint16x32) Masked(mask Mask16x32) Uint16x32 {
   719  	im := mask.ToInt16x32()
   720  	return x.AsInt16x32().And(im).AsUint16x32()
   721  }
   722  
   723  // Merge returns x but with elements set to y where mask is false.
   724  //
   725  // Emulated, CPU Feature: AVX512
   726  //
   727  // Deprecated: use x.IfElse(mask, y)
   728  //
   729  //go:fix inline
   730  func (x Uint16x32) Merge(y Uint16x32, mask Mask16x32) Uint16x32 {
   731  	return x.IfElse(mask, y)
   732  }
   733  
   734  // IfElse returns x but with elements set to y where mask is false.
   735  //
   736  // Emulated, CPU Feature: AVX512
   737  func (x Uint16x32) IfElse(mask Mask16x32, y Uint16x32) Uint16x32 {
   738  	ix := x.AsInt16x32()
   739  	iy := y.AsInt16x32()
   740  	return iy.blendMasked(ix, mask).AsUint16x32()
   741  }
   742  
   743  // Masked returns x but with elements zeroed where mask is false.
   744  //
   745  // Emulated, CPU Feature: AVX512
   746  func (x Uint32x16) Masked(mask Mask32x16) Uint32x16 {
   747  	im := mask.ToInt32x16()
   748  	return x.AsInt32x16().And(im).AsUint32x16()
   749  }
   750  
   751  // Merge returns x but with elements set to y where mask is false.
   752  //
   753  // Emulated, CPU Feature: AVX512
   754  //
   755  // Deprecated: use x.IfElse(mask, y)
   756  //
   757  //go:fix inline
   758  func (x Uint32x16) Merge(y Uint32x16, mask Mask32x16) Uint32x16 {
   759  	return x.IfElse(mask, y)
   760  }
   761  
   762  // IfElse returns x but with elements set to y where mask is false.
   763  //
   764  // Emulated, CPU Feature: AVX512
   765  func (x Uint32x16) IfElse(mask Mask32x16, y Uint32x16) Uint32x16 {
   766  	ix := x.AsInt32x16()
   767  	iy := y.AsInt32x16()
   768  	return iy.blendMasked(ix, mask).AsUint32x16()
   769  }
   770  
   771  // Masked returns x but with elements zeroed where mask is false.
   772  //
   773  // Emulated, CPU Feature: AVX512
   774  func (x Uint64x8) Masked(mask Mask64x8) Uint64x8 {
   775  	im := mask.ToInt64x8()
   776  	return x.AsInt64x8().And(im).AsUint64x8()
   777  }
   778  
   779  // Merge returns x but with elements set to y where mask is false.
   780  //
   781  // Emulated, CPU Feature: AVX512
   782  //
   783  // Deprecated: use x.IfElse(mask, y)
   784  //
   785  //go:fix inline
   786  func (x Uint64x8) Merge(y Uint64x8, mask Mask64x8) Uint64x8 {
   787  	return x.IfElse(mask, y)
   788  }
   789  
   790  // IfElse returns x but with elements set to y where mask is false.
   791  //
   792  // Emulated, CPU Feature: AVX512
   793  func (x Uint64x8) IfElse(mask Mask64x8, y Uint64x8) Uint64x8 {
   794  	ix := x.AsInt64x8()
   795  	iy := y.AsInt64x8()
   796  	return iy.blendMasked(ix, mask).AsUint64x8()
   797  }
   798  
   799  // Masked returns x but with elements zeroed where mask is false.
   800  //
   801  // Emulated, CPU Feature: AVX512
   802  func (x Float32x16) Masked(mask Mask32x16) Float32x16 {
   803  	im := mask.ToInt32x16()
   804  	return x.AsInt32x16().And(im).AsFloat32x16()
   805  }
   806  
   807  // Merge returns x but with elements set to y where mask is false.
   808  //
   809  // Emulated, CPU Feature: AVX512
   810  //
   811  // Deprecated: use x.IfElse(mask, y)
   812  //
   813  //go:fix inline
   814  func (x Float32x16) Merge(y Float32x16, mask Mask32x16) Float32x16 {
   815  	return x.IfElse(mask, y)
   816  }
   817  
   818  // IfElse returns x but with elements set to y where mask is false.
   819  //
   820  // Emulated, CPU Feature: AVX512
   821  func (x Float32x16) IfElse(mask Mask32x16, y Float32x16) Float32x16 {
   822  	ix := x.AsInt32x16()
   823  	iy := y.AsInt32x16()
   824  	return iy.blendMasked(ix, mask).AsFloat32x16()
   825  }
   826  
   827  // Masked returns x but with elements zeroed where mask is false.
   828  //
   829  // Emulated, CPU Feature: AVX512
   830  func (x Float64x8) Masked(mask Mask64x8) Float64x8 {
   831  	im := mask.ToInt64x8()
   832  	return x.AsInt64x8().And(im).AsFloat64x8()
   833  }
   834  
   835  // Merge returns x but with elements set to y where mask is false.
   836  //
   837  // Emulated, CPU Feature: AVX512
   838  //
   839  // Deprecated: use x.IfElse(mask, y)
   840  //
   841  //go:fix inline
   842  func (x Float64x8) Merge(y Float64x8, mask Mask64x8) Float64x8 {
   843  	return x.IfElse(mask, y)
   844  }
   845  
   846  // IfElse returns x but with elements set to y where mask is false.
   847  //
   848  // Emulated, CPU Feature: AVX512
   849  func (x Float64x8) IfElse(mask Mask64x8, y Float64x8) Float64x8 {
   850  	ix := x.AsInt64x8()
   851  	iy := y.AsInt64x8()
   852  	return iy.blendMasked(ix, mask).AsFloat64x8()
   853  }
   854  

View as plain text