...
Text file src/runtime/internal/sys/intrinsics_386.s
1 // Copyright 2016 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 #include "textflag.h"
6
7 TEXT runtime∕internal∕sys·Ctz64(SB), NOSPLIT, $0-12
8 // Try low 32 bits.
9 MOVL x_lo+0(FP), AX
10 BSFL AX, AX
11 JZ tryhigh
12 MOVL AX, ret+8(FP)
13 RET
14
15 tryhigh:
16 // Try high 32 bits.
17 MOVL x_hi+4(FP), AX
18 BSFL AX, AX
19 JZ none
20 ADDL $32, AX
21 MOVL AX, ret+8(FP)
22 RET
23
24 none:
25 // No bits are set.
26 MOVL $64, ret+8(FP)
27 RET
28
29 TEXT runtime∕internal∕sys·Ctz32(SB), NOSPLIT, $0-8
30 MOVL x+0(FP), AX
31 BSFL AX, AX
32 JNZ 2(PC)
33 MOVL $32, AX
34 MOVL AX, ret+4(FP)
35 RET
36
37 TEXT runtime∕internal∕sys·Ctz8(SB), NOSPLIT, $0-8
38 MOVBLZX x+0(FP), AX
39 BSFL AX, AX
40 JNZ 2(PC)
41 MOVL $8, AX
42 MOVL AX, ret+4(FP)
43 RET
44
45 TEXT runtime∕internal∕sys·Bswap64(SB), NOSPLIT, $0-16
46 MOVL x_lo+0(FP), AX
47 MOVL x_hi+4(FP), BX
48 BSWAPL AX
49 BSWAPL BX
50 MOVL BX, ret_lo+8(FP)
51 MOVL AX, ret_hi+12(FP)
52 RET
53
54 TEXT runtime∕internal∕sys·Bswap32(SB), NOSPLIT, $0-8
55 MOVL x+0(FP), AX
56 BSWAPL AX
57 MOVL AX, ret+4(FP)
58 RET
View as plain text