1 // Copyright 2017 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.
8 // This program generates bits_tables.go.
21 var header
= []byte(`// Copyright 2017 The Go Authors. All rights reserved.
22 // Use of this source code is governed by a BSD-style
23 // license that can be found in the LICENSE file.
25 // Code generated by go run make_tables.go. DO NOT EDIT.
32 buf
:= bytes
.NewBuffer(header
)
34 gen(buf
, "ntz8tab", ntz8
)
35 gen(buf
, "pop8tab", pop8
)
36 gen(buf
, "rev8tab", rev8
)
37 gen(buf
, "len8tab", len8
)
39 out
, err
:= format
.Source(buf
.Bytes())
44 err
= os
.WriteFile("bits_tables.go", out
, 0666)
50 func gen(w io
.Writer
, name
string, f
func(uint8) uint8) {
51 // Use a const string to allow the compiler to constant-evaluate lookups at constant index.
52 fmt
.Fprintf(w
, "const %s = \"\"+\n\"", name
)
53 for i
:= 0; i
< 256; i
++ {
54 fmt
.Fprintf(w
, "\\x%02x", f(uint8(i
)))
55 if i%16
== 15 && i
!= 255 {
56 fmt
.Fprint(w
, "\"+\n\"")
59 fmt
.Fprint(w
, "\"\n\n")
62 func ntz8(x
uint8) (n
uint8) {
63 for x
&1 == 0 && n
< 8 {
70 func pop8(x
uint8) (n
uint8) {
78 func rev8(x
uint8) (r
uint8) {
79 for i
:= 8; i
> 0; i
-- {
86 func len8(x
uint8) (n
uint8) {