@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.
- package/bin/go/VERSION +2 -2
- package/bin/go/bin/go.exe +0 -0
- package/bin/go/bin/gofmt.exe +0 -0
- package/bin/go/lib/time/update.bash +2 -2
- package/bin/go/lib/time/zoneinfo.zip +0 -0
- package/bin/go/pkg/include/asm_ppc64x.h +0 -16
- package/bin/go/pkg/tool/windows_arm64/asm.exe +0 -0
- package/bin/go/pkg/tool/windows_arm64/cgo.exe +0 -0
- package/bin/go/pkg/tool/windows_arm64/compile.exe +0 -0
- package/bin/go/pkg/tool/windows_arm64/cover.exe +0 -0
- package/bin/go/pkg/tool/windows_arm64/fix.exe +0 -0
- package/bin/go/pkg/tool/windows_arm64/link.exe +0 -0
- package/bin/go/pkg/tool/windows_arm64/preprofile.exe +0 -0
- package/bin/go/pkg/tool/windows_arm64/vet.exe +0 -0
- package/bin/go/src/archive/tar/reader.go +2 -1
- package/bin/go/src/archive/zip/reader.go +5 -29
- package/bin/go/src/archive/zip/struct.go +5 -6
- package/bin/go/src/archive/zip/writer.go +120 -60
- package/bin/go/src/bufio/bufio.go +1 -1
- package/bin/go/src/bytes/buffer.go +3 -3
- package/bin/go/src/bytes/bytes.go +45 -25
- package/bin/go/src/compress/flate/deflate.go +512 -363
- package/bin/go/src/compress/flate/deflatefast.go +156 -262
- package/bin/go/src/compress/flate/dict_decoder.go +1 -4
- package/bin/go/src/compress/flate/huffman_bit_writer.go +673 -250
- package/bin/go/src/compress/flate/huffman_code.go +164 -92
- package/bin/go/src/compress/flate/level1.go +195 -0
- package/bin/go/src/compress/flate/level2.go +190 -0
- package/bin/go/src/compress/flate/level3.go +228 -0
- package/bin/go/src/compress/flate/level4.go +200 -0
- package/bin/go/src/compress/flate/level5.go +287 -0
- package/bin/go/src/compress/flate/level6.go +297 -0
- package/bin/go/src/compress/flate/load_store.go +43 -0
- package/bin/go/src/compress/flate/regmask_amd64.go +9 -0
- package/bin/go/src/compress/flate/regmask_other.go +11 -0
- package/bin/go/src/compress/flate/token.go +238 -26
- package/bin/go/src/compress/gzip/gzip.go +8 -0
- package/bin/go/src/compress/zlib/writer.go +12 -0
- package/bin/go/src/context/context.go +6 -5
- package/bin/go/src/crypto/cipher/gcm.go +0 -4
- package/bin/go/src/crypto/crypto.go +27 -4
- package/bin/go/src/crypto/des/const.go +1 -1
- package/bin/go/src/crypto/ecdsa/ecdsa.go +21 -4
- package/bin/go/src/crypto/ed25519/ed25519.go +13 -0
- package/bin/go/src/crypto/internal/boring/aes.go +2 -3
- package/bin/go/src/crypto/internal/cryptotest/aead.go +53 -0
- package/bin/go/src/crypto/internal/cryptotest/boundary.go +34 -0
- package/bin/go/src/crypto/internal/cryptotest/boundary_compat.go +16 -0
- package/bin/go/src/crypto/internal/cryptotest/fetchmodule.go +9 -3
- package/bin/go/src/crypto/internal/cryptotest/fips140.go +62 -3
- package/bin/go/src/crypto/internal/cryptotest/hash.go +14 -0
- package/bin/go/src/crypto/internal/cryptotest/wycheproof/_schema/go.mod +19 -0
- package/bin/go/src/crypto/internal/cryptotest/wycheproof/_schema/go.sum +27 -0
- package/bin/go/src/crypto/internal/cryptotest/wycheproof/_schema/schema_gen.go +151 -0
- package/bin/go/src/crypto/internal/cryptotest/wycheproof/schema.go +9792 -0
- package/bin/go/src/crypto/internal/cryptotest/wycheproof/schemaversion.go +11 -0
- package/bin/go/src/crypto/internal/cryptotest/wycheproof/wycheproof.go +165 -0
- package/bin/go/src/crypto/internal/cryptotest/x509limbo/_schema/go.mod +14 -0
- package/bin/go/src/crypto/internal/cryptotest/x509limbo/_schema/go.sum +25 -0
- package/bin/go/src/crypto/internal/cryptotest/x509limbo/_schema/schema_gen.go +125 -0
- package/bin/go/src/crypto/internal/cryptotest/x509limbo/schema.go +591 -0
- package/bin/go/src/crypto/internal/cryptotest/x509limbo/schemaversion.go +14 -0
- package/bin/go/src/crypto/internal/fips140/aes/_asm/ctr/go.mod +1 -1
- package/bin/go/src/crypto/internal/fips140/aes/_asm/standard/go.mod +1 -1
- package/bin/go/src/crypto/internal/fips140/aes/gcm/_asm/gcm/gcm_amd64_asm.go +36 -32
- package/bin/go/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.mod +5 -5
- package/bin/go/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.sum +8 -6
- package/bin/go/src/crypto/internal/fips140/aes/gcm/gcm_amd64.s +29 -17
- package/bin/go/src/crypto/internal/fips140/aes/gcm/gcm_arm64.s +73 -72
- package/bin/go/src/crypto/internal/fips140/aes/gcm/ghash.go +140 -124
- package/bin/go/src/crypto/internal/fips140/bigmod/nat.go +18 -0
- package/bin/go/src/crypto/internal/fips140/check/checktest/asm_loong64.s +23 -0
- package/bin/go/src/crypto/internal/fips140/check/checktest/asm_none.go +1 -1
- package/bin/go/src/crypto/internal/fips140/check/checktest/asm_stub.go +1 -1
- package/bin/go/src/crypto/internal/fips140/drbg/rand.go +12 -4
- package/bin/go/src/crypto/internal/fips140/ecdsa/ecdsa.go +17 -10
- package/bin/go/src/crypto/internal/fips140/edwards25519/field/_asm/fe_amd64_asm.go +0 -90
- package/bin/go/src/crypto/internal/fips140/edwards25519/field/fe.go +64 -97
- package/bin/go/src/crypto/internal/fips140/edwards25519/field/fe_amd64.go +0 -5
- package/bin/go/src/crypto/internal/fips140/edwards25519/field/fe_amd64.s +0 -167
- package/bin/go/src/crypto/internal/fips140/edwards25519/field/fe_amd64_noasm.go +0 -2
- package/bin/go/src/crypto/internal/fips140/edwards25519/field/fe_generic.go +57 -1
- package/bin/go/src/crypto/internal/fips140/edwards25519/scalarmult.go +3 -2
- package/bin/go/src/crypto/internal/fips140/mldsa/mldsa.go +31 -25
- package/bin/go/src/crypto/internal/fips140/mldsa/semiexpanded.go +2 -2
- package/bin/go/src/crypto/internal/fips140/nistec/_asm/go.mod +4 -4
- package/bin/go/src/crypto/internal/fips140/nistec/_asm/go.sum +6 -0
- package/bin/go/src/crypto/internal/fips140/nistec/_asm/p256_asm.go +1 -613
- package/bin/go/src/crypto/internal/fips140/nistec/p256.go +2 -2
- package/bin/go/src/crypto/internal/fips140/nistec/p256_asm.go +7 -6
- package/bin/go/src/crypto/internal/fips140/nistec/p256_asm_amd64.s +0 -503
- package/bin/go/src/crypto/internal/fips140/nistec/p256_asm_arm64.s +4 -429
- package/bin/go/src/crypto/internal/fips140/nistec/p256_ordinv.go +511 -47
- package/bin/go/src/crypto/internal/fips140/pbkdf2/pbkdf2.go +1 -1
- package/bin/go/src/crypto/internal/fips140/rsa/keygen.go +48 -46
- package/bin/go/src/crypto/internal/fips140/rsa/largeexponent.go +365 -0
- package/bin/go/src/crypto/internal/fips140/rsa/pkcs1v15.go +27 -0
- package/bin/go/src/crypto/internal/fips140/sha256/_asm/go.mod +1 -1
- package/bin/go/src/crypto/internal/fips140/sha3/_asm/go.mod +1 -1
- package/bin/go/src/crypto/internal/fips140/sha512/_asm/go.mod +1 -1
- package/bin/go/src/crypto/internal/fips140/subtle/constant_time.go +1 -1
- package/bin/go/src/crypto/internal/fips140/subtle/xor_asm.go +1 -1
- package/bin/go/src/crypto/internal/fips140/subtle/xor_riscv64.go +18 -0
- package/bin/go/src/crypto/internal/fips140/subtle/xor_riscv64.s +33 -2
- package/bin/go/src/crypto/internal/fips140deps/cpu/cpu.go +2 -0
- package/bin/go/src/crypto/internal/fips140deps/time/time.go +7 -4
- package/bin/go/src/crypto/internal/fips140only/fips140only.go +0 -7
- package/bin/go/src/crypto/internal/fips140only/random_fips140v1.0.go +17 -0
- package/bin/go/src/crypto/internal/fips140only/random_fips140v1.28.go +16 -0
- package/bin/go/src/crypto/internal/fips140test/acvp_capabilities_fips140v1.28.json +86 -0
- package/bin/go/src/crypto/internal/fips140test/acvp_test_fips140v1.28.config.json +58 -0
- package/bin/go/src/crypto/internal/rand/rand.go +14 -14
- package/bin/go/src/crypto/internal/rand/random_fips140v1.0.go +20 -0
- package/bin/go/src/crypto/internal/rand/random_fips140v1.28.go +19 -0
- package/bin/go/src/crypto/mldsa/mldsa.go +97 -0
- package/bin/go/src/crypto/mldsa/mldsa_fips140v1.0.go +116 -0
- package/bin/go/src/crypto/mldsa/mldsa_fips140v1.26.go +226 -0
- package/bin/go/src/crypto/mlkem/mlkem.go +8 -2
- package/bin/go/src/crypto/rsa/fips.go +26 -8
- package/bin/go/src/crypto/rsa/pkcs1v15.go +2 -2
- package/bin/go/src/crypto/rsa/rsa.go +25 -2
- package/bin/go/src/crypto/sha1/sha1block_decl.go +1 -1
- package/bin/go/src/crypto/sha1/sha1block_generic.go +1 -1
- package/bin/go/src/crypto/sha1/sha1block_loong64.s +24 -8
- package/bin/go/src/crypto/sha1/sha1block_riscv64.s +225 -0
- package/bin/go/src/crypto/sha3/sha3.go +3 -2
- package/bin/go/src/crypto/tls/alert.go +2 -0
- package/bin/go/src/crypto/tls/auth.go +31 -0
- package/bin/go/src/crypto/tls/bogo_config.json +12 -23
- package/bin/go/src/crypto/tls/cipher_suites.go +3 -11
- package/bin/go/src/crypto/tls/common.go +106 -59
- package/bin/go/src/crypto/tls/common_string.go +18 -5
- package/bin/go/src/crypto/tls/conn.go +33 -35
- package/bin/go/src/crypto/tls/defaults.go +26 -20
- package/bin/go/src/crypto/tls/defaults_fips140.go +9 -0
- package/bin/go/src/crypto/tls/ech.go +9 -4
- package/bin/go/src/crypto/tls/generate_cert.go +8 -2
- package/bin/go/src/crypto/tls/handshake_client.go +17 -17
- package/bin/go/src/crypto/tls/handshake_client_tls13.go +8 -3
- package/bin/go/src/crypto/tls/handshake_server.go +26 -19
- package/bin/go/src/crypto/tls/handshake_server_tls13.go +8 -5
- package/bin/go/src/crypto/tls/key_agreement.go +5 -1
- package/bin/go/src/crypto/tls/key_schedule.go +42 -17
- package/bin/go/src/crypto/tls/prf.go +1 -1
- package/bin/go/src/crypto/tls/quic.go +6 -7
- package/bin/go/src/crypto/tls/tls.go +25 -29
- package/bin/go/src/crypto/x509/cert_pool.go +8 -4
- package/bin/go/src/crypto/x509/constraints.go +5 -0
- package/bin/go/src/crypto/x509/parser.go +101 -15
- package/bin/go/src/crypto/x509/pkcs8.go +45 -4
- package/bin/go/src/crypto/x509/pkix/pkix.go +33 -9
- package/bin/go/src/crypto/x509/root.go +113 -0
- package/bin/go/src/crypto/x509/root_darwin.go +8 -4
- package/bin/go/src/crypto/x509/root_plan9.go +2 -23
- package/bin/go/src/crypto/x509/root_unix.go +0 -97
- package/bin/go/src/crypto/x509/root_windows.go +8 -3
- package/bin/go/src/crypto/x509/verify.go +43 -4
- package/bin/go/src/crypto/x509/x509.go +169 -30
- package/bin/go/src/database/sql/closemu.go +119 -0
- package/bin/go/src/database/sql/convert.go +63 -4
- package/bin/go/src/database/sql/driver/driver.go +26 -0
- package/bin/go/src/database/sql/driver/types.go +4 -0
- package/bin/go/src/database/sql/internal/sql.go +22 -0
- package/bin/go/src/database/sql/sql.go +89 -40
- package/bin/go/src/debug/buildinfo/buildinfo.go +0 -13
- package/bin/go/src/debug/dwarf/buf.go +7 -1
- package/bin/go/src/debug/dwarf/class_string.go +3 -2
- package/bin/go/src/debug/elf/file.go +80 -50
- package/bin/go/src/debug/elf/reader.go +1 -1
- package/bin/go/src/debug/gosym/symtab.go +26 -30
- package/bin/go/src/debug/macho/file.go +2 -2
- package/bin/go/src/debug/macho/reloctype_string.go +12 -8
- package/bin/go/src/debug/pe/file.go +6 -3
- package/bin/go/src/encoding/base32/base32.go +29 -31
- package/bin/go/src/encoding/base64/base64.go +24 -29
- package/bin/go/src/encoding/gob/decode.go +7 -1
- package/bin/go/src/encoding/gob/type.go +6 -6
- package/bin/go/src/encoding/hex/hex.go +6 -6
- package/bin/go/src/encoding/json/decode.go +4 -3
- package/bin/go/src/encoding/json/encode.go +1 -2
- package/bin/go/src/encoding/json/fold.go +1 -1
- package/bin/go/src/encoding/json/internal/internal.go +11 -1
- package/bin/go/src/encoding/json/internal/jsonflags/flags.go +17 -9
- package/bin/go/src/encoding/json/internal/jsonopts/options.go +52 -37
- package/bin/go/src/encoding/json/internal/jsonopts/options_format.go +124 -0
- package/bin/go/src/encoding/json/internal/jsontest/_embed/canada_geometry.json.zst +0 -0
- package/bin/go/src/encoding/json/internal/jsontest/_embed/citm_catalog.json.zst +0 -0
- package/bin/go/src/encoding/json/internal/jsontest/_embed/golang_source.json.zst +0 -0
- package/bin/go/src/encoding/json/internal/jsontest/_embed/string_escaped.json.zst +0 -0
- package/bin/go/src/encoding/json/internal/jsontest/_embed/string_unicode.json.zst +0 -0
- package/bin/go/src/encoding/json/internal/jsontest/_embed/synthea_fhir.json.zst +0 -0
- package/bin/go/src/encoding/json/internal/jsontest/_embed/twitter_status.json.zst +0 -0
- package/bin/go/src/encoding/json/internal/jsontest/testdata.go +10 -4
- package/bin/go/src/encoding/json/internal/jsonwire/decode.go +13 -36
- package/bin/go/src/encoding/json/internal/jsonwire/encode.go +7 -7
- package/bin/go/src/encoding/json/internal/jsonwire/wire.go +30 -38
- package/bin/go/src/encoding/json/jsontext/decode.go +49 -14
- package/bin/go/src/encoding/json/jsontext/doc.go +6 -11
- package/bin/go/src/encoding/json/jsontext/encode.go +55 -39
- package/bin/go/src/encoding/json/jsontext/errors.go +34 -3
- package/bin/go/src/encoding/json/jsontext/export.go +14 -0
- package/bin/go/src/encoding/json/jsontext/options.go +8 -8
- package/bin/go/src/encoding/json/jsontext/quote.go +2 -2
- package/bin/go/src/encoding/json/jsontext/state.go +14 -14
- package/bin/go/src/encoding/json/jsontext/token.go +246 -101
- package/bin/go/src/encoding/json/jsontext/value.go +31 -16
- package/bin/go/src/encoding/json/stream.go +14 -2
- package/bin/go/src/encoding/json/v2/arshal.go +100 -114
- package/bin/go/src/encoding/json/v2/arshal_any.go +6 -5
- package/bin/go/src/encoding/json/v2/arshal_default.go +292 -189
- package/bin/go/src/encoding/json/v2/{arshal_inlined.go → arshal_embedded.go} +14 -14
- package/bin/go/src/encoding/json/v2/arshal_funcs.go +28 -47
- package/bin/go/src/encoding/json/v2/arshal_methods.go +98 -29
- package/bin/go/src/encoding/json/v2/arshal_time.go +33 -13
- package/bin/go/src/encoding/json/v2/doc.go +40 -55
- package/bin/go/src/encoding/json/v2/errors.go +29 -9
- package/bin/go/src/encoding/json/v2/fields.go +83 -81
- package/bin/go/src/encoding/json/v2/intern.go +2 -2
- package/bin/go/src/encoding/json/v2/options.go +57 -41
- package/bin/go/src/encoding/json/v2_decode.go +21 -9
- package/bin/go/src/encoding/json/v2_encode.go +21 -10
- package/bin/go/src/encoding/json/v2_indent.go +2 -0
- package/bin/go/src/encoding/json/v2_inject.go +7 -4
- package/bin/go/src/encoding/json/v2_options.go +37 -30
- package/bin/go/src/encoding/json/v2_scanner.go +6 -1
- package/bin/go/src/encoding/json/v2_stream.go +49 -14
- package/bin/go/src/encoding/pem/pem.go +6 -2
- package/bin/go/src/fmt/doc.go +11 -1
- package/bin/go/src/fmt/print.go +69 -82
- package/bin/go/src/go/ast/ast.go +4 -4
- package/bin/go/src/go/ast/filter.go +1 -1
- package/bin/go/src/go/ast/scope.go +2 -2
- package/bin/go/src/go/build/build.go +1 -1
- package/bin/go/src/go/build/constraint/vers.go +4 -1
- package/bin/go/src/go/build/read.go +2 -2
- package/bin/go/src/go/constant/kind_string.go +3 -2
- package/bin/go/src/go/constant/value.go +26 -4
- package/bin/go/src/go/doc/comment/std.go +1 -0
- package/bin/go/src/go/importer/importer.go +4 -3
- package/bin/go/src/go/internal/gccgoimporter/parser.go +2 -0
- package/bin/go/src/go/internal/gcimporter/ureader.go +141 -56
- package/bin/go/src/go/parser/parser.go +11 -22
- package/bin/go/src/go/printer/math.go +28 -0
- package/bin/go/src/go/printer/nodes.go +28 -11
- package/bin/go/src/go/printer/printer.go +3 -1
- package/bin/go/src/go/scanner/errors.go +2 -0
- package/bin/go/src/go/scanner/scanner.go +40 -28
- package/bin/go/src/go/token/position.go +7 -16
- package/bin/go/src/go/types/alias.go +0 -18
- package/bin/go/src/go/types/api.go +4 -10
- package/bin/go/src/go/types/api_predicates.go +2 -2
- package/bin/go/src/go/types/assignments.go +44 -38
- package/bin/go/src/go/types/builtins.go +199 -168
- package/bin/go/src/go/types/call.go +155 -138
- package/bin/go/src/go/types/check.go +0 -83
- package/bin/go/src/go/types/const.go +22 -10
- package/bin/go/src/go/types/conversions.go +19 -19
- package/bin/go/src/go/types/cycles.go +29 -42
- package/bin/go/src/go/types/decl.go +33 -81
- package/bin/go/src/go/types/expr.go +191 -183
- package/bin/go/src/go/types/gotype.go +1 -0
- package/bin/go/src/go/types/hash.go +309 -0
- package/bin/go/src/go/types/index.go +91 -61
- package/bin/go/src/go/types/infer.go +11 -11
- package/bin/go/src/go/types/instantiate.go +27 -15
- package/bin/go/src/go/types/interface.go +2 -2
- package/bin/go/src/go/types/literals.go +56 -32
- package/bin/go/src/go/types/lookup.go +31 -14
- package/bin/go/src/go/types/named.go +58 -54
- package/bin/go/src/go/types/object.go +4 -3
- package/bin/go/src/go/types/operand.go +50 -34
- package/bin/go/src/go/types/range.go +19 -16
- package/bin/go/src/go/types/recording.go +24 -7
- package/bin/go/src/go/types/resolver.go +16 -18
- package/bin/go/src/go/types/scope.go +1 -15
- package/bin/go/src/go/types/selection.go +3 -1
- package/bin/go/src/go/types/signature.go +10 -11
- package/bin/go/src/go/types/stmt.go +34 -28
- package/bin/go/src/go/types/subst.go +82 -5
- package/bin/go/src/go/types/trie.go +93 -0
- package/bin/go/src/go/types/typelists.go +28 -0
- package/bin/go/src/go/types/typestring.go +5 -9
- package/bin/go/src/go/types/typexpr.go +17 -28
- package/bin/go/src/go/types/unify.go +12 -3
- package/bin/go/src/go/types/universe.go +12 -40
- package/bin/go/src/go/types/version.go +4 -0
- package/bin/go/src/go.mod +5 -5
- package/bin/go/src/go.sum +8 -8
- package/bin/go/src/hash/maphash/hasher.go +139 -0
- package/bin/go/src/hash/maphash/maphash.go +59 -4
- package/bin/go/src/html/template/attr_string.go +3 -2
- package/bin/go/src/html/template/delim_string.go +3 -2
- package/bin/go/src/html/template/element_string.go +3 -2
- package/bin/go/src/html/template/jsctx_string.go +3 -2
- package/bin/go/src/html/template/state_string.go +3 -2
- package/bin/go/src/html/template/template.go +7 -4
- package/bin/go/src/html/template/transition.go +1 -1
- package/bin/go/src/html/template/urlpart_string.go +3 -2
- package/bin/go/src/image/format.go +9 -0
- package/bin/go/src/image/gif/reader.go +18 -0
- package/bin/go/src/image/jpeg/huffman.go +22 -3
- package/bin/go/src/image/jpeg/reader.go +54 -29
- package/bin/go/src/image/jpeg/scan.go +68 -38
- package/bin/go/src/image/png/writer.go +8 -0
- package/bin/go/src/index/suffixarray/suffixarray.go +14 -6
- package/bin/go/src/internal/abi/abi_generic.go +1 -1
- package/bin/go/src/internal/abi/abi_s390x.go +0 -2
- package/bin/go/src/internal/abi/compiletype.go +30 -0
- package/bin/go/src/internal/abi/iface.go +13 -1
- package/bin/go/src/internal/abi/map.go +21 -3
- package/bin/go/src/internal/abi/type.go +136 -27
- package/bin/go/src/internal/buildcfg/exp.go +8 -8
- package/bin/go/src/internal/buildcfg/zbootstrap.go +1 -1
- package/bin/go/src/internal/bytealg/bytealg.go +16 -16
- package/bin/go/src/internal/bytealg/compare_s390x.s +0 -24
- package/bin/go/src/internal/bytealg/equal_s390x.s +0 -18
- package/bin/go/src/internal/bytealg/indexbyte_arm64.s +28 -0
- package/bin/go/src/internal/bytealg/indexbyte_s390x.s +0 -33
- package/bin/go/src/internal/coverage/encodemeta/encode.go +1 -1
- package/bin/go/src/internal/cpu/cpu.go +22 -7
- package/bin/go/src/internal/cpu/cpu_arm64.go +8 -1
- package/bin/go/src/internal/cpu/cpu_arm64.s +7 -0
- package/bin/go/src/internal/cpu/cpu_arm64_darwin.go +2 -0
- package/bin/go/src/internal/cpu/cpu_arm64_freebsd.go +2 -1
- package/bin/go/src/internal/cpu/cpu_arm64_hwcap.go +2 -0
- package/bin/go/src/internal/cpu/cpu_arm64_openbsd.go +6 -1
- package/bin/go/src/internal/cpu/cpu_arm64_other.go +1 -1
- package/bin/go/src/internal/cpu/cpu_arm64_windows.go +26 -0
- package/bin/go/src/internal/cpu/cpu_loong64.go +14 -2
- package/bin/go/src/internal/cpu/cpu_riscv64.go +10 -0
- package/bin/go/src/internal/cpu/cpu_riscv64_linux.go +21 -0
- package/bin/go/src/internal/cpu/cpu_windows.go +20 -0
- package/bin/go/src/internal/cpu/cpu_x86.go +2 -0
- package/bin/go/src/internal/filepathlite/path_windows.go +30 -17
- package/bin/go/src/internal/fuzz/fuzz.go +5 -1
- package/bin/go/src/internal/fuzz/mutator.go +2 -2
- package/bin/go/src/internal/fuzz/worker.go +1 -1
- package/bin/go/src/internal/gate/gate.go +76 -0
- package/bin/go/src/internal/godebugs/table.go +29 -10
- package/bin/go/src/internal/goexperiment/exp_mapsplitgroup_off.go +8 -0
- package/bin/go/src/internal/goexperiment/exp_mapsplitgroup_on.go +8 -0
- package/bin/go/src/internal/goexperiment/flags.go +5 -3
- package/bin/go/src/internal/goversion/goversion.go +1 -1
- package/bin/go/src/internal/lazyregexp/lazyre.go +4 -0
- package/bin/go/src/internal/nettest/conn.go +437 -0
- package/bin/go/src/internal/nettest/listener.go +148 -0
- package/bin/go/src/internal/nettest/packetconn.go +250 -0
- package/bin/go/src/internal/nettest/queue.go +33 -0
- package/bin/go/src/internal/pkgbits/syncmarker_string.go +4 -4
- package/bin/go/src/internal/pkgbits/version.go +27 -1
- package/bin/go/src/internal/platform/supported.go +8 -10
- package/bin/go/src/internal/platform/zosarch.go +1 -3
- package/bin/go/src/internal/poll/fd_mutex.go +49 -10
- package/bin/go/src/internal/poll/fd_unix.go +6 -1
- package/bin/go/src/internal/poll/fd_windows.go +175 -191
- package/bin/go/src/internal/poll/fd_writev_libc.go +1 -1
- package/bin/go/src/internal/poll/fd_writev_unix.go +1 -1
- package/bin/go/src/internal/poll/file_plan9.go +4 -4
- package/bin/go/src/internal/poll/sendfile_windows.go +1 -3
- package/bin/go/src/internal/poll/splice_linux.go +1 -1
- package/bin/go/src/internal/profile/encode.go +1 -1
- package/bin/go/src/internal/profile/profile.go +5 -3
- package/bin/go/src/internal/profilerecord/profilerecord.go +2 -2
- package/bin/go/src/internal/reflectlite/value.go +1 -15
- package/bin/go/src/internal/runtime/atomic/atomic_386.go +0 -6
- package/bin/go/src/internal/runtime/atomic/atomic_amd64.go +0 -6
- package/bin/go/src/internal/runtime/atomic/atomic_andor_generic.go +0 -11
- package/bin/go/src/internal/runtime/atomic/atomic_arm.go +0 -6
- package/bin/go/src/internal/runtime/atomic/atomic_loong64.go +2 -2
- package/bin/go/src/internal/runtime/atomic/atomic_loong64.s +22 -11
- package/bin/go/src/internal/runtime/atomic/atomic_mipsx.go +0 -10
- package/bin/go/src/internal/runtime/atomic/atomic_riscv64.s +4 -4
- package/bin/go/src/internal/runtime/atomic/atomic_s390x.go +0 -6
- package/bin/go/src/internal/runtime/atomic/atomic_wasm.go +0 -31
- package/bin/go/src/internal/runtime/atomic/linkname.go +34 -0
- package/bin/go/src/internal/runtime/exithook/hooks.go +0 -4
- package/bin/go/src/internal/runtime/gc/scan/expand_amd64.s +2285 -2285
- package/bin/go/src/internal/runtime/gc/scan/mkasm.go +1 -1
- package/bin/go/src/internal/runtime/gc/scan/scan_amd64.go +2 -1
- package/bin/go/src/internal/runtime/gc/scan/scan_amd64.s +4 -2
- package/bin/go/src/internal/runtime/maps/group.go +22 -13
- package/bin/go/src/internal/runtime/maps/map.go +35 -14
- package/bin/go/src/internal/runtime/maps/memhash_386.s +408 -0
- package/bin/go/src/internal/runtime/maps/memhash_aes.go +38 -0
- package/bin/go/src/internal/runtime/maps/memhash_aes_asm.go +24 -0
- package/bin/go/src/internal/runtime/maps/memhash_aes_simd.go +49 -0
- package/bin/go/src/internal/runtime/maps/memhash_align_check.go +10 -0
- package/bin/go/src/internal/runtime/maps/memhash_align_nocheck.go +16 -0
- package/bin/go/src/internal/runtime/maps/memhash_amd64.s +426 -0
- package/bin/go/src/internal/runtime/maps/memhash_arm64.s +366 -0
- package/bin/go/src/internal/runtime/maps/memhash_noaes.go +43 -0
- package/bin/go/src/internal/runtime/maps/memhash_nosimd_amd64.s +33 -0
- package/bin/go/src/internal/runtime/maps/runtime.go +37 -88
- package/bin/go/src/internal/runtime/maps/runtime_alg.go +93 -0
- package/bin/go/src/internal/runtime/maps/runtime_fast32.go +111 -97
- package/bin/go/src/internal/runtime/maps/runtime_fast64.go +137 -98
- package/bin/go/src/internal/runtime/maps/runtime_faststr.go +96 -89
- package/bin/go/src/{runtime/hash32.go → internal/runtime/maps/runtime_hash32.go} +8 -10
- package/bin/go/src/{runtime/hash64.go → internal/runtime/maps/runtime_hash64.go} +8 -8
- package/bin/go/src/internal/runtime/maps/table.go +66 -3
- package/bin/go/src/internal/runtime/math/math.go +0 -21
- package/bin/go/src/internal/runtime/startlinetest/func_amd64.s +2 -1
- package/bin/go/src/internal/runtime/sys/dit_arm64.go +3 -0
- package/bin/go/src/internal/runtime/sys/dit_arm64.s +16 -3
- package/bin/go/src/internal/runtime/syscall/linux/asm_linux_s390x.s +0 -23
- package/bin/go/src/internal/runtime/syscall/windows/asm_windows_386.s +7 -4
- package/bin/go/src/internal/runtime/syscall/windows/asm_windows_amd64.s +10 -8
- package/bin/go/src/internal/runtime/syscall/windows/asm_windows_arm64.s +0 -1
- package/bin/go/src/internal/runtime/syscall/windows/defs_windows.go +4 -0
- package/bin/go/src/internal/runtime/syscall/windows/syscall_windows.go +7 -9
- package/bin/go/src/internal/strconv/atof.go +69 -42
- package/bin/go/src/internal/strconv/atoi.go +1 -0
- package/bin/go/src/internal/strconv/ftoa.go +329 -357
- package/bin/go/src/internal/strconv/itoa.go +53 -59
- package/bin/go/src/internal/strconv/pow10gen.go +15 -3
- package/bin/go/src/internal/strconv/pow10tab.go +670 -670
- package/bin/go/src/internal/strconv/uscale.go +290 -0
- package/bin/go/src/internal/stringslite/strings.go +14 -42
- package/bin/go/src/internal/syscall/unix/asm_openbsd.s +0 -2
- package/bin/go/src/internal/syscall/unix/at.go +1 -1
- package/bin/go/src/internal/syscall/unix/at_fstatat.go +1 -1
- package/bin/go/src/internal/syscall/unix/at_libc2.go +1 -1
- package/bin/go/src/internal/syscall/unix/at_openbsd.go +0 -2
- package/bin/go/src/internal/syscall/unix/faccessat_bsd.go +1 -1
- package/bin/go/src/internal/syscall/unix/faccessat_openbsd.go +0 -2
- package/bin/go/src/internal/syscall/windows/at_windows.go +5 -5
- package/bin/go/src/internal/syscall/windows/net_windows.go +1 -0
- package/bin/go/src/internal/syscall/windows/string_windows.go +6 -3
- package/bin/go/src/internal/syscall/windows/syscall_windows.go +2 -0
- package/bin/go/src/internal/syscall/windows/types_windows.go +89 -4
- package/bin/go/src/internal/syscall/windows/zsyscall_windows.go +7 -0
- package/bin/go/src/internal/testenv/testenv.go +24 -1
- package/bin/go/src/internal/trace/event.go +1 -1
- package/bin/go/src/internal/trace/tracev2/events.go +2 -0
- package/bin/go/src/internal/trace/traceviewer/pprof.go +1 -0
- package/bin/go/src/internal/types/errors/generrordocs.go +1 -1
- package/bin/go/src/io/fs/fs.go +4 -1
- package/bin/go/src/io/fs/glob.go +1 -1
- package/bin/go/src/io/fs/readdir.go +3 -3
- package/bin/go/src/io/fs/readfile.go +3 -3
- package/bin/go/src/io/fs/stat.go +1 -1
- package/bin/go/src/io/fs/sub.go +4 -2
- package/bin/go/src/iter/iter.go +2 -2
- package/bin/go/src/log/slog/handler.go +0 -1
- package/bin/go/src/log/slog/json_handler.go +7 -1
- package/bin/go/src/log/slog/logger.go +16 -0
- package/bin/go/src/log/slog/text_handler.go +10 -1
- package/bin/go/src/log/slog/value.go +1 -1
- package/bin/go/src/log/syslog/doc.go +5 -0
- package/bin/go/src/math/abs.go +1 -1
- package/bin/go/src/math/big/accuracy_string.go +4 -4
- package/bin/go/src/math/big/arith.go +1 -1
- package/bin/go/src/math/big/arith_loong64.s +2 -4
- package/bin/go/src/math/big/float.go +2 -0
- package/bin/go/src/math/big/ftoa.go +11 -5
- package/bin/go/src/math/big/int.go +84 -1
- package/bin/go/src/math/big/intconv.go +19 -4
- package/bin/go/src/math/big/internal/asmgen/loong64.go +2 -0
- package/bin/go/src/math/big/nat.go +68 -17
- package/bin/go/src/math/big/natdiv.go +8 -5
- package/bin/go/src/math/big/roundingmode_string.go +3 -2
- package/bin/go/src/math/copysign.go +1 -2
- package/bin/go/src/math/exp2_asm.go +1 -1
- package/bin/go/src/math/exp2_noasm.go +1 -1
- package/bin/go/src/math/exp_asm.go +1 -1
- package/bin/go/src/math/exp_loong64.s +4 -12
- package/bin/go/src/math/exp_noasm.go +1 -1
- package/bin/go/src/math/exp_riscv64.s +236 -0
- package/bin/go/src/math/nextafter.go +4 -2
- package/bin/go/src/math/pow10.go +1 -1
- package/bin/go/src/math/rand/v2/rand.go +14 -4
- package/bin/go/src/mime/type.go +3 -2
- package/bin/go/src/net/dial.go +10 -6
- package/bin/go/src/net/dnsclient_unix.go +37 -8
- package/bin/go/src/net/dnsconfig.go +6 -0
- package/bin/go/src/net/fd_plan9.go +13 -6
- package/bin/go/src/net/fd_unix.go +3 -7
- package/bin/go/src/net/fd_windows.go +4 -9
- package/bin/go/src/net/file_plan9.go +1 -1
- package/bin/go/src/net/file_posix.go +1 -5
- package/bin/go/src/net/http/client.go +21 -4
- package/bin/go/src/net/http/clientconn.go +20 -1
- package/bin/go/src/net/http/clone.go +1 -10
- package/bin/go/src/net/http/cookie.go +5 -6
- package/bin/go/src/net/http/cookiejar/jar.go +6 -4
- package/bin/go/src/net/http/fcgi/fcgi.go +1 -2
- package/bin/go/src/net/http/fs.go +8 -1
- package/bin/go/src/net/http/http.go +29 -12
- package/bin/go/src/net/http/http2.go +561 -0
- package/bin/go/src/net/http/httptest/server.go +305 -60
- package/bin/go/src/net/http/httptrace/trace.go +78 -27
- package/bin/go/src/net/http/httputil/reverseproxy.go +0 -30
- package/bin/go/src/net/http/internal/common.go +14 -0
- package/bin/go/src/net/http/internal/http2/api.go +161 -0
- package/bin/go/src/net/http/internal/http2/ascii.go +53 -0
- package/bin/go/src/net/http/internal/http2/ciphers.go +641 -0
- package/bin/go/src/net/http/internal/http2/client_conn_pool.go +285 -0
- package/bin/go/src/net/http/internal/http2/config.go +118 -0
- package/bin/go/src/net/http/internal/http2/databuffer.go +146 -0
- package/bin/go/src/net/http/internal/http2/errors.go +173 -0
- package/bin/go/src/net/http/internal/http2/flow.go +175 -0
- package/bin/go/src/net/http/internal/http2/frame.go +1905 -0
- package/bin/go/src/net/http/internal/http2/gotrack.go +181 -0
- package/bin/go/src/net/http/internal/http2/http2.go +403 -0
- package/bin/go/src/net/http/internal/http2/pipe.go +184 -0
- package/bin/go/src/net/http/internal/http2/server.go +3238 -0
- package/bin/go/src/net/http/internal/http2/transport.go +3267 -0
- package/bin/go/src/net/http/internal/http2/write.go +380 -0
- package/bin/go/src/net/http/internal/http2/writesched.go +289 -0
- package/bin/go/src/net/http/internal/http2/writesched_priority_rfc9218.go +224 -0
- package/bin/go/src/net/http/internal/http2/writesched_roundrobin.go +119 -0
- package/bin/go/src/net/http/internal/httpcommon/httpcommon.go +8 -0
- package/bin/go/src/net/http/internal/httpsfv/httpsfv.go +666 -0
- package/bin/go/src/net/http/internal/sniff.go +304 -0
- package/bin/go/src/net/http/omithttp2.go +28 -49
- package/bin/go/src/net/http/pprof/pprof.go +11 -17
- package/bin/go/src/net/http/request.go +30 -3
- package/bin/go/src/net/http/response.go +6 -2
- package/bin/go/src/net/http/server.go +366 -144
- package/bin/go/src/net/http/sniff.go +2 -289
- package/bin/go/src/net/http/transfer.go +64 -21
- package/bin/go/src/net/http/transport.go +288 -83
- package/bin/go/src/net/ip.go +4 -0
- package/bin/go/src/net/ipsock_plan9.go +4 -4
- package/bin/go/src/net/ipsock_posix.go +8 -2
- package/bin/go/src/net/lookup.go +10 -0
- package/bin/go/src/net/lookup_windows.go +1 -1
- package/bin/go/src/net/mail/message.go +8 -3
- package/bin/go/src/net/net.go +2 -0
- package/bin/go/src/net/netip/netip.go +68 -61
- package/bin/go/src/net/sock_posix.go +1 -4
- package/bin/go/src/net/textproto/reader.go +11 -3
- package/bin/go/src/net/udpsock_plan9.go +2 -7
- package/bin/go/src/net/unixsock.go +11 -3
- package/bin/go/src/net/url/url.go +33 -0
- package/bin/go/src/os/dir_darwin.go +7 -0
- package/bin/go/src/os/exec/exec.go +16 -2
- package/bin/go/src/os/exec.go +1 -0
- package/bin/go/src/os/file.go +8 -1
- package/bin/go/src/os/root_windows.go +5 -1
- package/bin/go/src/os/signal/doc.go +3 -2
- package/bin/go/src/os/signal/signal.go +18 -6
- package/bin/go/src/os/statat_unix.go +5 -1
- package/bin/go/src/path/filepath/path.go +4 -0
- package/bin/go/src/reflect/asm_s390x.s +0 -10
- package/bin/go/src/reflect/iter.go +13 -13
- package/bin/go/src/reflect/makefunc.go +2 -1
- package/bin/go/src/reflect/map.go +61 -18
- package/bin/go/src/reflect/type.go +63 -46
- package/bin/go/src/reflect/value.go +59 -16
- package/bin/go/src/regexp/exec.go +5 -5
- package/bin/go/src/regexp/regexp.go +382 -319
- package/bin/go/src/regexp/syntax/parse.go +19 -10
- package/bin/go/src/runtime/HACKING.md +19 -0
- package/bin/go/src/runtime/_mkmalloc/constants.go +6 -4
- package/bin/go/src/runtime/_mkmalloc/go.mod +1 -1
- package/bin/go/src/runtime/_mkmalloc/mkmalloc.go +405 -64
- package/bin/go/src/runtime/alg.go +21 -53
- package/bin/go/src/runtime/asm_386.s +11 -461
- package/bin/go/src/runtime/asm_amd64.s +30 -537
- package/bin/go/src/runtime/asm_arm.s +4 -39
- package/bin/go/src/runtime/asm_arm64.s +15 -428
- package/bin/go/src/runtime/asm_loong64.s +37 -47
- package/bin/go/src/runtime/asm_mips64x.s +15 -15
- package/bin/go/src/runtime/asm_mipsx.s +0 -15
- package/bin/go/src/runtime/asm_ppc64x.h +0 -16
- package/bin/go/src/runtime/asm_ppc64x.s +13 -59
- package/bin/go/src/runtime/asm_riscv64.s +30 -91
- package/bin/go/src/runtime/asm_s390x.s +49 -49
- package/bin/go/src/runtime/asm_wasm.s +0 -15
- package/bin/go/src/runtime/atomic_riscv64.s +1 -1
- package/bin/go/src/runtime/cgo/abi_riscv64.h +72 -0
- package/bin/go/src/runtime/cgo/asm_riscv64.s +7 -48
- package/bin/go/src/runtime/cgo/callbacks.go +0 -42
- package/bin/go/src/runtime/cgo/callbacks_unix.go +58 -0
- package/bin/go/src/runtime/cgo/cgo.go +6 -3
- package/bin/go/src/runtime/cgo/gcc_aix_ppc64.S +21 -9
- package/bin/go/src/runtime/cgo/gcc_android.c +0 -26
- package/bin/go/src/runtime/cgo/gcc_clearenv.c +1 -1
- package/bin/go/src/runtime/cgo/gcc_fatalf.c +14 -3
- package/bin/go/src/runtime/cgo/{gcc_libinit.c → gcc_libinit_unix.c} +18 -65
- package/bin/go/src/runtime/cgo/gcc_libinit_windows.c +23 -35
- package/bin/go/src/runtime/cgo/gcc_linux_ppc64x.S +16 -7
- package/bin/go/src/runtime/cgo/gcc_netbsd.c +8 -56
- package/bin/go/src/runtime/cgo/gcc_s390x.S +13 -4
- package/bin/go/src/runtime/cgo/gcc_sigaction.c +1 -1
- package/bin/go/src/runtime/cgo/gcc_unix.c +63 -0
- package/bin/go/src/runtime/cgo/gcc_util.c +0 -19
- package/bin/go/src/runtime/cgo/handle.go +3 -0
- package/bin/go/src/runtime/cgo/libcgo.h +7 -10
- package/bin/go/src/runtime/cgo/libcgo_unix.h +2 -10
- package/bin/go/src/runtime/cgo/pthread_unix.c +138 -0
- package/bin/go/src/runtime/cgo/sigaction.go +1 -1
- package/bin/go/src/runtime/cgo/windows.go +18 -1
- package/bin/go/src/runtime/cgo_ppc64x.go +1 -1
- package/bin/go/src/runtime/cgo_sigaction.go +1 -1
- package/bin/go/src/runtime/cgocall.go +10 -2
- package/bin/go/src/runtime/chan.go +2 -16
- package/bin/go/src/runtime/coro.go +2 -2
- package/bin/go/src/runtime/cpuflags.go +4 -3
- package/bin/go/src/runtime/debug/garbage.go +6 -6
- package/bin/go/src/runtime/debug/mod.go +1 -1
- package/bin/go/src/runtime/debug/stack.go +1 -1
- package/bin/go/src/runtime/debugcall.go +0 -3
- package/bin/go/src/runtime/error.go +6 -0
- package/bin/go/src/runtime/extern.go +5 -3
- package/bin/go/src/runtime/heapdump.go +1 -1
- package/bin/go/src/runtime/iface.go +20 -10
- package/bin/go/src/runtime/libinit.go +48 -0
- package/bin/go/src/runtime/lock_js.go +4 -2
- package/bin/go/src/runtime/lock_spinbit.go +13 -12
- package/bin/go/src/runtime/lock_wasip1.go +4 -2
- package/bin/go/src/runtime/lockrank.go +24 -21
- package/bin/go/src/runtime/lockrank_off.go +5 -2
- package/bin/go/src/runtime/lockrank_on.go +8 -7
- package/bin/go/src/runtime/malloc.go +10 -26
- package/bin/go/src/runtime/malloc_generated.go +819 -8628
- package/bin/go/src/runtime/malloc_stubs.go +187 -197
- package/bin/go/src/runtime/malloc_tables_generated.go +16 -882
- package/bin/go/src/runtime/map.go +4 -4
- package/bin/go/src/runtime/mbitmap.go +3 -1
- package/bin/go/src/runtime/mem.go +2 -6
- package/bin/go/src/runtime/mem_sbrk.go +4 -0
- package/bin/go/src/runtime/memclr_s390x.s +0 -5
- package/bin/go/src/runtime/memmove_s390x.s +0 -7
- package/bin/go/src/runtime/metrics/doc.go +5 -29
- package/bin/go/src/runtime/metrics/sample.go +3 -0
- package/bin/go/src/runtime/metrics.go +3 -2
- package/bin/go/src/runtime/mgc.go +41 -25
- package/bin/go/src/runtime/mgcmark.go +5 -0
- package/bin/go/src/runtime/mgcmark_greenteagc.go +1 -1
- package/bin/go/src/runtime/mgcpacer.go +1 -3
- package/bin/go/src/runtime/mgcscavenge.go +1 -1
- package/bin/go/src/runtime/mheap.go +1 -10
- package/bin/go/src/runtime/mklockrank.go +6 -1
- package/bin/go/src/runtime/mkpreempt.go +7 -0
- package/bin/go/src/runtime/mprof.go +12 -23
- package/bin/go/src/runtime/os2_aix.go +3 -3
- package/bin/go/src/runtime/os3_solaris.go +10 -0
- package/bin/go/src/runtime/os_aix.go +9 -2
- package/bin/go/src/runtime/os_darwin.go +3 -8
- package/bin/go/src/runtime/os_dragonfly.go +10 -0
- package/bin/go/src/runtime/os_js.go +10 -0
- package/bin/go/src/runtime/os_linux32.go +19 -6
- package/bin/go/src/runtime/os_netbsd.go +10 -0
- package/bin/go/src/runtime/os_openbsd.go +10 -0
- package/bin/go/src/runtime/os_plan9.go +10 -0
- package/bin/go/src/runtime/os_wasip1.go +10 -0
- package/bin/go/src/runtime/os_windows.go +45 -12
- package/bin/go/src/runtime/os_workdir_ios_arm64.go +98 -0
- package/bin/go/src/runtime/os_workdir_stub.go +9 -0
- package/bin/go/src/runtime/panic.go +93 -8
- package/bin/go/src/runtime/plugin.go +1 -3
- package/bin/go/src/runtime/pprof/pprof.go +11 -14
- package/bin/go/src/runtime/pprof/protomem.go +8 -15
- package/bin/go/src/runtime/preempt_loong64.s +8 -4
- package/bin/go/src/runtime/preempt_noxreg.go +2 -0
- package/bin/go/src/runtime/preempt_xreg.go +29 -2
- package/bin/go/src/runtime/print.go +9 -1
- package/bin/go/src/runtime/proc.go +68 -17
- package/bin/go/src/runtime/race_riscv64.s +40 -83
- package/bin/go/src/runtime/race_s390x.s +0 -16
- package/bin/go/src/runtime/rand.go +40 -12
- package/bin/go/src/runtime/{rt0_linux_ppc64le.s → rt0_linux_ppc64x.s} +12 -2
- package/bin/go/src/runtime/runtime-gdb.py +13 -2
- package/bin/go/src/runtime/runtime1.go +69 -18
- package/bin/go/src/runtime/runtime2.go +23 -22
- package/bin/go/src/runtime/secret/secret.go +7 -2
- package/bin/go/src/runtime/secret.go +27 -9
- package/bin/go/src/runtime/secret_nosecret.go +1 -1
- package/bin/go/src/runtime/sigaction.go +1 -1
- package/bin/go/src/runtime/signal_unix.go +5 -3
- package/bin/go/src/runtime/softfloat64.go +7 -2
- package/bin/go/src/runtime/string.go +4 -1
- package/bin/go/src/runtime/stubs.go +14 -4
- package/bin/go/src/runtime/stubs_amd64.go +4 -0
- package/bin/go/src/runtime/stubs_arm.go +10 -1
- package/bin/go/src/runtime/stubs_arm64.go +13 -0
- package/bin/go/src/runtime/stubs_loong64.go +18 -0
- package/bin/go/src/runtime/stubs_mips64x.go +9 -0
- package/bin/go/src/runtime/stubs_mipsx.go +11 -0
- package/bin/go/src/runtime/stubs_ppc64x.go +15 -0
- package/bin/go/src/runtime/stubs_riscv64.go +13 -0
- package/bin/go/src/runtime/stubs_s390x.go +18 -0
- package/bin/go/src/runtime/symtab.go +15 -16
- package/bin/go/src/runtime/synctest.go +2 -4
- package/bin/go/src/runtime/sys_aix_ppc64.s +9 -0
- package/bin/go/src/runtime/sys_darwin.go +2 -20
- package/bin/go/src/runtime/sys_darwin_amd64.s +1 -4
- package/bin/go/src/runtime/sys_darwin_arm64.s +3 -6
- package/bin/go/src/runtime/sys_freebsd_riscv64.s +2 -2
- package/bin/go/src/runtime/sys_ios_arm64.go +151 -0
- package/bin/go/src/runtime/sys_ios_arm64.s +78 -0
- package/bin/go/src/runtime/sys_linux_amd64.s +7 -1
- package/bin/go/src/runtime/sys_linux_loong64.s +8 -14
- package/bin/go/src/runtime/sys_linux_ppc64x.s +0 -12
- package/bin/go/src/runtime/sys_linux_riscv64.s +2 -2
- package/bin/go/src/runtime/sys_openbsd.go +1 -1
- package/bin/go/src/runtime/sys_openbsd_riscv64.s +16 -16
- package/bin/go/src/runtime/syscall_windows.go +2 -6
- package/bin/go/src/runtime/time.go +19 -57
- package/bin/go/src/runtime/trace/subscribe.go +0 -3
- package/bin/go/src/runtime/traceback.go +90 -13
- package/bin/go/src/runtime/traceregion.go +3 -3
- package/bin/go/src/runtime/tracestring.go +5 -0
- package/bin/go/src/runtime/type.go +85 -15
- package/bin/go/src/runtime/utf8.go +2 -2
- package/bin/go/src/simd/archsimd/_gen/go.mod +2 -2
- package/bin/go/src/simd/archsimd/_gen/go.sum +2 -2
- package/bin/go/src/simd/archsimd/_gen/main.go +106 -15
- package/bin/go/src/simd/archsimd/_gen/midway/comments.yaml +151 -0
- package/bin/go/src/simd/archsimd/_gen/midway/intersect_simd_ops.go +836 -0
- package/bin/go/src/simd/archsimd/_gen/sgutil/asbits.go +139 -0
- package/bin/go/src/simd/archsimd/_gen/sgutil/compare_natural.go +73 -0
- package/bin/go/src/simd/archsimd/_gen/sgutil/formatted_files.go +66 -0
- package/bin/go/src/simd/archsimd/_gen/sgutil/insert_ordered_map.go +159 -0
- package/bin/go/src/simd/archsimd/_gen/sgutil/merge_generic_ops.go +245 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/arch.go +173 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/arm64/emit.go +166 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/arm64/instruction.go +642 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/arm64/load.go +54 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/arm64/operands.go +406 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/etetest.sh +1 -1
- package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go +19 -52
- package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go +162 -98
- package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdMachineOps.go +50 -19
- package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go +198 -140
- package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdrules.go +278 -57
- package/bin/go/src/simd/archsimd/_gen/simdgen/gen_simdssa.go +133 -68
- package/bin/go/src/simd/archsimd/_gen/simdgen/gen_utility.go +163 -30
- package/bin/go/src/simd/archsimd/_gen/simdgen/go_amd64.yaml +1 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/go_arm64.yaml +1 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/godefs.go +113 -15
- package/bin/go/src/simd/archsimd/_gen/simdgen/main.go +62 -17
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/AddSub/categories.yaml +12 -12
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/AddSub/{go.yaml → go_amd64.yaml} +12 -12
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/AddSub/go_arm64.yaml +91 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/BitwiseLogic/categories.yaml +11 -3
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/BitwiseLogic/go_arm64.yaml +43 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Compares/go_arm64.yaml +81 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Converts/categories.yaml +11 -6
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Converts/{go.yaml → go_amd64.yaml} +8 -8
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Converts/go_arm64.yaml +358 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/FPonlyArith/categories.yaml +5 -5
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/FPonlyArith/{go.yaml → go_amd64.yaml} +4 -4
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/FPonlyArith/go_arm64.yaml +52 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/GaloisField/categories.yaml +29 -11
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/GaloisField/{go.yaml → go_amd64.yaml} +1 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/GaloisField/go_arm64.yaml +10 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/IntOnlyArith/categories.yaml +2 -5
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/IntOnlyArith/{go.yaml → go_amd64.yaml} +2 -3
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/IntOnlyArith/go_arm64.yaml +35 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/MLOps/categories.yaml +5 -8
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/MLOps/{go.yaml → go_amd64.yaml} +7 -5
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/MLOps/go_arm64.yaml +31 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/MinMax/go_arm64.yaml +61 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Moves/categories.yaml +79 -23
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Moves/{go.yaml → go_amd64.yaml} +213 -104
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Moves/go_arm64.yaml +264 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Mul/categories.yaml +6 -2
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Mul/{go.yaml → go_amd64.yaml} +3 -3
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Mul/go_arm64.yaml +38 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/NegAbs/categories.yaml +7 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/NegAbs/go_arm64.yaml +36 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Others/categories.yaml +5 -1
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Others/go_arm64.yaml +19 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Reduce/categories.yaml +16 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Reduce/go_arm64.yaml +71 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/ShiftRotate/categories.yaml +156 -41
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/ShiftRotate/go_amd64.yaml +299 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/ShiftRotate/go_arm64.yaml +202 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/types.yaml +2 -0
- package/bin/go/src/simd/archsimd/_gen/simdgen/xed.go +44 -11
- package/bin/go/src/simd/archsimd/_gen/tmplgen/main.go +668 -123
- package/bin/go/src/simd/archsimd/_gen/unify/closure.go +1 -1
- package/bin/go/src/simd/archsimd/_gen/unify/env.go +35 -3
- package/bin/go/src/simd/archsimd/_gen/unify/yaml.go +4 -4
- package/bin/go/src/simd/archsimd/_gen/wasmgen/main.go +2064 -0
- package/bin/go/src/simd/archsimd/clmul_arm64.go +79 -0
- package/bin/go/src/simd/archsimd/clmul_emulated.go +103 -0
- package/bin/go/src/simd/archsimd/compare_gen_arm64.go +155 -0
- package/bin/go/src/simd/archsimd/cpu.go +1 -1
- package/bin/go/src/simd/archsimd/cpu_other.go +21 -0
- package/bin/go/src/simd/archsimd/doc.go +0 -2
- package/bin/go/src/simd/archsimd/dummy.s +1 -1
- package/bin/go/src/simd/archsimd/generate.go +1 -1
- package/bin/go/src/simd/archsimd/internal/test_helpers/checkslices.go +2 -2
- package/bin/go/src/simd/archsimd/maskmerge_gen_amd64.go +330 -0
- package/bin/go/src/simd/archsimd/maskmerge_gen_arm64.go +167 -0
- package/bin/go/src/simd/archsimd/ops_amd64.go +4210 -2475
- package/bin/go/src/simd/archsimd/ops_arm64.go +2186 -0
- package/bin/go/src/simd/archsimd/ops_emulated_amd64.go +205 -0
- package/bin/go/src/simd/archsimd/ops_emulated_wasm.go +212 -0
- package/bin/go/src/simd/archsimd/ops_internal_amd64.go +500 -56
- package/bin/go/src/simd/archsimd/ops_internal_arm64.go +234 -0
- package/bin/go/src/simd/archsimd/ops_wasm.go +1795 -0
- package/bin/go/src/simd/archsimd/other_gen_amd64.go +576 -72
- package/bin/go/src/simd/archsimd/other_gen_arm64.go +519 -0
- package/bin/go/src/simd/archsimd/shuffles_amd64.go +217 -76
- package/bin/go/src/simd/archsimd/slice_gen_amd64.go +594 -532
- package/bin/go/src/simd/archsimd/slice_gen_arm64.go +125 -0
- package/bin/go/src/simd/archsimd/slicepart_128.go +302 -0
- package/bin/go/src/simd/archsimd/slicepart_amd64.go +36 -235
- package/bin/go/src/simd/archsimd/slicepart_arm64.go +217 -0
- package/bin/go/src/simd/archsimd/slicepart_wasm.go +217 -0
- package/bin/go/src/simd/archsimd/string.go +1 -1
- package/bin/go/src/simd/archsimd/types_amd64.go +165 -341
- package/bin/go/src/simd/archsimd/types_arm64.go +224 -0
- package/bin/go/src/simd/archsimd/types_wasm.go +354 -0
- package/bin/go/src/simd/archsimd/unsafe_helpers.go +60 -0
- package/bin/go/src/simd/doc.go +91 -0
- package/bin/go/src/simd/dummy.s +7 -0
- package/bin/go/src/simd/internal/bridge/decls_amd64.go +4085 -0
- package/bin/go/src/simd/internal/bridge/decls_arm64.go +1369 -0
- package/bin/go/src/simd/internal/bridge/decls_wasm.go +1369 -0
- package/bin/go/src/simd/internal/bridge/import_hook.go +13 -0
- package/bin/go/src/simd/internal/bridge/simd_emulated.go +3275 -0
- package/bin/go/src/simd/internal/bridge/simd_types_emulated.go +95 -0
- package/bin/go/src/simd/internal/bridge/tofrom_128.go +65 -0
- package/bin/go/src/simd/internal/bridge/tofrom_amd64.go +123 -0
- package/bin/go/src/simd/internal/bridge/tofrom_emulated.go +63 -0
- package/bin/go/src/simd/midway_amd64.go +34 -0
- package/bin/go/src/simd/midway_arm64.go +22 -0
- package/bin/go/src/simd/midway_common.go +138 -0
- package/bin/go/src/simd/midway_wasm.go +13 -0
- package/bin/go/src/simd/simd_emulated.go +3275 -0
- package/bin/go/src/simd/simd_stubs.go +1041 -0
- package/bin/go/src/simd/simd_types.go +96 -0
- package/bin/go/src/simd/tofrom_amd64.go +374 -0
- package/bin/go/src/simd/tofrom_arm64.go +290 -0
- package/bin/go/src/simd/tofrom_wasm.go +290 -0
- package/bin/go/src/slices/slices.go +9 -7
- package/bin/go/src/strconv/isprint.go +81 -51
- package/bin/go/src/strings/builder.go +1 -1
- package/bin/go/src/strings/strings.go +44 -35
- package/bin/go/src/sync/atomic/doc.go +7 -0
- package/bin/go/src/sync/cond.go +4 -2
- package/bin/go/src/sync/pool.go +6 -15
- package/bin/go/src/sync/runtime2_lockrank.go +1 -2
- package/bin/go/src/syscall/exec_bsd.go +3 -3
- package/bin/go/src/syscall/exec_libc2.go +1 -1
- package/bin/go/src/syscall/exec_linux.go +7 -2
- package/bin/go/src/syscall/fs_js.go +9 -4
- package/bin/go/src/syscall/fs_wasip1.go +6 -0
- package/bin/go/src/syscall/js/js.go +2 -2
- package/bin/go/src/syscall/linkname_bsd.go +8 -0
- package/bin/go/src/syscall/linkname_libc.go +1 -1
- package/bin/go/src/syscall/linkname_openbsd.go +0 -2
- package/bin/go/src/syscall/mkall.sh +6 -17
- package/bin/go/src/syscall/syscall_aix.go +5 -0
- package/bin/go/src/syscall/syscall_linux_386.go +9 -0
- package/bin/go/src/syscall/syscall_linux_amd64.go +5 -0
- package/bin/go/src/syscall/syscall_linux_arm.go +4 -0
- package/bin/go/src/syscall/syscall_linux_arm64.go +3 -0
- package/bin/go/src/syscall/syscall_linux_loong64.go +3 -0
- package/bin/go/src/syscall/syscall_linux_mipsx.go +4 -0
- package/bin/go/src/syscall/syscall_linux_riscv64.go +3 -0
- package/bin/go/src/syscall/syscall_linux_s390x.go +5 -0
- package/bin/go/src/syscall/syscall_openbsd.go +77 -2
- package/bin/go/src/syscall/syscall_plan9.go +25 -0
- package/bin/go/src/syscall/syscall_solaris.go +11 -0
- package/bin/go/src/syscall/syscall_unix.go +19 -0
- package/bin/go/src/syscall/syscall_windows.go +1 -1
- package/bin/go/src/testing/synctest/synctest.go +21 -0
- package/bin/go/src/testing/testing.go +211 -52
- package/bin/go/src/text/template/parse/lex.go +6 -6
- package/bin/go/src/text/template/parse/node.go +21 -16
- package/bin/go/src/text/template/parse/parse.go +23 -6
- package/bin/go/src/text/template/template.go +5 -3
- package/bin/go/src/time/format.go +3 -0
- package/bin/go/src/time/sleep.go +0 -33
- package/bin/go/src/time/tick.go +3 -2
- package/bin/go/src/time/time.go +2 -2
- package/bin/go/src/time/tzdata/zzipdata.go +1 -1
- package/bin/go/src/time/zoneinfo.go +5 -4
- package/bin/go/src/time/zoneinfo_read.go +1 -1
- package/bin/go/src/unicode/tables.go +898 -417
- package/bin/go/src/uuid/uuid.go +273 -0
- package/bin/go/src/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go +3 -3
- package/bin/go/src/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.s +2066 -6598
- package/bin/go/src/vendor/golang.org/x/crypto/hkdf/hkdf.go +100 -0
- package/bin/go/src/vendor/golang.org/x/net/dns/dnsmessage/message.go +5 -4
- package/bin/go/src/vendor/golang.org/x/net/http/httpproxy/proxy.go +4 -4
- package/bin/go/src/vendor/golang.org/x/net/http3/http3.go +46 -0
- package/bin/go/src/vendor/golang.org/x/net/idna/{idna10.0.0.go → idna.go} +133 -35
- package/bin/go/src/vendor/golang.org/x/net/idna/punycode.go +4 -1
- package/bin/go/src/vendor/golang.org/x/net/idna/tables15.0.0.go +1 -1
- package/bin/go/src/vendor/golang.org/x/net/idna/tables17.0.0.go +5302 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/body.go +231 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/conn.go +131 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/doc.go +10 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/errors.go +102 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/http3.go +95 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/qpack.go +356 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/qpack_decode.go +81 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/qpack_encode.go +61 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/qpack_static.go +142 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/quic.go +40 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/roundtrip.go +423 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/server.go +866 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/settings.go +66 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/stream.go +260 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/transport.go +333 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/http3/varint.go +23 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/httpcommon/request.go +475 -0
- package/bin/go/src/vendor/golang.org/x/net/internal/quic/quicwire/wire.go +150 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/ack_delay.go +26 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/acks.go +213 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/atomic_bits.go +31 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/config.go +158 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/congestion_reno.go +306 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/conn.go +434 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/conn_close.go +340 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/conn_flow.go +142 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/conn_id.go +502 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/conn_loss.go +85 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/conn_recv.go +631 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/conn_send.go +407 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/conn_streams.go +483 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/crypto_stream.go +157 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/dgram.go +53 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/doc.go +50 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/endpoint.go +478 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/errors.go +129 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/frame_debug.go +730 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/gate.go +86 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/idle.go +168 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/log.go +67 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/loss.go +521 -0
- package/bin/go/src/{runtime/cgo/gcc_stack_windows.c → vendor/golang.org/x/net/quic/math.go} +7 -2
- package/bin/go/src/vendor/golang.org/x/net/quic/pacer.go +129 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/packet.go +267 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/packet_number.go +72 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/packet_parser.go +519 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/packet_protection.go +539 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/packet_writer.go +566 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/path.go +87 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/ping.go +14 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/pipe.go +173 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/qlog.go +272 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/queue.go +63 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/quic.go +221 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/race_disabled.go +10 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/race_enabled.go +27 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/rangeset.go +193 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/retry.go +240 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/rtt.go +71 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/sent_packet.go +119 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/sent_packet_list.go +93 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/sent_val.go +103 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/skip.go +62 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/stateless_reset.go +59 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/stream.go +1106 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/stream_limits.go +138 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/tls.go +123 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/transport_params.go +283 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/udp.go +28 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/udp_darwin.go +45 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/udp_linux.go +39 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/udp_msg.go +245 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/udp_other.go +62 -0
- package/bin/go/src/vendor/golang.org/x/net/quic/udp_packetconn.go +67 -0
- package/bin/go/src/vendor/golang.org/x/sys/cpu/asm_darwin_arm64_gc.s +12 -0
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu.go +12 -7
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_arm64.go +3 -6
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64.go +67 -0
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go +31 -0
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go +1 -0
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go +2 -0
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_loong64.go +14 -2
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go +4 -2
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_riscv64.go +1 -0
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_windows.go +26 -0
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_windows_arm64.go +38 -0
- package/bin/go/src/vendor/golang.org/x/sys/cpu/cpu_x86.go +124 -50
- package/bin/go/src/vendor/golang.org/x/sys/cpu/syscall_darwin_arm64_gc.go +54 -0
- package/bin/go/src/vendor/golang.org/x/sys/cpu/zcpu_windows.go +48 -0
- package/bin/go/src/vendor/golang.org/x/text/secure/bidirule/bidirule.go +4 -0
- package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +1 -1
- package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables17.0.0.go +2135 -0
- package/bin/go/src/vendor/golang.org/x/text/unicode/norm/forminfo.go +18 -8
- package/bin/go/src/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +1410 -1410
- package/bin/go/src/vendor/golang.org/x/text/unicode/norm/{tables13.0.0.go → tables17.0.0.go} +3530 -3186
- package/bin/go/src/vendor/modules.txt +14 -8
- package/bin/ttsc-cache.exe +0 -0
- package/bin/ttsc.exe +0 -0
- package/bin/ttscserver.exe +0 -0
- package/package.json +1 -1
- package/bin/go/src/crypto/internal/fips140/nistec/p256_ordinv_noasm.go +0 -13
- package/bin/go/src/go/internal/scannerhooks/hooks.go +0 -11
- package/bin/go/src/hash/maphash/maphash_purego.go +0 -200
- package/bin/go/src/hash/maphash/maphash_runtime.go +0 -64
- package/bin/go/src/internal/goexperiment/exp_goroutineleakprofile_off.go +0 -8
- package/bin/go/src/internal/goexperiment/exp_goroutineleakprofile_on.go +0 -8
- package/bin/go/src/internal/strconv/atofeisel.go +0 -166
- package/bin/go/src/internal/strconv/ftoadbox.go +0 -349
- package/bin/go/src/internal/strconv/ftoafixed.go +0 -184
- package/bin/go/src/internal/strconv/math.go +0 -179
- package/bin/go/src/net/http/h2_bundle.go +0 -12371
- package/bin/go/src/net/http/h2_error.go +0 -37
- package/bin/go/src/runtime/cgo/gcc_darwin_amd64.c +0 -61
- package/bin/go/src/runtime/cgo/gcc_darwin_arm64.c +0 -148
- package/bin/go/src/runtime/cgo/gcc_dragonfly_amd64.c +0 -61
- package/bin/go/src/runtime/cgo/gcc_freebsd.c +0 -72
- package/bin/go/src/runtime/cgo/gcc_freebsd_amd64.c +0 -72
- package/bin/go/src/runtime/cgo/gcc_linux.c +0 -67
- package/bin/go/src/runtime/cgo/gcc_linux_amd64.c +0 -92
- package/bin/go/src/runtime/cgo/gcc_linux_arm64.c +0 -88
- package/bin/go/src/runtime/cgo/gcc_linux_s390x.c +0 -64
- package/bin/go/src/runtime/cgo/gcc_openbsd.c +0 -62
- package/bin/go/src/runtime/cgo/gcc_ppc64x.c +0 -68
- package/bin/go/src/runtime/cgo/gcc_signal2_ios_arm64.c +0 -11
- package/bin/go/src/runtime/cgo/gcc_signal_ios_arm64.c +0 -213
- package/bin/go/src/runtime/cgo/gcc_signal_ios_nolldb.c +0 -10
- package/bin/go/src/runtime/cgo/gcc_solaris_amd64.c +0 -83
- package/bin/go/src/runtime/cgo/gcc_stack_darwin.c +0 -25
- package/bin/go/src/runtime/cgo/gcc_stack_unix.c +0 -48
- package/bin/go/src/runtime/cgo/gcc_windows_386.c +0 -55
- package/bin/go/src/runtime/cgo/gcc_windows_amd64.c +0 -54
- package/bin/go/src/runtime/cgo/gcc_windows_arm64.c +0 -42
- package/bin/go/src/runtime/cgo/libcgo_windows.h +0 -6
- package/bin/go/src/runtime/cgo/signal_ios_arm64.go +0 -10
- package/bin/go/src/runtime/cgo/signal_ios_arm64.s +0 -56
- package/bin/go/src/runtime/rt0_linux_ppc64.s +0 -28
- package/bin/go/src/runtime/stubs_ppc64.go +0 -12
- package/bin/go/src/simd/archsimd/_gen/simdgen/go.yaml +0 -1
- package/bin/go/src/simd/archsimd/_gen/simdgen/ops/ShiftRotate/go.yaml +0 -172
- package/bin/go/src/syscall/asm_openbsd_mips64.s +0 -129
- package/bin/go/src/syscall/syscall_openbsd1.go +0 -12
- package/bin/go/src/syscall/syscall_openbsd_libc.go +0 -84
- package/bin/go/src/syscall/syscall_openbsd_mips64.go +0 -43
- package/bin/go/src/syscall/zerrors_openbsd_mips64.go +0 -1682
- package/bin/go/src/syscall/zsyscall_openbsd_mips64.go +0 -1289
- package/bin/go/src/syscall/zsysnum_openbsd_mips64.go +0 -218
- package/bin/go/src/syscall/ztypes_openbsd_mips64.go +0 -443
- package/bin/go/src/vendor/golang.org/x/net/idna/go118.go +0 -13
- package/bin/go/src/vendor/golang.org/x/net/idna/idna9.0.0.go +0 -717
- package/bin/go/src/vendor/golang.org/x/net/idna/pre_go118.go +0 -11
- package/bin/go/src/vendor/golang.org/x/net/idna/tables10.0.0.go +0 -4559
- package/bin/go/src/vendor/golang.org/x/net/idna/tables11.0.0.go +0 -4653
- package/bin/go/src/vendor/golang.org/x/net/idna/tables12.0.0.go +0 -4733
- package/bin/go/src/vendor/golang.org/x/net/idna/tables13.0.0.go +0 -4959
- package/bin/go/src/vendor/golang.org/x/net/idna/tables9.0.0.go +0 -4486
- package/bin/go/src/vendor/golang.org/x/net/idna/trie12.0.0.go +0 -30
- package/bin/go/src/vendor/golang.org/x/net/idna/trie13.0.0.go +0 -30
- package/bin/go/src/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +0 -11
- package/bin/go/src/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +0 -14
- package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +0 -1815
- package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +0 -1887
- package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +0 -1923
- package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +0 -1955
- package/bin/go/src/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +0 -1781
- package/bin/go/src/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +0 -7657
- package/bin/go/src/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +0 -7693
- package/bin/go/src/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +0 -7710
- package/bin/go/src/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +0 -7637
- /package/bin/go/src/simd/archsimd/_gen/simdgen/ops/BitwiseLogic/{go.yaml → go_amd64.yaml} +0 -0
- /package/bin/go/src/simd/archsimd/_gen/simdgen/ops/Compares/{go.yaml → go_amd64.yaml} +0 -0
- /package/bin/go/src/simd/archsimd/_gen/simdgen/ops/MinMax/{go.yaml → go_amd64.yaml} +0 -0
- /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
|
-
|
|
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 &&
|
|
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
|
-
|
|
331
|
-
// Load{{.VType}}
|
|
332
|
-
|
|
333
|
-
|
|
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
|
-
//
|
|
337
|
-
|
|
338
|
-
|
|
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
|
-
|
|
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}}
|
|
477
|
+
a := archsimd.Load{{.VType}}(x)
|
|
350
478
|
g := make([]{{.Etype}}, n)
|
|
351
|
-
f(a).
|
|
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}}
|
|
497
|
+
a := archsimd.Load{{.VType}}(x)
|
|
367
498
|
g := make([]{{.Etype}}, n)
|
|
368
|
-
f(a).
|
|
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}}
|
|
515
|
+
a := archsimd.Load{{.VType}}(x)
|
|
385
516
|
g := make([]{{.OEtype}}, {{.OCount}})
|
|
386
|
-
f(a).
|
|
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(
|
|
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}}
|
|
548
|
+
a := archsimd.Load{{.VType}}(x)
|
|
418
549
|
g := make([]{{.OEtype}}, {{.OCount}})
|
|
419
|
-
f(a).
|
|
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
|
|
433
|
-
unaryToInt64x4
|
|
434
|
-
unaryToUint64x2
|
|
435
|
-
unaryToUint64x4
|
|
436
|
-
unaryToInt32x4
|
|
437
|
-
unaryToInt32x8
|
|
438
|
-
unaryToUint32x4
|
|
439
|
-
unaryToUint32x8
|
|
440
|
-
unaryToInt16x8
|
|
441
|
-
unaryToUint16x8
|
|
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
|
-
|
|
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}}
|
|
452
|
-
b := archsimd.Load{{.VType}}
|
|
584
|
+
a := archsimd.Load{{.VType}}(x)
|
|
585
|
+
b := archsimd.Load{{.VType}}(y)
|
|
453
586
|
g := make([]{{.Etype}}, n)
|
|
454
|
-
f(a, b).
|
|
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
|
|
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}}
|
|
469
|
-
b := archsimd.Load{{.VType}}
|
|
470
|
-
c := archsimd.Load{{.VType}}
|
|
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).
|
|
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
|
-
|
|
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}}
|
|
488
|
-
b := archsimd.Load{{.VType}}
|
|
489
|
-
c := archsimd.Load{{.VType}}
|
|
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).
|
|
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}}
|
|
506
|
-
b := archsimd.Load{{.VType}}
|
|
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}}().
|
|
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}}
|
|
746
|
+
a := archsimd.Load{{.VType}}(x)
|
|
523
747
|
g := make([]int{{.EWidth}}, n)
|
|
524
|
-
f(a).ToInt{{.WxC}}().
|
|
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}}
|
|
543
|
-
b := archsimd.Load{{.VType}}
|
|
544
|
-
k := archsimd.LoadInt{{.WxC}}
|
|
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}}().
|
|
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
|
|
559
|
-
// Load{{.VType}}
|
|
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}}
|
|
562
|
-
func Load{{.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}}
|
|
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
|
|
797
|
+
return Load{{.VType}}Array(pa{{.VType}}(s)).Masked(mask), l
|
|
573
798
|
}
|
|
574
799
|
|
|
575
|
-
//
|
|
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.
|
|
578
|
-
func (x {{.VType}})
|
|
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.
|
|
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.
|
|
813
|
+
x.StoreArrayMasked(pa{{.VType}}(s), mask)
|
|
814
|
+
return l
|
|
589
815
|
}
|
|
590
816
|
`)
|
|
591
817
|
|
|
592
|
-
var
|
|
593
|
-
// Load{{.VType}}
|
|
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}}
|
|
596
|
-
func Load{{.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}}
|
|
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
|
|
833
|
+
return Load{{.VType}}Array(pa{{.VType}}(s)).Masked(LoadInt{{.WxC}}(mask).asMask()), l
|
|
607
834
|
}
|
|
608
835
|
|
|
609
|
-
//
|
|
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.
|
|
612
|
-
func (x {{.VType}})
|
|
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.
|
|
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.
|
|
849
|
+
x.StoreArrayMasked(pa{{.VType}}(s), LoadInt{{.WxC}}(mask).asMask())
|
|
850
|
+
return l
|
|
623
851
|
}
|
|
624
852
|
`)
|
|
625
853
|
|
|
626
|
-
var
|
|
627
|
-
// Load{{.VType}}
|
|
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}}
|
|
630
|
-
func Load{{.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
|
-
|
|
865
|
+
v, l := LoadInt{{.WxC}}Part(t)
|
|
866
|
+
return v.As{{.VType}}(), l
|
|
637
867
|
}
|
|
638
868
|
|
|
639
|
-
//
|
|
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.
|
|
642
|
-
func (x {{.VType}})
|
|
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}}().
|
|
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).
|
|
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
|
|
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.
|
|
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+"
|
|
915
|
-
uh := flag.String("uh", TD+"
|
|
916
|
-
|
|
917
|
-
|
|
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
|
-
|
|
925
|
-
|
|
926
|
-
|
|
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())
|