Source file src/simd/extra_amd64.go

     1  // Copyright 2025 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  //go:build goexperiment.simd && amd64
     6  
     7  package simd
     8  
     9  // ClearAVXUpperBits clears the high bits of Y0-Y15 and Z0-Z15 registers.
    10  // It is intended for transitioning from AVX to SSE, eliminating the
    11  // performance penalties caused by false dependencies.
    12  //
    13  // Note: in the future the compiler may automatically generate the
    14  // instruction, making this function unnecessary.
    15  //
    16  // Asm: VZEROUPPER, CPU Feature: AVX
    17  func ClearAVXUpperBits()
    18  
    19  // IsZero returns true if all elements of x are zeros.
    20  //
    21  // This method compiles to VPTEST x, x.
    22  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
    23  //
    24  // Asm: VPTEST, CPU Feature: AVX
    25  func (x Int8x16) IsZero() bool
    26  
    27  // IsZero returns true if all elements of x are zeros.
    28  //
    29  // This method compiles to VPTEST x, x.
    30  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
    31  //
    32  // Asm: VPTEST, CPU Feature: AVX
    33  func (x Int8x32) IsZero() bool
    34  
    35  // IsZero returns true if all elements of x are zeros.
    36  //
    37  // This method compiles to VPTEST x, x.
    38  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
    39  //
    40  // Asm: VPTEST, CPU Feature: AVX
    41  func (x Int16x8) IsZero() bool
    42  
    43  // IsZero returns true if all elements of x are zeros.
    44  //
    45  // This method compiles to VPTEST x, x.
    46  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
    47  //
    48  // Asm: VPTEST, CPU Feature: AVX
    49  func (x Int16x16) IsZero() bool
    50  
    51  // IsZero returns true if all elements of x are zeros.
    52  //
    53  // This method compiles to VPTEST x, x.
    54  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
    55  //
    56  // Asm: VPTEST, CPU Feature: AVX
    57  func (x Int32x4) IsZero() bool
    58  
    59  // IsZero returns true if all elements of x are zeros.
    60  //
    61  // This method compiles to VPTEST x, x.
    62  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
    63  //
    64  // Asm: VPTEST, CPU Feature: AVX
    65  func (x Int32x8) IsZero() bool
    66  
    67  // IsZero returns true if all elements of x are zeros.
    68  //
    69  // This method compiles to VPTEST x, x.
    70  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
    71  //
    72  // Asm: VPTEST, CPU Feature: AVX
    73  func (x Int64x2) IsZero() bool
    74  
    75  // IsZero returns true if all elements of x are zeros.
    76  //
    77  // This method compiles to VPTEST x, x.
    78  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
    79  //
    80  // Asm: VPTEST, CPU Feature: AVX
    81  func (x Int64x4) IsZero() bool
    82  
    83  // IsZero returns true if all elements of x are zeros.
    84  //
    85  // This method compiles to VPTEST x, x.
    86  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
    87  //
    88  // Asm: VPTEST, CPU Feature: AVX
    89  func (x Uint8x16) IsZero() bool
    90  
    91  // IsZero returns true if all elements of x are zeros.
    92  //
    93  // This method compiles to VPTEST x, x.
    94  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
    95  //
    96  // Asm: VPTEST, CPU Feature: AVX
    97  func (x Uint8x32) IsZero() bool
    98  
    99  // IsZero returns true if all elements of x are zeros.
   100  //
   101  // This method compiles to VPTEST x, x.
   102  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
   103  //
   104  // Asm: VPTEST, CPU Feature: AVX
   105  func (x Uint16x8) IsZero() bool
   106  
   107  // IsZero returns true if all elements of x are zeros.
   108  //
   109  // This method compiles to VPTEST x, x.
   110  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
   111  //
   112  // Asm: VPTEST, CPU Feature: AVX
   113  func (x Uint16x16) IsZero() bool
   114  
   115  // IsZero returns true if all elements of x are zeros.
   116  //
   117  // This method compiles to VPTEST x, x.
   118  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
   119  //
   120  // Asm: VPTEST, CPU Feature: AVX
   121  func (x Uint32x4) IsZero() bool
   122  
   123  // IsZero returns true if all elements of x are zeros.
   124  //
   125  // This method compiles to VPTEST x, x.
   126  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
   127  //
   128  // Asm: VPTEST, CPU Feature: AVX
   129  func (x Uint32x8) IsZero() bool
   130  
   131  // IsZero returns true if all elements of x are zeros.
   132  //
   133  // This method compiles to VPTEST x, x.
   134  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
   135  //
   136  // Asm: VPTEST, CPU Feature: AVX
   137  func (x Uint64x2) IsZero() bool
   138  
   139  // IsZero returns true if all elements of x are zeros.
   140  //
   141  // This method compiles to VPTEST x, x.
   142  // x.And(y).IsZero() and x.AndNot(y).IsZero() will be optimized to VPTEST x, y
   143  //
   144  // Asm: VPTEST, CPU Feature: AVX
   145  func (x Uint64x4) IsZero() bool
   146  

View as plain text