// Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. #include "textflag.h" TEXT runtime∕internal∕sys·Ctz64(SB), NOSPLIT, $0-12 // Try low 32 bits. MOVL x_lo+0(FP), AX BSFL AX, AX JZ tryhigh MOVL AX, ret+8(FP) RET tryhigh: // Try high 32 bits. MOVL x_hi+4(FP), AX BSFL AX, AX JZ none ADDL $32, AX MOVL AX, ret+8(FP) RET none: // No bits are set. MOVL $64, ret+8(FP) RET TEXT runtime∕internal∕sys·Ctz32(SB), NOSPLIT, $0-8 MOVL x+0(FP), AX BSFL AX, AX JNZ 2(PC) MOVL $32, AX MOVL AX, ret+4(FP) RET TEXT runtime∕internal∕sys·Ctz8(SB), NOSPLIT, $0-8 MOVBLZX x+0(FP), AX BSFL AX, AX JNZ 2(PC) MOVL $8, AX MOVL AX, ret+4(FP) RET TEXT runtime∕internal∕sys·Bswap64(SB), NOSPLIT, $0-16 MOVL x_lo+0(FP), AX MOVL x_hi+4(FP), BX BSWAPL AX BSWAPL BX MOVL BX, ret_lo+8(FP) MOVL AX, ret_hi+12(FP) RET TEXT runtime∕internal∕sys·Bswap32(SB), NOSPLIT, $0-8 MOVL x+0(FP), AX BSWAPL AX MOVL AX, ret+4(FP) RET