diff options
author | Rutger Broekhoff | 2023-12-29 21:31:53 +0100 |
---|---|---|
committer | Rutger Broekhoff | 2023-12-29 21:31:53 +0100 |
commit | 404aeae4545d2426c089a5f8d5e82dae56f5212b (patch) | |
tree | 2d84e00af272b39fc04f3795ae06bc48970e57b5 /vendor/golang.org/x/sys/cpu/byteorder.go | |
parent | 209d8b0187ed025dec9ac149ebcced3462877bff (diff) | |
download | gitolfs3-404aeae4545d2426c089a5f8d5e82dae56f5212b.tar.gz gitolfs3-404aeae4545d2426c089a5f8d5e82dae56f5212b.zip |
Make Nix builds work
Diffstat (limited to 'vendor/golang.org/x/sys/cpu/byteorder.go')
-rw-r--r-- | vendor/golang.org/x/sys/cpu/byteorder.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/vendor/golang.org/x/sys/cpu/byteorder.go b/vendor/golang.org/x/sys/cpu/byteorder.go new file mode 100644 index 0000000..271055b --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/byteorder.go | |||
@@ -0,0 +1,66 @@ | |||
1 | // Copyright 2019 The Go Authors. All rights reserved. | ||
2 | // Use of this source code is governed by a BSD-style | ||
3 | // license that can be found in the LICENSE file. | ||
4 | |||
5 | package cpu | ||
6 | |||
7 | import ( | ||
8 | "runtime" | ||
9 | ) | ||
10 | |||
11 | // byteOrder is a subset of encoding/binary.ByteOrder. | ||
12 | type byteOrder interface { | ||
13 | Uint32([]byte) uint32 | ||
14 | Uint64([]byte) uint64 | ||
15 | } | ||
16 | |||
17 | type littleEndian struct{} | ||
18 | type bigEndian struct{} | ||
19 | |||
20 | func (littleEndian) Uint32(b []byte) uint32 { | ||
21 | _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 | ||
22 | return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 | ||
23 | } | ||
24 | |||
25 | func (littleEndian) Uint64(b []byte) uint64 { | ||
26 | _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 | ||
27 | return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | | ||
28 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 | ||
29 | } | ||
30 | |||
31 | func (bigEndian) Uint32(b []byte) uint32 { | ||
32 | _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 | ||
33 | return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 | ||
34 | } | ||
35 | |||
36 | func (bigEndian) Uint64(b []byte) uint64 { | ||
37 | _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 | ||
38 | return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | | ||
39 | uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 | ||
40 | } | ||
41 | |||
42 | // hostByteOrder returns littleEndian on little-endian machines and | ||
43 | // bigEndian on big-endian machines. | ||
44 | func hostByteOrder() byteOrder { | ||
45 | switch runtime.GOARCH { | ||
46 | case "386", "amd64", "amd64p32", | ||
47 | "alpha", | ||
48 | "arm", "arm64", | ||
49 | "loong64", | ||
50 | "mipsle", "mips64le", "mips64p32le", | ||
51 | "nios2", | ||
52 | "ppc64le", | ||
53 | "riscv", "riscv64", | ||
54 | "sh": | ||
55 | return littleEndian{} | ||
56 | case "armbe", "arm64be", | ||
57 | "m68k", | ||
58 | "mips", "mips64", "mips64p32", | ||
59 | "ppc", "ppc64", | ||
60 | "s390", "s390x", | ||
61 | "shbe", | ||
62 | "sparc", "sparc64": | ||
63 | return bigEndian{} | ||
64 | } | ||
65 | panic("unknown architecture") | ||
66 | } | ||