| // 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 |