Source file src/simd/archsimd/ops_internal_arm64.go
1 // Code generated by 'simdgen -o godefs -goroot $GOROOT -arch arm64 -arm64Path $ARM64_ISA_PATH go_arm64.yaml types.yaml categories.yaml'; DO NOT EDIT. 2 3 //go:build goexperiment.simd 4 5 package archsimd 6 7 /* bitSelect */ 8 9 // bitSelect selects bits from y where mask is 1, keeps bits from x where mask is 0. 10 // 11 // Asm: VBIT, CPU Feature: NEON 12 func (x Int8x16) bitSelect(y Int8x16, mask Int8x16) Int8x16 13 14 /* bitSelectNot */ 15 16 // bitSelectNot selects bits from y where mask is 0, keeps bits from x where mask is 1. 17 // 18 // Asm: VBIF, CPU Feature: NEON 19 func (x Int8x16) bitSelectNot(y Int8x16, mask Int8x16) Int8x16 20 21 /* broadcast1To2 */ 22 23 // broadcast1To2 copies the lowest element of its input to all 2 elements of 24 // the output vector. 25 // 26 // Asm: VDUP, CPU Feature: NEON 27 func (x Float64x2) broadcast1To2() Float64x2 28 29 // broadcast1To2 copies the lowest element of its input to all 2 elements of 30 // the output vector. 31 // 32 // Asm: VDUP, CPU Feature: NEON 33 func (x Int64x2) broadcast1To2() Int64x2 34 35 // broadcast1To2 copies the lowest element of its input to all 2 elements of 36 // the output vector. 37 // 38 // Asm: VDUP, CPU Feature: NEON 39 func (x Uint64x2) broadcast1To2() Uint64x2 40 41 /* broadcast1To4 */ 42 43 // broadcast1To4 copies the lowest element of its input to all 4 elements of 44 // the output vector. 45 // 46 // Asm: VDUP, CPU Feature: NEON 47 func (x Float32x4) broadcast1To4() Float32x4 48 49 // broadcast1To4 copies the lowest element of its input to all 4 elements of 50 // the output vector. 51 // 52 // Asm: VDUP, CPU Feature: NEON 53 func (x Int32x4) broadcast1To4() Int32x4 54 55 // broadcast1To4 copies the lowest element of its input to all 4 elements of 56 // the output vector. 57 // 58 // Asm: VDUP, CPU Feature: NEON 59 func (x Uint32x4) broadcast1To4() Uint32x4 60 61 /* broadcast1To8 */ 62 63 // broadcast1To8 copies the lowest element of its input to all 8 elements of 64 // the output vector. 65 // 66 // Asm: VDUP, CPU Feature: NEON 67 func (x Int16x8) broadcast1To8() Int16x8 68 69 // broadcast1To8 copies the lowest element of its input to all 8 elements of 70 // the output vector. 71 // 72 // Asm: VDUP, CPU Feature: NEON 73 func (x Uint16x8) broadcast1To8() Uint16x8 74 75 /* broadcast1To16 */ 76 77 // broadcast1To16 copies the lowest element of its input to all 16 elements of 78 // the output vector. 79 // 80 // Asm: VDUP, CPU Feature: NEON 81 func (x Int8x16) broadcast1To16() Int8x16 82 83 // broadcast1To16 copies the lowest element of its input to all 16 elements of 84 // the output vector. 85 // 86 // Asm: VDUP, CPU Feature: NEON 87 func (x Uint8x16) broadcast1To16() Uint8x16 88 89 /* carrylessMultiplyWidenLo */ 90 91 // carrylessMultiplyWidenLo returns the carryless (polynomial) product of the low halves 92 // of x and y. 93 // 94 // A carryless multiplication uses bitwise XOR instead of 95 // add-with-carry, for example (in base two): 96 // 97 // 11 * 11 = 11 * (10 ^ 1) = (11 * 10) ^ (11 * 1) = 110 ^ 11 = 101 98 // 99 // This also models multiplication of polynomials with coefficients 100 // from GF(2) -- 11 * 11 models (x+1)*(x+1) = x**2 + (1^1)x + 1 = 101 // x**2 + 0x + 1 = x**2 + 1 modeled by 101. (Note that "+" adds 102 // polynomial terms, but coefficients "add" with XOR.) 103 // For the high-indexed elements, use HiToLo: 104 // 105 // x.HiToLo().carrylessMultiplyWidenLo(y.HiToLo()) 106 // 107 // Asm: VPMULL, CPU Feature: NEON 108 func (x Uint64x2) carrylessMultiplyWidenLo(y Uint64x2) Uint64x2 109 110 /* reduceMax */ 111 112 // reduceMax reduces x by taking the maximum of all elements. The maximum is placed 113 // in element 0 of the result; other elements are zeroed. 114 // 115 // Asm: VFMAXV, CPU Feature: NEON 116 func (x Float32x4) reduceMax() Float32x4 117 118 // reduceMax reduces x by taking the maximum of all elements. The maximum is placed 119 // in element 0 of the result; other elements are zeroed. 120 // 121 // Asm: VSMAXV, CPU Feature: NEON 122 func (x Int8x16) reduceMax() Int8x16 123 124 // reduceMax reduces x by taking the maximum of all elements. The maximum is placed 125 // in element 0 of the result; other elements are zeroed. 126 // 127 // Asm: VSMAXV, CPU Feature: NEON 128 func (x Int16x8) reduceMax() Int16x8 129 130 // reduceMax reduces x by taking the maximum of all elements. The maximum is placed 131 // in element 0 of the result; other elements are zeroed. 132 // 133 // Asm: VSMAXV, CPU Feature: NEON 134 func (x Int32x4) reduceMax() Int32x4 135 136 // reduceMax reduces x by taking the maximum of all elements. The maximum is placed 137 // in element 0 of the result; other elements are zeroed. 138 // 139 // Asm: VUMAXV, CPU Feature: NEON 140 func (x Uint8x16) reduceMax() Uint8x16 141 142 // reduceMax reduces x by taking the maximum of all elements. The maximum is placed 143 // in element 0 of the result; other elements are zeroed. 144 // 145 // Asm: VUMAXV, CPU Feature: NEON 146 func (x Uint16x8) reduceMax() Uint16x8 147 148 // reduceMax reduces x by taking the maximum of all elements. The maximum is placed 149 // in element 0 of the result; other elements are zeroed. 150 // 151 // Asm: VUMAXV, CPU Feature: NEON 152 func (x Uint32x4) reduceMax() Uint32x4 153 154 /* reduceMin */ 155 156 // reduceMin reduces x by taking the minimum of all elements. The minimum is placed 157 // in element 0 of the result; other elements are zeroed. 158 // 159 // Asm: VFMINV, CPU Feature: NEON 160 func (x Float32x4) reduceMin() Float32x4 161 162 // reduceMin reduces x by taking the minimum of all elements. The minimum is placed 163 // in element 0 of the result; other elements are zeroed. 164 // 165 // Asm: VSMINV, CPU Feature: NEON 166 func (x Int8x16) reduceMin() Int8x16 167 168 // reduceMin reduces x by taking the minimum of all elements. The minimum is placed 169 // in element 0 of the result; other elements are zeroed. 170 // 171 // Asm: VSMINV, CPU Feature: NEON 172 func (x Int16x8) reduceMin() Int16x8 173 174 // reduceMin reduces x by taking the minimum of all elements. The minimum is placed 175 // in element 0 of the result; other elements are zeroed. 176 // 177 // Asm: VSMINV, CPU Feature: NEON 178 func (x Int32x4) reduceMin() Int32x4 179 180 // reduceMin reduces x by taking the minimum of all elements. The minimum is placed 181 // in element 0 of the result; other elements are zeroed. 182 // 183 // Asm: VUMINV, CPU Feature: NEON 184 func (x Uint8x16) reduceMin() Uint8x16 185 186 // reduceMin reduces x by taking the minimum of all elements. The minimum is placed 187 // in element 0 of the result; other elements are zeroed. 188 // 189 // Asm: VUMINV, CPU Feature: NEON 190 func (x Uint16x8) reduceMin() Uint16x8 191 192 // reduceMin reduces x by taking the minimum of all elements. The minimum is placed 193 // in element 0 of the result; other elements are zeroed. 194 // 195 // Asm: VUMINV, CPU Feature: NEON 196 func (x Uint32x4) reduceMin() Uint32x4 197 198 /* reduceSum */ 199 200 // reduceSum reduces x by summing all elements. The sum is placed in element 0 201 // of the result; other elements are zeroed. 202 // 203 // Asm: VADDV, CPU Feature: NEON 204 func (x Int8x16) reduceSum() Int8x16 205 206 // reduceSum reduces x by summing all elements. The sum is placed in element 0 207 // of the result; other elements are zeroed. 208 // 209 // Asm: VADDV, CPU Feature: NEON 210 func (x Int16x8) reduceSum() Int16x8 211 212 // reduceSum reduces x by summing all elements. The sum is placed in element 0 213 // of the result; other elements are zeroed. 214 // 215 // Asm: VADDV, CPU Feature: NEON 216 func (x Int32x4) reduceSum() Int32x4 217 218 // reduceSum reduces x by summing all elements. The sum is placed in element 0 219 // of the result; other elements are zeroed. 220 // 221 // Asm: VADDV, CPU Feature: NEON 222 func (x Uint8x16) reduceSum() Uint8x16 223 224 // reduceSum reduces x by summing all elements. The sum is placed in element 0 225 // of the result; other elements are zeroed. 226 // 227 // Asm: VADDV, CPU Feature: NEON 228 func (x Uint16x8) reduceSum() Uint16x8 229 230 // reduceSum reduces x by summing all elements. The sum is placed in element 0 231 // of the result; other elements are zeroed. 232 // 233 // Asm: VADDV, CPU Feature: NEON 234 func (x Uint32x4) reduceSum() Uint32x4 235