...

Source file src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/condition_util.go

     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	
     5	package arm64asm
     6	
     7	func extract_bit(value, bit uint32) uint32 {
     8		return (value >> bit) & 1
     9	}
    10	
    11	func bfxpreferred_4(sf, opc1, imms, immr uint32) bool {
    12		if imms < immr {
    13			return false
    14		}
    15		if (imms>>5 == sf) && (imms&0x1f == 0x1f) {
    16			return false
    17		}
    18		if immr == 0 {
    19			if sf == 0 && (imms == 7 || imms == 15) {
    20				return false
    21			}
    22			if sf == 1 && opc1 == 0 && (imms == 7 ||
    23				imms == 15 || imms == 31) {
    24				return false
    25			}
    26		}
    27		return true
    28	}
    29	
    30	func move_wide_preferred_4(sf, N, imms, immr uint32) bool {
    31		if sf == 1 && N != 1 {
    32			return false
    33		}
    34		if sf == 0 && !(N == 0 && ((imms>>5)&1) == 0) {
    35			return false
    36		}
    37		if imms < 16 {
    38			return (-immr)%16 <= (15 - imms)
    39		}
    40		width := uint32(32)
    41		if sf == 1 {
    42			width = uint32(64)
    43		}
    44		if imms >= (width - 15) {
    45			return (immr % 16) <= (imms - (width - 15))
    46		}
    47		return false
    48	}
    49	
    50	type Sys uint8
    51	
    52	const (
    53		Sys_AT Sys = iota
    54		Sys_DC
    55		Sys_IC
    56		Sys_TLBI
    57		Sys_SYS
    58	)
    59	
    60	func sys_op_4(op1, crn, crm, op2 uint32) Sys {
    61		// TODO: system instruction
    62		return Sys_SYS
    63	}
    64	
    65	func is_zero(x uint32) bool {
    66		return x == 0
    67	}
    68	
    69	func is_ones_n16(x uint32) bool {
    70		return x == 0xffff
    71	}
    72	
    73	func bit_count(x uint32) uint8 {
    74		var count uint8
    75		for count = 0; x > 0; x >>= 1 {
    76			if (x & 1) == 1 {
    77				count++
    78			}
    79		}
    80		return count
    81	}
    82	

View as plain text