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. 4 5package ir 6 7type bitset8 uint8 8 9func (f *bitset8) set(mask uint8, b bool) { 10 if b { 11 *(*uint8)(f) |= mask 12 } else { 13 *(*uint8)(f) &^= mask 14 } 15} 16 17func (f bitset8) get2(shift uint8) uint8 { 18 return uint8(f>>shift) & 3 19} 20 21// set2 sets two bits in f using the bottom two bits of b. 22func (f *bitset8) set2(shift uint8, b uint8) { 23 // Clear old bits. 24 *(*uint8)(f) &^= 3 << shift 25 // Set new bits. 26 *(*uint8)(f) |= uint8(b&3) << shift 27} 28 29type bitset16 uint16 30 31func (f *bitset16) set(mask uint16, b bool) { 32 if b { 33 *(*uint16)(f) |= mask 34 } else { 35 *(*uint16)(f) &^= mask 36 } 37} 38