@ttsc/win32-arm64 0.33.1 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1062) hide show
  1. package/bin/go/VERSION +2 -2
  2. package/bin/go/bin/go.exe +0 -0
  3. package/bin/go/bin/gofmt.exe +0 -0
  4. package/bin/go/lib/time/update.bash +2 -2
  5. package/bin/go/lib/time/zoneinfo.zip +0 -0
  6. package/bin/go/pkg/include/asm_ppc64x.h +0 -16
  7. package/bin/go/pkg/tool/windows_arm64/asm.exe +0 -0
  8. package/bin/go/pkg/tool/windows_arm64/cgo.exe +0 -0
  9. package/bin/go/pkg/tool/windows_arm64/compile.exe +0 -0
  10. package/bin/go/pkg/tool/windows_arm64/cover.exe +0 -0
  11. package/bin/go/pkg/tool/windows_arm64/fix.exe +0 -0
  12. package/bin/go/pkg/tool/windows_arm64/link.exe +0 -0
  13. package/bin/go/pkg/tool/windows_arm64/preprofile.exe +0 -0
  14. package/bin/go/pkg/tool/windows_arm64/vet.exe +0 -0
  15. package/bin/go/src/archive/tar/reader.go +2 -1
  16. package/bin/go/src/archive/zip/reader.go +5 -29
  17. package/bin/go/src/archive/zip/struct.go +5 -6
  18. package/bin/go/src/archive/zip/writer.go +120 -60
  19. package/bin/go/src/bufio/bufio.go +1 -1
  20. package/bin/go/src/bytes/buffer.go +3 -3
  21. package/bin/go/src/bytes/bytes.go +45 -25
  22. package/bin/go/src/compress/flate/deflate.go +512 -363
  23. package/bin/go/src/compress/flate/deflatefast.go +156 -262
  24. package/bin/go/src/compress/flate/dict_decoder.go +1 -4
  25. package/bin/go/src/compress/flate/huffman_bit_writer.go +673 -250
  26. package/bin/go/src/compress/flate/huffman_code.go +164 -92
  27. package/bin/go/src/compress/flate/level1.go +195 -0
  28. package/bin/go/src/compress/flate/level2.go +190 -0
  29. package/bin/go/src/compress/flate/level3.go +228 -0
  30. package/bin/go/src/compress/flate/level4.go +200 -0
  31. package/bin/go/src/compress/flate/level5.go +287 -0
  32. package/bin/go/src/compress/flate/level6.go +297 -0
  33. package/bin/go/src/compress/flate/load_store.go +43 -0
  34. package/bin/go/src/compress/flate/regmask_amd64.go +9 -0
  35. package/bin/go/src/compress/flate/regmask_other.go +11 -0
  36. package/bin/go/src/compress/flate/token.go +238 -26
  37. package/bin/go/src/compress/gzip/gzip.go +8 -0
  38. package/bin/go/src/compress/zlib/writer.go +12 -0
  39. package/bin/go/src/context/context.go +6 -5
  40. package/bin/go/src/crypto/cipher/gcm.go +0 -4
  41. package/bin/go/src/crypto/crypto.go +27 -4
  42. package/bin/go/src/crypto/des/const.go +1 -1
  43. package/bin/go/src/crypto/ecdsa/ecdsa.go +21 -4
  44. package/bin/go/src/crypto/ed25519/ed25519.go +13 -0
  45. package/bin/go/src/crypto/internal/boring/aes.go +2 -3
  46. package/bin/go/src/crypto/internal/cryptotest/aead.go +53 -0
  47. package/bin/go/src/crypto/internal/cryptotest/boundary.go +34 -0
  48. package/bin/go/src/crypto/internal/cryptotest/boundary_compat.go +16 -0
  49. package/bin/go/src/crypto/internal/cryptotest/fetchmodule.go +9 -3
  50. package/bin/go/src/crypto/internal/cryptotest/fips140.go +62 -3
  51. package/bin/go/src/crypto/internal/cryptotest/hash.go +14 -0
  52. package/bin/go/src/crypto/internal/cryptotest/wycheproof/_schema/go.mod +19 -0
  53. package/bin/go/src/crypto/internal/cryptotest/wycheproof/_schema/go.sum +27 -0
  54. package/bin/go/src/crypto/internal/cryptotest/wycheproof/_schema/schema_gen.go +151 -0
  55. package/bin/go/src/crypto/internal/cryptotest/wycheproof/schema.go +9792 -0
  56. package/bin/go/src/crypto/internal/cryptotest/wycheproof/schemaversion.go +11 -0
  57. package/bin/go/src/crypto/internal/cryptotest/wycheproof/wycheproof.go +165 -0
  58. package/bin/go/src/crypto/internal/cryptotest/x509limbo/_schema/go.mod +14 -0
  59. package/bin/go/src/crypto/internal/cryptotest/x509limbo/_schema/go.sum +25 -0
  60. package/bin/go/src/crypto/internal/cryptotest/x509limbo/_schema/schema_gen.go +125 -0
  61. package/bin/go/src/crypto/internal/cryptotest/x509limbo/schema.go +591 -0
  62. package/bin/go/src/crypto/internal/cryptotest/x509limbo/schemaversion.go +14 -0
  63. package/bin/go/src/crypto/internal/fips140/aes/_asm/ctr/go.mod +1 -1
  64. package/bin/go/src/crypto/internal/fips140/aes/_asm/standard/go.mod +1 -1
  65. package/bin/go/src/crypto/internal/fips140/aes/gcm/_asm/gcm/gcm_amd64_asm.go +36 -32
  66. package/bin/go/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.mod +5 -5
  67. package/bin/go/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.sum +8 -6
  68. package/bin/go/src/crypto/internal/fips140/aes/gcm/gcm_amd64.s +29 -17
  69. package/bin/go/src/crypto/internal/fips140/aes/gcm/gcm_arm64.s +73 -72
  70. package/bin/go/src/crypto/internal/fips140/aes/gcm/ghash.go +140 -124
  71. package/bin/go/src/crypto/internal/fips140/bigmod/nat.go +18 -0
  72. package/bin/go/src/crypto/internal/fips140/check/checktest/asm_loong64.s +23 -0
  73. package/bin/go/src/crypto/internal/fips140/check/checktest/asm_none.go +1 -1
  74. package/bin/go/src/crypto/internal/fips140/check/checktest/asm_stub.go +1 -1
  75. package/bin/go/src/crypto/internal/fips140/drbg/rand.go +12 -4
  76. package/bin/go/src/crypto/internal/fips140/ecdsa/ecdsa.go +17 -10
  77. package/bin/go/src/crypto/internal/fips140/edwards25519/field/_asm/fe_amd64_asm.go +0 -90
  78. package/bin/go/src/crypto/internal/fips140/edwards25519/field/fe.go +64 -97
  79. package/bin/go/src/crypto/internal/fips140/edwards25519/field/fe_amd64.go +0 -5
  80. package/bin/go/src/crypto/internal/fips140/edwards25519/field/fe_amd64.s +0 -167
  81. package/bin/go/src/crypto/internal/fips140/edwards25519/field/fe_amd64_noasm.go +0 -2
  82. package/bin/go/src/crypto/internal/fips140/edwards25519/field/fe_generic.go +57 -1
  83. package/bin/go/src/crypto/internal/fips140/edwards25519/scalarmult.go +3 -2
  84. package/bin/go/src/crypto/internal/fips140/mldsa/mldsa.go +31 -25
  85. package/bin/go/src/crypto/internal/fips140/mldsa/semiexpanded.go +2 -2
  86. package/bin/go/src/crypto/internal/fips140/nistec/_asm/go.mod +4 -4
  87. package/bin/go/src/crypto/internal/fips140/nistec/_asm/go.sum +6 -0
  88. package/bin/go/src/crypto/internal/fips140/nistec/_asm/p256_asm.go +1 -613
  89. package/bin/go/src/crypto/internal/fips140/nistec/p256.go +2 -2
  90. package/bin/go/src/crypto/internal/fips140/nistec/p256_asm.go +7 -6
  91. package/bin/go/src/crypto/internal/fips140/nistec/p256_asm_amd64.s +0 -503
  92. package/bin/go/src/crypto/internal/fips140/nistec/p256_asm_arm64.s +4 -429
  93. package/bin/go/src/crypto/internal/fips140/nistec/p256_ordinv.go +511 -47
  94. package/bin/go/src/crypto/internal/fips140/pbkdf2/pbkdf2.go +1 -1
  95. package/bin/go/src/crypto/internal/fips140/rsa/keygen.go +48 -46
  96. package/bin/go/src/crypto/internal/fips140/rsa/largeexponent.go +365 -0
  97. package/bin/go/src/crypto/internal/fips140/rsa/pkcs1v15.go +27 -0
  98. package/bin/go/src/crypto/internal/fips140/sha256/_asm/go.mod +1 -1
  99. package/bin/go/src/crypto/internal/fips140/sha3/_asm/go.mod +1 -1
  100. package/bin/go/src/crypto/internal/fips140/sha512/_asm/go.mod +1 -1
  101. package/bin/go/src/crypto/internal/fips140/subtle/constant_time.go +1 -1
  102. package/bin/go/src/crypto/internal/fips140/subtle/xor_asm.go +1 -1
  103. package/bin/go/src/crypto/internal/fips140/subtle/xor_riscv64.go +18 -0
  104. package/bin/go/src/crypto/internal/fips140/subtle/xor_riscv64.s +33 -2
  105. package/bin/go/src/crypto/internal/fips140deps/cpu/cpu.go +2 -0
  106. package/bin/go/src/crypto/internal/fips140deps/time/time.go +7 -4
  107. package/bin/go/src/crypto/internal/fips140only/fips140only.go +0 -7
  108. package/bin/go/src/crypto/internal/fips140only/random_fips140v1.0.go +17 -0
  109. package/bin/go/src/crypto/internal/fips140only/random_fips140v1.28.go +16 -0
  110. package/bin/go/src/crypto/internal/fips140test/acvp_capabilities_fips140v1.28.json +86 -0
  111. package/bin/go/src/crypto/internal/fips140test/acvp_test_fips140v1.28.config.json +58 -0
  112. package/bin/go/src/crypto/internal/rand/rand.go +14 -14
  113. package/bin/go/src/crypto/internal/rand/random_fips140v1.0.go +20 -0
  114. package/bin/go/src/crypto/internal/rand/random_fips140v1.28.go +19 -0
  115. package/bin/go/src/crypto/mldsa/mldsa.go +97 -0
  116. package/bin/go/src/crypto/mldsa/mldsa_fips140v1.0.go +116 -0
  117. package/bin/go/src/crypto/mldsa/mldsa_fips140v1.26.go +226 -0
  118. package/bin/go/src/crypto/mlkem/mlkem.go +8 -2
  119. package/bin/go/src/crypto/rsa/fips.go +26 -8
  120. package/bin/go/src/crypto/rsa/pkcs1v15.go +2 -2
  121. package/bin/go/src/crypto/rsa/rsa.go +25 -2
  122. package/bin/go/src/crypto/sha1/sha1block_decl.go +1 -1
  123. package/bin/go/src/crypto/sha1/sha1block_generic.go +1 -1
  124. package/bin/go/src/crypto/sha1/sha1block_loong64.s +24 -8
  125. package/bin/go/src/crypto/sha1/sha1block_riscv64.s +225 -0
  126. package/bin/go/src/crypto/sha3/sha3.go +3 -2
  127. package/bin/go/src/crypto/tls/alert.go +2 -0
  128. package/bin/go/src/crypto/tls/auth.go +31 -0
  129. package/bin/go/src/crypto/tls/bogo_config.json +12 -23
  130. package/bin/go/src/crypto/tls/cipher_suites.go +3 -11
  131. package/bin/go/src/crypto/tls/common.go +106 -59
  132. package/bin/go/src/crypto/tls/common_string.go +18 -5
  133. package/bin/go/src/crypto/tls/conn.go +33 -35
  134. package/bin/go/src/crypto/tls/defaults.go +26 -20
  135. package/bin/go/src/crypto/tls/defaults_fips140.go +9 -0
  136. package/bin/go/src/crypto/tls/ech.go +9 -4
  137. package/bin/go/src/crypto/tls/generate_cert.go +8 -2
  138. package/bin/go/src/crypto/tls/handshake_client.go +17 -17
  139. package/bin/go/src/crypto/tls/handshake_client_tls13.go +8 -3
  140. package/bin/go/src/crypto/tls/handshake_server.go +26 -19
  141. package/bin/go/src/crypto/tls/handshake_server_tls13.go +8 -5
  142. package/bin/go/src/crypto/tls/key_agreement.go +5 -1
  143. package/bin/go/src/crypto/tls/key_schedule.go +42 -17
  144. package/bin/go/src/crypto/tls/prf.go +1 -1
  145. package/bin/go/src/crypto/tls/quic.go +6 -7
  146. package/bin/go/src/crypto/tls/tls.go +25 -29
  147. package/bin/go/src/crypto/x509/cert_pool.go +8 -4
  148. package/bin/go/src/crypto/x509/constraints.go +5 -0
  149. package/bin/go/src/crypto/x509/parser.go +101 -15
  150. package/bin/go/src/crypto/x509/pkcs8.go +45 -4
  151. package/bin/go/src/crypto/x509/pkix/pkix.go +33 -9
  152. package/bin/go/src/crypto/x509/root.go +113 -0
  153. package/bin/go/src/crypto/x509/root_darwin.go +8 -4
  154. package/bin/go/src/crypto/x509/root_plan9.go +2 -23
  155. package/bin/go/src/crypto/x509/root_unix.go +0 -97
  156. package/bin/go/src/crypto/x509/root_windows.go +8 -3
  157. package/bin/go/src/crypto/x509/verify.go +43 -4
  158. package/bin/go/src/crypto/x509/x509.go +169 -30
  159. package/bin/go/src/database/sql/closemu.go +119 -0
  160. package/bin/go/src/database/sql/convert.go +63 -4
  161. package/bin/go/src/database/sql/driver/driver.go +26 -0
  162. package/bin/go/src/database/sql/driver/types.go +4 -0
  163. package/bin/go/src/database/sql/internal/sql.go +22 -0
  164. package/bin/go/src/database/sql/sql.go +89 -40
  165. package/bin/go/src/debug/buildinfo/buildinfo.go +0 -13
  166. package/bin/go/src/debug/dwarf/buf.go +7 -1
  167. package/bin/go/src/debug/dwarf/class_string.go +3 -2
  168. package/bin/go/src/debug/elf/file.go +80 -50
  169. package/bin/go/src/debug/elf/reader.go +1 -1
  170. package/bin/go/src/debug/gosym/symtab.go +26 -30
  171. package/bin/go/src/debug/macho/file.go +2 -2
  172. package/bin/go/src/debug/macho/reloctype_string.go +12 -8
  173. package/bin/go/src/debug/pe/file.go +6 -3
  174. package/bin/go/src/encoding/base32/base32.go +29 -31
  175. package/bin/go/src/encoding/base64/base64.go +24 -29
  176. package/bin/go/src/encoding/gob/decode.go +7 -1
  177. package/bin/go/src/encoding/gob/type.go +6 -6
  178. package/bin/go/src/encoding/hex/hex.go +6 -6
  179. package/bin/go/src/encoding/json/decode.go +4 -3
  180. package/bin/go/src/encoding/json/encode.go +1 -2
  181. package/bin/go/src/encoding/json/fold.go +1 -1
  182. package/bin/go/src/encoding/json/internal/internal.go +11 -1
  183. package/bin/go/src/encoding/json/internal/jsonflags/flags.go +17 -9
  184. package/bin/go/src/encoding/json/internal/jsonopts/options.go +52 -37
  185. package/bin/go/src/encoding/json/internal/jsonopts/options_format.go +124 -0
  186. package/bin/go/src/encoding/json/internal/jsontest/_embed/canada_geometry.json.zst +0 -0
  187. package/bin/go/src/encoding/json/internal/jsontest/_embed/citm_catalog.json.zst +0 -0
  188. package/bin/go/src/encoding/json/internal/jsontest/_embed/golang_source.json.zst +0 -0
  189. package/bin/go/src/encoding/json/internal/jsontest/_embed/string_escaped.json.zst +0 -0
  190. package/bin/go/src/encoding/json/internal/jsontest/_embed/string_unicode.json.zst +0 -0
  191. package/bin/go/src/encoding/json/internal/jsontest/_embed/synthea_fhir.json.zst +0 -0
  192. package/bin/go/src/encoding/json/internal/jsontest/_embed/twitter_status.json.zst +0 -0
  193. package/bin/go/src/encoding/json/internal/jsontest/testdata.go +10 -4
  194. package/bin/go/src/encoding/json/internal/jsonwire/decode.go +13 -36
  195. package/bin/go/src/encoding/json/internal/jsonwire/encode.go +7 -7
  196. package/bin/go/src/encoding/json/internal/jsonwire/wire.go +30 -38
  197. package/bin/go/src/encoding/json/jsontext/decode.go +49 -14
  198. package/bin/go/src/encoding/json/jsontext/doc.go +6 -11
  199. package/bin/go/src/encoding/json/jsontext/encode.go +55 -39
  200. package/bin/go/src/encoding/json/jsontext/errors.go +34 -3
  201. package/bin/go/src/encoding/json/jsontext/export.go +14 -0
  202. package/bin/go/src/encoding/json/jsontext/options.go +8 -8
  203. package/bin/go/src/encoding/json/jsontext/quote.go +2 -2
  204. package/bin/go/src/encoding/json/jsontext/state.go +14 -14
  205. package/bin/go/src/encoding/json/jsontext/token.go +246 -101
  206. package/bin/go/src/encoding/json/jsontext/value.go +31 -16
  207. package/bin/go/src/encoding/json/stream.go +14 -2
  208. package/bin/go/src/encoding/json/v2/arshal.go +100 -114
  209. package/bin/go/src/encoding/json/v2/arshal_any.go +6 -5
  210. package/bin/go/src/encoding/json/v2/arshal_default.go +292 -189
  211. package/bin/go/src/encoding/json/v2/{arshal_inlined.go → arshal_embedded.go} +14 -14
  212. package/bin/go/src/encoding/json/v2/arshal_funcs.go +28 -47
  213. package/bin/go/src/encoding/json/v2/arshal_methods.go +98 -29
  214. package/bin/go/src/encoding/json/v2/arshal_time.go +33 -13
  215. package/bin/go/src/encoding/json/v2/doc.go +40 -55
  216. package/bin/go/src/encoding/json/v2/errors.go +29 -9
  217. package/bin/go/src/encoding/json/v2/fields.go +83 -81
  218. package/bin/go/src/encoding/json/v2/intern.go +2 -2
  219. package/bin/go/src/encoding/json/v2/options.go +57 -41
  220. package/bin/go/src/encoding/json/v2_decode.go +21 -9
  221. package/bin/go/src/encoding/json/v2_encode.go +21 -10
  222. package/bin/go/src/encoding/json/v2_indent.go +2 -0
  223. package/bin/go/src/encoding/json/v2_inject.go +7 -4
  224. package/bin/go/src/encoding/json/v2_options.go +37 -30
  225. package/bin/go/src/encoding/json/v2_scanner.go +6 -1
  226. package/bin/go/src/encoding/json/v2_stream.go +49 -14
  227. package/bin/go/src/encoding/pem/pem.go +6 -2
  228. package/bin/go/src/fmt/doc.go +11 -1
  229. package/bin/go/src/fmt/print.go +69 -82
  230. package/bin/go/src/go/ast/ast.go +4 -4
  231. package/bin/go/src/go/ast/filter.go +1 -1
  232. package/bin/go/src/go/ast/scope.go +2 -2
  233. package/bin/go/src/go/build/build.go +1 -1
  234. package/bin/go/src/go/build/constraint/vers.go +4 -1
  235. package/bin/go/src/go/build/read.go +2 -2
  236. package/bin/go/src/go/constant/kind_string.go +3 -2
  237. package/bin/go/src/go/constant/value.go +26 -4
  238. package/bin/go/src/go/doc/comment/std.go +1 -0
  239. package/bin/go/src/go/importer/importer.go +4 -3
  240. package/bin/go/src/go/internal/gccgoimporter/parser.go +2 -0
  241. package/bin/go/src/go/internal/gcimporter/ureader.go +141 -56
  242. package/bin/go/src/go/parser/parser.go +11 -22
  243. package/bin/go/src/go/printer/math.go +28 -0
  244. package/bin/go/src/go/printer/nodes.go +28 -11
  245. package/bin/go/src/go/printer/printer.go +3 -1
  246. package/bin/go/src/go/scanner/errors.go +2 -0
  247. package/bin/go/src/go/scanner/scanner.go +40 -28
  248. package/bin/go/src/go/token/position.go +7 -16
  249. package/bin/go/src/go/types/alias.go +0 -18
  250. package/bin/go/src/go/types/api.go +4 -10
  251. package/bin/go/src/go/types/api_predicates.go +2 -2
  252. package/bin/go/src/go/types/assignments.go +44 -38
  253. package/bin/go/src/go/types/builtins.go +199 -168
  254. package/bin/go/src/go/types/call.go +155 -138
  255. package/bin/go/src/go/types/check.go +0 -83
  256. package/bin/go/src/go/types/const.go +22 -10
  257. package/bin/go/src/go/types/conversions.go +19 -19
  258. package/bin/go/src/go/types/cycles.go +29 -42
  259. package/bin/go/src/go/types/decl.go +33 -81
  260. package/bin/go/src/go/types/expr.go +191 -183
  261. package/bin/go/src/go/types/gotype.go +1 -0
  262. package/bin/go/src/go/types/hash.go +309 -0
  263. package/bin/go/src/go/types/index.go +91 -61
  264. package/bin/go/src/go/types/infer.go +11 -11
  265. package/bin/go/src/go/types/instantiate.go +27 -15
  266. package/bin/go/src/go/types/interface.go +2 -2
  267. package/bin/go/src/go/types/literals.go +56 -32
  268. package/bin/go/src/go/types/lookup.go +31 -14
  269. package/bin/go/src/go/types/named.go +58 -54
  270. package/bin/go/src/go/types/object.go +4 -3
  271. package/bin/go/src/go/types/operand.go +50 -34
  272. package/bin/go/src/go/types/range.go +19 -16
  273. package/bin/go/src/go/types/recording.go +24 -7
  274. package/bin/go/src/go/types/resolver.go +16 -18
  275. package/bin/go/src/go/types/scope.go +1 -15
  276. package/bin/go/src/go/types/selection.go +3 -1
  277. package/bin/go/src/go/types/signature.go +10 -11
  278. package/bin/go/src/go/types/stmt.go +34 -28
  279. package/bin/go/src/go/types/subst.go +82 -5
  280. package/bin/go/src/go/types/trie.go +93 -0
  281. package/bin/go/src/go/types/typelists.go +28 -0
  282. package/bin/go/src/go/types/typestring.go +5 -9
  283. package/bin/go/src/go/types/typexpr.go +17 -28
  284. package/bin/go/src/go/types/unify.go +12 -3
  285. package/bin/go/src/go/types/universe.go +12 -40
  286. package/bin/go/src/go/types/version.go +4 -0
  287. package/bin/go/src/go.mod +5 -5
  288. package/bin/go/src/go.sum +8 -8
  289. package/bin/go/src/hash/maphash/hasher.go +139 -0
  290. package/bin/go/src/hash/maphash/maphash.go +59 -4
  291. package/bin/go/src/html/template/attr_string.go +3 -2
  292. package/bin/go/src/html/template/delim_string.go +3 -2
  293. package/bin/go/src/html/template/element_string.go +3 -2
  294. package/bin/go/src/html/template/jsctx_string.go +3 -2
  295. package/bin/go/src/html/template/state_string.go +3 -2
  296. package/bin/go/src/html/template/template.go +7 -4
  297. package/bin/go/src/html/template/transition.go +1 -1
  298. package/bin/go/src/html/template/urlpart_string.go +3 -2
  299. package/bin/go/src/image/format.go +9 -0
  300. package/bin/go/src/image/gif/reader.go +18 -0
  301. package/bin/go/src/image/jpeg/huffman.go +22 -3
  302. package/bin/go/src/image/jpeg/reader.go +54 -29
  303. package/bin/go/src/image/jpeg/scan.go +68 -38
  304. package/bin/go/src/image/png/writer.go +8 -0
  305. package/bin/go/src/index/suffixarray/suffixarray.go +14 -6
  306. package/bin/go/src/internal/abi/abi_generic.go +1 -1
  307. package/bin/go/src/internal/abi/abi_s390x.go +0 -2
  308. package/bin/go/src/internal/abi/compiletype.go +30 -0
  309. package/bin/go/src/internal/abi/iface.go +13 -1
  310. package/bin/go/src/internal/abi/map.go +21 -3
  311. package/bin/go/src/internal/abi/type.go +136 -27
  312. package/bin/go/src/internal/buildcfg/exp.go +8 -8
  313. package/bin/go/src/internal/buildcfg/zbootstrap.go +1 -1
  314. package/bin/go/src/internal/bytealg/bytealg.go +16 -16
  315. package/bin/go/src/internal/bytealg/compare_s390x.s +0 -24
  316. package/bin/go/src/internal/bytealg/equal_s390x.s +0 -18
  317. package/bin/go/src/internal/bytealg/indexbyte_arm64.s +28 -0
  318. package/bin/go/src/internal/bytealg/indexbyte_s390x.s +0 -33
  319. package/bin/go/src/internal/coverage/encodemeta/encode.go +1 -1
  320. package/bin/go/src/internal/cpu/cpu.go +22 -7
  321. package/bin/go/src/internal/cpu/cpu_arm64.go +8 -1
  322. package/bin/go/src/internal/cpu/cpu_arm64.s +7 -0
  323. package/bin/go/src/internal/cpu/cpu_arm64_darwin.go +2 -0
  324. package/bin/go/src/internal/cpu/cpu_arm64_freebsd.go +2 -1
  325. package/bin/go/src/internal/cpu/cpu_arm64_hwcap.go +2 -0
  326. package/bin/go/src/internal/cpu/cpu_arm64_openbsd.go +6 -1
  327. package/bin/go/src/internal/cpu/cpu_arm64_other.go +1 -1
  328. package/bin/go/src/internal/cpu/cpu_arm64_windows.go +26 -0
  329. package/bin/go/src/internal/cpu/cpu_loong64.go +14 -2
  330. package/bin/go/src/internal/cpu/cpu_riscv64.go +10 -0
  331. package/bin/go/src/internal/cpu/cpu_riscv64_linux.go +21 -0
  332. package/bin/go/src/internal/cpu/cpu_windows.go +20 -0
  333. package/bin/go/src/internal/cpu/cpu_x86.go +2 -0
  334. package/bin/go/src/internal/filepathlite/path_windows.go +30 -17
  335. package/bin/go/src/internal/fuzz/fuzz.go +5 -1
  336. package/bin/go/src/internal/fuzz/mutator.go +2 -2
  337. package/bin/go/src/internal/fuzz/worker.go +1 -1
  338. package/bin/go/src/internal/gate/gate.go +76 -0
  339. package/bin/go/src/internal/godebugs/table.go +29 -10
  340. package/bin/go/src/internal/goexperiment/exp_mapsplitgroup_off.go +8 -0
  341. package/bin/go/src/internal/goexperiment/exp_mapsplitgroup_on.go +8 -0
  342. package/bin/go/src/internal/goexperiment/flags.go +5 -3
  343. package/bin/go/src/internal/goversion/goversion.go +1 -1
  344. package/bin/go/src/internal/lazyregexp/lazyre.go +4 -0
  345. package/bin/go/src/internal/nettest/conn.go +437 -0
  346. package/bin/go/src/internal/nettest/listener.go +148 -0
  347. package/bin/go/src/internal/nettest/packetconn.go +250 -0
  348. package/bin/go/src/internal/nettest/queue.go +33 -0
  349. package/bin/go/src/internal/pkgbits/syncmarker_string.go +4 -4
  350. package/bin/go/src/internal/pkgbits/version.go +27 -1
  351. package/bin/go/src/internal/platform/supported.go +8 -10
  352. package/bin/go/src/internal/platform/zosarch.go +1 -3
  353. package/bin/go/src/internal/poll/fd_mutex.go +49 -10
  354. package/bin/go/src/internal/poll/fd_unix.go +6 -1
  355. package/bin/go/src/internal/poll/fd_windows.go +175 -191
  356. package/bin/go/src/internal/poll/fd_writev_libc.go +1 -1
  357. package/bin/go/src/internal/poll/fd_writev_unix.go +1 -1
  358. package/bin/go/src/internal/poll/file_plan9.go +4 -4
  359. package/bin/go/src/internal/poll/sendfile_windows.go +1 -3
  360. package/bin/go/src/internal/poll/splice_linux.go +1 -1
  361. package/bin/go/src/internal/profile/encode.go +1 -1
  362. package/bin/go/src/internal/profile/profile.go +5 -3
  363. package/bin/go/src/internal/profilerecord/profilerecord.go +2 -2
  364. package/bin/go/src/internal/reflectlite/value.go +1 -15
  365. package/bin/go/src/internal/runtime/atomic/atomic_386.go +0 -6
  366. package/bin/go/src/internal/runtime/atomic/atomic_amd64.go +0 -6
  367. package/bin/go/src/internal/runtime/atomic/atomic_andor_generic.go +0 -11
  368. package/bin/go/src/internal/runtime/atomic/atomic_arm.go +0 -6
  369. package/bin/go/src/internal/runtime/atomic/atomic_loong64.go +2 -2
  370. package/bin/go/src/internal/runtime/atomic/atomic_loong64.s +22 -11
  371. package/bin/go/src/internal/runtime/atomic/atomic_mipsx.go +0 -10
  372. package/bin/go/src/internal/runtime/atomic/atomic_riscv64.s +4 -4
  373. package/bin/go/src/internal/runtime/atomic/atomic_s390x.go +0 -6
  374. package/bin/go/src/internal/runtime/atomic/atomic_wasm.go +0 -31
  375. package/bin/go/src/internal/runtime/atomic/linkname.go +34 -0
  376. package/bin/go/src/internal/runtime/exithook/hooks.go +0 -4
  377. package/bin/go/src/internal/runtime/gc/scan/expand_amd64.s +2285 -2285
  378. package/bin/go/src/internal/runtime/gc/scan/mkasm.go +1 -1
  379. package/bin/go/src/internal/runtime/gc/scan/scan_amd64.go +2 -1
  380. package/bin/go/src/internal/runtime/gc/scan/scan_amd64.s +4 -2
  381. package/bin/go/src/internal/runtime/maps/group.go +22 -13
  382. package/bin/go/src/internal/runtime/maps/map.go +35 -14
  383. package/bin/go/src/internal/runtime/maps/memhash_386.s +408 -0
  384. package/bin/go/src/internal/runtime/maps/memhash_aes.go +38 -0
  385. package/bin/go/src/internal/runtime/maps/memhash_aes_asm.go +24 -0
  386. package/bin/go/src/internal/runtime/maps/memhash_aes_simd.go +49 -0
  387. package/bin/go/src/internal/runtime/maps/memhash_align_check.go +10 -0
  388. package/bin/go/src/internal/runtime/maps/memhash_align_nocheck.go +16 -0
  389. package/bin/go/src/internal/runtime/maps/memhash_amd64.s +426 -0
  390. package/bin/go/src/internal/runtime/maps/memhash_arm64.s +366 -0
  391. package/bin/go/src/internal/runtime/maps/memhash_noaes.go +43 -0
  392. package/bin/go/src/internal/runtime/maps/memhash_nosimd_amd64.s +33 -0
  393. package/bin/go/src/internal/runtime/maps/runtime.go +37 -88
  394. package/bin/go/src/internal/runtime/maps/runtime_alg.go +93 -0
  395. package/bin/go/src/internal/runtime/maps/runtime_fast32.go +111 -97
  396. package/bin/go/src/internal/runtime/maps/runtime_fast64.go +137 -98
  397. package/bin/go/src/internal/runtime/maps/runtime_faststr.go +96 -89
  398. package/bin/go/src/{runtime/hash32.go → internal/runtime/maps/runtime_hash32.go} +8 -10
  399. package/bin/go/src/{runtime/hash64.go → internal/runtime/maps/runtime_hash64.go} +8 -8
  400. package/bin/go/src/internal/runtime/maps/table.go +66 -3
  401. package/bin/go/src/internal/runtime/math/math.go +0 -21
  402. package/bin/go/src/internal/runtime/startlinetest/func_amd64.s +2 -1
  403. package/bin/go/src/internal/runtime/sys/dit_arm64.go +3 -0
  404. package/bin/go/src/internal/runtime/sys/dit_arm64.s +16 -3
  405. package/bin/go/src/internal/runtime/syscall/linux/asm_linux_s390x.s +0 -23
  406. package/bin/go/src/internal/runtime/syscall/windows/asm_windows_386.s +7 -4
  407. package/bin/go/src/internal/runtime/syscall/windows/asm_windows_amd64.s +10 -8
  408. package/bin/go/src/internal/runtime/syscall/windows/asm_windows_arm64.s +0 -1
  409. package/bin/go/src/internal/runtime/syscall/windows/defs_windows.go +4 -0
  410. package/bin/go/src/internal/runtime/syscall/windows/syscall_windows.go +7 -9
  411. package/bin/go/src/internal/strconv/atof.go +69 -42
  412. package/bin/go/src/internal/strconv/atoi.go +1 -0
  413. package/bin/go/src/internal/strconv/ftoa.go +329 -357
  414. package/bin/go/src/internal/strconv/itoa.go +53 -59
  415. package/bin/go/src/internal/strconv/pow10gen.go +15 -3
  416. package/bin/go/src/internal/strconv/pow10tab.go +670 -670
  417. package/bin/go/src/internal/strconv/uscale.go +290 -0
  418. package/bin/go/src/internal/stringslite/strings.go +14 -42
  419. package/bin/go/src/internal/syscall/unix/asm_openbsd.s +0 -2
  420. package/bin/go/src/internal/syscall/unix/at.go +1 -1
  421. package/bin/go/src/internal/syscall/unix/at_fstatat.go +1 -1
  422. package/bin/go/src/internal/syscall/unix/at_libc2.go +1 -1
  423. package/bin/go/src/internal/syscall/unix/at_openbsd.go +0 -2
  424. package/bin/go/src/internal/syscall/unix/faccessat_bsd.go +1 -1
  425. package/bin/go/src/internal/syscall/unix/faccessat_openbsd.go +0 -2
  426. package/bin/go/src/internal/syscall/windows/at_windows.go +5 -5
  427. package/bin/go/src/internal/syscall/windows/net_windows.go +1 -0
  428. package/bin/go/src/internal/syscall/windows/string_windows.go +6 -3
  429. package/bin/go/src/internal/syscall/windows/syscall_windows.go +2 -0
  430. package/bin/go/src/internal/syscall/windows/types_windows.go +89 -4
  431. package/bin/go/src/internal/syscall/windows/zsyscall_windows.go +7 -0
  432. package/bin/go/src/internal/testenv/testenv.go +24 -1
  433. package/bin/go/src/internal/trace/event.go +1 -1
  434. package/bin/go/src/internal/trace/tracev2/events.go +2 -0
  435. package/bin/go/src/internal/trace/traceviewer/pprof.go +1 -0
  436. package/bin/go/src/internal/types/errors/generrordocs.go +1 -1
  437. package/bin/go/src/io/fs/fs.go +4 -1
  438. package/bin/go/src/io/fs/glob.go +1 -1
  439. package/bin/go/src/io/fs/readdir.go +3 -3
  440. package/bin/go/src/io/fs/readfile.go +3 -3
  441. package/bin/go/src/io/fs/stat.go +1 -1
  442. package/bin/go/src/io/fs/sub.go +4 -2
  443. package/bin/go/src/iter/iter.go +2 -2
  444. package/bin/go/src/log/slog/handler.go +0 -1
  445. package/bin/go/src/log/slog/json_handler.go +7 -1
  446. package/bin/go/src/log/slog/logger.go +16 -0
  447. package/bin/go/src/log/slog/text_handler.go +10 -1
  448. package/bin/go/src/log/slog/value.go +1 -1
  449. package/bin/go/src/log/syslog/doc.go +5 -0
  450. package/bin/go/src/math/abs.go +1 -1
  451. package/bin/go/src/math/big/accuracy_string.go +4 -4
  452. package/bin/go/src/math/big/arith.go +1 -1
  453. package/bin/go/src/math/big/arith_loong64.s +2 -4
  454. package/bin/go/src/math/big/float.go +2 -0
  455. package/bin/go/src/math/big/ftoa.go +11 -5
  456. package/bin/go/src/math/big/int.go +84 -1
  457. package/bin/go/src/math/big/intconv.go +19 -4
  458. package/bin/go/src/math/big/internal/asmgen/loong64.go +2 -0
  459. package/bin/go/src/math/big/nat.go +68 -17
  460. package/bin/go/src/math/big/natdiv.go +8 -5
  461. package/bin/go/src/math/big/roundingmode_string.go +3 -2
  462. package/bin/go/src/math/copysign.go +1 -2
  463. package/bin/go/src/math/exp2_asm.go +1 -1
  464. package/bin/go/src/math/exp2_noasm.go +1 -1
  465. package/bin/go/src/math/exp_asm.go +1 -1
  466. package/bin/go/src/math/exp_loong64.s +4 -12
  467. package/bin/go/src/math/exp_noasm.go +1 -1
  468. package/bin/go/src/math/exp_riscv64.s +236 -0
  469. package/bin/go/src/math/nextafter.go +4 -2
  470. package/bin/go/src/math/pow10.go +1 -1
  471. package/bin/go/src/math/rand/v2/rand.go +14 -4
  472. package/bin/go/src/mime/type.go +3 -2
  473. package/bin/go/src/net/dial.go +10 -6
  474. package/bin/go/src/net/dnsclient_unix.go +37 -8
  475. package/bin/go/src/net/dnsconfig.go +6 -0
  476. package/bin/go/src/net/fd_plan9.go +13 -6
  477. package/bin/go/src/net/fd_unix.go +3 -7
  478. package/bin/go/src/net/fd_windows.go +4 -9
  479. package/bin/go/src/net/file_plan9.go +1 -1
  480. package/bin/go/src/net/file_posix.go +1 -5
  481. package/bin/go/src/net/http/client.go +21 -4
  482. package/bin/go/src/net/http/clientconn.go +20 -1
  483. package/bin/go/src/net/http/clone.go +1 -10
  484. package/bin/go/src/net/http/cookie.go +5 -6
  485. package/bin/go/src/net/http/cookiejar/jar.go +6 -4
  486. package/bin/go/src/net/http/fcgi/fcgi.go +1 -2
  487. package/bin/go/src/net/http/fs.go +8 -1
  488. package/bin/go/src/net/http/http.go +29 -12
  489. package/bin/go/src/net/http/http2.go +561 -0
  490. package/bin/go/src/net/http/httptest/server.go +305 -60
  491. package/bin/go/src/net/http/httptrace/trace.go +78 -27
  492. package/bin/go/src/net/http/httputil/reverseproxy.go +0 -30
  493. package/bin/go/src/net/http/internal/common.go +14 -0
  494. package/bin/go/src/net/http/internal/http2/api.go +161 -0
  495. package/bin/go/src/net/http/internal/http2/ascii.go +53 -0
  496. package/bin/go/src/net/http/internal/http2/ciphers.go +641 -0
  497. package/bin/go/src/net/http/internal/http2/client_conn_pool.go +285 -0
  498. package/bin/go/src/net/http/internal/http2/config.go +118 -0
  499. package/bin/go/src/net/http/internal/http2/databuffer.go +146 -0
  500. package/bin/go/src/net/http/internal/http2/errors.go +173 -0
  501. package/bin/go/src/net/http/internal/http2/flow.go +175 -0
  502. package/bin/go/src/net/http/internal/http2/frame.go +1905 -0
  503. package/bin/go/src/net/http/internal/http2/gotrack.go +181 -0
  504. package/bin/go/src/net/http/internal/http2/http2.go +403 -0
  505. package/bin/go/src/net/http/internal/http2/pipe.go +184 -0
  506. package/bin/go/src/net/http/internal/http2/server.go +3238 -0
  507. package/bin/go/src/net/http/internal/http2/transport.go +3267 -0
  508. package/bin/go/src/net/http/internal/http2/write.go +380 -0
  509. package/bin/go/src/net/http/internal/http2/writesched.go +289 -0
  510. package/bin/go/src/net/http/internal/http2/writesched_priority_rfc9218.go +224 -0
  511. package/bin/go/src/net/http/internal/http2/writesched_roundrobin.go +119 -0
  512. package/bin/go/src/net/http/internal/httpcommon/httpcommon.go +8 -0
  513. package/bin/go/src/net/http/internal/httpsfv/httpsfv.go +666 -0
  514. package/bin/go/src/net/http/internal/sniff.go +304 -0
  515. package/bin/go/src/net/http/omithttp2.go +28 -49
  516. package/bin/go/src/net/http/pprof/pprof.go +11 -17
  517. package/bin/go/src/net/http/request.go +30 -3
  518. package/bin/go/src/net/http/response.go +6 -2
  519. package/bin/go/src/net/http/server.go +366 -144
  520. package/bin/go/src/net/http/sniff.go +2 -289
  521. package/bin/go/src/net/http/transfer.go +64 -21
  522. package/bin/go/src/net/http/transport.go +288 -83
  523. package/bin/go/src/net/ip.go +4 -0
  524. package/bin/go/src/net/ipsock_plan9.go +4 -4
  525. package/bin/go/src/net/ipsock_posix.go +8 -2
  526. package/bin/go/src/net/lookup.go +10 -0
  527. package/bin/go/src/net/lookup_windows.go +1 -1
  528. package/bin/go/src/net/mail/message.go +8 -3
  529. package/bin/go/src/net/net.go +2 -0
  530. package/bin/go/src/net/netip/netip.go +68 -61
  531. package/bin/go/src/net/sock_posix.go +1 -4
  532. package/bin/go/src/net/textproto/reader.go +11 -3
  533. package/bin/go/src/net/udpsock_plan9.go +2 -7
  534. package/bin/go/src/net/unixsock.go +11 -3
  535. package/bin/go/src/net/url/url.go +33 -0
  536. package/bin/go/src/os/dir_darwin.go +7 -0
  537. package/bin/go/src/os/exec/exec.go +16 -2
  538. package/bin/go/src/os/exec.go +1 -0
  539. package/bin/go/src/os/file.go +8 -1
  540. package/bin/go/src/os/root_windows.go +5 -1
  541. package/bin/go/src/os/signal/doc.go +3 -2
  542. package/bin/go/src/os/signal/signal.go +18 -6
  543. package/bin/go/src/os/statat_unix.go +5 -1
  544. package/bin/go/src/path/filepath/path.go +4 -0
  545. package/bin/go/src/reflect/asm_s390x.s +0 -10
  546. package/bin/go/src/reflect/iter.go +13 -13
  547. package/bin/go/src/reflect/makefunc.go +2 -1
  548. package/bin/go/src/reflect/map.go +61 -18
  549. package/bin/go/src/reflect/type.go +63 -46
  550. package/bin/go/src/reflect/value.go +59 -16
  551. package/bin/go/src/regexp/exec.go +5 -5
  552. package/bin/go/src/regexp/regexp.go +382 -319
  553. package/bin/go/src/regexp/syntax/parse.go +19 -10
  554. package/bin/go/src/runtime/HACKING.md +19 -0
  555. package/bin/go/src/runtime/_mkmalloc/constants.go +6 -4
  556. package/bin/go/src/runtime/_mkmalloc/go.mod +1 -1
  557. package/bin/go/src/runtime/_mkmalloc/mkmalloc.go +405 -64
  558. package/bin/go/src/runtime/alg.go +21 -53
  559. package/bin/go/src/runtime/asm_386.s +11 -461
  560. package/bin/go/src/runtime/asm_amd64.s +30 -537
  561. package/bin/go/src/runtime/asm_arm.s +4 -39
  562. package/bin/go/src/runtime/asm_arm64.s +15 -428
  563. package/bin/go/src/runtime/asm_loong64.s +37 -47
  564. package/bin/go/src/runtime/asm_mips64x.s +15 -15
  565. package/bin/go/src/runtime/asm_mipsx.s +0 -15
  566. package/bin/go/src/runtime/asm_ppc64x.h +0 -16
  567. package/bin/go/src/runtime/asm_ppc64x.s +13 -59
  568. package/bin/go/src/runtime/asm_riscv64.s +30 -91
  569. package/bin/go/src/runtime/asm_s390x.s +49 -49
  570. package/bin/go/src/runtime/asm_wasm.s +0 -15
  571. package/bin/go/src/runtime/atomic_riscv64.s +1 -1
  572. package/bin/go/src/runtime/cgo/abi_riscv64.h +72 -0
  573. package/bin/go/src/runtime/cgo/asm_riscv64.s +7 -48
  574. package/bin/go/src/runtime/cgo/callbacks.go +0 -42
  575. package/bin/go/src/runtime/cgo/callbacks_unix.go +58 -0
  576. package/bin/go/src/runtime/cgo/cgo.go +6 -3
  577. package/bin/go/src/runtime/cgo/gcc_aix_ppc64.S +21 -9
  578. package/bin/go/src/runtime/cgo/gcc_android.c +0 -26
  579. package/bin/go/src/runtime/cgo/gcc_clearenv.c +1 -1
  580. package/bin/go/src/runtime/cgo/gcc_fatalf.c +14 -3
  581. package/bin/go/src/runtime/cgo/{gcc_libinit.c → gcc_libinit_unix.c} +18 -65
  582. package/bin/go/src/runtime/cgo/gcc_libinit_windows.c +23 -35
  583. package/bin/go/src/runtime/cgo/gcc_linux_ppc64x.S +16 -7
  584. package/bin/go/src/runtime/cgo/gcc_netbsd.c +8 -56
  585. package/bin/go/src/runtime/cgo/gcc_s390x.S +13 -4
  586. package/bin/go/src/runtime/cgo/gcc_sigaction.c +1 -1
  587. package/bin/go/src/runtime/cgo/gcc_unix.c +63 -0
  588. package/bin/go/src/runtime/cgo/gcc_util.c +0 -19
  589. package/bin/go/src/runtime/cgo/handle.go +3 -0
  590. package/bin/go/src/runtime/cgo/libcgo.h +7 -10
  591. package/bin/go/src/runtime/cgo/libcgo_unix.h +2 -10
  592. package/bin/go/src/runtime/cgo/pthread_unix.c +138 -0
  593. package/bin/go/src/runtime/cgo/sigaction.go +1 -1
  594. package/bin/go/src/runtime/cgo/windows.go +18 -1
  595. package/bin/go/src/runtime/cgo_ppc64x.go +1 -1
  596. package/bin/go/src/runtime/cgo_sigaction.go +1 -1
  597. package/bin/go/src/runtime/cgocall.go +10 -2
  598. package/bin/go/src/runtime/chan.go +2 -16
  599. package/bin/go/src/runtime/coro.go +2 -2
  600. package/bin/go/src/runtime/cpuflags.go +4 -3
  601. package/bin/go/src/runtime/debug/garbage.go +6 -6
  602. package/bin/go/src/runtime/debug/mod.go +1 -1
  603. package/bin/go/src/runtime/debug/stack.go +1 -1
  604. package/bin/go/src/runtime/debugcall.go +0 -3
  605. package/bin/go/src/runtime/error.go +6 -0
  606. package/bin/go/src/runtime/extern.go +5 -3
  607. package/bin/go/src/runtime/heapdump.go +1 -1
  608. package/bin/go/src/runtime/iface.go +20 -10
  609. package/bin/go/src/runtime/libinit.go +48 -0
  610. package/bin/go/src/runtime/lock_js.go +4 -2
  611. package/bin/go/src/runtime/lock_spinbit.go +13 -12
  612. package/bin/go/src/runtime/lock_wasip1.go +4 -2
  613. package/bin/go/src/runtime/lockrank.go +24 -21
  614. package/bin/go/src/runtime/lockrank_off.go +5 -2
  615. package/bin/go/src/runtime/lockrank_on.go +8 -7
  616. package/bin/go/src/runtime/malloc.go +10 -26
  617. package/bin/go/src/runtime/malloc_generated.go +819 -8628
  618. package/bin/go/src/runtime/malloc_stubs.go +187 -197
  619. package/bin/go/src/runtime/malloc_tables_generated.go +16 -882
  620. package/bin/go/src/runtime/map.go +4 -4
  621. package/bin/go/src/runtime/mbitmap.go +3 -1
  622. package/bin/go/src/runtime/mem.go +2 -6
  623. package/bin/go/src/runtime/mem_sbrk.go +4 -0
  624. package/bin/go/src/runtime/memclr_s390x.s +0 -5
  625. package/bin/go/src/runtime/memmove_s390x.s +0 -7
  626. package/bin/go/src/runtime/metrics/doc.go +5 -29
  627. package/bin/go/src/runtime/metrics/sample.go +3 -0
  628. package/bin/go/src/runtime/metrics.go +3 -2
  629. package/bin/go/src/runtime/mgc.go +41 -25
  630. package/bin/go/src/runtime/mgcmark.go +5 -0
  631. package/bin/go/src/runtime/mgcmark_greenteagc.go +1 -1
  632. package/bin/go/src/runtime/mgcpacer.go +1 -3
  633. package/bin/go/src/runtime/mgcscavenge.go +1 -1
  634. package/bin/go/src/runtime/mheap.go +1 -10
  635. package/bin/go/src/runtime/mklockrank.go +6 -1
  636. package/bin/go/src/runtime/mkpreempt.go +7 -0
  637. package/bin/go/src/runtime/mprof.go +12 -23
  638. package/bin/go/src/runtime/os2_aix.go +3 -3
  639. package/bin/go/src/runtime/os3_solaris.go +10 -0
  640. package/bin/go/src/runtime/os_aix.go +9 -2
  641. package/bin/go/src/runtime/os_darwin.go +3 -8
  642. package/bin/go/src/runtime/os_dragonfly.go +10 -0
  643. package/bin/go/src/runtime/os_js.go +10 -0
  644. package/bin/go/src/runtime/os_linux32.go +19 -6
  645. package/bin/go/src/runtime/os_netbsd.go +10 -0
  646. package/bin/go/src/runtime/os_openbsd.go +10 -0
  647. package/bin/go/src/runtime/os_plan9.go +10 -0
  648. package/bin/go/src/runtime/os_wasip1.go +10 -0
  649. package/bin/go/src/runtime/os_windows.go +45 -12
  650. package/bin/go/src/runtime/os_workdir_ios_arm64.go +98 -0
  651. package/bin/go/src/runtime/os_workdir_stub.go +9 -0
  652. package/bin/go/src/runtime/panic.go +93 -8
  653. package/bin/go/src/runtime/plugin.go +1 -3
  654. package/bin/go/src/runtime/pprof/pprof.go +11 -14
  655. package/bin/go/src/runtime/pprof/protomem.go +8 -15
  656. package/bin/go/src/runtime/preempt_loong64.s +8 -4
  657. package/bin/go/src/runtime/preempt_noxreg.go +2 -0
  658. package/bin/go/src/runtime/preempt_xreg.go +29 -2
  659. package/bin/go/src/runtime/print.go +9 -1
  660. package/bin/go/src/runtime/proc.go +68 -17
  661. package/bin/go/src/runtime/race_riscv64.s +40 -83
  662. package/bin/go/src/runtime/race_s390x.s +0 -16
  663. package/bin/go/src/runtime/rand.go +40 -12
  664. package/bin/go/src/runtime/{rt0_linux_ppc64le.s → rt0_linux_ppc64x.s} +12 -2
  665. package/bin/go/src/runtime/runtime-gdb.py +13 -2
  666. package/bin/go/src/runtime/runtime1.go +69 -18
  667. package/bin/go/src/runtime/runtime2.go +23 -22
  668. package/bin/go/src/runtime/secret/secret.go +7 -2
  669. package/bin/go/src/runtime/secret.go +27 -9
  670. package/bin/go/src/runtime/secret_nosecret.go +1 -1
  671. package/bin/go/src/runtime/sigaction.go +1 -1
  672. package/bin/go/src/runtime/signal_unix.go +5 -3
  673. package/bin/go/src/runtime/softfloat64.go +7 -2
  674. package/bin/go/src/runtime/string.go +4 -1
  675. package/bin/go/src/runtime/stubs.go +14 -4
  676. package/bin/go/src/runtime/stubs_amd64.go +4 -0
  677. package/bin/go/src/runtime/stubs_arm.go +10 -1
  678. package/bin/go/src/runtime/stubs_arm64.go +13 -0
  679. package/bin/go/src/runtime/stubs_loong64.go +18 -0
  680. package/bin/go/src/runtime/stubs_mips64x.go +9 -0
  681. package/bin/go/src/runtime/stubs_mipsx.go +11 -0
  682. package/bin/go/src/runtime/stubs_ppc64x.go +15 -0
  683. package/bin/go/src/runtime/stubs_riscv64.go +13 -0
  684. package/bin/go/src/runtime/stubs_s390x.go +18 -0
  685. package/bin/go/src/runtime/symtab.go +15 -16
  686. package/bin/go/src/runtime/synctest.go +2 -4
  687. package/bin/go/src/runtime/sys_aix_ppc64.s +9 -0
  688. package/bin/go/src/runtime/sys_darwin.go +2 -20
  689. package/bin/go/src/runtime/sys_darwin_amd64.s +1 -4
  690. package/bin/go/src/runtime/sys_darwin_arm64.s +3 -6
  691. package/bin/go/src/runtime/sys_freebsd_riscv64.s +2 -2
  692. package/bin/go/src/runtime/sys_ios_arm64.go +151 -0
  693. package/bin/go/src/runtime/sys_ios_arm64.s +78 -0
  694. package/bin/go/src/runtime/sys_linux_amd64.s +7 -1
  695. package/bin/go/src/runtime/sys_linux_loong64.s +8 -14
  696. package/bin/go/src/runtime/sys_linux_ppc64x.s +0 -12
  697. package/bin/go/src/runtime/sys_linux_riscv64.s +2 -2
  698. package/bin/go/src/runtime/sys_openbsd.go +1 -1
  699. package/bin/go/src/runtime/sys_openbsd_riscv64.s +16 -16
  700. package/bin/go/src/runtime/syscall_windows.go +2 -6
  701. package/bin/go/src/runtime/time.go +19 -57
  702. package/bin/go/src/runtime/trace/subscribe.go +0 -3
  703. package/bin/go/src/runtime/traceback.go +90 -13
  704. package/bin/go/src/runtime/traceregion.go +3 -3
  705. package/bin/go/src/runtime/tracestring.go +5 -0
  706. package/bin/go/src/runtime/type.go +85 -15
  707. package/bin/go/src/runtime/utf8.go +2 -2
  708. package/bin/go/src/simd/archsimd/_gen/go.mod +2 -2
  709. package/bin/go/src/simd/archsimd/_gen/go.sum +2 -2
  710. package/bin/go/src/simd/archsimd/_gen/main.go +106 -15
  711. package/bin/go/src/simd/archsimd/_gen/midway/comments.yaml +151 -0
  712. package/bin/go/src/simd/archsimd/_gen/midway/intersect_simd_ops.go +836 -0
  713. package/bin/go/src/simd/archsimd/_gen/sgutil/asbits.go +139 -0
  714. package/bin/go/src/simd/archsimd/_gen/sgutil/compare_natural.go +73 -0
  715. package/bin/go/src/simd/archsimd/_gen/sgutil/formatted_files.go +66 -0
  716. package/bin/go/src/simd/archsimd/_gen/sgutil/insert_ordered_map.go +159 -0
  717. package/bin/go/src/simd/archsimd/_gen/sgutil/merge_generic_ops.go +245 -0
  718. package/bin/go/src/simd/archsimd/_gen/simdgen/arch.go +173 -0
  719. package/bin/go/src/simd/archsimd/_gen/simdgen/arm64/emit.go +166 -0
  720. package/bin/go/src/simd/archsimd/_gen/simdgen/arm64/instruction.go +642 -0
  721. package/bin/go/src/simd/archsimd/_gen/simdgen/arm64/load.go +54 -0
  722. package/bin/go/src/simd/archsimd/_gen/simdgen/arm64/operands.go +406 -0
  723. package/bin/go/src/simd/archsimd/_gen/simdgen/etetest.sh +1 -1
  724. package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go +19 -52
  725. package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go +162 -98
  726. package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdMachineOps.go +50 -19
  727. package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go +198 -140
  728. package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdrules.go +278 -57
  729. package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdssa.go +133 -68
  730. package/bin/go/src/simd/archsimd/_gen/simdgen/gen_utility.go +163 -30
  731. package/bin/go/src/simd/archsimd/_gen/simdgen/go_amd64.yaml +1 -0
  732. package/bin/go/src/simd/archsimd/_gen/simdgen/go_arm64.yaml +1 -0
  733. package/bin/go/src/simd/archsimd/_gen/simdgen/godefs.go +113 -15
  734. package/bin/go/src/simd/archsimd/_gen/simdgen/main.go +62 -17
  735. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/AddSub/categories.yaml +12 -12
  736. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/AddSub/{go.yaml → go_amd64.yaml} +12 -12
  737. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/AddSub/go_arm64.yaml +91 -0
  738. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/BitwiseLogic/categories.yaml +11 -3
  739. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/BitwiseLogic/go_arm64.yaml +43 -0
  740. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Compares/go_arm64.yaml +81 -0
  741. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Converts/categories.yaml +11 -6
  742. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Converts/{go.yaml → go_amd64.yaml} +8 -8
  743. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Converts/go_arm64.yaml +358 -0
  744. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/FPonlyArith/categories.yaml +5 -5
  745. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/FPonlyArith/{go.yaml → go_amd64.yaml} +4 -4
  746. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/FPonlyArith/go_arm64.yaml +52 -0
  747. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/GaloisField/categories.yaml +29 -11
  748. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/GaloisField/{go.yaml → go_amd64.yaml} +1 -0
  749. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/GaloisField/go_arm64.yaml +10 -0
  750. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/IntOnlyArith/categories.yaml +2 -5
  751. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/IntOnlyArith/{go.yaml → go_amd64.yaml} +2 -3
  752. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/IntOnlyArith/go_arm64.yaml +35 -0
  753. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/MLOps/categories.yaml +5 -8
  754. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/MLOps/{go.yaml → go_amd64.yaml} +7 -5
  755. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/MLOps/go_arm64.yaml +31 -0
  756. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/MinMax/go_arm64.yaml +61 -0
  757. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Moves/categories.yaml +79 -23
  758. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Moves/{go.yaml → go_amd64.yaml} +213 -104
  759. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Moves/go_arm64.yaml +264 -0
  760. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Mul/categories.yaml +6 -2
  761. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Mul/{go.yaml → go_amd64.yaml} +3 -3
  762. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Mul/go_arm64.yaml +38 -0
  763. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/NegAbs/categories.yaml +7 -0
  764. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/NegAbs/go_arm64.yaml +36 -0
  765. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Others/categories.yaml +5 -1
  766. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Others/go_arm64.yaml +19 -0
  767. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Reduce/categories.yaml +16 -0
  768. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Reduce/go_arm64.yaml +71 -0
  769. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/ShiftRotate/categories.yaml +156 -41
  770. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/ShiftRotate/go_amd64.yaml +299 -0
  771. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/ShiftRotate/go_arm64.yaml +202 -0
  772. package/bin/go/src/simd/archsimd/_gen/simdgen/types.yaml +2 -0
  773. package/bin/go/src/simd/archsimd/_gen/simdgen/xed.go +44 -11
  774. package/bin/go/src/simd/archsimd/_gen/tmplgen/main.go +668 -123
  775. package/bin/go/src/simd/archsimd/_gen/unify/closure.go +1 -1
  776. package/bin/go/src/simd/archsimd/_gen/unify/env.go +35 -3
  777. package/bin/go/src/simd/archsimd/_gen/unify/yaml.go +4 -4
  778. package/bin/go/src/simd/archsimd/_gen/wasmgen/main.go +2064 -0
  779. package/bin/go/src/simd/archsimd/clmul_arm64.go +79 -0
  780. package/bin/go/src/simd/archsimd/clmul_emulated.go +103 -0
  781. package/bin/go/src/simd/archsimd/compare_gen_arm64.go +155 -0
  782. package/bin/go/src/simd/archsimd/cpu.go +1 -1
  783. package/bin/go/src/simd/archsimd/cpu_other.go +21 -0
  784. package/bin/go/src/simd/archsimd/doc.go +0 -2
  785. package/bin/go/src/simd/archsimd/dummy.s +1 -1
  786. package/bin/go/src/simd/archsimd/generate.go +1 -1
  787. package/bin/go/src/simd/archsimd/internal/test_helpers/checkslices.go +2 -2
  788. package/bin/go/src/simd/archsimd/maskmerge_gen_amd64.go +330 -0
  789. package/bin/go/src/simd/archsimd/maskmerge_gen_arm64.go +167 -0
  790. package/bin/go/src/simd/archsimd/ops_amd64.go +4210 -2475
  791. package/bin/go/src/simd/archsimd/ops_arm64.go +2186 -0
  792. package/bin/go/src/simd/archsimd/ops_emulated_amd64.go +205 -0
  793. package/bin/go/src/simd/archsimd/ops_emulated_wasm.go +212 -0
  794. package/bin/go/src/simd/archsimd/ops_internal_amd64.go +500 -56
  795. package/bin/go/src/simd/archsimd/ops_internal_arm64.go +234 -0
  796. package/bin/go/src/simd/archsimd/ops_wasm.go +1795 -0
  797. package/bin/go/src/simd/archsimd/other_gen_amd64.go +576 -72
  798. package/bin/go/src/simd/archsimd/other_gen_arm64.go +519 -0
  799. package/bin/go/src/simd/archsimd/shuffles_amd64.go +217 -76
  800. package/bin/go/src/simd/archsimd/slice_gen_amd64.go +594 -532
  801. package/bin/go/src/simd/archsimd/slice_gen_arm64.go +125 -0
  802. package/bin/go/src/simd/archsimd/slicepart_128.go +302 -0
  803. package/bin/go/src/simd/archsimd/slicepart_amd64.go +36 -235
  804. package/bin/go/src/simd/archsimd/slicepart_arm64.go +217 -0
  805. package/bin/go/src/simd/archsimd/slicepart_wasm.go +217 -0
  806. package/bin/go/src/simd/archsimd/string.go +1 -1
  807. package/bin/go/src/simd/archsimd/types_amd64.go +165 -341
  808. package/bin/go/src/simd/archsimd/types_arm64.go +224 -0
  809. package/bin/go/src/simd/archsimd/types_wasm.go +354 -0
  810. package/bin/go/src/simd/archsimd/unsafe_helpers.go +60 -0
  811. package/bin/go/src/simd/doc.go +91 -0
  812. package/bin/go/src/simd/dummy.s +7 -0
  813. package/bin/go/src/simd/internal/bridge/decls_amd64.go +4085 -0
  814. package/bin/go/src/simd/internal/bridge/decls_arm64.go +1369 -0
  815. package/bin/go/src/simd/internal/bridge/decls_wasm.go +1369 -0
  816. package/bin/go/src/simd/internal/bridge/import_hook.go +13 -0
  817. package/bin/go/src/simd/internal/bridge/simd_emulated.go +3275 -0
  818. package/bin/go/src/simd/internal/bridge/simd_types_emulated.go +95 -0
  819. package/bin/go/src/simd/internal/bridge/tofrom_128.go +65 -0
  820. package/bin/go/src/simd/internal/bridge/tofrom_amd64.go +123 -0
  821. package/bin/go/src/simd/internal/bridge/tofrom_emulated.go +63 -0
  822. package/bin/go/src/simd/midway_amd64.go +34 -0
  823. package/bin/go/src/simd/midway_arm64.go +22 -0
  824. package/bin/go/src/simd/midway_common.go +138 -0
  825. package/bin/go/src/simd/midway_wasm.go +13 -0
  826. package/bin/go/src/simd/simd_emulated.go +3275 -0
  827. package/bin/go/src/simd/simd_stubs.go +1041 -0
  828. package/bin/go/src/simd/simd_types.go +96 -0
  829. package/bin/go/src/simd/tofrom_amd64.go +374 -0
  830. package/bin/go/src/simd/tofrom_arm64.go +290 -0
  831. package/bin/go/src/simd/tofrom_wasm.go +290 -0
  832. package/bin/go/src/slices/slices.go +9 -7
  833. package/bin/go/src/strconv/isprint.go +81 -51
  834. package/bin/go/src/strings/builder.go +1 -1
  835. package/bin/go/src/strings/strings.go +44 -35
  836. package/bin/go/src/sync/atomic/doc.go +7 -0
  837. package/bin/go/src/sync/cond.go +4 -2
  838. package/bin/go/src/sync/pool.go +6 -15
  839. package/bin/go/src/sync/runtime2_lockrank.go +1 -2
  840. package/bin/go/src/syscall/exec_bsd.go +3 -3
  841. package/bin/go/src/syscall/exec_libc2.go +1 -1
  842. package/bin/go/src/syscall/exec_linux.go +7 -2
  843. package/bin/go/src/syscall/fs_js.go +9 -4
  844. package/bin/go/src/syscall/fs_wasip1.go +6 -0
  845. package/bin/go/src/syscall/js/js.go +2 -2
  846. package/bin/go/src/syscall/linkname_bsd.go +8 -0
  847. package/bin/go/src/syscall/linkname_libc.go +1 -1
  848. package/bin/go/src/syscall/linkname_openbsd.go +0 -2
  849. package/bin/go/src/syscall/mkall.sh +6 -17
  850. package/bin/go/src/syscall/syscall_aix.go +5 -0
  851. package/bin/go/src/syscall/syscall_linux_386.go +9 -0
  852. package/bin/go/src/syscall/syscall_linux_amd64.go +5 -0
  853. package/bin/go/src/syscall/syscall_linux_arm.go +4 -0
  854. package/bin/go/src/syscall/syscall_linux_arm64.go +3 -0
  855. package/bin/go/src/syscall/syscall_linux_loong64.go +3 -0
  856. package/bin/go/src/syscall/syscall_linux_mipsx.go +4 -0
  857. package/bin/go/src/syscall/syscall_linux_riscv64.go +3 -0
  858. package/bin/go/src/syscall/syscall_linux_s390x.go +5 -0
  859. package/bin/go/src/syscall/syscall_openbsd.go +77 -2
  860. package/bin/go/src/syscall/syscall_plan9.go +25 -0
  861. package/bin/go/src/syscall/syscall_solaris.go +11 -0
  862. package/bin/go/src/syscall/syscall_unix.go +19 -0
  863. package/bin/go/src/syscall/syscall_windows.go +1 -1
  864. package/bin/go/src/testing/synctest/synctest.go +21 -0
  865. package/bin/go/src/testing/testing.go +211 -52
  866. package/bin/go/src/text/template/parse/lex.go +6 -6
  867. package/bin/go/src/text/template/parse/node.go +21 -16
  868. package/bin/go/src/text/template/parse/parse.go +23 -6
  869. package/bin/go/src/text/template/template.go +5 -3
  870. package/bin/go/src/time/format.go +3 -0
  871. package/bin/go/src/time/sleep.go +0 -33
  872. package/bin/go/src/time/tick.go +3 -2
  873. package/bin/go/src/time/time.go +2 -2
  874. package/bin/go/src/time/tzdata/zzipdata.go +1 -1
  875. package/bin/go/src/time/zoneinfo.go +5 -4
  876. package/bin/go/src/time/zoneinfo_read.go +1 -1
  877. package/bin/go/src/unicode/tables.go +898 -417
  878. package/bin/go/src/uuid/uuid.go +273 -0
  879. package/bin/go/src/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go +3 -3
  880. package/bin/go/src/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.s +2066 -6598
  881. package/bin/go/src/vendor/golang.org/x/crypto/hkdf/hkdf.go +100 -0
  882. package/bin/go/src/vendor/golang.org/x/net/dns/dnsmessage/message.go +5 -4
  883. package/bin/go/src/vendor/golang.org/x/net/http/httpproxy/proxy.go +4 -4
  884. package/bin/go/src/vendor/golang.org/x/net/http3/http3.go +46 -0
  885. package/bin/go/src/vendor/golang.org/x/net/idna/{idna10.0.0.go → idna.go} +133 -35
  886. package/bin/go/src/vendor/golang.org/x/net/idna/punycode.go +4 -1
  887. package/bin/go/src/vendor/golang.org/x/net/idna/tables15.0.0.go +1 -1
  888. package/bin/go/src/vendor/golang.org/x/net/idna/tables17.0.0.go +5302 -0
  889. package/bin/go/src/vendor/golang.org/x/net/internal/http3/body.go +231 -0
  890. package/bin/go/src/vendor/golang.org/x/net/internal/http3/conn.go +131 -0
  891. package/bin/go/src/vendor/golang.org/x/net/internal/http3/doc.go +10 -0
  892. package/bin/go/src/vendor/golang.org/x/net/internal/http3/errors.go +102 -0
  893. package/bin/go/src/vendor/golang.org/x/net/internal/http3/http3.go +95 -0
  894. package/bin/go/src/vendor/golang.org/x/net/internal/http3/qpack.go +356 -0
  895. package/bin/go/src/vendor/golang.org/x/net/internal/http3/qpack_decode.go +81 -0
  896. package/bin/go/src/vendor/golang.org/x/net/internal/http3/qpack_encode.go +61 -0
  897. package/bin/go/src/vendor/golang.org/x/net/internal/http3/qpack_static.go +142 -0
  898. package/bin/go/src/vendor/golang.org/x/net/internal/http3/quic.go +40 -0
  899. package/bin/go/src/vendor/golang.org/x/net/internal/http3/roundtrip.go +423 -0
  900. package/bin/go/src/vendor/golang.org/x/net/internal/http3/server.go +866 -0
  901. package/bin/go/src/vendor/golang.org/x/net/internal/http3/settings.go +66 -0
  902. package/bin/go/src/vendor/golang.org/x/net/internal/http3/stream.go +260 -0
  903. package/bin/go/src/vendor/golang.org/x/net/internal/http3/transport.go +333 -0
  904. package/bin/go/src/vendor/golang.org/x/net/internal/http3/varint.go +23 -0
  905. package/bin/go/src/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
  906. package/bin/go/src/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
  907. package/bin/go/src/vendor/golang.org/x/net/internal/httpcommon/request.go +475 -0
  908. package/bin/go/src/vendor/golang.org/x/net/internal/quic/quicwire/wire.go +150 -0
  909. package/bin/go/src/vendor/golang.org/x/net/quic/ack_delay.go +26 -0
  910. package/bin/go/src/vendor/golang.org/x/net/quic/acks.go +213 -0
  911. package/bin/go/src/vendor/golang.org/x/net/quic/atomic_bits.go +31 -0
  912. package/bin/go/src/vendor/golang.org/x/net/quic/config.go +158 -0
  913. package/bin/go/src/vendor/golang.org/x/net/quic/congestion_reno.go +306 -0
  914. package/bin/go/src/vendor/golang.org/x/net/quic/conn.go +434 -0
  915. package/bin/go/src/vendor/golang.org/x/net/quic/conn_close.go +340 -0
  916. package/bin/go/src/vendor/golang.org/x/net/quic/conn_flow.go +142 -0
  917. package/bin/go/src/vendor/golang.org/x/net/quic/conn_id.go +502 -0
  918. package/bin/go/src/vendor/golang.org/x/net/quic/conn_loss.go +85 -0
  919. package/bin/go/src/vendor/golang.org/x/net/quic/conn_recv.go +631 -0
  920. package/bin/go/src/vendor/golang.org/x/net/quic/conn_send.go +407 -0
  921. package/bin/go/src/vendor/golang.org/x/net/quic/conn_streams.go +483 -0
  922. package/bin/go/src/vendor/golang.org/x/net/quic/crypto_stream.go +157 -0
  923. package/bin/go/src/vendor/golang.org/x/net/quic/dgram.go +53 -0
  924. package/bin/go/src/vendor/golang.org/x/net/quic/doc.go +50 -0
  925. package/bin/go/src/vendor/golang.org/x/net/quic/endpoint.go +478 -0
  926. package/bin/go/src/vendor/golang.org/x/net/quic/errors.go +129 -0
  927. package/bin/go/src/vendor/golang.org/x/net/quic/frame_debug.go +730 -0
  928. package/bin/go/src/vendor/golang.org/x/net/quic/gate.go +86 -0
  929. package/bin/go/src/vendor/golang.org/x/net/quic/idle.go +168 -0
  930. package/bin/go/src/vendor/golang.org/x/net/quic/log.go +67 -0
  931. package/bin/go/src/vendor/golang.org/x/net/quic/loss.go +521 -0
  932. package/bin/go/src/{runtime/cgo/gcc_stack_windows.c → vendor/golang.org/x/net/quic/math.go} +7 -2
  933. package/bin/go/src/vendor/golang.org/x/net/quic/pacer.go +129 -0
  934. package/bin/go/src/vendor/golang.org/x/net/quic/packet.go +267 -0
  935. package/bin/go/src/vendor/golang.org/x/net/quic/packet_number.go +72 -0
  936. package/bin/go/src/vendor/golang.org/x/net/quic/packet_parser.go +519 -0
  937. package/bin/go/src/vendor/golang.org/x/net/quic/packet_protection.go +539 -0
  938. package/bin/go/src/vendor/golang.org/x/net/quic/packet_writer.go +566 -0
  939. package/bin/go/src/vendor/golang.org/x/net/quic/path.go +87 -0
  940. package/bin/go/src/vendor/golang.org/x/net/quic/ping.go +14 -0
  941. package/bin/go/src/vendor/golang.org/x/net/quic/pipe.go +173 -0
  942. package/bin/go/src/vendor/golang.org/x/net/quic/qlog.go +272 -0
  943. package/bin/go/src/vendor/golang.org/x/net/quic/queue.go +63 -0
  944. package/bin/go/src/vendor/golang.org/x/net/quic/quic.go +221 -0
  945. package/bin/go/src/vendor/golang.org/x/net/quic/race_disabled.go +10 -0
  946. package/bin/go/src/vendor/golang.org/x/net/quic/race_enabled.go +27 -0
  947. package/bin/go/src/vendor/golang.org/x/net/quic/rangeset.go +193 -0
  948. package/bin/go/src/vendor/golang.org/x/net/quic/retry.go +240 -0
  949. package/bin/go/src/vendor/golang.org/x/net/quic/rtt.go +71 -0
  950. package/bin/go/src/vendor/golang.org/x/net/quic/sent_packet.go +119 -0
  951. package/bin/go/src/vendor/golang.org/x/net/quic/sent_packet_list.go +93 -0
  952. package/bin/go/src/vendor/golang.org/x/net/quic/sent_val.go +103 -0
  953. package/bin/go/src/vendor/golang.org/x/net/quic/skip.go +62 -0
  954. package/bin/go/src/vendor/golang.org/x/net/quic/stateless_reset.go +59 -0
  955. package/bin/go/src/vendor/golang.org/x/net/quic/stream.go +1106 -0
  956. package/bin/go/src/vendor/golang.org/x/net/quic/stream_limits.go +138 -0
  957. package/bin/go/src/vendor/golang.org/x/net/quic/tls.go +123 -0
  958. package/bin/go/src/vendor/golang.org/x/net/quic/transport_params.go +283 -0
  959. package/bin/go/src/vendor/golang.org/x/net/quic/udp.go +28 -0
  960. package/bin/go/src/vendor/golang.org/x/net/quic/udp_darwin.go +45 -0
  961. package/bin/go/src/vendor/golang.org/x/net/quic/udp_linux.go +39 -0
  962. package/bin/go/src/vendor/golang.org/x/net/quic/udp_msg.go +245 -0
  963. package/bin/go/src/vendor/golang.org/x/net/quic/udp_other.go +62 -0
  964. package/bin/go/src/vendor/golang.org/x/net/quic/udp_packetconn.go +67 -0
  965. package/bin/go/src/vendor/golang.org/x/sys/cpu/asm_darwin_arm64_gc.s +12 -0
  966. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu.go +12 -7
  967. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_arm64.go +3 -6
  968. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64.go +67 -0
  969. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go +31 -0
  970. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go +1 -0
  971. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go +2 -0
  972. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_loong64.go +14 -2
  973. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go +4 -2
  974. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_riscv64.go +1 -0
  975. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_windows.go +26 -0
  976. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_windows_arm64.go +38 -0
  977. package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_x86.go +124 -50
  978. package/bin/go/src/vendor/golang.org/x/sys/cpu/syscall_darwin_arm64_gc.go +54 -0
  979. package/bin/go/src/vendor/golang.org/x/sys/cpu/zcpu_windows.go +48 -0
  980. package/bin/go/src/vendor/golang.org/x/text/secure/bidirule/bidirule.go +4 -0
  981. package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +1 -1
  982. package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables17.0.0.go +2135 -0
  983. package/bin/go/src/vendor/golang.org/x/text/unicode/norm/forminfo.go +18 -8
  984. package/bin/go/src/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +1410 -1410
  985. package/bin/go/src/vendor/golang.org/x/text/unicode/norm/{tables13.0.0.go → tables17.0.0.go} +3530 -3186
  986. package/bin/go/src/vendor/modules.txt +14 -8
  987. package/bin/ttsc-cache.exe +0 -0
  988. package/bin/ttsc.exe +0 -0
  989. package/bin/ttscserver.exe +0 -0
  990. package/package.json +1 -1
  991. package/bin/go/src/crypto/internal/fips140/nistec/p256_ordinv_noasm.go +0 -13
  992. package/bin/go/src/go/internal/scannerhooks/hooks.go +0 -11
  993. package/bin/go/src/hash/maphash/maphash_purego.go +0 -200
  994. package/bin/go/src/hash/maphash/maphash_runtime.go +0 -64
  995. package/bin/go/src/internal/goexperiment/exp_goroutineleakprofile_off.go +0 -8
  996. package/bin/go/src/internal/goexperiment/exp_goroutineleakprofile_on.go +0 -8
  997. package/bin/go/src/internal/strconv/atofeisel.go +0 -166
  998. package/bin/go/src/internal/strconv/ftoadbox.go +0 -349
  999. package/bin/go/src/internal/strconv/ftoafixed.go +0 -184
  1000. package/bin/go/src/internal/strconv/math.go +0 -179
  1001. package/bin/go/src/net/http/h2_bundle.go +0 -12371
  1002. package/bin/go/src/net/http/h2_error.go +0 -37
  1003. package/bin/go/src/runtime/cgo/gcc_darwin_amd64.c +0 -61
  1004. package/bin/go/src/runtime/cgo/gcc_darwin_arm64.c +0 -148
  1005. package/bin/go/src/runtime/cgo/gcc_dragonfly_amd64.c +0 -61
  1006. package/bin/go/src/runtime/cgo/gcc_freebsd.c +0 -72
  1007. package/bin/go/src/runtime/cgo/gcc_freebsd_amd64.c +0 -72
  1008. package/bin/go/src/runtime/cgo/gcc_linux.c +0 -67
  1009. package/bin/go/src/runtime/cgo/gcc_linux_amd64.c +0 -92
  1010. package/bin/go/src/runtime/cgo/gcc_linux_arm64.c +0 -88
  1011. package/bin/go/src/runtime/cgo/gcc_linux_s390x.c +0 -64
  1012. package/bin/go/src/runtime/cgo/gcc_openbsd.c +0 -62
  1013. package/bin/go/src/runtime/cgo/gcc_ppc64x.c +0 -68
  1014. package/bin/go/src/runtime/cgo/gcc_signal2_ios_arm64.c +0 -11
  1015. package/bin/go/src/runtime/cgo/gcc_signal_ios_arm64.c +0 -213
  1016. package/bin/go/src/runtime/cgo/gcc_signal_ios_nolldb.c +0 -10
  1017. package/bin/go/src/runtime/cgo/gcc_solaris_amd64.c +0 -83
  1018. package/bin/go/src/runtime/cgo/gcc_stack_darwin.c +0 -25
  1019. package/bin/go/src/runtime/cgo/gcc_stack_unix.c +0 -48
  1020. package/bin/go/src/runtime/cgo/gcc_windows_386.c +0 -55
  1021. package/bin/go/src/runtime/cgo/gcc_windows_amd64.c +0 -54
  1022. package/bin/go/src/runtime/cgo/gcc_windows_arm64.c +0 -42
  1023. package/bin/go/src/runtime/cgo/libcgo_windows.h +0 -6
  1024. package/bin/go/src/runtime/cgo/signal_ios_arm64.go +0 -10
  1025. package/bin/go/src/runtime/cgo/signal_ios_arm64.s +0 -56
  1026. package/bin/go/src/runtime/rt0_linux_ppc64.s +0 -28
  1027. package/bin/go/src/runtime/stubs_ppc64.go +0 -12
  1028. package/bin/go/src/simd/archsimd/_gen/simdgen/go.yaml +0 -1
  1029. package/bin/go/src/simd/archsimd/_gen/simdgen/ops/ShiftRotate/go.yaml +0 -172
  1030. package/bin/go/src/syscall/asm_openbsd_mips64.s +0 -129
  1031. package/bin/go/src/syscall/syscall_openbsd1.go +0 -12
  1032. package/bin/go/src/syscall/syscall_openbsd_libc.go +0 -84
  1033. package/bin/go/src/syscall/syscall_openbsd_mips64.go +0 -43
  1034. package/bin/go/src/syscall/zerrors_openbsd_mips64.go +0 -1682
  1035. package/bin/go/src/syscall/zsyscall_openbsd_mips64.go +0 -1289
  1036. package/bin/go/src/syscall/zsysnum_openbsd_mips64.go +0 -218
  1037. package/bin/go/src/syscall/ztypes_openbsd_mips64.go +0 -443
  1038. package/bin/go/src/vendor/golang.org/x/net/idna/go118.go +0 -13
  1039. package/bin/go/src/vendor/golang.org/x/net/idna/idna9.0.0.go +0 -717
  1040. package/bin/go/src/vendor/golang.org/x/net/idna/pre_go118.go +0 -11
  1041. package/bin/go/src/vendor/golang.org/x/net/idna/tables10.0.0.go +0 -4559
  1042. package/bin/go/src/vendor/golang.org/x/net/idna/tables11.0.0.go +0 -4653
  1043. package/bin/go/src/vendor/golang.org/x/net/idna/tables12.0.0.go +0 -4733
  1044. package/bin/go/src/vendor/golang.org/x/net/idna/tables13.0.0.go +0 -4959
  1045. package/bin/go/src/vendor/golang.org/x/net/idna/tables9.0.0.go +0 -4486
  1046. package/bin/go/src/vendor/golang.org/x/net/idna/trie12.0.0.go +0 -30
  1047. package/bin/go/src/vendor/golang.org/x/net/idna/trie13.0.0.go +0 -30
  1048. package/bin/go/src/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +0 -11
  1049. package/bin/go/src/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +0 -14
  1050. package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +0 -1815
  1051. package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +0 -1887
  1052. package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +0 -1923
  1053. package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +0 -1955
  1054. package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +0 -1781
  1055. package/bin/go/src/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +0 -7657
  1056. package/bin/go/src/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +0 -7693
  1057. package/bin/go/src/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +0 -7710
  1058. package/bin/go/src/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +0 -7637
  1059. /package/bin/go/src/simd/archsimd/_gen/simdgen/ops/BitwiseLogic/{go.yaml → go_amd64.yaml} +0 -0
  1060. /package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Compares/{go.yaml → go_amd64.yaml} +0 -0
  1061. /package/bin/go/src/simd/archsimd/_gen/simdgen/ops/MinMax/{go.yaml → go_amd64.yaml} +0 -0
  1062. /package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Others/{go.yaml → go_amd64.yaml} +0 -0
@@ -15,6 +15,7 @@ import (
15
15
  "go/format"
16
16
  "io"
17
17
  "os"
18
+ "simd/archsimd/_gen/sgutil"
18
19
  "strings"
19
20
  "text/template"
20
21
  )
@@ -36,6 +37,24 @@ type shapeAndTemplate struct {
36
37
  t *template.Template
37
38
  }
38
39
 
40
+ func Map[T, U any](f func(T) U, in []T) []U {
41
+ x := make([]U, len(in))
42
+ for i, v := range in {
43
+ x[i] = f(v)
44
+ }
45
+ return x
46
+ }
47
+
48
+ // shapeFilter specifies how helper templates are filtered based on their size.
49
+ // It applies to both input and output vector shapes.
50
+ type shapeFilter int
51
+
52
+ const (
53
+ filterAll shapeFilter = iota
54
+ filterSmallOnly // both input and output vectors are <= 128 bits
55
+ filterLarge // either input or output vector is > 128 bits
56
+ )
57
+
39
58
  func (sat shapeAndTemplate) target(outType string, width int) shapeAndTemplate {
40
59
  newSat := sat
41
60
  newShape := *sat.s
@@ -52,6 +71,23 @@ func (sat shapeAndTemplate) target(outType string, width int) shapeAndTemplate {
52
71
  return newSat
53
72
  }
54
73
 
74
+ // arm64Target is like target but caps output at 128 bits (ARM64 NEON has no wider vectors).
75
+ func (sat shapeAndTemplate) arm64Target(outType string, width int) shapeAndTemplate {
76
+ newSat := sat
77
+ newShape := *sat.s
78
+ newShape.output = func(t string, w, c int) (ot string, ow int, oc int) {
79
+ oc = c
80
+ if width*c > 128 {
81
+ oc = 128 / width
82
+ } else if width*c < 128 {
83
+ oc = 128 / width
84
+ }
85
+ return outType, width, oc
86
+ }
87
+ newSat.s = &newShape
88
+ return newSat
89
+ }
90
+
55
91
  func (sat shapeAndTemplate) targetFixed(outType string, width, count int) shapeAndTemplate {
56
92
  newSat := sat
57
93
  newShape := *sat.s
@@ -136,9 +172,55 @@ var avx2MaskedLoadShapes = &shapes{
136
172
  floats: []int{32, 64},
137
173
  }
138
174
 
175
+ // arm64Shapes defines the SIMD shapes for ARM64 NEON (128-bit only)
176
+ var arm64Shapes = &shapes{
177
+ vecs: []int{128},
178
+ ints: []int{8, 16, 32, 64},
179
+ uints: []int{8, 16, 32, 64},
180
+ floats: []int{32, 64},
181
+ }
182
+
183
+ // arm64IntegerShapes defines ARM64 NEON integer shapes (128-bit only, no float)
184
+ var arm64IntegerShapes = &shapes{
185
+ vecs: []int{128},
186
+ ints: []int{8, 16, 32, 64},
187
+ uints: []int{8, 16, 32, 64},
188
+ }
189
+
190
+ var arm64IntShapes = &shapes{
191
+ vecs: []int{128},
192
+ ints: []int{8, 16, 32, 64},
193
+ }
194
+
195
+ // arm64ReduceIntegerShapes defines ARM64 NEON integer shapes that support horizontal reduce (no 64-bit).
196
+ var arm64ReduceIntegerShapes = &shapes{
197
+ vecs: []int{128},
198
+ ints: []int{8, 16, 32},
199
+ uints: []int{8, 16, 32},
200
+ }
201
+
202
+ // arm64ReduceAllShapes includes float32 in addition to integer reduce shapes.
203
+ var arm64ReduceAllShapes = &shapes{
204
+ vecs: []int{128},
205
+ ints: []int{8, 16, 32},
206
+ uints: []int{8, 16, 32},
207
+ floats: []int{32},
208
+ }
209
+
210
+ // arm64UintToIntShapes maps unsigned shapes to signed output type for mixed-type shift helpers.
211
+ // The output function maps uint→int so templates can use OVType/OEtype for the second operand type.
212
+ var arm64UintToIntShapes = &shapes{
213
+ vecs: []int{128},
214
+ uints: []int{8, 16, 32, 64},
215
+ output: func(t string, w, c int) (string, int, int) {
216
+ return "int", w, c // uint → int, same width and count
217
+ },
218
+ }
219
+
139
220
  var avx2SmallLoadPunShapes = &shapes{
140
221
  // ints are done by hand, these are type-punned to int.
141
- vecs: []int{128, 256},
222
+ // 128-bit puns are now cross-platform and in a hand-written file.
223
+ vecs: []int{256},
142
224
  uints: []int{8, 16},
143
225
  }
144
226
 
@@ -149,7 +231,7 @@ var unaryFlaky = &shapes{ // for tests that support flaky equality
149
231
 
150
232
  var ternaryFlaky = &shapes{ // for tests that support flaky equality
151
233
  vecs: []int{128, 256, 512},
152
- floats: []int{32},
234
+ floats: []int{32, 64},
153
235
  }
154
236
 
155
237
  var avx2SignedComparisons = &shapes{
@@ -162,6 +244,27 @@ var avx2UnsignedComparisons = &shapes{
162
244
  uints: []int{8, 16, 32, 64},
163
245
  }
164
246
 
247
+ // The shift-all shapes are for rotate emulation
248
+ var amdIntShiftAllShapes = &shapes{
249
+ vecs: []int{128, 256, 512},
250
+ ints: []int{16, 32, 64}, // has 32 and 64 rotate on AVX512 that is too hard to use, and no 8-bit shiftall
251
+ }
252
+
253
+ var amdUintShiftAllShapes = &shapes{
254
+ vecs: []int{128, 256, 512},
255
+ uints: []int{16, 32, 64}, // has 32 and 64 rotate on AVX512 that is too hard to use, and no 8-bit shiftall
256
+ }
257
+
258
+ var neonIntShiftAllShapes = &shapes{
259
+ vecs: []int{128},
260
+ ints: []int{8, 16, 32, 64},
261
+ }
262
+
263
+ var neonUintShiftAllShapes = &shapes{
264
+ vecs: []int{128},
265
+ uints: []int{8, 16, 32, 64},
266
+ }
267
+
165
268
  type templateData struct {
166
269
  VType string // the type of the vector, e.g. Float32x4
167
270
  AOrAn string // for documentation, the article "a" or "an"
@@ -184,7 +287,7 @@ func (t templateData) As128BitVec() string {
184
287
  return fmt.Sprintf("%s%dx%d", t.Base, t.EWidth, 128/t.EWidth)
185
288
  }
186
289
 
187
- func oneTemplate(t *template.Template, baseType string, width, count int, out io.Writer, rtf resultTypeFunc) {
290
+ func oneTemplate(t *template.Template, baseType string, width, count int, out io.Writer, rtf resultTypeFunc, filter shapeFilter) {
188
291
  b := width * count
189
292
  if b < 128 || b > 512 {
190
293
  return
@@ -200,7 +303,24 @@ func oneTemplate(t *template.Template, baseType string, width, count int, out io
200
303
  if ot == "float" && ow < 32 {
201
304
  return
202
305
  }
306
+ if ot == baseType && ow == width && oc == count && strings.Contains(t.Name(), "convert_helpers") {
307
+ return
308
+ }
203
309
  }
310
+
311
+ ob := ow * oc
312
+ isSmall := (b <= 128) && (ob <= 128)
313
+ switch filter {
314
+ case filterSmallOnly:
315
+ if !isSmall {
316
+ return
317
+ }
318
+ case filterLarge:
319
+ if isSmall {
320
+ return
321
+ }
322
+ }
323
+
204
324
  ovType := fmt.Sprintf("%s%dx%d", strings.ToUpper(ot[:1])+ot[1:], ow, oc)
205
325
  oeType := fmt.Sprintf("%s%d", ot, ow)
206
326
  oEType := fmt.Sprintf("%s%d", strings.ToUpper(ot[:1])+ot[1:], ow)
@@ -216,7 +336,7 @@ func oneTemplate(t *template.Template, baseType string, width, count int, out io
216
336
  aOrAn = "an"
217
337
  }
218
338
  oxFF := fmt.Sprintf("0x%x", uint64((1<<count)-1))
219
- t.Execute(out, templateData{
339
+ err := t.Execute(out, templateData{
220
340
  VType: vType,
221
341
  AOrAn: aOrAn,
222
342
  EWidth: width,
@@ -232,11 +352,14 @@ func oneTemplate(t *template.Template, baseType string, width, count int, out io
232
352
  OCount: oc,
233
353
  OEType: oEType,
234
354
  })
355
+ if err != nil {
356
+ panic(fmt.Errorf("template execute failed, %v", err))
357
+ }
235
358
  }
236
359
 
237
360
  // forTemplates expands the template sat.t for each shape
238
361
  // in sat.s, writing to out.
239
- func (sat shapeAndTemplate) forTemplates(out io.Writer) {
362
+ func (sat shapeAndTemplate) forTemplates(out io.Writer, filter shapeFilter) {
240
363
  t, s := sat.t, sat.s
241
364
  vecs := s.vecs
242
365
  ints := s.ints
@@ -245,20 +368,20 @@ func (sat shapeAndTemplate) forTemplates(out io.Writer) {
245
368
  for _, v := range vecs {
246
369
  for _, w := range ints {
247
370
  c := v / w
248
- oneTemplate(t, "int", w, c, out, sat.s.output)
371
+ oneTemplate(t, "int", w, c, out, sat.s.output, filter)
249
372
  }
250
373
  for _, w := range uints {
251
374
  c := v / w
252
- oneTemplate(t, "uint", w, c, out, sat.s.output)
375
+ oneTemplate(t, "uint", w, c, out, sat.s.output, filter)
253
376
  }
254
377
  for _, w := range floats {
255
378
  c := v / w
256
- oneTemplate(t, "float", w, c, out, sat.s.output)
379
+ oneTemplate(t, "float", w, c, out, sat.s.output, filter)
257
380
  }
258
381
  }
259
382
  }
260
383
 
261
- func prologue(s string, out io.Writer) {
384
+ func prologue(s, ba string, out io.Writer) {
262
385
  fmt.Fprintf(out,
263
386
  `// Code generated by '%s'; DO NOT EDIT.
264
387
 
@@ -278,7 +401,7 @@ package ssa
278
401
  `, s)
279
402
  }
280
403
 
281
- func unsafePrologue(s string, out io.Writer) {
404
+ func unsafePrologue(s, ba string, out io.Writer) {
282
405
  fmt.Fprintf(out,
283
406
  `// Code generated by '%s'; DO NOT EDIT.
284
407
 
@@ -291,11 +414,11 @@ import "unsafe"
291
414
  `, s)
292
415
  }
293
416
 
294
- func testPrologue(t, s string, out io.Writer) {
417
+ func testPrologue(t, s, ba string, out io.Writer) {
295
418
  fmt.Fprintf(out,
296
419
  `// Code generated by '%s'; DO NOT EDIT.
297
420
 
298
- //go:build goexperiment.simd && amd64
421
+ //go:build goexperiment.simd && %s
299
422
 
300
423
  // This file contains functions testing %s.
301
424
  // Each function in this file is specialized for a
@@ -308,12 +431,12 @@ import (
308
431
  "testing"
309
432
  )
310
433
 
311
- `, s, t)
434
+ `, s, ba, t)
312
435
  }
313
436
 
314
- func curryTestPrologue(t string) func(s string, out io.Writer) {
315
- return func(s string, out io.Writer) {
316
- testPrologue(t, s, out)
437
+ func curryTestPrologue(t string) func(s, ba string, out io.Writer) {
438
+ return func(s, ba string, out io.Writer) {
439
+ testPrologue(t, s, ba, out)
317
440
  }
318
441
  }
319
442
 
@@ -327,33 +450,41 @@ func shapedTemplateOf(s *shapes, name, temp string) shapeAndTemplate {
327
450
  t: template.Must(template.New(name).Parse(temp))}
328
451
  }
329
452
 
330
- var sliceTemplate = templateOf("slice", `
331
- // Load{{.VType}}Slice loads {{.AOrAn}} {{.VType}} from a slice of at least {{.Count}} {{.Etype}}s.
332
- func Load{{.VType}}Slice(s []{{.Etype}}) {{.VType}} {
333
- return Load{{.VType}}((*[{{.Count}}]{{.Etype}})(s))
453
+ const sliceTemplateText = `
454
+ // Load{{.VType}} loads {{.AOrAn}} {{.VType}} from a slice of elements.
455
+ // If s does not have at least {{.Count}} elements, it panics.
456
+ func Load{{.VType}}(s []{{.Etype}}) {{.VType}} {
457
+ return Load{{.VType}}Array((*[{{.Count}}]{{.Etype}})(s))
334
458
  }
335
459
 
336
- // StoreSlice stores x into a slice of at least {{.Count}} {{.Etype}}s.
337
- func (x {{.VType}}) StoreSlice(s []{{.Etype}}) {
338
- x.Store((*[{{.Count}}]{{.Etype}})(s))
460
+ // Store stores the elements of x into a slice.
461
+ // If s does not have at least {{.Count}} elements, it panics.
462
+ func (x {{.VType}}) Store(s []{{.Etype}}) {
463
+ x.StoreArray((*[{{.Count}}]{{.Etype}})(s))
339
464
  }
340
- `)
465
+ `
466
+
467
+ var sliceTemplate = templateOf("slice", sliceTemplateText)
468
+ var sliceTemplateArm64 = shapedTemplateOf(arm64Shapes, "arm64_slice", sliceTemplateText)
341
469
 
342
- var unaryTemplate = templateOf("unary_helpers", `
470
+ const unaryTestTemplate = `
343
471
  // test{{.VType}}Unary tests the simd unary method f against the expected behavior generated by want
344
472
  func test{{.VType}}Unary(t *testing.T, f func(_ archsimd.{{.VType}}) archsimd.{{.VType}}, want func(_ []{{.Etype}}) []{{.Etype}}) {
345
473
  n := {{.Count}}
346
474
  t.Helper()
347
475
  forSlice(t, {{.Etype}}s, n, func(x []{{.Etype}}) bool {
348
476
  t.Helper()
349
- a := archsimd.Load{{.VType}}Slice(x)
477
+ a := archsimd.Load{{.VType}}(x)
350
478
  g := make([]{{.Etype}}, n)
351
- f(a).StoreSlice(g)
479
+ f(a).Store(g)
352
480
  w := want(x)
353
481
  return checkSlicesLogInput(t, g, w, 0.0, func() {t.Helper(); t.Logf("x=%v", x)})
354
482
  })
355
483
  }
356
- `)
484
+ `
485
+
486
+ var unaryTemplate = templateOf("unary_helpers", unaryTestTemplate)
487
+ var unaryTemplateArm64 = shapedTemplateOf(arm64Shapes, "arm64_unary_helpers", unaryTestTemplate)
357
488
 
358
489
  var unaryFlakyTemplate = shapedTemplateOf(unaryFlaky, "unary_flaky_helpers", `
359
490
  // test{{.VType}}UnaryFlaky tests the simd unary method f against the expected behavior generated by want,
@@ -363,9 +494,9 @@ func test{{.VType}}UnaryFlaky(t *testing.T, f func(x archsimd.{{.VType}}) archsi
363
494
  t.Helper()
364
495
  forSlice(t, {{.Etype}}s, n, func(x []{{.Etype}}) bool {
365
496
  t.Helper()
366
- a := archsimd.Load{{.VType}}Slice(x)
497
+ a := archsimd.Load{{.VType}}(x)
367
498
  g := make([]{{.Etype}}, n)
368
- f(a).StoreSlice(g)
499
+ f(a).Store(g)
369
500
  w := want(x)
370
501
  return checkSlicesLogInput(t, g, w, flakiness, func() {t.Helper(); t.Logf("x=%v", x)})
371
502
  })
@@ -381,9 +512,9 @@ func test{{.VType}}ConvertTo{{.OEType}}(t *testing.T, f func(x archsimd.{{.VType
381
512
  t.Helper()
382
513
  forSlice(t, {{.Etype}}s, n, func(x []{{.Etype}}) bool {
383
514
  t.Helper()
384
- a := archsimd.Load{{.VType}}Slice(x)
515
+ a := archsimd.Load{{.VType}}(x)
385
516
  g := make([]{{.OEtype}}, {{.OCount}})
386
- f(a).StoreSlice(g)
517
+ f(a).Store(g)
387
518
  w := want(x)
388
519
  return checkSlicesLogInput(t, g, w, 0.0, func() {t.Helper(); t.Logf("x=%v", x)})
389
520
  })
@@ -406,7 +537,7 @@ var (
406
537
  unaryToFloat64 = convertTemplate.target("float", 64)
407
538
  )
408
539
 
409
- var convertLoTemplate = shapedTemplateOf(integerShapes, "convert_lo_helpers", `
540
+ var convertLoTemplate = shapedTemplateOf(allShapes, "convert_lo_helpers", `
410
541
  // test{{.VType}}ConvertLoTo{{.OVType}} tests the simd conversion method f against the expected behavior generated by want.
411
542
  // This converts only the low {{.OCount}} elements.
412
543
  func test{{.VType}}ConvertLoTo{{.OVType}}(t *testing.T, f func(x archsimd.{{.VType}}) archsimd.{{.OVType}}, want func(x []{{.Etype}}) []{{.OEtype}}) {
@@ -414,9 +545,9 @@ func test{{.VType}}ConvertLoTo{{.OVType}}(t *testing.T, f func(x archsimd.{{.VTy
414
545
  t.Helper()
415
546
  forSlice(t, {{.Etype}}s, n, func(x []{{.Etype}}) bool {
416
547
  t.Helper()
417
- a := archsimd.Load{{.VType}}Slice(x)
548
+ a := archsimd.Load{{.VType}}(x)
418
549
  g := make([]{{.OEtype}}, {{.OCount}})
419
- f(a).StoreSlice(g)
550
+ f(a).Store(g)
420
551
  w := want(x)
421
552
  return checkSlicesLogInput(t, g, w, 0.0, func() {t.Helper(); t.Logf("x=%v", x)})
422
553
  })
@@ -429,54 +560,100 @@ var (
429
560
  // regular convertTemplate covers that).
430
561
  // TODO: this includes shapes where in and out have the same element
431
562
  // type or length, which are not needed.
432
- unaryToInt64x2 = convertLoTemplate.targetFixed("int", 64, 2)
433
- unaryToInt64x4 = convertLoTemplate.targetFixed("int", 64, 4)
434
- unaryToUint64x2 = convertLoTemplate.targetFixed("uint", 64, 2)
435
- unaryToUint64x4 = convertLoTemplate.targetFixed("uint", 64, 4)
436
- unaryToInt32x4 = convertLoTemplate.targetFixed("int", 32, 4)
437
- unaryToInt32x8 = convertLoTemplate.targetFixed("int", 32, 8)
438
- unaryToUint32x4 = convertLoTemplate.targetFixed("uint", 32, 4)
439
- unaryToUint32x8 = convertLoTemplate.targetFixed("uint", 32, 8)
440
- unaryToInt16x8 = convertLoTemplate.targetFixed("int", 16, 8)
441
- unaryToUint16x8 = convertLoTemplate.targetFixed("uint", 16, 8)
563
+ unaryToInt64x2 = convertLoTemplate.targetFixed("int", 64, 2)
564
+ unaryToInt64x4 = convertLoTemplate.targetFixed("int", 64, 4)
565
+ unaryToUint64x2 = convertLoTemplate.targetFixed("uint", 64, 2)
566
+ unaryToUint64x4 = convertLoTemplate.targetFixed("uint", 64, 4)
567
+ unaryToInt32x4 = convertLoTemplate.targetFixed("int", 32, 4)
568
+ unaryToInt32x8 = convertLoTemplate.targetFixed("int", 32, 8)
569
+ unaryToUint32x4 = convertLoTemplate.targetFixed("uint", 32, 4)
570
+ unaryToUint32x8 = convertLoTemplate.targetFixed("uint", 32, 8)
571
+ unaryToInt16x8 = convertLoTemplate.targetFixed("int", 16, 8)
572
+ unaryToUint16x8 = convertLoTemplate.targetFixed("uint", 16, 8)
573
+ unaryToFloat64x2 = convertLoTemplate.targetFixed("float", 64, 2)
574
+ unaryToFloat64x4 = convertLoTemplate.targetFixed("float", 64, 4)
442
575
  )
443
576
 
444
- var binaryTemplate = templateOf("binary_helpers", `
577
+ const binaryTestTemplate = `
445
578
  // test{{.VType}}Binary tests the simd binary method f against the expected behavior generated by want
446
579
  func test{{.VType}}Binary(t *testing.T, f func(_, _ archsimd.{{.VType}}) archsimd.{{.VType}}, want func(_, _ []{{.Etype}}) []{{.Etype}}) {
447
580
  n := {{.Count}}
448
581
  t.Helper()
449
582
  forSlicePair(t, {{.Etype}}s, n, func(x, y []{{.Etype}}) bool {
450
583
  t.Helper()
451
- a := archsimd.Load{{.VType}}Slice(x)
452
- b := archsimd.Load{{.VType}}Slice(y)
584
+ a := archsimd.Load{{.VType}}(x)
585
+ b := archsimd.Load{{.VType}}(y)
453
586
  g := make([]{{.Etype}}, n)
454
- f(a, b).StoreSlice(g)
587
+ f(a, b).Store(g)
455
588
  w := want(x, y)
456
589
  return checkSlicesLogInput(t, g, w, 0.0, func() {t.Helper(); t.Logf("x=%v", x); t.Logf("y=%v", y); })
457
590
  })
458
591
  }
592
+ `
593
+
594
+ var binaryTemplate = templateOf("binary_helpers", binaryTestTemplate)
595
+ var binaryTemplateArm64 = shapedTemplateOf(arm64Shapes, "arm64_binary_helpers", binaryTestTemplate)
596
+
597
+ // ARM64 shift test helper templates
598
+
599
+ var shiftAllTestTemplate = shapedTemplateOf(integerShapes, "shift_all_helpers", `
600
+ // test{{.VType}}ShiftAll tests a shift-all method (unary + scalar uint64).
601
+ func test{{.VType}}ShiftAll(t *testing.T, f func(_ archsimd.{{.VType}}, _ uint64) archsimd.{{.VType}}, want func(_ []{{.Etype}}, _ uint64) []{{.Etype}}) {
602
+ n := {{.Count}}
603
+ t.Helper()
604
+ forSlice(t, {{.Etype}}s, n, func(x []{{.Etype}}) bool {
605
+ t.Helper()
606
+ for _, amt := range testShiftAllAmts {
607
+ a := archsimd.Load{{.VType}}(x)
608
+ g := make([]{{.Etype}}, n)
609
+ f(a, amt).Store(g)
610
+ w := want(x, amt)
611
+ if !checkSlicesLogInput(t, g, w, 0.0, func() { t.Helper(); t.Logf("x=%v, amt=%d", x, amt) }) {
612
+ return false
613
+ }
614
+ }
615
+ return true
616
+ })
617
+ }
459
618
  `)
460
619
 
461
- var ternaryTemplate = templateOf("ternary_helpers", `
620
+ var shiftMixedTestTemplateArm64 = shapedTemplateOf(arm64UintToIntShapes, "arm64_shift_mixed_helpers", `
621
+ // test{{.VType}}Shift tests a shift-like method where the first operand is {{.VType}}
622
+ // and the second operand is {{.OVType}} (mixed-type shift).
623
+ func test{{.VType}}Shift(t *testing.T, f func(_ archsimd.{{.VType}}, _ archsimd.{{.OVType}}) archsimd.{{.VType}}, want func(_ []{{.Etype}}, _ []{{.OEtype}}) []{{.Etype}}) {
624
+ n := {{.Count}}
625
+ t.Helper()
626
+ forSliceMixed(t, {{.Etype}}s, {{.OEtype}}s, n, func(x []{{.Etype}}, y []{{.OEtype}}) bool {
627
+ t.Helper()
628
+ a := archsimd.Load{{.VType}}(x)
629
+ b := archsimd.Load{{.OVType}}(y)
630
+ g := make([]{{.Etype}}, n)
631
+ f(a, b).Store(g)
632
+ w := want(x, y)
633
+ return checkSlicesLogInput(t, g, w, 0.0, func() { t.Helper(); t.Logf("x=%v", x); t.Logf("y=%v", y) })
634
+ })
635
+ }
636
+ `)
637
+
638
+ const ternaryTestTemplateText = `
462
639
  // test{{.VType}}Ternary tests the simd ternary method f against the expected behavior generated by want
463
640
  func test{{.VType}}Ternary(t *testing.T, f func(_, _, _ archsimd.{{.VType}}) archsimd.{{.VType}}, want func(_, _, _ []{{.Etype}}) []{{.Etype}}) {
464
641
  n := {{.Count}}
465
642
  t.Helper()
466
643
  forSliceTriple(t, {{.Etype}}s, n, func(x, y, z []{{.Etype}}) bool {
467
644
  t.Helper()
468
- a := archsimd.Load{{.VType}}Slice(x)
469
- b := archsimd.Load{{.VType}}Slice(y)
470
- c := archsimd.Load{{.VType}}Slice(z)
645
+ a := archsimd.Load{{.VType}}(x)
646
+ b := archsimd.Load{{.VType}}(y)
647
+ c := archsimd.Load{{.VType}}(z)
471
648
  g := make([]{{.Etype}}, n)
472
- f(a, b, c).StoreSlice(g)
649
+ f(a, b, c).Store(g)
473
650
  w := want(x, y, z)
474
651
  return checkSlicesLogInput(t, g, w, 0.0, func() {t.Helper(); t.Logf("x=%v", x); t.Logf("y=%v", y); t.Logf("z=%v", z); })
475
652
  })
476
653
  }
477
- `)
654
+ `
478
655
 
479
- var ternaryFlakyTemplate = shapedTemplateOf(ternaryFlaky, "ternary_helpers", `
656
+ const ternaryFlakyTestTemplateText = `
480
657
  // test{{.VType}}TernaryFlaky tests the simd ternary method f against the expected behavior generated by want,
481
658
  // but using a flakiness parameter because we haven't exactly figured out how simd floating point works
482
659
  func test{{.VType}}TernaryFlaky(t *testing.T, f func(x, y, z archsimd.{{.VType}}) archsimd.{{.VType}}, want func(x, y, z []{{.Etype}}) []{{.Etype}}, flakiness float64) {
@@ -484,16 +661,63 @@ func test{{.VType}}TernaryFlaky(t *testing.T, f func(x, y, z archsimd.{{.VType}}
484
661
  t.Helper()
485
662
  forSliceTriple(t, {{.Etype}}s, n, func(x, y, z []{{.Etype}}) bool {
486
663
  t.Helper()
487
- a := archsimd.Load{{.VType}}Slice(x)
488
- b := archsimd.Load{{.VType}}Slice(y)
489
- c := archsimd.Load{{.VType}}Slice(z)
664
+ a := archsimd.Load{{.VType}}(x)
665
+ b := archsimd.Load{{.VType}}(y)
666
+ c := archsimd.Load{{.VType}}(z)
490
667
  g := make([]{{.Etype}}, n)
491
- f(a, b, c).StoreSlice(g)
668
+ f(a, b, c).Store(g)
492
669
  w := want(x, y, z)
493
670
  return checkSlicesLogInput(t, g, w, flakiness, func() {t.Helper(); t.Logf("x=%v", x); t.Logf("y=%v", y); t.Logf("z=%v", z); })
494
671
  })
495
672
  }
496
- `)
673
+ `
674
+
675
+ var ternaryTemplate = templateOf("ternary_helpers", ternaryTestTemplateText)
676
+ var ternaryFlakyTemplate = shapedTemplateOf(ternaryFlaky, "ternary_helpers", ternaryFlakyTestTemplateText)
677
+
678
+ const reduceTestTemplateText = `
679
+ func test{{.VType}}Reduce(t *testing.T, f func(_ archsimd.{{.VType}}) {{.Etype}}, want func(_ []{{.Etype}}) {{.Etype}}) {
680
+ n := {{.Count}}
681
+ t.Helper()
682
+ forSlice(t, {{.Etype}}s, n, func(x []{{.Etype}}) bool {
683
+ t.Helper()
684
+ a := archsimd.Load{{.VType}}(x)
685
+ g := f(a)
686
+ w := want(x)
687
+ {{- if eq .Base "Float" }}
688
+ if g != w && !(math.IsNaN(float64(g)) && math.IsNaN(float64(w))) {
689
+ {{- else}}
690
+ if g != w {
691
+ {{- end}}
692
+ t.Errorf("got %v, want %v, input %v", g, w, x)
693
+ return false
694
+ }
695
+ return true
696
+ })
697
+ }
698
+ `
699
+
700
+ var reduceTestTemplateArm64 = shapedTemplateOf(arm64ReduceAllShapes, "reduce_arm64_helpers", reduceTestTemplateText)
701
+
702
+ func reduceTestPrologue(s, ba string, out io.Writer) {
703
+ fmt.Fprintf(out,
704
+ `// Code generated by '%s'; DO NOT EDIT.
705
+
706
+ //go:build goexperiment.simd && %s
707
+
708
+ // This file contains functions testing %s.
709
+ // Each function in this file is specialized for a
710
+ // particular simd type <BaseType><Width>x<Count>.
711
+
712
+ package simd_test
713
+
714
+ import (
715
+ "math"
716
+ "simd/archsimd"
717
+ "testing"
718
+ )
719
+ `, "tmplgen", ba, "simd reduce methods")
720
+ }
497
721
 
498
722
  var compareTemplate = templateOf("compare_helpers", `
499
723
  // test{{.VType}}Compare tests the simd comparison method f against the expected behavior generated by want
@@ -502,10 +726,10 @@ func test{{.VType}}Compare(t *testing.T, f func(_, _ archsimd.{{.VType}}) archsi
502
726
  t.Helper()
503
727
  forSlicePair(t, {{.Etype}}s, n, func(x, y []{{.Etype}}) bool {
504
728
  t.Helper()
505
- a := archsimd.Load{{.VType}}Slice(x)
506
- b := archsimd.Load{{.VType}}Slice(y)
729
+ a := archsimd.Load{{.VType}}(x)
730
+ b := archsimd.Load{{.VType}}(y)
507
731
  g := make([]int{{.EWidth}}, n)
508
- f(a, b).ToInt{{.WxC}}().StoreSlice(g)
732
+ f(a, b).ToInt{{.WxC}}().Store(g)
509
733
  w := want(x, y)
510
734
  return checkSlicesLogInput(t, s64(g), w, 0.0, func() {t.Helper(); t.Logf("x=%v", x); t.Logf("y=%v", y); })
511
735
  })
@@ -519,9 +743,9 @@ func test{{.VType}}UnaryCompare(t *testing.T, f func(x archsimd.{{.VType}}) arch
519
743
  t.Helper()
520
744
  forSlice(t, {{.Etype}}s, n, func(x []{{.Etype}}) bool {
521
745
  t.Helper()
522
- a := archsimd.Load{{.VType}}Slice(x)
746
+ a := archsimd.Load{{.VType}}(x)
523
747
  g := make([]int{{.EWidth}}, n)
524
- f(a).ToInt{{.WxC}}().StoreSlice(g)
748
+ f(a).ToInt{{.WxC}}().Store(g)
525
749
  w := want(x)
526
750
  return checkSlicesLogInput(t, s64(g), w, 0.0, func() {t.Helper(); t.Logf("x=%v", x)})
527
751
  })
@@ -539,11 +763,11 @@ func test{{.VType}}CompareMasked(t *testing.T,
539
763
  t.Helper()
540
764
  forSlicePairMasked(t, {{.Etype}}s, n, func(x, y []{{.Etype}}, m []bool) bool {
541
765
  t.Helper()
542
- a := archsimd.Load{{.VType}}Slice(x)
543
- b := archsimd.Load{{.VType}}Slice(y)
544
- k := archsimd.LoadInt{{.WxC}}Slice(toVect[int{{.EWidth}}](m)).ToMask()
766
+ a := archsimd.Load{{.VType}}(x)
767
+ b := archsimd.Load{{.VType}}(y)
768
+ k := archsimd.LoadInt{{.WxC}}(toVect[int{{.EWidth}}](m)).ToMask()
545
769
  g := make([]int{{.EWidth}}, n)
546
- f(a, b, k).ToInt{{.WxC}}().StoreSlice(g)
770
+ f(a, b, k).ToInt{{.WxC}}().Store(g)
547
771
  w := want(x, y)
548
772
  for i := range m {
549
773
  if !m[i] {
@@ -555,96 +779,102 @@ func test{{.VType}}CompareMasked(t *testing.T,
555
779
  }
556
780
  `)
557
781
 
558
- var avx512MaskedLoadSlicePartTemplate = shapedTemplateOf(avx512Shapes, "avx 512 load slice part", `
559
- // Load{{.VType}}SlicePart loads a {{.VType}} from the slice s.
782
+ var avx512MaskedLoadSliceTemplate = shapedTemplateOf(avx512Shapes, "avx 512 load slice part", `
783
+ // Load{{.VType}}Part loads a {{.VType}} from the slice s, it returns the loaded vector and the
784
+ // number of elements loaded.
560
785
  // If s has fewer than {{.Count}} elements, the remaining elements of the vector are filled with zeroes.
561
- // If s has {{.Count}} or more elements, the function is equivalent to Load{{.VType}}Slice.
562
- func Load{{.VType}}SlicePart(s []{{.Etype}}) {{.VType}} {
786
+ // If s has {{.Count}} or more elements, the function is equivalent to Load{{.VType}}.
787
+ func Load{{.VType}}Part(s []{{.Etype}}) ({{.VType}}, int) {
563
788
  l := len(s)
564
789
  if l >= {{.Count}} {
565
- return Load{{.VType}}Slice(s)
790
+ return Load{{.VType}}(s), {{.Count}}
566
791
  }
567
792
  if l == 0 {
568
793
  var x {{.VType}}
569
- return x
794
+ return x, 0
570
795
  }
571
796
  mask := Mask{{.WxC}}FromBits({{.OxFF}} >> ({{.Count}} - l))
572
- return LoadMasked{{.VType}}(pa{{.VType}}(s), mask)
797
+ return Load{{.VType}}Array(pa{{.VType}}(s)).Masked(mask), l
573
798
  }
574
799
 
575
- // StoreSlicePart stores the {{.Count}} elements of x into the slice s.
800
+ // StorePart stores the {{.Count}} elements of x into the slice s.
576
801
  // It stores as many elements as will fit in s.
577
- // If s has {{.Count}} or more elements, the method is equivalent to x.StoreSlice.
578
- func (x {{.VType}}) StoreSlicePart(s []{{.Etype}}) {
802
+ // If s has {{.Count}} or more elements, the method is equivalent to x.Store.
803
+ func (x {{.VType}}) StorePart(s []{{.Etype}}) int {
579
804
  l := len(s)
580
805
  if l >= {{.Count}} {
581
- x.StoreSlice(s)
582
- return
806
+ x.Store(s)
807
+ return {{.Count}}
583
808
  }
584
809
  if l == 0 {
585
- return
810
+ return 0
586
811
  }
587
812
  mask := Mask{{.WxC}}FromBits({{.OxFF}} >> ({{.Count}} - l))
588
- x.StoreMasked(pa{{.VType}}(s), mask)
813
+ x.StoreArrayMasked(pa{{.VType}}(s), mask)
814
+ return l
589
815
  }
590
816
  `)
591
817
 
592
- var avx2MaskedLoadSlicePartTemplate = shapedTemplateOf(avx2MaskedLoadShapes, "avx 2 load slice part", `
593
- // Load{{.VType}}SlicePart loads a {{.VType}} from the slice s.
818
+ var avx2MaskedLoadSliceTemplate = shapedTemplateOf(avx2MaskedLoadShapes, "avx 2 load slice part", `
819
+ // Load{{.VType}}Part loads a {{.VType}} from the slice s, it returns the loaded vector and the
820
+ // number of elements loaded.
594
821
  // If s has fewer than {{.Count}} elements, the remaining elements of the vector are filled with zeroes.
595
- // If s has {{.Count}} or more elements, the function is equivalent to Load{{.VType}}Slice.
596
- func Load{{.VType}}SlicePart(s []{{.Etype}}) {{.VType}} {
822
+ // If s has {{.Count}} or more elements, the function is equivalent to Load{{.VType}}.
823
+ func Load{{.VType}}Part(s []{{.Etype}}) ({{.VType}}, int) {
597
824
  l := len(s)
598
825
  if l >= {{.Count}} {
599
- return Load{{.VType}}Slice(s)
826
+ return Load{{.VType}}(s), {{.Count}}
600
827
  }
601
828
  if l == 0 {
602
829
  var x {{.VType}}
603
- return x
830
+ return x, 0
604
831
  }
605
832
  mask := vecMask{{.EWidth}}[len(vecMask{{.EWidth}})/2-l:]
606
- return LoadMasked{{.VType}}(pa{{.VType}}(s), LoadInt{{.WxC}}Slice(mask).asMask())
833
+ return Load{{.VType}}Array(pa{{.VType}}(s)).Masked(LoadInt{{.WxC}}(mask).asMask()), l
607
834
  }
608
835
 
609
- // StoreSlicePart stores the {{.Count}} elements of x into the slice s.
836
+ // StorePart stores the {{.Count}} elements of x into the slice s.
610
837
  // It stores as many elements as will fit in s.
611
- // If s has {{.Count}} or more elements, the method is equivalent to x.StoreSlice.
612
- func (x {{.VType}}) StoreSlicePart(s []{{.Etype}}) {
838
+ // If s has {{.Count}} or more elements, the method is equivalent to x.Store.
839
+ func (x {{.VType}}) StorePart(s []{{.Etype}}) int {
613
840
  l := len(s)
614
841
  if l >= {{.Count}} {
615
- x.StoreSlice(s)
616
- return
842
+ x.Store(s)
843
+ return {{.Count}}
617
844
  }
618
845
  if l == 0 {
619
- return
846
+ return 0
620
847
  }
621
848
  mask := vecMask{{.EWidth}}[len(vecMask{{.EWidth}})/2-l:]
622
- x.StoreMasked(pa{{.VType}}(s), LoadInt{{.WxC}}Slice(mask).asMask())
849
+ x.StoreArrayMasked(pa{{.VType}}(s), LoadInt{{.WxC}}(mask).asMask())
850
+ return l
623
851
  }
624
852
  `)
625
853
 
626
- var avx2SmallLoadSlicePartTemplate = shapedTemplateOf(avx2SmallLoadPunShapes, "avx 2 small load slice part", `
627
- // Load{{.VType}}SlicePart loads a {{.VType}} from the slice s.
854
+ var avx2SmallLoadSliceTemplate = shapedTemplateOf(avx2SmallLoadPunShapes, "avx 2 small load slice part", `
855
+ // Load{{.VType}}Part loads a {{.VType}} from the slice s, it returns the loaded vector and the
856
+ // number of elements loaded.
628
857
  // If s has fewer than {{.Count}} elements, the remaining elements of the vector are filled with zeroes.
629
- // If s has {{.Count}} or more elements, the function is equivalent to Load{{.VType}}Slice.
630
- func Load{{.VType}}SlicePart(s []{{.Etype}}) {{.VType}} {
858
+ // If s has {{.Count}} or more elements, the function is equivalent to Load{{.VType}}.
859
+ func Load{{.VType}}Part(s []{{.Etype}}) ({{.VType}}, int) {
631
860
  if len(s) == 0 {
632
861
  var zero {{.VType}}
633
- return zero
862
+ return zero, 0
634
863
  }
635
864
  t := unsafe.Slice((*int{{.EWidth}})(unsafe.Pointer(&s[0])), len(s))
636
- return LoadInt{{.WxC}}SlicePart(t).As{{.VType}}()
865
+ v, l := LoadInt{{.WxC}}Part(t)
866
+ return v.As{{.VType}}(), l
637
867
  }
638
868
 
639
- // StoreSlicePart stores the {{.Count}} elements of x into the slice s.
869
+ // StorePart stores the {{.Count}} elements of x into the slice s.
640
870
  // It stores as many elements as will fit in s.
641
- // If s has {{.Count}} or more elements, the method is equivalent to x.StoreSlice.
642
- func (x {{.VType}}) StoreSlicePart(s []{{.Etype}}) {
871
+ // If s has {{.Count}} or more elements, the method is equivalent to x.Store.
872
+ func (x {{.VType}}) StorePart(s []{{.Etype}}) int {
643
873
  if len(s) == 0 {
644
- return
874
+ return 0
645
875
  }
646
876
  t := unsafe.Slice((*int{{.EWidth}})(unsafe.Pointer(&s[0])), len(s))
647
- x.AsInt{{.WxC}}().StoreSlicePart(t)
877
+ return x.AsInt{{.WxC}}().StorePart(t)
648
878
  }
649
879
  `)
650
880
 
@@ -693,6 +923,46 @@ func (x {{.VType}}) NotEqual(y {{.VType}}) Mask{{.WxC}} {
693
923
  }
694
924
  `)
695
925
 
926
+ var intRotateAllTemplate = sgutil.TemplateNamed("intRotateAll", `
927
+ // RotateAllLeft rotates all elements left by the specified amount
928
+ //
929
+ // Emulated
930
+ func (x {{.VType}}) RotateAllLeft(dist uint64) {{.VType}} {
931
+ dist = dist & ({{.EWidth}}-1)
932
+ ndist := {{.EWidth}} - dist
933
+ return x.ToBits().ShiftAllLeft(dist).Or(x.ToBits().ShiftAllRight(ndist)).BitsToInt{{.EWidth}}()
934
+ }
935
+
936
+ // RotateAllRight rotates all elements right by the specified amount
937
+ //
938
+ // Emulated
939
+ func (x {{.VType}}) RotateAllRight(dist uint64) {{.VType}} {
940
+ dist = dist & ({{.EWidth}}-1)
941
+ ndist := {{.EWidth}} - dist
942
+ return x.ToBits().ShiftAllLeft(ndist).Or(x.ToBits().ShiftAllRight(dist)).BitsToInt{{.EWidth}}()
943
+ }
944
+ `)
945
+
946
+ var uintRotateAllTemplate = sgutil.TemplateNamed("intRotateAll", `
947
+ // RotateAllLeft rotates all elements left by the specified amount
948
+ //
949
+ // Emulated
950
+ func (x {{.VType}}) RotateAllLeft(dist uint64) {{.VType}} {
951
+ dist = dist & ({{.EWidth}}-1)
952
+ ndist := {{.EWidth}} - dist
953
+ return x.ShiftAllLeft(dist).Or(x.ShiftAllRight(ndist))
954
+ }
955
+
956
+ // RotateAllRight rotates all elements right by the specified amount
957
+ //
958
+ // Emulated
959
+ func (x {{.VType}}) RotateAllRight(dist uint64) {{.VType}} {
960
+ dist = dist & ({{.EWidth}}-1)
961
+ ndist := {{.EWidth}} - dist
962
+ return x.ShiftAllLeft(ndist).Or(x.ShiftAllRight(dist))
963
+ }
964
+ `)
965
+
696
966
  var bitWiseIntTemplate = shapedTemplateOf(intShapes, "bitwise int complement", `
697
967
  // Not returns the bitwise complement of x.
698
968
  //
@@ -700,6 +970,15 @@ var bitWiseIntTemplate = shapedTemplateOf(intShapes, "bitwise int complement", `
700
970
  func (x {{.VType}}) Not() {{.VType}} {
701
971
  return x.Xor(x.Equal(x).ToInt{{.WxC}}())
702
972
  }
973
+
974
+ // Neg returns the element-wise negation of x.
975
+ //
976
+ // Emulated, CPU Feature: {{.CPUfeature}}
977
+ func (x {{.VType}}) Neg() {{.VType}} {
978
+ var zero {{.VType}}
979
+ return zero.Sub(x)
980
+ }
981
+
703
982
  `)
704
983
 
705
984
  var bitWiseUintTemplate = shapedTemplateOf(uintShapes, "bitwise uint complement", `
@@ -794,6 +1073,8 @@ var unsafePATemplate = templateOf("unsafe PA helper", `
794
1073
  // pa{{.VType}} returns a type-unsafe pointer to array that can
795
1074
  // only be used with partial load/store operations that only
796
1075
  // access the known-safe portions of the array.
1076
+ //
1077
+ //go:nocheckptr
797
1078
  func pa{{.VType}}(s []{{.Etype}}) *[{{.Count}}]{{.Etype}} {
798
1079
  return (*[{{.Count}}]{{.Etype}})(unsafe.Pointer(&s[0]))
799
1080
  }
@@ -815,7 +1096,18 @@ func (x {{.VType}}) Masked(mask Mask{{.WxC}}) {{.VType}} {
815
1096
  // Merge returns x but with elements set to y where mask is false.
816
1097
  //
817
1098
  // Emulated, CPU Feature: {{.CPUfeature}}
1099
+ //
1100
+ // Deprecated: use x.IfElse(mask, y)
1101
+ //
1102
+ //go:fix inline
818
1103
  func (x {{.VType}}) Merge(y {{.VType}}, mask Mask{{.WxC}}) {{.VType}} {
1104
+ return x.IfElse(mask, y)
1105
+ }
1106
+
1107
+ // IfElse returns x but with elements set to y where mask is false.
1108
+ //
1109
+ // Emulated, CPU Feature: {{.CPUfeature}}
1110
+ func (x {{.VType}}) IfElse(mask Mask{{.WxC}}, y {{.VType}}) {{.VType}} {
819
1111
  {{- if eq .BxC .WxC -}}
820
1112
  im := mask.ToInt{{.BxC}}()
821
1113
  {{- else}}
@@ -848,7 +1140,18 @@ func (x {{.VType}}) Masked(mask Mask{{.WxC}}) {{.VType}} {
848
1140
  // Merge returns x but with elements set to y where mask is false.
849
1141
  //
850
1142
  // Emulated, CPU Feature: AVX512
1143
+ //
1144
+ // Deprecated: use x.IfElse(mask, y)
1145
+ //
1146
+ //go:fix inline
851
1147
  func (x {{.VType}}) Merge(y {{.VType}}, mask Mask{{.WxC}}) {{.VType}} {
1148
+ return x.IfElse(mask, y)
1149
+ }
1150
+
1151
+ // IfElse returns x but with elements set to y where mask is false.
1152
+ //
1153
+ // Emulated, CPU Feature: AVX512
1154
+ func (x {{.VType}}) IfElse(mask Mask{{.WxC}}, y {{.VType}}) {{.VType}} {
852
1155
  {{- if eq .Base "Int" }}
853
1156
  return y.blendMasked(x, mask)
854
1157
  {{- else}}
@@ -881,22 +1184,194 @@ var broadcastTemplate = templateOf("Broadcast functions", `
881
1184
  // Emulated, CPU Feature: {{.CPUfeatureBC}}
882
1185
  func Broadcast{{.VType}}(x {{.Etype}}) {{.VType}} {
883
1186
  var z {{.As128BitVec }}
884
- return z.SetElem(0, x).Broadcast1To{{.Count}}()
1187
+ return z.SetElem(0, x).broadcast1To{{.Count}}()
1188
+ }
1189
+ `)
1190
+
1191
+ var broadcastTemplateArm64 = shapedTemplateOf(arm64Shapes, "arm64_broadcast", `
1192
+ // Broadcast{{.VType}} returns a vector with the input
1193
+ // x assigned to all elements of the output.
1194
+ func Broadcast{{.VType}}(x {{.Etype}}) {{.VType}} {
1195
+ var z {{.VType}}
1196
+ return z.SetElem(0, x).broadcast1To{{.Count}}()
1197
+ }
1198
+ `)
1199
+
1200
+ var stringTemplateArm64 = shapedTemplateOf(arm64Shapes, "arm64_String methods", `
1201
+ // String returns a string representation of SIMD vector x.
1202
+ func (x {{.VType}}) String() string {
1203
+ var s [{{.Count}}]{{.Etype}}
1204
+ x.StoreArray(&s)
1205
+ return sliceToString(s[:])
1206
+ }
1207
+ `)
1208
+
1209
+ var getHiTemplateArm64 = shapedTemplateOf(arm64Shapes, "arm64_HiToLo methods", `
1210
+ // HiToLo returns a vector with the upper 64 bits zeroed and the lower
1211
+ // 64 bits replaced with the upper 64 bits of x.
1212
+ func (x {{.VType}}) HiToLo() {{.VType}} {
1213
+ var z {{.VType}}
1214
+ {{- if and (eq .Base "Float") (eq .EWidth 64)}}
1215
+ return z.SetElem(0, x.GetElem(1))
1216
+ {{- else if (eq .EWidth 64)}}
1217
+ {{- if (eq .Base "Uint")}}
1218
+ return z.BitsToFloat64().SetElem(0, x.BitsToFloat64().GetElem(1)).ToBits()
1219
+ {{- else}}
1220
+ return z.ToBits().BitsToFloat64().SetElem(0, x.ToBits().BitsToFloat64().GetElem(1)).ToBits().BitsTo{{.Base}}{{.EWidth}}()
1221
+ {{- end}}
1222
+ {{- else}}
1223
+ {{- if (eq .Base "Uint")}}
1224
+ return z.ReshapeToUint64s().BitsToFloat64().SetElem(0, x.ReshapeToUint64s().BitsToFloat64().GetElem(1)).ToBits().ReshapeToUint{{.EWidth}}s()
1225
+ {{- else}}
1226
+ return z.ToBits().ReshapeToUint64s().BitsToFloat64().SetElem(0, x.ToBits().ReshapeToUint64s().BitsToFloat64().GetElem(1)).ToBits().ReshapeToUint{{.EWidth}}s().BitsTo{{.Base}}{{.EWidth}}()
1227
+ {{- end}}
1228
+ {{- end}}
1229
+ }
1230
+ `)
1231
+
1232
+ var reduceSumTemplateArm64 = shapedTemplateOf(arm64ReduceIntegerShapes, "arm64_ReduceSum methods", `
1233
+ // ReduceSum reduces x by summing all elements.
1234
+ //
1235
+ // Emulated, CPU Feature: NEON
1236
+ func (x {{.VType}}) ReduceSum() {{.Etype}} {
1237
+ return x.reduceSum().GetElem(0)
1238
+ }
1239
+ `)
1240
+
1241
+ var reduceMinMaxTemplateArm64 = shapedTemplateOf(arm64ReduceAllShapes, "arm64_ReduceMax/Min methods", `
1242
+ // ReduceMax reduces x by taking the maximum of all elements.
1243
+ //
1244
+ // Emulated, CPU Feature: NEON
1245
+ func (x {{.VType}}) ReduceMax() {{.Etype}} {
1246
+ return x.reduceMax().GetElem(0)
1247
+ }
1248
+
1249
+ // ReduceMin reduces x by taking the minimum of all elements.
1250
+ //
1251
+ // Emulated, CPU Feature: NEON
1252
+ func (x {{.VType}}) ReduceMin() {{.Etype}} {
1253
+ return x.reduceMin().GetElem(0)
885
1254
  }
886
1255
  `)
887
1256
 
888
1257
  var maskCvtTemplate = shapedTemplateOf(intShapes, "Mask conversions", `
889
- // ToMask converts from {{.Base}}{{.WxC}} to Mask{{.WxC}}, mask element is set to true when the corresponding vector element is non-zero.
1258
+ // ToMask returns a mask whose i'th element is set if x[i] is non-zero.
1259
+ func (from {{.Base}}{{.WxC}}) ToMask() (to Mask{{.WxC}}) {
1260
+ return from.NotEqual({{.Base}}{{.WxC}}{})
1261
+ }
1262
+ `)
1263
+
1264
+ var arm64MaskCvtTemplate = shapedTemplateOf(arm64IntShapes, "Mask conversions", `
1265
+ // ToMask returns a mask whose i'th element is set if x[i] is non-zero.
890
1266
  func (from {{.Base}}{{.WxC}}) ToMask() (to Mask{{.WxC}}) {
891
1267
  return from.NotEqual({{.Base}}{{.WxC}}{})
892
1268
  }
893
1269
  `)
894
1270
 
1271
+ // ARM64 derived comparison templates.
1272
+ // On ARM64 NEON, Equal, Greater, and GreaterEqual are hardware-backed.
1273
+ // Less, LessEqual, and NotEqual are derived.
1274
+
1275
+ var arm64LessTemplate = shapedTemplateOf(arm64Shapes, "arm64_less", `
1276
+ // Less returns a mask whose elements indicate whether x < y.
1277
+ func (x {{.VType}}) Less(y {{.VType}}) Mask{{.WxC}} {
1278
+ return y.Greater(x)
1279
+ }
1280
+ `)
1281
+
1282
+ var arm64LessEqualTemplate = shapedTemplateOf(arm64Shapes, "arm64_less_equal", `
1283
+ // LessEqual returns a mask whose elements indicate whether x <= y.
1284
+ func (x {{.VType}}) LessEqual(y {{.VType}}) Mask{{.WxC}} {
1285
+ return y.GreaterEqual(x)
1286
+ }
1287
+ `)
1288
+
1289
+ var arm64NotEqualTemplate = shapedTemplateOf(arm64Shapes, "arm64_not_equal", `
1290
+ // NotEqual returns a mask whose elements indicate whether x != y.
1291
+ func (x {{.VType}}) NotEqual(y {{.VType}}) Mask{{.WxC}} {
1292
+ return x.Equal(y).Not()
1293
+ }
1294
+ `)
1295
+
1296
+ // ARM64 Masked/Merge templates using bitSelect (picks y's bits where mask=1, keeps x's bits where mask=0).
1297
+
1298
+ var arm64MaskedMergeTemplate = shapedTemplateOf(arm64Shapes, "arm64_masked_merge", `
1299
+ // Masked returns x but with elements zeroed where mask is false.
1300
+ func (x {{.VType}}) Masked(mask Mask{{.WxC}}) {{.VType}} {
1301
+ im := mask.ToInt{{.WxC}}()
1302
+ {{- if eq .Base "Int" }}
1303
+ return im.And(x)
1304
+ {{- else if eq .Base "Uint" }}
1305
+ return im.And(x.BitsToInt{{.EWidth}}()).ToBits()
1306
+ {{- else }}
1307
+ return im.And(x.ToBits().BitsToInt{{.EWidth}}()).ToBits().BitsTo{{.Base}}{{.EWidth}}()
1308
+ {{- end }}
1309
+ }
1310
+
1311
+ // IfElse returns x but with elements set to y where mask is false.
1312
+ func (x {{.VType}}) IfElse(mask Mask{{.WxC}}, y {{.VType}}) {{.VType}} {
1313
+ {{- if eq .WxC "8x16" }}
1314
+ {{- if eq .Base "Int" }}
1315
+ return x.bitSelect(y, mask.ToInt8x16())
1316
+ {{- else if eq .Base "Uint" }}
1317
+ return x.BitsToInt8().bitSelect(y.BitsToInt8(), mask.ToInt8x16()).ToBits()
1318
+ {{- else }}
1319
+ return x.ToBits().BitsToInt8().bitSelect(y.ToBits().BitsToInt8(), mask.ToInt8x16()).ToBits().BitsTo{{.Base}}{{.EWidth}}()
1320
+ {{- end }}
1321
+ {{- else if eq .Base "Uint" }}
1322
+ im := mask.ToInt{{.WxC}}().ToBits().ReshapeToUint8s().BitsToInt8()
1323
+ ix := x.ReshapeToUint8s().BitsToInt8()
1324
+ iy := y.ReshapeToUint8s().BitsToInt8()
1325
+ return ix.bitSelect(iy, im).ToBits().ReshapeToUint{{.EWidth}}s()
1326
+ {{- else }}
1327
+ im := mask.ToInt{{.WxC}}().ToBits().ReshapeToUint8s().BitsToInt8()
1328
+ ix := x.ToBits().ReshapeToUint8s().BitsToInt8()
1329
+ iy := y.ToBits().ReshapeToUint8s().BitsToInt8()
1330
+ return ix.bitSelect(iy, im).ToBits().ReshapeToUint{{.EWidth}}s().BitsTo{{.Base}}{{.EWidth}}()
1331
+ {{- end }}
1332
+ }
1333
+ `)
1334
+
1335
+ var compareTemplateArm64 = shapedTemplateOf(arm64Shapes, "arm64_compare_helpers", `
1336
+ // test{{.VType}}Compare tests the simd comparison method f against the expected behavior generated by want
1337
+ func test{{.VType}}Compare(t *testing.T, f func(_, _ archsimd.{{.VType}}) archsimd.Mask{{.WxC}}, want func(_, _ []{{.Etype}}) []int64) {
1338
+ n := {{.Count}}
1339
+ t.Helper()
1340
+ forSlicePair(t, {{.Etype}}s, n, func(x, y []{{.Etype}}) bool {
1341
+ t.Helper()
1342
+ a := archsimd.Load{{.VType}}(x)
1343
+ b := archsimd.Load{{.VType}}(y)
1344
+ g := make([]int{{.EWidth}}, n)
1345
+ f(a, b).ToInt{{.WxC}}().Store(g)
1346
+ w := want(x, y)
1347
+ return checkSlicesLogInput(t, s64(g), w, 0.0, func() {t.Helper(); t.Logf("x=%v", x); t.Logf("y=%v", y); })
1348
+ })
1349
+ }
1350
+ `)
1351
+
1352
+ var arm64MaskToString = shapedTemplateOf(arm64IntShapes, "arm64_maskToString", `
1353
+ // String returns a string representation of SIMD mask x.
1354
+ func (x Mask{{.WxC}}) String() string {
1355
+ var s [{{.Count}}]{{.Etype}}
1356
+ x.ToInt{{.WxC}}().Neg().StoreArray(&s)
1357
+ return sliceToString(s[:])
1358
+ }
1359
+ `)
1360
+
895
1361
  var stringTemplate = shapedTemplateOf(allShapes, "String methods", `
896
1362
  // String returns a string representation of SIMD vector x.
897
1363
  func (x {{.VType}}) String() string {
898
1364
  var s [{{.Count}}]{{.Etype}}
899
- x.Store(&s)
1365
+ x.StoreArray(&s)
1366
+ return sliceToString(s[:])
1367
+ }
1368
+ `)
1369
+
1370
+ var maskToString = shapedTemplateOf(intShapes, "maskToString", `
1371
+ // String returns a string representation of SIMD mask x.
1372
+ func (x Mask{{.WxC}}) String() string {
1373
+ var s [{{.Count}}]{{.Etype}}
1374
+ x.ToInt{{.WxC}}().Neg().StoreArray(&s)
900
1375
  return sliceToString(s[:])
901
1376
  }
902
1377
  `)
@@ -911,19 +1386,28 @@ func main() {
911
1386
  mm := flag.String("mm", SIMD+"maskmerge_gen_amd64.go", "file name for mask/merge operations")
912
1387
  op := flag.String("op", SIMD+"other_gen_amd64.go", "file name for other operations")
913
1388
  ush := flag.String("ush", SIMD+"unsafe_helpers.go", "file name for unsafe helpers")
914
- bh := flag.String("bh", TD+"binary_helpers_test.go", "file name for binary test helpers")
915
- uh := flag.String("uh", TD+"unary_helpers_test.go", "file name for unary test helpers")
916
- th := flag.String("th", TD+"ternary_helpers_test.go", "file name for ternary test helpers")
917
- ch := flag.String("ch", TD+"compare_helpers_test.go", "file name for compare test helpers")
1389
+ bh := flag.String("bh", TD+"binary_helpers_%W_test.go", "file name for binary test helpers")
1390
+ uh := flag.String("uh", TD+"unary_helpers_%W_test.go", "file name for unary test helpers")
1391
+ cvh := flag.String("cvh", TD+"convert_helpers_%W_test.go", "file name for conversion test helpers")
1392
+ th := flag.String("th", TD+"ternary_helpers_%W_test.go", "file name for ternary test helpers")
1393
+ ch := flag.String("ch", TD+"compare_helpers_%W_test.go", "file name for compare test helpers")
918
1394
  cmh := flag.String("cmh", TD+"comparemasked_helpers_test.go", "file name for compare-masked test helpers")
1395
+ sh := flag.String("sh", TD+"shift_helpers_%W_test.go", "file name for shift test helpers")
1396
+ // ARM64-specific
1397
+ slArm64 := flag.String("slArm64", SIMD+"slice_gen_arm64.go", "file name for ARM64 slice operations")
1398
+ opArm64 := flag.String("opArm64", SIMD+"other_gen_arm64.go", "file name for ARM64 other operations")
1399
+ shArm64 := flag.String("shArm64", TD+"shift_helpers_arm64_test.go", "file name for ARM64 shift test helpers")
1400
+ cmArm64 := flag.String("cmArm64", SIMD+"compare_gen_arm64.go", "file name for ARM64 comparison operations")
1401
+ mmArm64 := flag.String("mmArm64", SIMD+"maskmerge_gen_arm64.go", "file name for ARM64 mask/merge operations")
1402
+ rhArm64 := flag.String("rhArm64", TD+"reduce_helpers_arm64_test.go", "file name for ARM64 reduce test helpers")
919
1403
  flag.Parse()
920
1404
 
921
1405
  if *sl != "" {
922
1406
  one(*sl, unsafePrologue,
923
1407
  sliceTemplate,
924
- avx512MaskedLoadSlicePartTemplate,
925
- avx2MaskedLoadSlicePartTemplate,
926
- avx2SmallLoadSlicePartTemplate,
1408
+ avx512MaskedLoadSliceTemplate,
1409
+ avx2MaskedLoadSliceTemplate,
1410
+ avx2SmallLoadSliceTemplate,
927
1411
  )
928
1412
  }
929
1413
  if *cm != "" {
@@ -945,13 +1429,19 @@ func main() {
945
1429
  bitWiseIntTemplate,
946
1430
  bitWiseUintTemplate,
947
1431
  stringTemplate,
1432
+ maskToString,
1433
+ shapeAndTemplate{amdIntShiftAllShapes, intRotateAllTemplate},
1434
+ shapeAndTemplate{amdUintShiftAllShapes, uintRotateAllTemplate},
948
1435
  )
949
1436
  }
950
1437
  if *ush != "" {
951
1438
  one(*ush, unsafePrologue, unsafePATemplate)
952
1439
  }
953
1440
  if *uh != "" {
954
- one(*uh, curryTestPrologue("unary simd methods"), unaryTemplate,
1441
+ one(*uh, curryTestPrologue("unary simd methods"), unaryTemplate)
1442
+ }
1443
+ if *cvh != "" {
1444
+ one(*cvh, curryTestPrologue("conversion simd methods"),
955
1445
  unaryToInt8, unaryToUint8, unaryToInt16, unaryToUint16,
956
1446
  unaryToInt32, unaryToUint32, unaryToInt64, unaryToUint64,
957
1447
  unaryToFloat32, unaryToFloat64,
@@ -960,6 +1450,7 @@ func main() {
960
1450
  unaryToInt32x4, unaryToInt32x8,
961
1451
  unaryToUint32x4, unaryToUint32x8,
962
1452
  unaryToInt16x8, unaryToUint16x8,
1453
+ unaryToFloat64x2, unaryToFloat64x4,
963
1454
  unaryFlakyTemplate,
964
1455
  )
965
1456
  }
@@ -975,6 +1466,48 @@ func main() {
975
1466
  if *cmh != "" {
976
1467
  one(*cmh, curryTestPrologue("simd methods that compare two operands under a mask"), compareMaskedTemplate)
977
1468
  }
1469
+ if *sh != "" {
1470
+ one(*sh, curryTestPrologue("shift simd methods"),
1471
+ shiftAllTestTemplate,
1472
+ )
1473
+ }
1474
+
1475
+ // ARM64-specific generation
1476
+ if *slArm64 != "" {
1477
+ one(*slArm64, prologue, sliceTemplateArm64)
1478
+ }
1479
+ if *opArm64 != "" {
1480
+ one(*opArm64, prologue,
1481
+ broadcastTemplateArm64,
1482
+ stringTemplateArm64,
1483
+ getHiTemplateArm64,
1484
+ arm64MaskCvtTemplate,
1485
+ shapeAndTemplate{neonIntShiftAllShapes, intRotateAllTemplate},
1486
+ shapeAndTemplate{neonUintShiftAllShapes, uintRotateAllTemplate},
1487
+ reduceSumTemplateArm64,
1488
+ reduceMinMaxTemplateArm64)
1489
+ }
1490
+ if *shArm64 != "" {
1491
+ oneArch(*shArm64, "arm64", curryTestPrologue("shift simd methods"), filterAll,
1492
+ shiftMixedTestTemplateArm64,
1493
+ )
1494
+ }
1495
+ if *cmArm64 != "" {
1496
+ one(*cmArm64, prologue,
1497
+ arm64LessTemplate,
1498
+ arm64LessEqualTemplate,
1499
+ arm64NotEqualTemplate,
1500
+ )
1501
+ }
1502
+ if *mmArm64 != "" {
1503
+ one(*mmArm64, prologue,
1504
+ arm64MaskedMergeTemplate,
1505
+ arm64MaskToString,
1506
+ )
1507
+ }
1508
+ if *rhArm64 != "" {
1509
+ oneArch(*rhArm64, "arm64", reduceTestPrologue, filterAll, reduceTestTemplateArm64)
1510
+ }
978
1511
 
979
1512
  nonTemplateRewrites(SSA+"tern_helpers.go", ssaPrologue, classifyBooleanSIMD, ternOpForLogical)
980
1513
 
@@ -1135,11 +1668,23 @@ func nonTemplateRewrites(filename string, prologue func(s string, out io.Writer)
1135
1668
 
1136
1669
  }
1137
1670
 
1138
- func one(filename string, prologue func(s string, out io.Writer), sats ...shapeAndTemplate) {
1671
+ func one(filename string, prologue func(s, buildArch string, out io.Writer), sats ...shapeAndTemplate) {
1139
1672
  if filename == "" {
1140
1673
  return
1141
1674
  }
1142
1675
 
1676
+ if strings.Contains(filename, "%W") {
1677
+ smallFile := strings.ReplaceAll(filename, "%W", "128")
1678
+ largeFile := strings.ReplaceAll(filename, "%W", "wider")
1679
+ oneArch(smallFile, "(amd64 || wasm || arm64)", prologue, filterSmallOnly, sats...)
1680
+ oneArch(largeFile, "amd64", prologue, filterLarge, sats...)
1681
+ return
1682
+ }
1683
+ oneArch(filename, "amd64", prologue, filterAll, sats...)
1684
+ }
1685
+
1686
+ func oneArch(filename, buildArch string, prologue func(s, buildArch string, out io.Writer), filter shapeFilter, sats ...shapeAndTemplate) {
1687
+
1143
1688
  ofile := os.Stdout
1144
1689
 
1145
1690
  if filename != "-" {
@@ -1153,9 +1698,9 @@ func one(filename string, prologue func(s string, out io.Writer), sats ...shapeA
1153
1698
 
1154
1699
  out := new(bytes.Buffer)
1155
1700
 
1156
- prologue("tmplgen", out)
1701
+ prologue("tmplgen", buildArch, out)
1157
1702
  for _, sat := range sats {
1158
- sat.forTemplates(out)
1703
+ sat.forTemplates(out, filter)
1159
1704
  }
1160
1705
 
1161
1706
  b, err := format.Source(out.Bytes())