regmask

package
v1.20.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 2, 2026 License: Apache-2.0, BSD-3-Clause, MIT Imports: 0 Imported by: 0

Documentation

Overview

Package regmask provides masks for variable shift counts.

Go defines a shift by more than the width of the shifted value as producing zero, so the compiler has to guard every variable shift against that: on amd64 with a CMP and an SBB, on arm64 with a CMP and a CSEL, and so on. When the count is known to be smaller than the width anyway, masking it with the width minus one lets the compiler drop the guard. The mask itself costs nothing on the architectures whose shift instructions already use only the low bits of the count, which the compiler knows about.

Each constant is named for the width of the value being shifted and the type of the shift count, and may only be used where the count is always smaller than that width:

x := y >> (n & regmask.Shift64ByUint) // y is 64 bits, n is a uint below 64

Index

Constants

View Source
const (
	// ShiftNByUint8 - shifting an N bit value by a uint8
	Shift8ByUint8  = 7
	Shift16ByUint8 = 15
	Shift32ByUint8 = 31
	Shift64ByUint8 = 63

	// ShiftNByUint16 - shifting an N bit value by a uint16
	Shift8ByUint16  = Shift8ByUint8
	Shift16ByUint16 = Shift16ByUint8
	Shift32ByUint16 = Shift32ByUint8
	Shift64ByUint16 = Shift64ByUint8

	// ShiftNByUint32 - shifting an N bit value by a uint32
	Shift8ByUint32  = Shift8ByUint8
	Shift16ByUint32 = Shift16ByUint8
	Shift32ByUint32 = Shift32ByUint8
	Shift64ByUint32 = Shift64ByUint8

	// ShiftNByUint64 - shifting an N bit value by a uint64
	Shift8ByUint64  = Shift8ByUint8
	Shift16ByUint64 = Shift16ByUint8
	Shift32ByUint64 = Shift32ByUint8
	Shift64ByUint64 = Shift64ByUint8

	// ShiftNByUint - shifting an N bit value by a uint
	Shift8ByUint  = Shift8ByUint8
	Shift16ByUint = Shift16ByUint8
	Shift32ByUint = Shift32ByUint8
	Shift64ByUint = Shift64ByUint8
)

Variables

This section is empty.

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL